From f75e43c5a9620dea64be963de5fadde2df28521a Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Fri, 12 Jan 2024 16:02:59 -0800 Subject: [PATCH 01/14] GTFS protobuf experiment --- tlpb/gtfs.pb.go | 2680 +++++++++++++++++++++++++++++++++++++++++++++++ tlpb/gtfs.proto | 224 ++++ tlpb/tlpb.go | 3 + 3 files changed, 2907 insertions(+) create mode 100644 tlpb/gtfs.pb.go create mode 100644 tlpb/gtfs.proto create mode 100644 tlpb/tlpb.go diff --git a/tlpb/gtfs.pb.go b/tlpb/gtfs.pb.go new file mode 100644 index 00000000..e76772ba --- /dev/null +++ b/tlpb/gtfs.pb.go @@ -0,0 +1,2680 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc v4.23.3 +// source: gtfs.proto + +package tlpb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type WheelchairAccess int32 + +const ( + WheelchairAccess_WheelchairUnknown WheelchairAccess = 0 + WheelchairAccess_WheelchairAllowed WheelchairAccess = 1 + WheelchairAccess_WheelchairDisallowed WheelchairAccess = 2 +) + +// Enum value maps for WheelchairAccess. +var ( + WheelchairAccess_name = map[int32]string{ + 0: "WheelchairUnknown", + 1: "WheelchairAllowed", + 2: "WheelchairDisallowed", + } + WheelchairAccess_value = map[string]int32{ + "WheelchairUnknown": 0, + "WheelchairAllowed": 1, + "WheelchairDisallowed": 2, + } +) + +func (x WheelchairAccess) Enum() *WheelchairAccess { + p := new(WheelchairAccess) + *p = x + return p +} + +func (x WheelchairAccess) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WheelchairAccess) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[0].Descriptor() +} + +func (WheelchairAccess) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[0] +} + +func (x WheelchairAccess) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WheelchairAccess.Descriptor instead. +func (WheelchairAccess) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{0} +} + +type BikeAccess int32 + +const ( + BikeAccess_BikeUnknown BikeAccess = 0 + BikeAccess_BikeAllowed BikeAccess = 1 + BikeAccess_BikeDisallowed BikeAccess = 2 +) + +// Enum value maps for BikeAccess. +var ( + BikeAccess_name = map[int32]string{ + 0: "BikeUnknown", + 1: "BikeAllowed", + 2: "BikeDisallowed", + } + BikeAccess_value = map[string]int32{ + "BikeUnknown": 0, + "BikeAllowed": 1, + "BikeDisallowed": 2, + } +) + +func (x BikeAccess) Enum() *BikeAccess { + p := new(BikeAccess) + *p = x + return p +} + +func (x BikeAccess) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BikeAccess) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[1].Descriptor() +} + +func (BikeAccess) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[1] +} + +func (x BikeAccess) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BikeAccess.Descriptor instead. +func (BikeAccess) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{1} +} + +type BoardAccess int32 + +const ( + BoardAccess_BoardUnknown BoardAccess = 0 + BoardAccess_BoardDisallowed BoardAccess = 1 + BoardAccess_BoardAllowed BoardAccess = 2 + BoardAccess_BoardCoordinate BoardAccess = 3 +) + +// Enum value maps for BoardAccess. +var ( + BoardAccess_name = map[int32]string{ + 0: "BoardUnknown", + 1: "BoardDisallowed", + 2: "BoardAllowed", + 3: "BoardCoordinate", + } + BoardAccess_value = map[string]int32{ + "BoardUnknown": 0, + "BoardDisallowed": 1, + "BoardAllowed": 2, + "BoardCoordinate": 3, + } +) + +func (x BoardAccess) Enum() *BoardAccess { + p := new(BoardAccess) + *p = x + return p +} + +func (x BoardAccess) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BoardAccess) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[2].Descriptor() +} + +func (BoardAccess) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[2] +} + +func (x BoardAccess) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BoardAccess.Descriptor instead. +func (BoardAccess) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{2} +} + +type PickupAccess int32 + +const ( + PickupAccess_PickupContinuous PickupAccess = 0 + PickupAccess_PickupDisallowed PickupAccess = 1 + PickupAccess_PickupMustPhone PickupAccess = 2 + PickupAccess_PickupAskDriver PickupAccess = 3 +) + +// Enum value maps for PickupAccess. +var ( + PickupAccess_name = map[int32]string{ + 0: "PickupContinuous", + 1: "PickupDisallowed", + 2: "PickupMustPhone", + 3: "PickupAskDriver", + } + PickupAccess_value = map[string]int32{ + "PickupContinuous": 0, + "PickupDisallowed": 1, + "PickupMustPhone": 2, + "PickupAskDriver": 3, + } +) + +func (x PickupAccess) Enum() *PickupAccess { + p := new(PickupAccess) + *p = x + return p +} + +func (x PickupAccess) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PickupAccess) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[3].Descriptor() +} + +func (PickupAccess) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[3] +} + +func (x PickupAccess) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PickupAccess.Descriptor instead. +func (PickupAccess) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{3} +} + +type LocationType int32 + +const ( + LocationType_LocationPlatform LocationType = 0 + LocationType_LocationStation LocationType = 1 + LocationType_LocationEntrance LocationType = 2 + LocationType_LocationNode LocationType = 3 + LocationType_LocationBoardingArea LocationType = 4 +) + +// Enum value maps for LocationType. +var ( + LocationType_name = map[int32]string{ + 0: "LocationPlatform", + 1: "LocationStation", + 2: "LocationEntrance", + 3: "LocationNode", + 4: "LocationBoardingArea", + } + LocationType_value = map[string]int32{ + "LocationPlatform": 0, + "LocationStation": 1, + "LocationEntrance": 2, + "LocationNode": 3, + "LocationBoardingArea": 4, + } +) + +func (x LocationType) Enum() *LocationType { + p := new(LocationType) + *p = x + return p +} + +func (x LocationType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LocationType) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[4].Descriptor() +} + +func (LocationType) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[4] +} + +func (x LocationType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LocationType.Descriptor instead. +func (LocationType) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{4} +} + +type RouteType int32 + +const ( + RouteType_VehicleTram RouteType = 0 + RouteType_VehicleSubway RouteType = 1 + RouteType_VehicleRail RouteType = 2 + RouteType_VehicleBus RouteType = 3 + RouteType_VehicleFerry RouteType = 4 + RouteType_VehicleCablecar RouteType = 5 + RouteType_VehicleGondola RouteType = 6 + RouteType_VehicleFunicular RouteType = 7 + RouteType_VehicleTrollebus RouteType = 11 + RouteType_VehicleMonorail RouteType = 12 +) + +// Enum value maps for RouteType. +var ( + RouteType_name = map[int32]string{ + 0: "VehicleTram", + 1: "VehicleSubway", + 2: "VehicleRail", + 3: "VehicleBus", + 4: "VehicleFerry", + 5: "VehicleCablecar", + 6: "VehicleGondola", + 7: "VehicleFunicular", + 11: "VehicleTrollebus", + 12: "VehicleMonorail", + } + RouteType_value = map[string]int32{ + "VehicleTram": 0, + "VehicleSubway": 1, + "VehicleRail": 2, + "VehicleBus": 3, + "VehicleFerry": 4, + "VehicleCablecar": 5, + "VehicleGondola": 6, + "VehicleFunicular": 7, + "VehicleTrollebus": 11, + "VehicleMonorail": 12, + } +) + +func (x RouteType) Enum() *RouteType { + p := new(RouteType) + *p = x + return p +} + +func (x RouteType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RouteType) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[5].Descriptor() +} + +func (RouteType) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[5] +} + +func (x RouteType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RouteType.Descriptor instead. +func (RouteType) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{5} +} + +type Direction int32 + +const ( + Direction_DirectionOutbound Direction = 0 + Direction_DirectionInbound Direction = 1 +) + +// Enum value maps for Direction. +var ( + Direction_name = map[int32]string{ + 0: "DirectionOutbound", + 1: "DirectionInbound", + } + Direction_value = map[string]int32{ + "DirectionOutbound": 0, + "DirectionInbound": 1, + } +) + +func (x Direction) Enum() *Direction { + p := new(Direction) + *p = x + return p +} + +func (x Direction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Direction) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[6].Descriptor() +} + +func (Direction) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[6] +} + +func (x Direction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Direction.Descriptor instead. +func (Direction) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{6} +} + +type Timepoint int32 + +const ( + Timepoint_Approximate Timepoint = 0 + Timepoint_Exact Timepoint = 1 +) + +// Enum value maps for Timepoint. +var ( + Timepoint_name = map[int32]string{ + 0: "Approximate", + 1: "Exact", + } + Timepoint_value = map[string]int32{ + "Approximate": 0, + "Exact": 1, + } +) + +func (x Timepoint) Enum() *Timepoint { + p := new(Timepoint) + *p = x + return p +} + +func (x Timepoint) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Timepoint) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[7].Descriptor() +} + +func (Timepoint) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[7] +} + +func (x Timepoint) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Timepoint.Descriptor instead. +func (Timepoint) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{7} +} + +type CalendarExceptionType int32 + +const ( + CalendarExceptionType_CalendarUnknown CalendarExceptionType = 0 + CalendarExceptionType_CalendarAdded CalendarExceptionType = 1 + CalendarExceptionType_CalendarRemoved CalendarExceptionType = 2 +) + +// Enum value maps for CalendarExceptionType. +var ( + CalendarExceptionType_name = map[int32]string{ + 0: "CalendarUnknown", + 1: "CalendarAdded", + 2: "CalendarRemoved", + } + CalendarExceptionType_value = map[string]int32{ + "CalendarUnknown": 0, + "CalendarAdded": 1, + "CalendarRemoved": 2, + } +) + +func (x CalendarExceptionType) Enum() *CalendarExceptionType { + p := new(CalendarExceptionType) + *p = x + return p +} + +func (x CalendarExceptionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CalendarExceptionType) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[8].Descriptor() +} + +func (CalendarExceptionType) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[8] +} + +func (x CalendarExceptionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CalendarExceptionType.Descriptor instead. +func (CalendarExceptionType) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{8} +} + +type Date struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Year int64 `protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"` + Month int64 `protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"` + Day int64 `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"` +} + +func (x *Date) Reset() { + *x = Date{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Date) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Date) ProtoMessage() {} + +func (x *Date) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Date.ProtoReflect.Descriptor instead. +func (*Date) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{0} +} + +func (x *Date) GetYear() int64 { + if x != nil { + return x.Year + } + return 0 +} + +func (x *Date) GetMonth() int64 { + if x != nil { + return x.Month + } + return 0 +} + +func (x *Date) GetDay() int64 { + if x != nil { + return x.Day + } + return 0 +} + +type Time struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` +} + +func (x *Time) Reset() { + *x = Time{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Time) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Time) ProtoMessage() {} + +func (x *Time) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Time.ProtoReflect.Descriptor instead. +func (*Time) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{1} +} + +func (x *Time) GetSeconds() int64 { + if x != nil { + return x.Seconds + } + return 0 +} + +type EntityID struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *EntityID) Reset() { + *x = EntityID{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntityID) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityID) ProtoMessage() {} + +func (x *EntityID) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntityID.ProtoReflect.Descriptor instead. +func (*EntityID) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{2} +} + +func (x *EntityID) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type Timezone struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Timezone string `protobuf:"bytes,1,opt,name=timezone,proto3" json:"timezone,omitempty"` +} + +func (x *Timezone) Reset() { + *x = Timezone{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Timezone) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Timezone) ProtoMessage() {} + +func (x *Timezone) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Timezone.ProtoReflect.Descriptor instead. +func (*Timezone) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{3} +} + +func (x *Timezone) GetTimezone() string { + if x != nil { + return x.Timezone + } + return "" +} + +type Reference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"` +} + +func (x *Reference) Reset() { + *x = Reference{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Reference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Reference) ProtoMessage() {} + +func (x *Reference) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Reference.ProtoReflect.Descriptor instead. +func (*Reference) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{4} +} + +func (x *Reference) GetEntityId() string { + if x != nil { + return x.EntityId + } + return "" +} + +type Url struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` +} + +func (x *Url) Reset() { + *x = Url{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Url) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Url) ProtoMessage() {} + +func (x *Url) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Url.ProtoReflect.Descriptor instead. +func (*Url) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{5} +} + +func (x *Url) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +type Color struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Color string `protobuf:"bytes,1,opt,name=color,proto3" json:"color,omitempty"` +} + +func (x *Color) Reset() { + *x = Color{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Color) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Color) ProtoMessage() {} + +func (x *Color) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Color.ProtoReflect.Descriptor instead. +func (*Color) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{6} +} + +func (x *Color) GetColor() string { + if x != nil { + return x.Color + } + return "" +} + +type FeedEntity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Agency *Agency `protobuf:"bytes,1,opt,name=agency,proto3" json:"agency,omitempty"` + Stop *Stop `protobuf:"bytes,2,opt,name=stop,proto3" json:"stop,omitempty"` + Route *Route `protobuf:"bytes,3,opt,name=route,proto3" json:"route,omitempty"` + Trip *Trip `protobuf:"bytes,4,opt,name=trip,proto3" json:"trip,omitempty"` + StopTime *StopTime `protobuf:"bytes,5,opt,name=stop_time,json=stopTime,proto3" json:"stop_time,omitempty"` + Shape *Shape `protobuf:"bytes,6,opt,name=shape,proto3" json:"shape,omitempty"` + Service *Service `protobuf:"bytes,7,opt,name=service,proto3" json:"service,omitempty"` +} + +func (x *FeedEntity) Reset() { + *x = FeedEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeedEntity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeedEntity) ProtoMessage() {} + +func (x *FeedEntity) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeedEntity.ProtoReflect.Descriptor instead. +func (*FeedEntity) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{7} +} + +func (x *FeedEntity) GetAgency() *Agency { + if x != nil { + return x.Agency + } + return nil +} + +func (x *FeedEntity) GetStop() *Stop { + if x != nil { + return x.Stop + } + return nil +} + +func (x *FeedEntity) GetRoute() *Route { + if x != nil { + return x.Route + } + return nil +} + +func (x *FeedEntity) GetTrip() *Trip { + if x != nil { + return x.Trip + } + return nil +} + +func (x *FeedEntity) GetStopTime() *StopTime { + if x != nil { + return x.StopTime + } + return nil +} + +func (x *FeedEntity) GetShape() *Shape { + if x != nil { + return x.Shape + } + return nil +} + +func (x *FeedEntity) GetService() *Service { + if x != nil { + return x.Service + } + return nil +} + +type Agency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AgencyId *EntityID `protobuf:"bytes,1,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` + AgencyName string `protobuf:"bytes,2,opt,name=agency_name,json=agencyName,proto3" json:"agency_name,omitempty"` + AgencyUrl string `protobuf:"bytes,3,opt,name=agency_url,json=agencyUrl,proto3" json:"agency_url,omitempty"` + AgencyTimezone *Timezone `protobuf:"bytes,4,opt,name=agency_timezone,json=agencyTimezone,proto3" json:"agency_timezone,omitempty"` + AgencyLang string `protobuf:"bytes,5,opt,name=agency_lang,json=agencyLang,proto3" json:"agency_lang,omitempty"` + AgencyPhone string `protobuf:"bytes,6,opt,name=agency_phone,json=agencyPhone,proto3" json:"agency_phone,omitempty"` + AgencyFareUrl *Url `protobuf:"bytes,7,opt,name=agency_fare_url,json=agencyFareUrl,proto3" json:"agency_fare_url,omitempty"` + AgencyEmail string `protobuf:"bytes,8,opt,name=agency_email,json=agencyEmail,proto3" json:"agency_email,omitempty"` +} + +func (x *Agency) Reset() { + *x = Agency{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Agency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Agency) ProtoMessage() {} + +func (x *Agency) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Agency.ProtoReflect.Descriptor instead. +func (*Agency) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{8} +} + +func (x *Agency) GetAgencyId() *EntityID { + if x != nil { + return x.AgencyId + } + return nil +} + +func (x *Agency) GetAgencyName() string { + if x != nil { + return x.AgencyName + } + return "" +} + +func (x *Agency) GetAgencyUrl() string { + if x != nil { + return x.AgencyUrl + } + return "" +} + +func (x *Agency) GetAgencyTimezone() *Timezone { + if x != nil { + return x.AgencyTimezone + } + return nil +} + +func (x *Agency) GetAgencyLang() string { + if x != nil { + return x.AgencyLang + } + return "" +} + +func (x *Agency) GetAgencyPhone() string { + if x != nil { + return x.AgencyPhone + } + return "" +} + +func (x *Agency) GetAgencyFareUrl() *Url { + if x != nil { + return x.AgencyFareUrl + } + return nil +} + +func (x *Agency) GetAgencyEmail() string { + if x != nil { + return x.AgencyEmail + } + return "" +} + +type Stop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StopId *EntityID `protobuf:"bytes,1,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` + StopCode string `protobuf:"bytes,2,opt,name=stop_code,json=stopCode,proto3" json:"stop_code,omitempty"` + StopName string `protobuf:"bytes,3,opt,name=stop_name,json=stopName,proto3" json:"stop_name,omitempty"` + TtsStopName string `protobuf:"bytes,4,opt,name=tts_stop_name,json=ttsStopName,proto3" json:"tts_stop_name,omitempty"` + StopDesc string `protobuf:"bytes,5,opt,name=stop_desc,json=stopDesc,proto3" json:"stop_desc,omitempty"` + StopLat float64 `protobuf:"fixed64,6,opt,name=stop_lat,json=stopLat,proto3" json:"stop_lat,omitempty"` + StopLon float64 `protobuf:"fixed64,7,opt,name=stop_lon,json=stopLon,proto3" json:"stop_lon,omitempty"` + ZoneId string `protobuf:"bytes,8,opt,name=zone_id,json=zoneId,proto3" json:"zone_id,omitempty"` + StopUrl *Url `protobuf:"bytes,9,opt,name=stop_url,json=stopUrl,proto3" json:"stop_url,omitempty"` + LocationType LocationType `protobuf:"varint,10,opt,name=location_type,json=locationType,proto3,enum=LocationType" json:"location_type,omitempty"` + ParentStation *Reference `protobuf:"bytes,11,opt,name=parent_station,json=parentStation,proto3" json:"parent_station,omitempty"` + StopTimezone *Timezone `protobuf:"bytes,12,opt,name=stop_timezone,json=stopTimezone,proto3" json:"stop_timezone,omitempty"` + WheelchairBoarding WheelchairAccess `protobuf:"varint,13,opt,name=wheelchair_boarding,json=wheelchairBoarding,proto3,enum=WheelchairAccess" json:"wheelchair_boarding,omitempty"` + LevelId *Reference `protobuf:"bytes,14,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` + PlatformCode string `protobuf:"bytes,15,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` +} + +func (x *Stop) Reset() { + *x = Stop{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Stop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Stop) ProtoMessage() {} + +func (x *Stop) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Stop.ProtoReflect.Descriptor instead. +func (*Stop) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{9} +} + +func (x *Stop) GetStopId() *EntityID { + if x != nil { + return x.StopId + } + return nil +} + +func (x *Stop) GetStopCode() string { + if x != nil { + return x.StopCode + } + return "" +} + +func (x *Stop) GetStopName() string { + if x != nil { + return x.StopName + } + return "" +} + +func (x *Stop) GetTtsStopName() string { + if x != nil { + return x.TtsStopName + } + return "" +} + +func (x *Stop) GetStopDesc() string { + if x != nil { + return x.StopDesc + } + return "" +} + +func (x *Stop) GetStopLat() float64 { + if x != nil { + return x.StopLat + } + return 0 +} + +func (x *Stop) GetStopLon() float64 { + if x != nil { + return x.StopLon + } + return 0 +} + +func (x *Stop) GetZoneId() string { + if x != nil { + return x.ZoneId + } + return "" +} + +func (x *Stop) GetStopUrl() *Url { + if x != nil { + return x.StopUrl + } + return nil +} + +func (x *Stop) GetLocationType() LocationType { + if x != nil { + return x.LocationType + } + return LocationType_LocationPlatform +} + +func (x *Stop) GetParentStation() *Reference { + if x != nil { + return x.ParentStation + } + return nil +} + +func (x *Stop) GetStopTimezone() *Timezone { + if x != nil { + return x.StopTimezone + } + return nil +} + +func (x *Stop) GetWheelchairBoarding() WheelchairAccess { + if x != nil { + return x.WheelchairBoarding + } + return WheelchairAccess_WheelchairUnknown +} + +func (x *Stop) GetLevelId() *Reference { + if x != nil { + return x.LevelId + } + return nil +} + +func (x *Stop) GetPlatformCode() string { + if x != nil { + return x.PlatformCode + } + return "" +} + +type Route struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RouteId *EntityID `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + AgencyId *Reference `protobuf:"bytes,2,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` + RouteShortName string `protobuf:"bytes,3,opt,name=route_short_name,json=routeShortName,proto3" json:"route_short_name,omitempty"` + RouteLongName string `protobuf:"bytes,4,opt,name=route_long_name,json=routeLongName,proto3" json:"route_long_name,omitempty"` + RouteDesc string `protobuf:"bytes,5,opt,name=route_desc,json=routeDesc,proto3" json:"route_desc,omitempty"` + RouteType RouteType `protobuf:"varint,6,opt,name=route_type,json=routeType,proto3,enum=RouteType" json:"route_type,omitempty"` + RouteUrl *Url `protobuf:"bytes,7,opt,name=route_url,json=routeUrl,proto3" json:"route_url,omitempty"` + RouteColor *Color `protobuf:"bytes,8,opt,name=route_color,json=routeColor,proto3" json:"route_color,omitempty"` + RouteTextColor *Color `protobuf:"bytes,9,opt,name=route_text_color,json=routeTextColor,proto3" json:"route_text_color,omitempty"` + RouteSortOrder int64 `protobuf:"varint,10,opt,name=route_sort_order,json=routeSortOrder,proto3" json:"route_sort_order,omitempty"` + ContinuousPickup PickupAccess `protobuf:"varint,11,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` + ContinuousDropOff PickupAccess `protobuf:"varint,12,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` + NetworkId string `protobuf:"bytes,13,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` +} + +func (x *Route) Reset() { + *x = Route{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Route) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Route) ProtoMessage() {} + +func (x *Route) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Route.ProtoReflect.Descriptor instead. +func (*Route) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{10} +} + +func (x *Route) GetRouteId() *EntityID { + if x != nil { + return x.RouteId + } + return nil +} + +func (x *Route) GetAgencyId() *Reference { + if x != nil { + return x.AgencyId + } + return nil +} + +func (x *Route) GetRouteShortName() string { + if x != nil { + return x.RouteShortName + } + return "" +} + +func (x *Route) GetRouteLongName() string { + if x != nil { + return x.RouteLongName + } + return "" +} + +func (x *Route) GetRouteDesc() string { + if x != nil { + return x.RouteDesc + } + return "" +} + +func (x *Route) GetRouteType() RouteType { + if x != nil { + return x.RouteType + } + return RouteType_VehicleTram +} + +func (x *Route) GetRouteUrl() *Url { + if x != nil { + return x.RouteUrl + } + return nil +} + +func (x *Route) GetRouteColor() *Color { + if x != nil { + return x.RouteColor + } + return nil +} + +func (x *Route) GetRouteTextColor() *Color { + if x != nil { + return x.RouteTextColor + } + return nil +} + +func (x *Route) GetRouteSortOrder() int64 { + if x != nil { + return x.RouteSortOrder + } + return 0 +} + +func (x *Route) GetContinuousPickup() PickupAccess { + if x != nil { + return x.ContinuousPickup + } + return PickupAccess_PickupContinuous +} + +func (x *Route) GetContinuousDropOff() PickupAccess { + if x != nil { + return x.ContinuousDropOff + } + return PickupAccess_PickupContinuous +} + +func (x *Route) GetNetworkId() string { + if x != nil { + return x.NetworkId + } + return "" +} + +type Trip struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RouteId *Reference `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + ServiceId *Reference `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + TripId *EntityID `protobuf:"bytes,3,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` + TripHeadsign string `protobuf:"bytes,4,opt,name=trip_headsign,json=tripHeadsign,proto3" json:"trip_headsign,omitempty"` + TripShortName string `protobuf:"bytes,5,opt,name=trip_short_name,json=tripShortName,proto3" json:"trip_short_name,omitempty"` + DirectionId Direction `protobuf:"varint,6,opt,name=direction_id,json=directionId,proto3,enum=Direction" json:"direction_id,omitempty"` + BlockId string `protobuf:"bytes,7,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` + ShapeId *Reference `protobuf:"bytes,8,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + WheelchairAccessible WheelchairAccess `protobuf:"varint,9,opt,name=wheelchair_accessible,json=wheelchairAccessible,proto3,enum=WheelchairAccess" json:"wheelchair_accessible,omitempty"` + BikesAllowed BikeAccess `protobuf:"varint,10,opt,name=bikes_allowed,json=bikesAllowed,proto3,enum=BikeAccess" json:"bikes_allowed,omitempty"` +} + +func (x *Trip) Reset() { + *x = Trip{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Trip) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Trip) ProtoMessage() {} + +func (x *Trip) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Trip.ProtoReflect.Descriptor instead. +func (*Trip) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{11} +} + +func (x *Trip) GetRouteId() *Reference { + if x != nil { + return x.RouteId + } + return nil +} + +func (x *Trip) GetServiceId() *Reference { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *Trip) GetTripId() *EntityID { + if x != nil { + return x.TripId + } + return nil +} + +func (x *Trip) GetTripHeadsign() string { + if x != nil { + return x.TripHeadsign + } + return "" +} + +func (x *Trip) GetTripShortName() string { + if x != nil { + return x.TripShortName + } + return "" +} + +func (x *Trip) GetDirectionId() Direction { + if x != nil { + return x.DirectionId + } + return Direction_DirectionOutbound +} + +func (x *Trip) GetBlockId() string { + if x != nil { + return x.BlockId + } + return "" +} + +func (x *Trip) GetShapeId() *Reference { + if x != nil { + return x.ShapeId + } + return nil +} + +func (x *Trip) GetWheelchairAccessible() WheelchairAccess { + if x != nil { + return x.WheelchairAccessible + } + return WheelchairAccess_WheelchairUnknown +} + +func (x *Trip) GetBikesAllowed() BikeAccess { + if x != nil { + return x.BikesAllowed + } + return BikeAccess_BikeUnknown +} + +type StopTime struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TripId *Reference `protobuf:"bytes,1,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` + ArrivalTime *Time `protobuf:"bytes,2,opt,name=arrival_time,json=arrivalTime,proto3" json:"arrival_time,omitempty"` + DepartureTime *Time `protobuf:"bytes,3,opt,name=departure_time,json=departureTime,proto3" json:"departure_time,omitempty"` + StopId *Reference `protobuf:"bytes,4,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` + StopSequence int64 `protobuf:"varint,5,opt,name=stop_sequence,json=stopSequence,proto3" json:"stop_sequence,omitempty"` + StopHeadsign string `protobuf:"bytes,6,opt,name=stop_headsign,json=stopHeadsign,proto3" json:"stop_headsign,omitempty"` + ContinuousPickup PickupAccess `protobuf:"varint,7,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` + ContinuousDropOff PickupAccess `protobuf:"varint,8,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` + ShapeDistTraveled float64 `protobuf:"fixed64,9,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` + Timepoint Timepoint `protobuf:"varint,10,opt,name=timepoint,proto3,enum=Timepoint" json:"timepoint,omitempty"` +} + +func (x *StopTime) Reset() { + *x = StopTime{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopTime) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopTime) ProtoMessage() {} + +func (x *StopTime) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopTime.ProtoReflect.Descriptor instead. +func (*StopTime) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{12} +} + +func (x *StopTime) GetTripId() *Reference { + if x != nil { + return x.TripId + } + return nil +} + +func (x *StopTime) GetArrivalTime() *Time { + if x != nil { + return x.ArrivalTime + } + return nil +} + +func (x *StopTime) GetDepartureTime() *Time { + if x != nil { + return x.DepartureTime + } + return nil +} + +func (x *StopTime) GetStopId() *Reference { + if x != nil { + return x.StopId + } + return nil +} + +func (x *StopTime) GetStopSequence() int64 { + if x != nil { + return x.StopSequence + } + return 0 +} + +func (x *StopTime) GetStopHeadsign() string { + if x != nil { + return x.StopHeadsign + } + return "" +} + +func (x *StopTime) GetContinuousPickup() PickupAccess { + if x != nil { + return x.ContinuousPickup + } + return PickupAccess_PickupContinuous +} + +func (x *StopTime) GetContinuousDropOff() PickupAccess { + if x != nil { + return x.ContinuousDropOff + } + return PickupAccess_PickupContinuous +} + +func (x *StopTime) GetShapeDistTraveled() float64 { + if x != nil { + return x.ShapeDistTraveled + } + return 0 +} + +func (x *StopTime) GetTimepoint() Timepoint { + if x != nil { + return x.Timepoint + } + return Timepoint_Approximate +} + +type Service struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ServiceId *EntityID `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + StartDate *Date `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + EndDate *Date `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + Added []*Date `protobuf:"bytes,4,rep,name=added,proto3" json:"added,omitempty"` + Removed []*Date `protobuf:"bytes,5,rep,name=removed,proto3" json:"removed,omitempty"` + Monday bool `protobuf:"varint,6,opt,name=monday,proto3" json:"monday,omitempty"` + Tuesday bool `protobuf:"varint,7,opt,name=tuesday,proto3" json:"tuesday,omitempty"` + Wednesday bool `protobuf:"varint,8,opt,name=wednesday,proto3" json:"wednesday,omitempty"` + Thursday bool `protobuf:"varint,9,opt,name=thursday,proto3" json:"thursday,omitempty"` + Friday bool `protobuf:"varint,10,opt,name=friday,proto3" json:"friday,omitempty"` + Saturday bool `protobuf:"varint,11,opt,name=saturday,proto3" json:"saturday,omitempty"` + Sunday bool `protobuf:"varint,12,opt,name=sunday,proto3" json:"sunday,omitempty"` +} + +func (x *Service) Reset() { + *x = Service{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Service) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Service) ProtoMessage() {} + +func (x *Service) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Service.ProtoReflect.Descriptor instead. +func (*Service) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{13} +} + +func (x *Service) GetServiceId() *EntityID { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *Service) GetStartDate() *Date { + if x != nil { + return x.StartDate + } + return nil +} + +func (x *Service) GetEndDate() *Date { + if x != nil { + return x.EndDate + } + return nil +} + +func (x *Service) GetAdded() []*Date { + if x != nil { + return x.Added + } + return nil +} + +func (x *Service) GetRemoved() []*Date { + if x != nil { + return x.Removed + } + return nil +} + +func (x *Service) GetMonday() bool { + if x != nil { + return x.Monday + } + return false +} + +func (x *Service) GetTuesday() bool { + if x != nil { + return x.Tuesday + } + return false +} + +func (x *Service) GetWednesday() bool { + if x != nil { + return x.Wednesday + } + return false +} + +func (x *Service) GetThursday() bool { + if x != nil { + return x.Thursday + } + return false +} + +func (x *Service) GetFriday() bool { + if x != nil { + return x.Friday + } + return false +} + +func (x *Service) GetSaturday() bool { + if x != nil { + return x.Saturday + } + return false +} + +func (x *Service) GetSunday() bool { + if x != nil { + return x.Sunday + } + return false +} + +type Calendar struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ServiceId *EntityID `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + StartDate *Date `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + EndDate *Date `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + Monday bool `protobuf:"varint,4,opt,name=monday,proto3" json:"monday,omitempty"` + Tuesday bool `protobuf:"varint,5,opt,name=tuesday,proto3" json:"tuesday,omitempty"` + Wednesday bool `protobuf:"varint,6,opt,name=wednesday,proto3" json:"wednesday,omitempty"` + Thursday bool `protobuf:"varint,7,opt,name=thursday,proto3" json:"thursday,omitempty"` + Friday bool `protobuf:"varint,8,opt,name=friday,proto3" json:"friday,omitempty"` + Saturday bool `protobuf:"varint,9,opt,name=saturday,proto3" json:"saturday,omitempty"` + Sunday bool `protobuf:"varint,10,opt,name=sunday,proto3" json:"sunday,omitempty"` +} + +func (x *Calendar) Reset() { + *x = Calendar{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Calendar) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Calendar) ProtoMessage() {} + +func (x *Calendar) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Calendar.ProtoReflect.Descriptor instead. +func (*Calendar) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{14} +} + +func (x *Calendar) GetServiceId() *EntityID { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *Calendar) GetStartDate() *Date { + if x != nil { + return x.StartDate + } + return nil +} + +func (x *Calendar) GetEndDate() *Date { + if x != nil { + return x.EndDate + } + return nil +} + +func (x *Calendar) GetMonday() bool { + if x != nil { + return x.Monday + } + return false +} + +func (x *Calendar) GetTuesday() bool { + if x != nil { + return x.Tuesday + } + return false +} + +func (x *Calendar) GetWednesday() bool { + if x != nil { + return x.Wednesday + } + return false +} + +func (x *Calendar) GetThursday() bool { + if x != nil { + return x.Thursday + } + return false +} + +func (x *Calendar) GetFriday() bool { + if x != nil { + return x.Friday + } + return false +} + +func (x *Calendar) GetSaturday() bool { + if x != nil { + return x.Saturday + } + return false +} + +func (x *Calendar) GetSunday() bool { + if x != nil { + return x.Sunday + } + return false +} + +type CalendarDate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ServiceId *Reference `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + Date *Date `protobuf:"bytes,2,opt,name=date,proto3" json:"date,omitempty"` + ExceptionType CalendarExceptionType `protobuf:"varint,3,opt,name=exception_type,json=exceptionType,proto3,enum=CalendarExceptionType" json:"exception_type,omitempty"` +} + +func (x *CalendarDate) Reset() { + *x = CalendarDate{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CalendarDate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CalendarDate) ProtoMessage() {} + +func (x *CalendarDate) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CalendarDate.ProtoReflect.Descriptor instead. +func (*CalendarDate) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{15} +} + +func (x *CalendarDate) GetServiceId() *Reference { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *CalendarDate) GetDate() *Date { + if x != nil { + return x.Date + } + return nil +} + +func (x *CalendarDate) GetExceptionType() CalendarExceptionType { + if x != nil { + return x.ExceptionType + } + return CalendarExceptionType_CalendarUnknown +} + +type Shape struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + Geometry []byte `protobuf:"bytes,2,opt,name=geometry,proto3" json:"geometry,omitempty"` +} + +func (x *Shape) Reset() { + *x = Shape{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Shape) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Shape) ProtoMessage() {} + +func (x *Shape) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Shape.ProtoReflect.Descriptor instead. +func (*Shape) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{16} +} + +func (x *Shape) GetShapeId() *EntityID { + if x != nil { + return x.ShapeId + } + return nil +} + +func (x *Shape) GetGeometry() []byte { + if x != nil { + return x.Geometry + } + return nil +} + +type ShapePoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + ShapePtLat float64 `protobuf:"fixed64,2,opt,name=shape_pt_lat,json=shapePtLat,proto3" json:"shape_pt_lat,omitempty"` + ShapePtLon float64 `protobuf:"fixed64,3,opt,name=shape_pt_lon,json=shapePtLon,proto3" json:"shape_pt_lon,omitempty"` + ShapePtSequence int64 `protobuf:"varint,4,opt,name=shape_pt_sequence,json=shapePtSequence,proto3" json:"shape_pt_sequence,omitempty"` + ShapeDistTraveled float64 `protobuf:"fixed64,5,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` +} + +func (x *ShapePoint) Reset() { + *x = ShapePoint{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShapePoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShapePoint) ProtoMessage() {} + +func (x *ShapePoint) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShapePoint.ProtoReflect.Descriptor instead. +func (*ShapePoint) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{17} +} + +func (x *ShapePoint) GetShapeId() *EntityID { + if x != nil { + return x.ShapeId + } + return nil +} + +func (x *ShapePoint) GetShapePtLat() float64 { + if x != nil { + return x.ShapePtLat + } + return 0 +} + +func (x *ShapePoint) GetShapePtLon() float64 { + if x != nil { + return x.ShapePtLon + } + return 0 +} + +func (x *ShapePoint) GetShapePtSequence() int64 { + if x != nil { + return x.ShapePtSequence + } + return 0 +} + +func (x *ShapePoint) GetShapeDistTraveled() float64 { + if x != nil { + return x.ShapeDistTraveled + } + return 0 +} + +var File_gtfs_proto protoreflect.FileDescriptor + +var file_gtfs_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x67, 0x74, 0x66, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x42, 0x0a, 0x04, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, + 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x64, 0x61, 0x79, + 0x22, 0x20, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x22, 0x1a, 0x0a, 0x08, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x26, + 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69, + 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, + 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x22, 0x28, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, + 0x22, 0x17, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x1d, 0x0a, 0x05, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0xeb, 0x01, 0x0a, 0x0a, 0x46, 0x65, 0x65, + 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x63, 0x79, + 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x04, 0x73, + 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x72, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x05, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x52, 0x04, 0x74, 0x72, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x09, + 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x09, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x53, 0x68, 0x61, 0x70, 0x65, 0x52, 0x05, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xb9, 0x02, 0x0a, 0x06, 0x41, 0x67, 0x65, 0x6e, 0x63, + 0x79, 0x12, 0x26, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, + 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x67, + 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0f, 0x61, 0x67, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0e, 0x61, + 0x67, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x21, + 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x72, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, + 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x72, 0x65, 0x55, 0x72, 0x6c, 0x12, + 0x21, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x22, 0xbc, 0x04, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x07, 0x73, + 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x74, 0x73, + 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x74, 0x74, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x73, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, + 0x6f, 0x70, 0x5f, 0x6c, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, + 0x6f, 0x70, 0x4c, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x6e, + 0x12, 0x17, 0x0a, 0x07, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x74, 0x6f, + 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, + 0x6c, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0d, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, + 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2e, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, + 0x6e, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x7a, + 0x6f, 0x6e, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, + 0x65, 0x12, 0x42, 0x0a, 0x13, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x5f, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, + 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x52, 0x12, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x42, 0x6f, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0xb4, 0x04, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x08, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, + 0x64, 0x12, 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6c, 0x6f, + 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x29, 0x0a, 0x0a, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x0a, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, + 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0b, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, + 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x65, 0x78, 0x74, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x6f, + 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x3a, + 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x69, 0x63, + 0x6b, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, + 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, + 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x13, 0x63, 0x6f, + 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, + 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, + 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0xb4, 0x03, 0x0a, 0x04, 0x54, 0x72, 0x69, + 0x70, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, + 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x70, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x74, 0x72, 0x69, 0x70, 0x48, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x26, 0x0a, 0x0f, + 0x74, 0x72, 0x69, 0x70, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x72, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x0c, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x25, + 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x15, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, + 0x61, 0x69, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, + 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x14, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, + 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x30, 0x0a, + 0x0d, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x52, 0x0c, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x22, + 0xcb, 0x03, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x07, + 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, + 0x64, 0x12, 0x28, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0b, + 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0e, 0x64, + 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, + 0x72, 0x74, 0x75, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x07, 0x73, 0x74, 0x6f, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x73, 0x69, 0x67, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, + 0x48, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x3a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, + 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, + 0x63, 0x6b, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, + 0x75, 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, + 0x4f, 0x66, 0x66, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, + 0x74, 0x5f, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x11, 0x73, 0x68, 0x61, 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, + 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xf1, 0x02, + 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, + 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x05, 0x61, + 0x64, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, + 0x64, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, + 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, + 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, + 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x68, 0x75, + 0x72, 0x73, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, + 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x6e, + 0x64, 0x61, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, + 0x79, 0x22, 0xb4, 0x02, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x12, 0x28, + 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, + 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, + 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, + 0x64, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, + 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, + 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, + 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x72, + 0x69, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x6c, + 0x65, 0x6e, 0x64, 0x61, 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x3d, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, + 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0d, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x49, + 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x08, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x22, 0xd2, 0x01, 0x0a, 0x0a, 0x53, 0x68, + 0x61, 0x70, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x6c, 0x61, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x4c, 0x61, 0x74, + 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x6c, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x4c, + 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x73, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, + 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2e, + 0x0a, 0x13, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, + 0x76, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x2a, 0x5a, + 0x0a, 0x10, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, + 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, + 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x44, 0x69, + 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x42, 0x0a, 0x0a, 0x42, 0x69, + 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, + 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, + 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x69, + 0x6b, 0x65, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x5b, + 0x0a, 0x0b, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, + 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, + 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, + 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x03, 0x2a, 0x64, 0x0a, 0x0c, 0x50, + 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x50, + 0x69, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x10, + 0x00, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x69, 0x73, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x75, + 0x70, 0x4d, 0x75, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, + 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x73, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x10, + 0x03, 0x2a, 0x7b, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, + 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, + 0x64, 0x65, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x65, 0x61, 0x10, 0x04, 0x2a, 0xcc, + 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, + 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6d, 0x10, 0x00, 0x12, 0x11, 0x0a, + 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x75, 0x62, 0x77, 0x61, 0x79, 0x10, 0x01, + 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x61, 0x69, 0x6c, 0x10, + 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x42, 0x75, 0x73, 0x10, + 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x65, 0x72, 0x72, + 0x79, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x61, + 0x62, 0x6c, 0x65, 0x63, 0x61, 0x72, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x65, 0x68, 0x69, + 0x63, 0x6c, 0x65, 0x47, 0x6f, 0x6e, 0x64, 0x6f, 0x6c, 0x61, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, + 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, + 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x62, 0x75, 0x73, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, + 0x63, 0x6c, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x10, 0x0c, 0x2a, 0x38, 0x0a, + 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, + 0x00, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x01, 0x2a, 0x27, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, + 0x61, 0x74, 0x65, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x01, + 0x2a, 0x54, 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, + 0x65, 0x6e, 0x64, 0x61, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x11, + 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, + 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x64, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_gtfs_proto_rawDescOnce sync.Once + file_gtfs_proto_rawDescData = file_gtfs_proto_rawDesc +) + +func file_gtfs_proto_rawDescGZIP() []byte { + file_gtfs_proto_rawDescOnce.Do(func() { + file_gtfs_proto_rawDescData = protoimpl.X.CompressGZIP(file_gtfs_proto_rawDescData) + }) + return file_gtfs_proto_rawDescData +} + +var file_gtfs_proto_enumTypes = make([]protoimpl.EnumInfo, 9) +var file_gtfs_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_gtfs_proto_goTypes = []interface{}{ + (WheelchairAccess)(0), // 0: WheelchairAccess + (BikeAccess)(0), // 1: BikeAccess + (BoardAccess)(0), // 2: BoardAccess + (PickupAccess)(0), // 3: PickupAccess + (LocationType)(0), // 4: LocationType + (RouteType)(0), // 5: RouteType + (Direction)(0), // 6: Direction + (Timepoint)(0), // 7: Timepoint + (CalendarExceptionType)(0), // 8: CalendarExceptionType + (*Date)(nil), // 9: Date + (*Time)(nil), // 10: Time + (*EntityID)(nil), // 11: EntityID + (*Timezone)(nil), // 12: Timezone + (*Reference)(nil), // 13: Reference + (*Url)(nil), // 14: Url + (*Color)(nil), // 15: Color + (*FeedEntity)(nil), // 16: FeedEntity + (*Agency)(nil), // 17: Agency + (*Stop)(nil), // 18: Stop + (*Route)(nil), // 19: Route + (*Trip)(nil), // 20: Trip + (*StopTime)(nil), // 21: StopTime + (*Service)(nil), // 22: Service + (*Calendar)(nil), // 23: Calendar + (*CalendarDate)(nil), // 24: CalendarDate + (*Shape)(nil), // 25: Shape + (*ShapePoint)(nil), // 26: ShapePoint +} +var file_gtfs_proto_depIdxs = []int32{ + 17, // 0: FeedEntity.agency:type_name -> Agency + 18, // 1: FeedEntity.stop:type_name -> Stop + 19, // 2: FeedEntity.route:type_name -> Route + 20, // 3: FeedEntity.trip:type_name -> Trip + 21, // 4: FeedEntity.stop_time:type_name -> StopTime + 25, // 5: FeedEntity.shape:type_name -> Shape + 22, // 6: FeedEntity.service:type_name -> Service + 11, // 7: Agency.agency_id:type_name -> EntityID + 12, // 8: Agency.agency_timezone:type_name -> Timezone + 14, // 9: Agency.agency_fare_url:type_name -> Url + 11, // 10: Stop.stop_id:type_name -> EntityID + 14, // 11: Stop.stop_url:type_name -> Url + 4, // 12: Stop.location_type:type_name -> LocationType + 13, // 13: Stop.parent_station:type_name -> Reference + 12, // 14: Stop.stop_timezone:type_name -> Timezone + 0, // 15: Stop.wheelchair_boarding:type_name -> WheelchairAccess + 13, // 16: Stop.level_id:type_name -> Reference + 11, // 17: Route.route_id:type_name -> EntityID + 13, // 18: Route.agency_id:type_name -> Reference + 5, // 19: Route.route_type:type_name -> RouteType + 14, // 20: Route.route_url:type_name -> Url + 15, // 21: Route.route_color:type_name -> Color + 15, // 22: Route.route_text_color:type_name -> Color + 3, // 23: Route.continuous_pickup:type_name -> PickupAccess + 3, // 24: Route.continuous_drop_off:type_name -> PickupAccess + 13, // 25: Trip.route_id:type_name -> Reference + 13, // 26: Trip.service_id:type_name -> Reference + 11, // 27: Trip.trip_id:type_name -> EntityID + 6, // 28: Trip.direction_id:type_name -> Direction + 13, // 29: Trip.shape_id:type_name -> Reference + 0, // 30: Trip.wheelchair_accessible:type_name -> WheelchairAccess + 1, // 31: Trip.bikes_allowed:type_name -> BikeAccess + 13, // 32: StopTime.trip_id:type_name -> Reference + 10, // 33: StopTime.arrival_time:type_name -> Time + 10, // 34: StopTime.departure_time:type_name -> Time + 13, // 35: StopTime.stop_id:type_name -> Reference + 3, // 36: StopTime.continuous_pickup:type_name -> PickupAccess + 3, // 37: StopTime.continuous_drop_off:type_name -> PickupAccess + 7, // 38: StopTime.timepoint:type_name -> Timepoint + 11, // 39: Service.service_id:type_name -> EntityID + 9, // 40: Service.start_date:type_name -> Date + 9, // 41: Service.end_date:type_name -> Date + 9, // 42: Service.added:type_name -> Date + 9, // 43: Service.removed:type_name -> Date + 11, // 44: Calendar.service_id:type_name -> EntityID + 9, // 45: Calendar.start_date:type_name -> Date + 9, // 46: Calendar.end_date:type_name -> Date + 13, // 47: CalendarDate.service_id:type_name -> Reference + 9, // 48: CalendarDate.date:type_name -> Date + 8, // 49: CalendarDate.exception_type:type_name -> CalendarExceptionType + 11, // 50: Shape.shape_id:type_name -> EntityID + 11, // 51: ShapePoint.shape_id:type_name -> EntityID + 52, // [52:52] is the sub-list for method output_type + 52, // [52:52] is the sub-list for method input_type + 52, // [52:52] is the sub-list for extension type_name + 52, // [52:52] is the sub-list for extension extendee + 0, // [0:52] is the sub-list for field type_name +} + +func init() { file_gtfs_proto_init() } +func file_gtfs_proto_init() { + if File_gtfs_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_gtfs_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Date); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Time); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntityID); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Timezone); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Reference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Url); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Color); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FeedEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Agency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Stop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Route); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Trip); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StopTime); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Service); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Calendar); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CalendarDate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Shape); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShapePoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_gtfs_proto_rawDesc, + NumEnums: 9, + NumMessages: 18, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_gtfs_proto_goTypes, + DependencyIndexes: file_gtfs_proto_depIdxs, + EnumInfos: file_gtfs_proto_enumTypes, + MessageInfos: file_gtfs_proto_msgTypes, + }.Build() + File_gtfs_proto = out.File + file_gtfs_proto_rawDesc = nil + file_gtfs_proto_goTypes = nil + file_gtfs_proto_depIdxs = nil +} diff --git a/tlpb/gtfs.proto b/tlpb/gtfs.proto new file mode 100644 index 00000000..06fe1b88 --- /dev/null +++ b/tlpb/gtfs.proto @@ -0,0 +1,224 @@ +syntax = "proto3"; + +message Date { + int64 year = 1; + int64 month = 2; + int64 day = 3; +} + +message Time { + int64 seconds = 1; +} + +enum WheelchairAccess { + WheelchairUnknown = 0; + WheelchairAllowed = 1; + WheelchairDisallowed = 2; +} + +enum BikeAccess { + BikeUnknown = 0; + BikeAllowed = 1; + BikeDisallowed = 2; +} + +enum BoardAccess { + BoardUnknown = 0; + BoardDisallowed = 1; + BoardAllowed = 2; + BoardCoordinate = 3; +} + +enum PickupAccess { + PickupContinuous = 0; + PickupDisallowed = 1; + PickupMustPhone = 2; + PickupAskDriver = 3; +} + +enum LocationType { + LocationPlatform = 0; + LocationStation = 1; + LocationEntrance = 2; + LocationNode = 3; + LocationBoardingArea = 4; +} + +enum RouteType { + VehicleTram = 0; + VehicleSubway = 1; + VehicleRail = 2; + VehicleBus = 3; + VehicleFerry = 4; + VehicleCablecar = 5; + VehicleGondola = 6; + VehicleFunicular = 7; + VehicleTrollebus = 11; + VehicleMonorail = 12; +} + +enum Direction { + DirectionOutbound = 0; + DirectionInbound = 1; +} + +enum Timepoint { + Approximate = 0; + Exact = 1; +} + +enum CalendarExceptionType { + CalendarUnknown = 0; + CalendarAdded = 1; + CalendarRemoved = 2; +} + +message EntityID { + string id = 1; +} + +message Timezone { + string timezone = 1; +} + +message Reference { + string entity_id = 1; +} + +message Url { + string url = 1; +} + +message Color { + string color = 1; +} + +///////////// + +message FeedEntity { + Agency agency = 1; + Stop stop = 2; + Route route = 3; + Trip trip = 4; + StopTime stop_time = 5; + Shape shape = 6; + Service service = 7; +} + +message Agency { + EntityID agency_id = 1; + string agency_name = 2; + string agency_url = 3; + Timezone agency_timezone = 4; + string agency_lang = 5; + string agency_phone = 6; + Url agency_fare_url = 7; + string agency_email = 8; +} + +message Stop { + EntityID stop_id = 1; + string stop_code = 2; + string stop_name = 3; + string tts_stop_name = 4; + string stop_desc = 5; + double stop_lat = 6; + double stop_lon = 7; + string zone_id = 8; + Url stop_url = 9; + LocationType location_type = 10; + Reference parent_station = 11; + Timezone stop_timezone = 12; + WheelchairAccess wheelchair_boarding = 13; + Reference level_id = 14; + string platform_code = 15; +} + +message Route { + EntityID route_id = 1; + Reference agency_id = 2; + string route_short_name = 3; + string route_long_name = 4; + string route_desc = 5; + RouteType route_type = 6; + Url route_url = 7; + Color route_color = 8; + Color route_text_color = 9; + int64 route_sort_order = 10; + PickupAccess continuous_pickup = 11; + PickupAccess continuous_drop_off = 12; + string network_id = 13; +} + +message Trip { + Reference route_id = 1; + Reference service_id = 2; + EntityID trip_id = 3; + string trip_headsign = 4; + string trip_short_name = 5; + Direction direction_id = 6; + string block_id = 7; + Reference shape_id = 8; + WheelchairAccess wheelchair_accessible = 9; + BikeAccess bikes_allowed = 10; +} + +message StopTime { + Reference trip_id = 1; + Time arrival_time = 2; + Time departure_time = 3; + Reference stop_id = 4; + int64 stop_sequence = 5; + string stop_headsign = 6; + PickupAccess continuous_pickup = 7; + PickupAccess continuous_drop_off = 8; + double shape_dist_traveled = 9; + Timepoint timepoint = 10; +} + +message Service { + EntityID service_id = 1; + Date start_date = 2; + Date end_date = 3; + repeated Date added = 4; + repeated Date removed = 5; + bool monday = 6; + bool tuesday = 7; + bool wednesday = 8; + bool thursday = 9; + bool friday = 10; + bool saturday = 11; + bool sunday = 12; +} + +message Calendar { + EntityID service_id = 1; + Date start_date = 2; + Date end_date = 3; + bool monday = 4; + bool tuesday = 5; + bool wednesday = 6; + bool thursday = 7; + bool friday = 8; + bool saturday = 9; + bool sunday = 10; +} + +message CalendarDate { + Reference service_id = 1; + Date date = 2; + CalendarExceptionType exception_type = 3; +} + +message Shape { + EntityID shape_id = 1; + bytes geometry = 2; +} + +message ShapePoint { + EntityID shape_id = 1; + double shape_pt_lat = 2; + double shape_pt_lon = 3; + int64 shape_pt_sequence = 4; + double shape_dist_traveled = 5; +} \ No newline at end of file diff --git a/tlpb/tlpb.go b/tlpb/tlpb.go new file mode 100644 index 00000000..536aa03b --- /dev/null +++ b/tlpb/tlpb.go @@ -0,0 +1,3 @@ +//go:generate protoc --go_out=. --go_opt=paths=source_relative --go_opt=Mgtfs.proto=tlpb/tlpb gtfs.proto + +package tlpb From bfb92f5cba8efa88a96b1ce6d11ebb5153221548 Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Thu, 3 Oct 2024 16:47:15 -0700 Subject: [PATCH 02/14] More experiments --- tl/tt/convert.go | 11 +- tlcsv/reflect.go | 10 +- tlpb/csv.go | 56 +++ tlpb/csv_test.go | 11 + tlpb/gtfs.pb.go | 1116 +++++++++++++++++++++++++++------------------- tlpb/gtfs.proto | 42 +- 6 files changed, 776 insertions(+), 470 deletions(-) create mode 100644 tlpb/csv.go create mode 100644 tlpb/csv_test.go diff --git a/tl/tt/convert.go b/tl/tt/convert.go index 47db8f94..10701390 100644 --- a/tl/tt/convert.go +++ b/tl/tt/convert.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "math" + "reflect" "strconv" "time" @@ -68,7 +69,15 @@ func FromCsv(val any, strv string) error { p = errors.New("field not scannable") } default: - p = errors.New("field not scannable") + // Handle protobuf enums + k := reflect.ValueOf(val) + if k.Elem().CanInt() { + v, e := strconv.ParseInt(strv, 0, 0) + p = e + k.Elem().SetInt(v) + } else { + p = errors.New("field not scannable") + } } return p } diff --git a/tlcsv/reflect.go b/tlcsv/reflect.go index 5f61c871..32f99a0a 100644 --- a/tlcsv/reflect.go +++ b/tlcsv/reflect.go @@ -71,6 +71,9 @@ func GetString(ent tl.Entity, key string) (string, error) { } // Loading: fast and reflect paths // +func LoadRow(ent any, row Row) []error { + return loadRow(ent, row) +} // loadRow selects the fastest method for loading an entity. func loadRow(ent any, row Row) []error { @@ -146,7 +149,12 @@ func loadRowReflect(ent interface{}, row Row) []error { continue } // Handle different known types - fieldValue := reflectx.FieldByIndexes(entValue, fieldInfo.Index).Addr().Interface() + var fieldValue any + if k := reflectx.FieldByIndexes(entValue, fieldInfo.Index); k.Kind() == reflect.Pointer { + fieldValue = k.Interface() + } else { + fieldValue = k.Addr().Interface() + } if err := tt.FromCsv(fieldValue, strv); err != nil { errs = append(errs, causes.NewFieldParseError(fieldName, strv)) } diff --git a/tlpb/csv.go b/tlpb/csv.go new file mode 100644 index 00000000..ed5685be --- /dev/null +++ b/tlpb/csv.go @@ -0,0 +1,56 @@ +package tlpb + +import ( + "fmt" + + "github.com/interline-io/transitland-lib/tl/tt" + "github.com/interline-io/transitland-lib/tlcsv" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/reflect/protoreflect" +) + +func (t *Url) FromCsv(v string) error { + t.Url = v + return nil +} + +func (t *EntityID) FromCsv(v string) error { + t.Id = v + return nil +} + +func (t *Reference) FromCsv(v string) error { + t.EntityId = v + return nil +} + +func (t *Seconds) FromCsv(v string) error { + wt, err := tt.NewWideTime(v) + if err != nil { + return err + } + t.Seconds = int64(wt.Seconds) + return nil +} + +func pbJson(v protoreflect.ProtoMessage) string { + jj, _ := protojson.Marshal(v) + return string(jj) +} + +func ReadStops(fn string) error { + a := tlcsv.NewZipAdapter(fn) + if err := a.Open(); err != nil { + panic(err) + } + a.ReadRows("stop_times.txt", func(row tlcsv.Row) { + ent := StopTime{} + if errs := tlcsv.LoadRow(&ent, row); errs != nil { + for _, err := range errs { + panic(err) + } + } + fmt.Println(pbJson(&ent)) + }) + return nil +} diff --git a/tlpb/csv_test.go b/tlpb/csv_test.go new file mode 100644 index 00000000..9d68b6ae --- /dev/null +++ b/tlpb/csv_test.go @@ -0,0 +1,11 @@ +package tlpb + +import ( + "testing" + + "github.com/interline-io/transitland-lib/internal/testutil" +) + +func TestReadStops(t *testing.T) { + ReadStops(testutil.RelPath("test/data/external/bart.zip")) +} diff --git a/tlpb/gtfs.pb.go b/tlpb/gtfs.pb.go index e76772ba..b483deb7 100644 --- a/tlpb/gtfs.pb.go +++ b/tlpb/gtfs.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v4.23.3 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: gtfs.proto package tlpb @@ -493,9 +493,9 @@ type Date struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Year int64 `protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"` - Month int64 `protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"` - Day int64 `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"` + Year int32 `protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"` + Month int32 `protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"` + Day int32 `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"` } func (x *Date) Reset() { @@ -530,21 +530,21 @@ func (*Date) Descriptor() ([]byte, []int) { return file_gtfs_proto_rawDescGZIP(), []int{0} } -func (x *Date) GetYear() int64 { +func (x *Date) GetYear() int32 { if x != nil { return x.Year } return 0 } -func (x *Date) GetMonth() int64 { +func (x *Date) GetMonth() int32 { if x != nil { return x.Month } return 0 } -func (x *Date) GetDay() int64 { +func (x *Date) GetDay() int32 { if x != nil { return x.Day } @@ -598,6 +598,53 @@ func (x *Time) GetSeconds() int64 { return 0 } +type Seconds struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` +} + +func (x *Seconds) Reset() { + *x = Seconds{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Seconds) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Seconds) ProtoMessage() {} + +func (x *Seconds) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Seconds.ProtoReflect.Descriptor instead. +func (*Seconds) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{2} +} + +func (x *Seconds) GetSeconds() int64 { + if x != nil { + return x.Seconds + } + return 0 +} + type EntityID struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -609,7 +656,7 @@ type EntityID struct { func (x *EntityID) Reset() { *x = EntityID{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[2] + mi := &file_gtfs_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -622,7 +669,7 @@ func (x *EntityID) String() string { func (*EntityID) ProtoMessage() {} func (x *EntityID) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[2] + mi := &file_gtfs_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -635,7 +682,7 @@ func (x *EntityID) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityID.ProtoReflect.Descriptor instead. func (*EntityID) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{2} + return file_gtfs_proto_rawDescGZIP(), []int{3} } func (x *EntityID) GetId() string { @@ -656,7 +703,7 @@ type Timezone struct { func (x *Timezone) Reset() { *x = Timezone{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[3] + mi := &file_gtfs_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -669,7 +716,7 @@ func (x *Timezone) String() string { func (*Timezone) ProtoMessage() {} func (x *Timezone) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[3] + mi := &file_gtfs_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -682,7 +729,7 @@ func (x *Timezone) ProtoReflect() protoreflect.Message { // Deprecated: Use Timezone.ProtoReflect.Descriptor instead. func (*Timezone) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{3} + return file_gtfs_proto_rawDescGZIP(), []int{4} } func (x *Timezone) GetTimezone() string { @@ -703,7 +750,7 @@ type Reference struct { func (x *Reference) Reset() { *x = Reference{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[4] + mi := &file_gtfs_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -716,7 +763,7 @@ func (x *Reference) String() string { func (*Reference) ProtoMessage() {} func (x *Reference) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[4] + mi := &file_gtfs_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -729,7 +776,7 @@ func (x *Reference) ProtoReflect() protoreflect.Message { // Deprecated: Use Reference.ProtoReflect.Descriptor instead. func (*Reference) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{4} + return file_gtfs_proto_rawDescGZIP(), []int{5} } func (x *Reference) GetEntityId() string { @@ -750,7 +797,7 @@ type Url struct { func (x *Url) Reset() { *x = Url{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[5] + mi := &file_gtfs_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -763,7 +810,7 @@ func (x *Url) String() string { func (*Url) ProtoMessage() {} func (x *Url) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[5] + mi := &file_gtfs_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -776,7 +823,7 @@ func (x *Url) ProtoReflect() protoreflect.Message { // Deprecated: Use Url.ProtoReflect.Descriptor instead. func (*Url) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{5} + return file_gtfs_proto_rawDescGZIP(), []int{6} } func (x *Url) GetUrl() string { @@ -797,7 +844,7 @@ type Color struct { func (x *Color) Reset() { *x = Color{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[6] + mi := &file_gtfs_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -810,7 +857,7 @@ func (x *Color) String() string { func (*Color) ProtoMessage() {} func (x *Color) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[6] + mi := &file_gtfs_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -823,7 +870,7 @@ func (x *Color) ProtoReflect() protoreflect.Message { // Deprecated: Use Color.ProtoReflect.Descriptor instead. func (*Color) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{6} + return file_gtfs_proto_rawDescGZIP(), []int{7} } func (x *Color) GetColor() string { @@ -850,7 +897,7 @@ type FeedEntity struct { func (x *FeedEntity) Reset() { *x = FeedEntity{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[7] + mi := &file_gtfs_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -863,7 +910,7 @@ func (x *FeedEntity) String() string { func (*FeedEntity) ProtoMessage() {} func (x *FeedEntity) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[7] + mi := &file_gtfs_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -876,7 +923,7 @@ func (x *FeedEntity) ProtoReflect() protoreflect.Message { // Deprecated: Use FeedEntity.ProtoReflect.Descriptor instead. func (*FeedEntity) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{7} + return file_gtfs_proto_rawDescGZIP(), []int{8} } func (x *FeedEntity) GetAgency() *Agency { @@ -946,7 +993,7 @@ type Agency struct { func (x *Agency) Reset() { *x = Agency{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[8] + mi := &file_gtfs_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -959,7 +1006,7 @@ func (x *Agency) String() string { func (*Agency) ProtoMessage() {} func (x *Agency) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[8] + mi := &file_gtfs_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -972,7 +1019,7 @@ func (x *Agency) ProtoReflect() protoreflect.Message { // Deprecated: Use Agency.ProtoReflect.Descriptor instead. func (*Agency) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{8} + return file_gtfs_proto_rawDescGZIP(), []int{9} } func (x *Agency) GetAgencyId() *EntityID { @@ -1056,7 +1103,7 @@ type Stop struct { func (x *Stop) Reset() { *x = Stop{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[9] + mi := &file_gtfs_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1069,7 +1116,7 @@ func (x *Stop) String() string { func (*Stop) ProtoMessage() {} func (x *Stop) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[9] + mi := &file_gtfs_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1082,7 +1129,7 @@ func (x *Stop) ProtoReflect() protoreflect.Message { // Deprecated: Use Stop.ProtoReflect.Descriptor instead. func (*Stop) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{9} + return file_gtfs_proto_rawDescGZIP(), []int{10} } func (x *Stop) GetStopId() *EntityID { @@ -1204,7 +1251,7 @@ type Route struct { RouteUrl *Url `protobuf:"bytes,7,opt,name=route_url,json=routeUrl,proto3" json:"route_url,omitempty"` RouteColor *Color `protobuf:"bytes,8,opt,name=route_color,json=routeColor,proto3" json:"route_color,omitempty"` RouteTextColor *Color `protobuf:"bytes,9,opt,name=route_text_color,json=routeTextColor,proto3" json:"route_text_color,omitempty"` - RouteSortOrder int64 `protobuf:"varint,10,opt,name=route_sort_order,json=routeSortOrder,proto3" json:"route_sort_order,omitempty"` + RouteSortOrder int32 `protobuf:"varint,10,opt,name=route_sort_order,json=routeSortOrder,proto3" json:"route_sort_order,omitempty"` ContinuousPickup PickupAccess `protobuf:"varint,11,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` ContinuousDropOff PickupAccess `protobuf:"varint,12,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` NetworkId string `protobuf:"bytes,13,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` @@ -1213,7 +1260,7 @@ type Route struct { func (x *Route) Reset() { *x = Route{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[10] + mi := &file_gtfs_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1226,7 +1273,7 @@ func (x *Route) String() string { func (*Route) ProtoMessage() {} func (x *Route) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[10] + mi := &file_gtfs_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1239,7 +1286,7 @@ func (x *Route) ProtoReflect() protoreflect.Message { // Deprecated: Use Route.ProtoReflect.Descriptor instead. func (*Route) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{10} + return file_gtfs_proto_rawDescGZIP(), []int{11} } func (x *Route) GetRouteId() *EntityID { @@ -1305,7 +1352,7 @@ func (x *Route) GetRouteTextColor() *Color { return nil } -func (x *Route) GetRouteSortOrder() int64 { +func (x *Route) GetRouteSortOrder() int32 { if x != nil { return x.RouteSortOrder } @@ -1353,7 +1400,7 @@ type Trip struct { func (x *Trip) Reset() { *x = Trip{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[11] + mi := &file_gtfs_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1366,7 +1413,7 @@ func (x *Trip) String() string { func (*Trip) ProtoMessage() {} func (x *Trip) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[11] + mi := &file_gtfs_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1379,7 +1426,7 @@ func (x *Trip) ProtoReflect() protoreflect.Message { // Deprecated: Use Trip.ProtoReflect.Descriptor instead. func (*Trip) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{11} + return file_gtfs_proto_rawDescGZIP(), []int{12} } func (x *Trip) GetRouteId() *Reference { @@ -1458,10 +1505,10 @@ type StopTime struct { unknownFields protoimpl.UnknownFields TripId *Reference `protobuf:"bytes,1,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` - ArrivalTime *Time `protobuf:"bytes,2,opt,name=arrival_time,json=arrivalTime,proto3" json:"arrival_time,omitempty"` - DepartureTime *Time `protobuf:"bytes,3,opt,name=departure_time,json=departureTime,proto3" json:"departure_time,omitempty"` + ArrivalTime *Seconds `protobuf:"bytes,2,opt,name=arrival_time,json=arrivalTime,proto3" json:"arrival_time,omitempty"` + DepartureTime *Seconds `protobuf:"bytes,3,opt,name=departure_time,json=departureTime,proto3" json:"departure_time,omitempty"` StopId *Reference `protobuf:"bytes,4,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` - StopSequence int64 `protobuf:"varint,5,opt,name=stop_sequence,json=stopSequence,proto3" json:"stop_sequence,omitempty"` + StopSequence int32 `protobuf:"varint,5,opt,name=stop_sequence,json=stopSequence,proto3" json:"stop_sequence,omitempty"` StopHeadsign string `protobuf:"bytes,6,opt,name=stop_headsign,json=stopHeadsign,proto3" json:"stop_headsign,omitempty"` ContinuousPickup PickupAccess `protobuf:"varint,7,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` ContinuousDropOff PickupAccess `protobuf:"varint,8,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` @@ -1472,7 +1519,7 @@ type StopTime struct { func (x *StopTime) Reset() { *x = StopTime{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[12] + mi := &file_gtfs_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1485,7 +1532,7 @@ func (x *StopTime) String() string { func (*StopTime) ProtoMessage() {} func (x *StopTime) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[12] + mi := &file_gtfs_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1498,7 +1545,7 @@ func (x *StopTime) ProtoReflect() protoreflect.Message { // Deprecated: Use StopTime.ProtoReflect.Descriptor instead. func (*StopTime) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{12} + return file_gtfs_proto_rawDescGZIP(), []int{13} } func (x *StopTime) GetTripId() *Reference { @@ -1508,14 +1555,14 @@ func (x *StopTime) GetTripId() *Reference { return nil } -func (x *StopTime) GetArrivalTime() *Time { +func (x *StopTime) GetArrivalTime() *Seconds { if x != nil { return x.ArrivalTime } return nil } -func (x *StopTime) GetDepartureTime() *Time { +func (x *StopTime) GetDepartureTime() *Seconds { if x != nil { return x.DepartureTime } @@ -1529,7 +1576,7 @@ func (x *StopTime) GetStopId() *Reference { return nil } -func (x *StopTime) GetStopSequence() int64 { +func (x *StopTime) GetStopSequence() int32 { if x != nil { return x.StopSequence } @@ -1593,7 +1640,7 @@ type Service struct { func (x *Service) Reset() { *x = Service{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[13] + mi := &file_gtfs_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1606,7 +1653,7 @@ func (x *Service) String() string { func (*Service) ProtoMessage() {} func (x *Service) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[13] + mi := &file_gtfs_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1619,7 +1666,7 @@ func (x *Service) ProtoReflect() protoreflect.Message { // Deprecated: Use Service.ProtoReflect.Descriptor instead. func (*Service) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{13} + return file_gtfs_proto_rawDescGZIP(), []int{14} } func (x *Service) GetServiceId() *EntityID { @@ -1726,7 +1773,7 @@ type Calendar struct { func (x *Calendar) Reset() { *x = Calendar{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[14] + mi := &file_gtfs_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1739,7 +1786,7 @@ func (x *Calendar) String() string { func (*Calendar) ProtoMessage() {} func (x *Calendar) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[14] + mi := &file_gtfs_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1752,7 +1799,7 @@ func (x *Calendar) ProtoReflect() protoreflect.Message { // Deprecated: Use Calendar.ProtoReflect.Descriptor instead. func (*Calendar) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{14} + return file_gtfs_proto_rawDescGZIP(), []int{15} } func (x *Calendar) GetServiceId() *EntityID { @@ -1838,7 +1885,7 @@ type CalendarDate struct { func (x *CalendarDate) Reset() { *x = CalendarDate{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[15] + mi := &file_gtfs_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1851,7 +1898,7 @@ func (x *CalendarDate) String() string { func (*CalendarDate) ProtoMessage() {} func (x *CalendarDate) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[15] + mi := &file_gtfs_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1864,7 +1911,7 @@ func (x *CalendarDate) ProtoReflect() protoreflect.Message { // Deprecated: Use CalendarDate.ProtoReflect.Descriptor instead. func (*CalendarDate) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{15} + return file_gtfs_proto_rawDescGZIP(), []int{16} } func (x *CalendarDate) GetServiceId() *Reference { @@ -1888,19 +1935,98 @@ func (x *CalendarDate) GetExceptionType() CalendarExceptionType { return CalendarExceptionType_CalendarUnknown } +type ShapePoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + ShapePtLat float64 `protobuf:"fixed64,2,opt,name=shape_pt_lat,json=shapePtLat,proto3" json:"shape_pt_lat,omitempty"` + ShapePtLon float64 `protobuf:"fixed64,3,opt,name=shape_pt_lon,json=shapePtLon,proto3" json:"shape_pt_lon,omitempty"` + ShapePtSequence int32 `protobuf:"varint,4,opt,name=shape_pt_sequence,json=shapePtSequence,proto3" json:"shape_pt_sequence,omitempty"` + ShapeDistTraveled float64 `protobuf:"fixed64,5,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` +} + +func (x *ShapePoint) Reset() { + *x = ShapePoint{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShapePoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShapePoint) ProtoMessage() {} + +func (x *ShapePoint) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShapePoint.ProtoReflect.Descriptor instead. +func (*ShapePoint) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{17} +} + +func (x *ShapePoint) GetShapeId() *EntityID { + if x != nil { + return x.ShapeId + } + return nil +} + +func (x *ShapePoint) GetShapePtLat() float64 { + if x != nil { + return x.ShapePtLat + } + return 0 +} + +func (x *ShapePoint) GetShapePtLon() float64 { + if x != nil { + return x.ShapePtLon + } + return 0 +} + +func (x *ShapePoint) GetShapePtSequence() int32 { + if x != nil { + return x.ShapePtSequence + } + return 0 +} + +func (x *ShapePoint) GetShapeDistTraveled() float64 { + if x != nil { + return x.ShapeDistTraveled + } + return 0 +} + type Shape struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` - Geometry []byte `protobuf:"bytes,2,opt,name=geometry,proto3" json:"geometry,omitempty"` + ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + Shape *LineString `protobuf:"bytes,2,opt,name=shape,proto3" json:"shape,omitempty"` } func (x *Shape) Reset() { *x = Shape{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[16] + mi := &file_gtfs_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1913,7 +2039,7 @@ func (x *Shape) String() string { func (*Shape) ProtoMessage() {} func (x *Shape) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[16] + mi := &file_gtfs_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1926,7 +2052,7 @@ func (x *Shape) ProtoReflect() protoreflect.Message { // Deprecated: Use Shape.ProtoReflect.Descriptor instead. func (*Shape) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{16} + return file_gtfs_proto_rawDescGZIP(), []int{18} } func (x *Shape) GetShapeId() *EntityID { @@ -1936,42 +2062,39 @@ func (x *Shape) GetShapeId() *EntityID { return nil } -func (x *Shape) GetGeometry() []byte { +func (x *Shape) GetShape() *LineString { if x != nil { - return x.Geometry + return x.Shape } return nil } -type ShapePoint struct { +type Point struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` - ShapePtLat float64 `protobuf:"fixed64,2,opt,name=shape_pt_lat,json=shapePtLat,proto3" json:"shape_pt_lat,omitempty"` - ShapePtLon float64 `protobuf:"fixed64,3,opt,name=shape_pt_lon,json=shapePtLon,proto3" json:"shape_pt_lon,omitempty"` - ShapePtSequence int64 `protobuf:"varint,4,opt,name=shape_pt_sequence,json=shapePtSequence,proto3" json:"shape_pt_sequence,omitempty"` - ShapeDistTraveled float64 `protobuf:"fixed64,5,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` + Lon float32 `protobuf:"fixed32,1,opt,name=lon,proto3" json:"lon,omitempty"` + Lat float32 `protobuf:"fixed32,2,opt,name=lat,proto3" json:"lat,omitempty"` } -func (x *ShapePoint) Reset() { - *x = ShapePoint{} +func (x *Point) Reset() { + *x = Point{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[17] + mi := &file_gtfs_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ShapePoint) String() string { +func (x *Point) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ShapePoint) ProtoMessage() {} +func (*Point) ProtoMessage() {} -func (x *ShapePoint) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[17] +func (x *Point) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1982,44 +2105,78 @@ func (x *ShapePoint) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ShapePoint.ProtoReflect.Descriptor instead. -func (*ShapePoint) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{17} +// Deprecated: Use Point.ProtoReflect.Descriptor instead. +func (*Point) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{19} } -func (x *ShapePoint) GetShapeId() *EntityID { +func (x *Point) GetLon() float32 { if x != nil { - return x.ShapeId + return x.Lon } - return nil + return 0 } -func (x *ShapePoint) GetShapePtLat() float64 { +func (x *Point) GetLat() float32 { if x != nil { - return x.ShapePtLat + return x.Lat } return 0 } -func (x *ShapePoint) GetShapePtLon() float64 { - if x != nil { - return x.ShapePtLon +type LineString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Stride int32 `protobuf:"varint,1,opt,name=stride,proto3" json:"stride,omitempty"` + Coordinates []float64 `protobuf:"fixed64,2,rep,packed,name=coordinates,proto3" json:"coordinates,omitempty"` +} + +func (x *LineString) Reset() { + *x = LineString{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *ShapePoint) GetShapePtSequence() int64 { +func (x *LineString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LineString) ProtoMessage() {} + +func (x *LineString) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LineString.ProtoReflect.Descriptor instead. +func (*LineString) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{20} +} + +func (x *LineString) GetStride() int32 { if x != nil { - return x.ShapePtSequence + return x.Stride } return 0 } -func (x *ShapePoint) GetShapeDistTraveled() float64 { +func (x *LineString) GetCoordinates() []float64 { if x != nil { - return x.ShapeDistTraveled + return x.Coordinates } - return 0 + return nil } var File_gtfs_proto protoreflect.FileDescriptor @@ -2027,241 +2184,239 @@ var File_gtfs_proto protoreflect.FileDescriptor var file_gtfs_proto_rawDesc = []byte{ 0x0a, 0x0a, 0x67, 0x74, 0x66, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x42, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, - 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x64, 0x61, 0x79, + 0x28, 0x05, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, + 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, 0x22, 0x20, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x22, 0x1a, 0x0a, 0x08, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x26, - 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69, - 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, - 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x22, 0x28, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, - 0x22, 0x17, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x1d, 0x0a, 0x05, 0x43, 0x6f, 0x6c, - 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0xeb, 0x01, 0x0a, 0x0a, 0x46, 0x65, 0x65, - 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x63, 0x79, - 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x04, 0x73, - 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x72, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x05, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x52, 0x04, 0x74, 0x72, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x09, - 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x09, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x53, 0x68, 0x61, 0x70, 0x65, 0x52, 0x05, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xb9, 0x02, 0x0a, 0x06, 0x41, 0x67, 0x65, 0x6e, 0x63, - 0x79, 0x12, 0x26, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, - 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, - 0x6e, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x67, - 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0f, 0x61, 0x67, 0x65, - 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0e, 0x61, - 0x67, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x21, - 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x68, 0x6f, 0x6e, - 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x72, 0x65, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, - 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x72, 0x65, 0x55, 0x72, 0x6c, 0x12, - 0x21, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x22, 0xbc, 0x04, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x07, 0x73, - 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x73, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x74, 0x73, - 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x74, 0x74, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x73, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, - 0x6f, 0x70, 0x5f, 0x6c, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, - 0x6f, 0x70, 0x4c, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x6f, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x6e, - 0x12, 0x17, 0x0a, 0x07, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x74, 0x6f, - 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, - 0x6c, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0d, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x0d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, - 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2e, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, - 0x6e, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x7a, - 0x6f, 0x6e, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, - 0x65, 0x12, 0x42, 0x0a, 0x13, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x5f, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, - 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x52, 0x12, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x42, 0x6f, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, - 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x64, - 0x65, 0x22, 0xb4, 0x04, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x08, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, - 0x64, 0x12, 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6c, 0x6f, - 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x29, 0x0a, 0x0a, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x0a, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, - 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0b, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, - 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6c, - 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x65, 0x78, 0x74, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x6f, - 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x3a, - 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x69, 0x63, - 0x6b, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, - 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, - 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x13, 0x63, 0x6f, - 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, - 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, - 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0xb4, 0x03, 0x0a, 0x04, 0x54, 0x72, 0x69, - 0x70, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, - 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, - 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x70, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x74, 0x72, 0x69, 0x70, 0x48, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x26, 0x0a, 0x0f, - 0x74, 0x72, 0x69, 0x70, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x72, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x0c, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x25, - 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x15, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, - 0x61, 0x69, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, - 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x14, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, - 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x30, 0x0a, - 0x0d, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x52, 0x0c, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x22, - 0xcb, 0x03, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x07, - 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, - 0x64, 0x12, 0x28, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0b, - 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0e, 0x64, - 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, - 0x72, 0x74, 0x75, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x07, 0x73, 0x74, 0x6f, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, - 0x73, 0x69, 0x67, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, - 0x48, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x3a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, - 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, - 0x63, 0x6b, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, - 0x75, 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, - 0x4f, 0x66, 0x66, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, - 0x74, 0x5f, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x11, 0x73, 0x68, 0x61, 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, - 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xf1, 0x02, - 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, 0x72, + 0x64, 0x73, 0x22, 0x23, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x1a, 0x0a, 0x08, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x26, 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x22, 0x28, 0x0a, 0x09, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x1d, + 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0xeb, 0x01, + 0x0a, 0x0a, 0x46, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x06, + 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x41, + 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, + 0x04, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x53, 0x74, + 0x6f, 0x70, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, + 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x72, 0x69, 0x70, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x52, 0x04, 0x74, 0x72, 0x69, + 0x70, 0x12, 0x26, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x52, + 0x08, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x53, 0x68, 0x61, 0x70, 0x65, + 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xb9, 0x02, 0x0a, 0x06, + 0x41, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x26, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x49, 0x44, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x32, + 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, + 0x6e, 0x65, 0x52, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, + 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x61, 0x6e, + 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4c, + 0x61, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x68, + 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, + 0x79, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x72, + 0x65, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, + 0x63, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xbc, 0x04, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, + 0x12, 0x22, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x73, 0x74, + 0x6f, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, + 0x0a, 0x0d, 0x74, 0x74, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x74, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x73, 0x63, 0x12, + 0x19, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, + 0x6f, 0x70, 0x5f, 0x6c, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, + 0x6f, 0x70, 0x4c, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x55, 0x72, 0x6c, 0x12, + 0x32, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, + 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x42, 0x0a, 0x13, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, + 0x68, 0x61, 0x69, 0x72, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x12, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, + 0x69, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, + 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xb4, 0x04, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x12, 0x24, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, + 0x28, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x53, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6e, 0x67, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, + 0x12, 0x29, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, + 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, + 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x06, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, + 0x73, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, + 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, + 0x3d, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, + 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, + 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x1d, + 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0xb4, 0x03, + 0x0a, 0x04, 0x54, 0x72, 0x69, 0x70, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, + 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x74, 0x72, 0x69, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x70, 0x48, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, + 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x70, + 0x53, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x0c, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x0a, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x15, 0x77, 0x68, + 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, + 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, + 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x14, 0x77, 0x68, + 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, + 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x0d, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x42, 0x69, 0x6b, 0x65, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x41, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x22, 0xd1, 0x03, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x23, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, + 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, + 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x0b, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, + 0x70, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x73, + 0x69, 0x67, 0x6e, 0x12, 0x3a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, + 0x73, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, + 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, + 0x3d, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, + 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, + 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x2e, + 0x0a, 0x13, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, + 0x76, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x12, 0x28, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0a, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xf1, 0x02, 0x0a, 0x07, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x24, + 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, 0x64, + 0x64, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, + 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, + 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, + 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, + 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, 0x75, + 0x72, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, + 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x22, 0xb4, 0x02, 0x0a, + 0x08, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, - 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x05, 0x61, - 0x64, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, - 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, - 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, - 0x64, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, - 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, - 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, - 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x68, 0x75, - 0x72, 0x73, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, - 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x6e, - 0x64, 0x61, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, - 0x79, 0x22, 0xb4, 0x02, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x12, 0x28, - 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, - 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, - 0x64, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, - 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, - 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, - 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x72, - 0x69, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x6c, - 0x65, 0x6e, 0x64, 0x61, 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, - 0x3d, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, - 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0d, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x49, - 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x08, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x22, 0xd2, 0x01, 0x0a, 0x0a, 0x53, 0x68, + 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, + 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, 0x6e, + 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, 0x0a, + 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x74, + 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, + 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, + 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, 0x6e, + 0x64, 0x61, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x19, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, + 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x65, 0x78, + 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x45, 0x78, 0x63, + 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x65, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x70, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x20, @@ -2270,66 +2425,79 @@ var file_gtfs_proto_rawDesc = []byte{ 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x6c, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x4c, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x73, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x2a, 0x5a, - 0x0a, 0x10, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, - 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, - 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, - 0x12, 0x18, 0x0a, 0x14, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x44, 0x69, - 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x42, 0x0a, 0x0a, 0x42, 0x69, - 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, - 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, - 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x69, - 0x6b, 0x65, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x5b, - 0x0a, 0x0b, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, - 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, - 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x65, 0x64, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, - 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x03, 0x2a, 0x64, 0x0a, 0x0c, 0x50, - 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x50, - 0x69, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x10, - 0x00, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x69, 0x73, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x75, - 0x70, 0x4d, 0x75, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, - 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x73, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x10, - 0x03, 0x2a, 0x7b, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, - 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, - 0x64, 0x65, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x65, 0x61, 0x10, 0x04, 0x2a, 0xcc, - 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, - 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6d, 0x10, 0x00, 0x12, 0x11, 0x0a, - 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x75, 0x62, 0x77, 0x61, 0x79, 0x10, 0x01, - 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x61, 0x69, 0x6c, 0x10, - 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x42, 0x75, 0x73, 0x10, - 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x65, 0x72, 0x72, - 0x79, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x61, - 0x62, 0x6c, 0x65, 0x63, 0x61, 0x72, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x65, 0x68, 0x69, - 0x63, 0x6c, 0x65, 0x47, 0x6f, 0x6e, 0x64, 0x6f, 0x6c, 0x61, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, - 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, - 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x62, 0x75, 0x73, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, - 0x63, 0x6c, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x10, 0x0c, 0x2a, 0x38, 0x0a, - 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, - 0x00, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x01, 0x2a, 0x27, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, - 0x61, 0x74, 0x65, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x01, - 0x2a, 0x54, 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, - 0x65, 0x6e, 0x64, 0x61, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x11, - 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, - 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x22, 0x50, + 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, + 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x4c, + 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x22, 0x2b, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6c, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6c, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6c, 0x61, 0x74, 0x22, 0x46, 0x0a, + 0x0a, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, + 0x6e, 0x61, 0x74, 0x65, 0x73, 0x2a, 0x5a, 0x0a, 0x10, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, + 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, + 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, + 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x68, 0x65, 0x65, 0x6c, + 0x63, 0x68, 0x61, 0x69, 0x72, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, + 0x02, 0x2a, 0x42, 0x0a, 0x0a, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, + 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, + 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, + 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x69, 0x6b, 0x65, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x5b, 0x0a, 0x0b, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x55, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, + 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, + 0x6f, 0x61, 0x72, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x12, 0x13, 0x0a, + 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x10, 0x03, 0x2a, 0x64, 0x0a, 0x0c, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, + 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, + 0x75, 0x70, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, + 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x75, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x73, 0x6b, + 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x10, 0x03, 0x2a, 0x7b, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0x00, 0x12, 0x13, + 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x41, + 0x72, 0x65, 0x61, 0x10, 0x04, 0x2a, 0xcc, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, + 0x61, 0x6d, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, + 0x75, 0x62, 0x77, 0x61, 0x79, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, + 0x6c, 0x65, 0x52, 0x61, 0x69, 0x6c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x65, 0x68, 0x69, + 0x63, 0x6c, 0x65, 0x42, 0x75, 0x73, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x65, 0x68, 0x69, + 0x63, 0x6c, 0x65, 0x46, 0x65, 0x72, 0x72, 0x79, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, + 0x68, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x63, 0x61, 0x72, 0x10, 0x05, 0x12, + 0x12, 0x0a, 0x0e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x47, 0x6f, 0x6e, 0x64, 0x6f, 0x6c, + 0x61, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x75, + 0x6e, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x65, 0x68, + 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x62, 0x75, 0x73, 0x10, 0x0b, 0x12, + 0x13, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, + 0x69, 0x6c, 0x10, 0x0c, 0x2a, 0x38, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, + 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x01, 0x2a, 0x27, + 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x41, + 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x01, 0x2a, 0x54, 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x65, 0x6e, + 0x64, 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x55, 0x6e, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, + 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, + 0x6e, 0x64, 0x61, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x10, 0x02, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2345,8 +2513,8 @@ func file_gtfs_proto_rawDescGZIP() []byte { } var file_gtfs_proto_enumTypes = make([]protoimpl.EnumInfo, 9) -var file_gtfs_proto_msgTypes = make([]protoimpl.MessageInfo, 18) -var file_gtfs_proto_goTypes = []interface{}{ +var file_gtfs_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_gtfs_proto_goTypes = []any{ (WheelchairAccess)(0), // 0: WheelchairAccess (BikeAccess)(0), // 1: BikeAccess (BoardAccess)(0), // 2: BoardAccess @@ -2358,81 +2526,85 @@ var file_gtfs_proto_goTypes = []interface{}{ (CalendarExceptionType)(0), // 8: CalendarExceptionType (*Date)(nil), // 9: Date (*Time)(nil), // 10: Time - (*EntityID)(nil), // 11: EntityID - (*Timezone)(nil), // 12: Timezone - (*Reference)(nil), // 13: Reference - (*Url)(nil), // 14: Url - (*Color)(nil), // 15: Color - (*FeedEntity)(nil), // 16: FeedEntity - (*Agency)(nil), // 17: Agency - (*Stop)(nil), // 18: Stop - (*Route)(nil), // 19: Route - (*Trip)(nil), // 20: Trip - (*StopTime)(nil), // 21: StopTime - (*Service)(nil), // 22: Service - (*Calendar)(nil), // 23: Calendar - (*CalendarDate)(nil), // 24: CalendarDate - (*Shape)(nil), // 25: Shape + (*Seconds)(nil), // 11: Seconds + (*EntityID)(nil), // 12: EntityID + (*Timezone)(nil), // 13: Timezone + (*Reference)(nil), // 14: Reference + (*Url)(nil), // 15: Url + (*Color)(nil), // 16: Color + (*FeedEntity)(nil), // 17: FeedEntity + (*Agency)(nil), // 18: Agency + (*Stop)(nil), // 19: Stop + (*Route)(nil), // 20: Route + (*Trip)(nil), // 21: Trip + (*StopTime)(nil), // 22: StopTime + (*Service)(nil), // 23: Service + (*Calendar)(nil), // 24: Calendar + (*CalendarDate)(nil), // 25: CalendarDate (*ShapePoint)(nil), // 26: ShapePoint + (*Shape)(nil), // 27: Shape + (*Point)(nil), // 28: Point + (*LineString)(nil), // 29: LineString } var file_gtfs_proto_depIdxs = []int32{ - 17, // 0: FeedEntity.agency:type_name -> Agency - 18, // 1: FeedEntity.stop:type_name -> Stop - 19, // 2: FeedEntity.route:type_name -> Route - 20, // 3: FeedEntity.trip:type_name -> Trip - 21, // 4: FeedEntity.stop_time:type_name -> StopTime - 25, // 5: FeedEntity.shape:type_name -> Shape - 22, // 6: FeedEntity.service:type_name -> Service - 11, // 7: Agency.agency_id:type_name -> EntityID - 12, // 8: Agency.agency_timezone:type_name -> Timezone - 14, // 9: Agency.agency_fare_url:type_name -> Url - 11, // 10: Stop.stop_id:type_name -> EntityID - 14, // 11: Stop.stop_url:type_name -> Url + 18, // 0: FeedEntity.agency:type_name -> Agency + 19, // 1: FeedEntity.stop:type_name -> Stop + 20, // 2: FeedEntity.route:type_name -> Route + 21, // 3: FeedEntity.trip:type_name -> Trip + 22, // 4: FeedEntity.stop_time:type_name -> StopTime + 27, // 5: FeedEntity.shape:type_name -> Shape + 23, // 6: FeedEntity.service:type_name -> Service + 12, // 7: Agency.agency_id:type_name -> EntityID + 13, // 8: Agency.agency_timezone:type_name -> Timezone + 15, // 9: Agency.agency_fare_url:type_name -> Url + 12, // 10: Stop.stop_id:type_name -> EntityID + 15, // 11: Stop.stop_url:type_name -> Url 4, // 12: Stop.location_type:type_name -> LocationType - 13, // 13: Stop.parent_station:type_name -> Reference - 12, // 14: Stop.stop_timezone:type_name -> Timezone + 14, // 13: Stop.parent_station:type_name -> Reference + 13, // 14: Stop.stop_timezone:type_name -> Timezone 0, // 15: Stop.wheelchair_boarding:type_name -> WheelchairAccess - 13, // 16: Stop.level_id:type_name -> Reference - 11, // 17: Route.route_id:type_name -> EntityID - 13, // 18: Route.agency_id:type_name -> Reference + 14, // 16: Stop.level_id:type_name -> Reference + 12, // 17: Route.route_id:type_name -> EntityID + 14, // 18: Route.agency_id:type_name -> Reference 5, // 19: Route.route_type:type_name -> RouteType - 14, // 20: Route.route_url:type_name -> Url - 15, // 21: Route.route_color:type_name -> Color - 15, // 22: Route.route_text_color:type_name -> Color + 15, // 20: Route.route_url:type_name -> Url + 16, // 21: Route.route_color:type_name -> Color + 16, // 22: Route.route_text_color:type_name -> Color 3, // 23: Route.continuous_pickup:type_name -> PickupAccess 3, // 24: Route.continuous_drop_off:type_name -> PickupAccess - 13, // 25: Trip.route_id:type_name -> Reference - 13, // 26: Trip.service_id:type_name -> Reference - 11, // 27: Trip.trip_id:type_name -> EntityID + 14, // 25: Trip.route_id:type_name -> Reference + 14, // 26: Trip.service_id:type_name -> Reference + 12, // 27: Trip.trip_id:type_name -> EntityID 6, // 28: Trip.direction_id:type_name -> Direction - 13, // 29: Trip.shape_id:type_name -> Reference + 14, // 29: Trip.shape_id:type_name -> Reference 0, // 30: Trip.wheelchair_accessible:type_name -> WheelchairAccess 1, // 31: Trip.bikes_allowed:type_name -> BikeAccess - 13, // 32: StopTime.trip_id:type_name -> Reference - 10, // 33: StopTime.arrival_time:type_name -> Time - 10, // 34: StopTime.departure_time:type_name -> Time - 13, // 35: StopTime.stop_id:type_name -> Reference + 14, // 32: StopTime.trip_id:type_name -> Reference + 11, // 33: StopTime.arrival_time:type_name -> Seconds + 11, // 34: StopTime.departure_time:type_name -> Seconds + 14, // 35: StopTime.stop_id:type_name -> Reference 3, // 36: StopTime.continuous_pickup:type_name -> PickupAccess 3, // 37: StopTime.continuous_drop_off:type_name -> PickupAccess 7, // 38: StopTime.timepoint:type_name -> Timepoint - 11, // 39: Service.service_id:type_name -> EntityID + 12, // 39: Service.service_id:type_name -> EntityID 9, // 40: Service.start_date:type_name -> Date 9, // 41: Service.end_date:type_name -> Date 9, // 42: Service.added:type_name -> Date 9, // 43: Service.removed:type_name -> Date - 11, // 44: Calendar.service_id:type_name -> EntityID + 12, // 44: Calendar.service_id:type_name -> EntityID 9, // 45: Calendar.start_date:type_name -> Date 9, // 46: Calendar.end_date:type_name -> Date - 13, // 47: CalendarDate.service_id:type_name -> Reference + 14, // 47: CalendarDate.service_id:type_name -> Reference 9, // 48: CalendarDate.date:type_name -> Date 8, // 49: CalendarDate.exception_type:type_name -> CalendarExceptionType - 11, // 50: Shape.shape_id:type_name -> EntityID - 11, // 51: ShapePoint.shape_id:type_name -> EntityID - 52, // [52:52] is the sub-list for method output_type - 52, // [52:52] is the sub-list for method input_type - 52, // [52:52] is the sub-list for extension type_name - 52, // [52:52] is the sub-list for extension extendee - 0, // [0:52] is the sub-list for field type_name + 12, // 50: ShapePoint.shape_id:type_name -> EntityID + 12, // 51: Shape.shape_id:type_name -> EntityID + 29, // 52: Shape.shape:type_name -> LineString + 53, // [53:53] is the sub-list for method output_type + 53, // [53:53] is the sub-list for method input_type + 53, // [53:53] is the sub-list for extension type_name + 53, // [53:53] is the sub-list for extension extendee + 0, // [0:53] is the sub-list for field type_name } func init() { file_gtfs_proto_init() } @@ -2441,7 +2613,7 @@ func file_gtfs_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_gtfs_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Date); i { case 0: return &v.state @@ -2453,7 +2625,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*Time); i { case 0: return &v.state @@ -2465,7 +2637,19 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*Seconds); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*EntityID); i { case 0: return &v.state @@ -2477,7 +2661,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*Timezone); i { case 0: return &v.state @@ -2489,7 +2673,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*Reference); i { case 0: return &v.state @@ -2501,7 +2685,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*Url); i { case 0: return &v.state @@ -2513,7 +2697,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*Color); i { case 0: return &v.state @@ -2525,7 +2709,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*FeedEntity); i { case 0: return &v.state @@ -2537,7 +2721,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*Agency); i { case 0: return &v.state @@ -2549,7 +2733,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*Stop); i { case 0: return &v.state @@ -2561,7 +2745,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*Route); i { case 0: return &v.state @@ -2573,7 +2757,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*Trip); i { case 0: return &v.state @@ -2585,7 +2769,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*StopTime); i { case 0: return &v.state @@ -2597,7 +2781,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*Service); i { case 0: return &v.state @@ -2609,7 +2793,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*Calendar); i { case 0: return &v.state @@ -2621,7 +2805,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*CalendarDate); i { case 0: return &v.state @@ -2633,7 +2817,19 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_gtfs_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*ShapePoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*Shape); i { case 0: return &v.state @@ -2645,8 +2841,20 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShapePoint); i { + file_gtfs_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*Point); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*LineString); i { case 0: return &v.state case 1: @@ -2664,7 +2872,7 @@ func file_gtfs_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gtfs_proto_rawDesc, NumEnums: 9, - NumMessages: 18, + NumMessages: 21, NumExtensions: 0, NumServices: 0, }, diff --git a/tlpb/gtfs.proto b/tlpb/gtfs.proto index 06fe1b88..93e6172f 100644 --- a/tlpb/gtfs.proto +++ b/tlpb/gtfs.proto @@ -1,15 +1,19 @@ syntax = "proto3"; message Date { - int64 year = 1; - int64 month = 2; - int64 day = 3; + int32 year = 1; + int32 month = 2; + int32 day = 3; } message Time { int64 seconds = 1; } +message Seconds { + int64 seconds = 1; +} + enum WheelchairAccess { WheelchairUnknown = 0; WheelchairAllowed = 1; @@ -144,7 +148,7 @@ message Route { Url route_url = 7; Color route_color = 8; Color route_text_color = 9; - int64 route_sort_order = 10; + int32 route_sort_order = 10; PickupAccess continuous_pickup = 11; PickupAccess continuous_drop_off = 12; string network_id = 13; @@ -165,10 +169,10 @@ message Trip { message StopTime { Reference trip_id = 1; - Time arrival_time = 2; - Time departure_time = 3; + Seconds arrival_time = 2; + Seconds departure_time = 3; Reference stop_id = 4; - int64 stop_sequence = 5; + int32 stop_sequence = 5; string stop_headsign = 6; PickupAccess continuous_pickup = 7; PickupAccess continuous_drop_off = 8; @@ -210,15 +214,25 @@ message CalendarDate { CalendarExceptionType exception_type = 3; } -message Shape { - EntityID shape_id = 1; - bytes geometry = 2; -} - message ShapePoint { EntityID shape_id = 1; double shape_pt_lat = 2; double shape_pt_lon = 3; - int64 shape_pt_sequence = 4; + int32 shape_pt_sequence = 4; double shape_dist_traveled = 5; -} \ No newline at end of file +} + +message Shape { + EntityID shape_id = 1; + LineString shape = 2; +} + +message Point { + float lon = 1; + float lat = 2; +} + +message LineString { + int32 stride = 1; + repeated double coordinates = 2; +} From 5bb500f6269cb8adedd8ee74f49a5fbade287946 Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Thu, 3 Oct 2024 18:33:46 -0700 Subject: [PATCH 03/14] WIP --- tlpb/csv.go | 37 +- tlpb/csv_test.go | 16 +- tlpb/gtfs.pb.go | 5875 ++++++++++++++++++++++++++++++++++++---------- tlpb/gtfs.proto | 658 ++++-- 4 files changed, 5211 insertions(+), 1375 deletions(-) diff --git a/tlpb/csv.go b/tlpb/csv.go index ed5685be..89ca72c4 100644 --- a/tlpb/csv.go +++ b/tlpb/csv.go @@ -1,8 +1,10 @@ package tlpb import ( + "encoding/json" "fmt" + "github.com/interline-io/transitland-lib/tl" "github.com/interline-io/transitland-lib/tl/tt" "github.com/interline-io/transitland-lib/tlcsv" "google.golang.org/protobuf/encoding/protojson" @@ -10,17 +12,17 @@ import ( ) func (t *Url) FromCsv(v string) error { - t.Url = v + t.Val = v return nil } func (t *EntityID) FromCsv(v string) error { - t.Id = v + t.Val = v return nil } func (t *Reference) FromCsv(v string) error { - t.EntityId = v + t.Val = v return nil } @@ -29,7 +31,7 @@ func (t *Seconds) FromCsv(v string) error { if err != nil { return err } - t.Seconds = int64(wt.Seconds) + t.Val = int64(wt.Seconds) return nil } @@ -38,19 +40,40 @@ func pbJson(v protoreflect.ProtoMessage) string { return string(jj) } -func ReadStops(fn string) error { +func ReadStopsPB(fn string) error { a := tlcsv.NewZipAdapter(fn) if err := a.Open(); err != nil { panic(err) } - a.ReadRows("stop_times.txt", func(row tlcsv.Row) { - ent := StopTime{} + a.ReadRows("stops.txt", func(row tlcsv.Row) { + ent := Stop{} if errs := tlcsv.LoadRow(&ent, row); errs != nil { for _, err := range errs { panic(err) } } + _ = ent fmt.Println(pbJson(&ent)) }) return nil } + +func ReadStopsTT(fn string) error { + a := tlcsv.NewZipAdapter(fn) + if err := a.Open(); err != nil { + panic(err) + } + a.ReadRows("stops.txt", func(row tlcsv.Row) { + ent := tl.Stop{} + if errs := tlcsv.LoadRow(&ent, row); errs != nil { + for _, err := range errs { + panic(err) + } + } + _ = ent + jj, _ := json.Marshal(&ent) + fmt.Println(string(jj)) + // fmt.Println(pbJson(&ent)) + }) + return nil +} diff --git a/tlpb/csv_test.go b/tlpb/csv_test.go index 9d68b6ae..c29c09b7 100644 --- a/tlpb/csv_test.go +++ b/tlpb/csv_test.go @@ -6,6 +6,18 @@ import ( "github.com/interline-io/transitland-lib/internal/testutil" ) -func TestReadStops(t *testing.T) { - ReadStops(testutil.RelPath("test/data/external/bart.zip")) +func TestReadStopsPB(t *testing.T) { + ReadStopsPB(testutil.RelPath("test/data/external/bart.zip")) +} + +func BenchmarkReadStopsPB(b *testing.B) { + for n := 0; n < b.N; n++ { + ReadStopsPB(testutil.RelPath("test/data/external/bart.zip")) + } +} + +func BenchmarkReadStopsTT(b *testing.B) { + for n := 0; n < b.N; n++ { + ReadStopsTT(testutil.RelPath("test/data/external/bart.zip")) + } } diff --git a/tlpb/gtfs.pb.go b/tlpb/gtfs.pb.go index b483deb7..f6fca274 100644 --- a/tlpb/gtfs.pb.go +++ b/tlpb/gtfs.pb.go @@ -222,26 +222,26 @@ func (PickupAccess) EnumDescriptor() ([]byte, []int) { return file_gtfs_proto_rawDescGZIP(), []int{3} } -type LocationType int32 +type StopLocationType int32 const ( - LocationType_LocationPlatform LocationType = 0 - LocationType_LocationStation LocationType = 1 - LocationType_LocationEntrance LocationType = 2 - LocationType_LocationNode LocationType = 3 - LocationType_LocationBoardingArea LocationType = 4 + StopLocationType_LocationPlatform StopLocationType = 0 + StopLocationType_LocationStation StopLocationType = 1 + StopLocationType_LocationEntrance StopLocationType = 2 + StopLocationType_LocationNode StopLocationType = 3 + StopLocationType_LocationBoardingArea StopLocationType = 4 ) -// Enum value maps for LocationType. +// Enum value maps for StopLocationType. var ( - LocationType_name = map[int32]string{ + StopLocationType_name = map[int32]string{ 0: "LocationPlatform", 1: "LocationStation", 2: "LocationEntrance", 3: "LocationNode", 4: "LocationBoardingArea", } - LocationType_value = map[string]int32{ + StopLocationType_value = map[string]int32{ "LocationPlatform": 0, "LocationStation": 1, "LocationEntrance": 2, @@ -250,30 +250,30 @@ var ( } ) -func (x LocationType) Enum() *LocationType { - p := new(LocationType) +func (x StopLocationType) Enum() *StopLocationType { + p := new(StopLocationType) *p = x return p } -func (x LocationType) String() string { +func (x StopLocationType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LocationType) Descriptor() protoreflect.EnumDescriptor { +func (StopLocationType) Descriptor() protoreflect.EnumDescriptor { return file_gtfs_proto_enumTypes[4].Descriptor() } -func (LocationType) Type() protoreflect.EnumType { +func (StopLocationType) Type() protoreflect.EnumType { return &file_gtfs_proto_enumTypes[4] } -func (x LocationType) Number() protoreflect.EnumNumber { +func (x StopLocationType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LocationType.Descriptor instead. -func (LocationType) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use StopLocationType.Descriptor instead. +func (StopLocationType) EnumDescriptor() ([]byte, []int) { return file_gtfs_proto_rawDescGZIP(), []int{4} } @@ -347,95 +347,95 @@ func (RouteType) EnumDescriptor() ([]byte, []int) { return file_gtfs_proto_rawDescGZIP(), []int{5} } -type Direction int32 +type TripDirection int32 const ( - Direction_DirectionOutbound Direction = 0 - Direction_DirectionInbound Direction = 1 + TripDirection_TripDirectionOutbound TripDirection = 0 + TripDirection_TripDirectionInbound TripDirection = 1 ) -// Enum value maps for Direction. +// Enum value maps for TripDirection. var ( - Direction_name = map[int32]string{ - 0: "DirectionOutbound", - 1: "DirectionInbound", + TripDirection_name = map[int32]string{ + 0: "TripDirectionOutbound", + 1: "TripDirectionInbound", } - Direction_value = map[string]int32{ - "DirectionOutbound": 0, - "DirectionInbound": 1, + TripDirection_value = map[string]int32{ + "TripDirectionOutbound": 0, + "TripDirectionInbound": 1, } ) -func (x Direction) Enum() *Direction { - p := new(Direction) +func (x TripDirection) Enum() *TripDirection { + p := new(TripDirection) *p = x return p } -func (x Direction) String() string { +func (x TripDirection) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Direction) Descriptor() protoreflect.EnumDescriptor { +func (TripDirection) Descriptor() protoreflect.EnumDescriptor { return file_gtfs_proto_enumTypes[6].Descriptor() } -func (Direction) Type() protoreflect.EnumType { +func (TripDirection) Type() protoreflect.EnumType { return &file_gtfs_proto_enumTypes[6] } -func (x Direction) Number() protoreflect.EnumNumber { +func (x TripDirection) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Direction.Descriptor instead. -func (Direction) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use TripDirection.Descriptor instead. +func (TripDirection) EnumDescriptor() ([]byte, []int) { return file_gtfs_proto_rawDescGZIP(), []int{6} } -type Timepoint int32 +type StopTimepoint int32 const ( - Timepoint_Approximate Timepoint = 0 - Timepoint_Exact Timepoint = 1 + StopTimepoint_Approximate StopTimepoint = 0 + StopTimepoint_StopTimepointExact StopTimepoint = 1 ) -// Enum value maps for Timepoint. +// Enum value maps for StopTimepoint. var ( - Timepoint_name = map[int32]string{ + StopTimepoint_name = map[int32]string{ 0: "Approximate", - 1: "Exact", + 1: "StopTimepointExact", } - Timepoint_value = map[string]int32{ - "Approximate": 0, - "Exact": 1, + StopTimepoint_value = map[string]int32{ + "Approximate": 0, + "StopTimepointExact": 1, } ) -func (x Timepoint) Enum() *Timepoint { - p := new(Timepoint) +func (x StopTimepoint) Enum() *StopTimepoint { + p := new(StopTimepoint) *p = x return p } -func (x Timepoint) String() string { +func (x StopTimepoint) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Timepoint) Descriptor() protoreflect.EnumDescriptor { +func (StopTimepoint) Descriptor() protoreflect.EnumDescriptor { return file_gtfs_proto_enumTypes[7].Descriptor() } -func (Timepoint) Type() protoreflect.EnumType { +func (StopTimepoint) Type() protoreflect.EnumType { return &file_gtfs_proto_enumTypes[7] } -func (x Timepoint) Number() protoreflect.EnumNumber { +func (x StopTimepoint) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Timepoint.Descriptor instead. -func (Timepoint) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use StopTimepoint.Descriptor instead. +func (StopTimepoint) EnumDescriptor() ([]byte, []int) { return file_gtfs_proto_rawDescGZIP(), []int{7} } @@ -488,33 +488,2465 @@ func (CalendarExceptionType) EnumDescriptor() ([]byte, []int) { return file_gtfs_proto_rawDescGZIP(), []int{8} } -type Date struct { +type FrequencyExactTime int32 + +const ( + FrequencyExactTime_FrequencyExactTimeFrequency FrequencyExactTime = 0 + FrequencyExactTime_FrequencyExactTimeScheduled FrequencyExactTime = 1 +) + +// Enum value maps for FrequencyExactTime. +var ( + FrequencyExactTime_name = map[int32]string{ + 0: "FrequencyExactTimeFrequency", + 1: "FrequencyExactTimeScheduled", + } + FrequencyExactTime_value = map[string]int32{ + "FrequencyExactTimeFrequency": 0, + "FrequencyExactTimeScheduled": 1, + } +) + +func (x FrequencyExactTime) Enum() *FrequencyExactTime { + p := new(FrequencyExactTime) + *p = x + return p +} + +func (x FrequencyExactTime) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FrequencyExactTime) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[9].Descriptor() +} + +func (FrequencyExactTime) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[9] +} + +func (x FrequencyExactTime) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FrequencyExactTime.Descriptor instead. +func (FrequencyExactTime) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{9} +} + +type TransferType int32 + +const ( + TransferType_TransferTypeRecommended TransferType = 0 + TransferType_TransferTypeTimed TransferType = 1 + TransferType_TransferTypeMinTime TransferType = 2 + TransferType_TransferTypeDisallowed TransferType = 3 + TransferType_TransferTypeInSeat TransferType = 4 + TransferType_TransferTypeMustExit TransferType = 5 +) + +// Enum value maps for TransferType. +var ( + TransferType_name = map[int32]string{ + 0: "TransferTypeRecommended", + 1: "TransferTypeTimed", + 2: "TransferTypeMinTime", + 3: "TransferTypeDisallowed", + 4: "TransferTypeInSeat", + 5: "TransferTypeMustExit", + } + TransferType_value = map[string]int32{ + "TransferTypeRecommended": 0, + "TransferTypeTimed": 1, + "TransferTypeMinTime": 2, + "TransferTypeDisallowed": 3, + "TransferTypeInSeat": 4, + "TransferTypeMustExit": 5, + } +) + +func (x TransferType) Enum() *TransferType { + p := new(TransferType) + *p = x + return p +} + +func (x TransferType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransferType) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[10].Descriptor() +} + +func (TransferType) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[10] +} + +func (x TransferType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransferType.Descriptor instead. +func (TransferType) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{10} +} + +type PathwayDirectionality int32 + +const ( + PathwayDirectionality_PathwayUnidirectional PathwayDirectionality = 0 + PathwayDirectionality_PathwayBidirectional PathwayDirectionality = 1 +) + +// Enum value maps for PathwayDirectionality. +var ( + PathwayDirectionality_name = map[int32]string{ + 0: "PathwayUnidirectional", + 1: "PathwayBidirectional", + } + PathwayDirectionality_value = map[string]int32{ + "PathwayUnidirectional": 0, + "PathwayBidirectional": 1, + } +) + +func (x PathwayDirectionality) Enum() *PathwayDirectionality { + p := new(PathwayDirectionality) + *p = x + return p +} + +func (x PathwayDirectionality) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PathwayDirectionality) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[11].Descriptor() +} + +func (PathwayDirectionality) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[11] +} + +func (x PathwayDirectionality) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PathwayDirectionality.Descriptor instead. +func (PathwayDirectionality) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{11} +} + +type PathwayMode int32 + +const ( + PathwayMode_PathwayModeUnknown PathwayMode = 0 + PathwayMode_PathwayModeWalkway PathwayMode = 1 + PathwayMode_PathwayModeStairs PathwayMode = 2 + PathwayMode_PathwayModeTravelator PathwayMode = 3 + PathwayMode_PathwayModeEscalator PathwayMode = 4 + PathwayMode_PathwayModeElevator PathwayMode = 5 + PathwayMode_PatthwayModeFareGate PathwayMode = 6 + PathwayMode_PathwayModeExitGate PathwayMode = 7 +) + +// Enum value maps for PathwayMode. +var ( + PathwayMode_name = map[int32]string{ + 0: "PathwayModeUnknown", + 1: "PathwayModeWalkway", + 2: "PathwayModeStairs", + 3: "PathwayModeTravelator", + 4: "PathwayModeEscalator", + 5: "PathwayModeElevator", + 6: "PatthwayModeFareGate", + 7: "PathwayModeExitGate", + } + PathwayMode_value = map[string]int32{ + "PathwayModeUnknown": 0, + "PathwayModeWalkway": 1, + "PathwayModeStairs": 2, + "PathwayModeTravelator": 3, + "PathwayModeEscalator": 4, + "PathwayModeElevator": 5, + "PatthwayModeFareGate": 6, + "PathwayModeExitGate": 7, + } +) + +func (x PathwayMode) Enum() *PathwayMode { + p := new(PathwayMode) + *p = x + return p +} + +func (x PathwayMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PathwayMode) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[12].Descriptor() +} + +func (PathwayMode) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[12] +} + +func (x PathwayMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PathwayMode.Descriptor instead. +func (PathwayMode) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{12} +} + +type BookingRuleType int32 + +const ( + BookingRuleType_BookingRuleTypeRealtime BookingRuleType = 0 + BookingRuleType_BookingRuleTypeSameday BookingRuleType = 1 + BookingRuleType_BookingRuleTypePriorday BookingRuleType = 2 +) + +// Enum value maps for BookingRuleType. +var ( + BookingRuleType_name = map[int32]string{ + 0: "BookingRuleTypeRealtime", + 1: "BookingRuleTypeSameday", + 2: "BookingRuleTypePriorday", + } + BookingRuleType_value = map[string]int32{ + "BookingRuleTypeRealtime": 0, + "BookingRuleTypeSameday": 1, + "BookingRuleTypePriorday": 2, + } +) + +func (x BookingRuleType) Enum() *BookingRuleType { + p := new(BookingRuleType) + *p = x + return p +} + +func (x BookingRuleType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BookingRuleType) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[13].Descriptor() +} + +func (BookingRuleType) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[13] +} + +func (x BookingRuleType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BookingRuleType.Descriptor instead. +func (BookingRuleType) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{13} +} + +type FareMediaType int32 + +const ( + FareMediaType_FareMediaNone FareMediaType = 0 + FareMediaType_FareMediaPaper FareMediaType = 1 + FareMediaType_FareMediaCard FareMediaType = 2 + FareMediaType_FareMediaOpenLoop FareMediaType = 3 + FareMediaType_FareMediaApp FareMediaType = 4 +) + +// Enum value maps for FareMediaType. +var ( + FareMediaType_name = map[int32]string{ + 0: "FareMediaNone", + 1: "FareMediaPaper", + 2: "FareMediaCard", + 3: "FareMediaOpenLoop", + 4: "FareMediaApp", + } + FareMediaType_value = map[string]int32{ + "FareMediaNone": 0, + "FareMediaPaper": 1, + "FareMediaCard": 2, + "FareMediaOpenLoop": 3, + "FareMediaApp": 4, + } +) + +func (x FareMediaType) Enum() *FareMediaType { + p := new(FareMediaType) + *p = x + return p +} + +func (x FareMediaType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FareMediaType) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[14].Descriptor() +} + +func (FareMediaType) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[14] +} + +func (x FareMediaType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FareMediaType.Descriptor instead. +func (FareMediaType) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{14} +} + +type FareTransferType int32 + +const ( + FareTransferType_FareTransfer0 FareTransferType = 0 + FareTransferType_FareTransfer1 FareTransferType = 1 + FareTransferType_FareTransfer2 FareTransferType = 2 +) + +// Enum value maps for FareTransferType. +var ( + FareTransferType_name = map[int32]string{ + 0: "FareTransfer0", + 1: "FareTransfer1", + 2: "FareTransfer2", + } + FareTransferType_value = map[string]int32{ + "FareTransfer0": 0, + "FareTransfer1": 1, + "FareTransfer2": 2, + } +) + +func (x FareTransferType) Enum() *FareTransferType { + p := new(FareTransferType) + *p = x + return p +} + +func (x FareTransferType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FareTransferType) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[15].Descriptor() +} + +func (FareTransferType) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[15] +} + +func (x FareTransferType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FareTransferType.Descriptor instead. +func (FareTransferType) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{15} +} + +type DurationLimitType int32 + +const ( + DurationLimitType_DurationLimit0 DurationLimitType = 0 + DurationLimitType_DurationLimit1 DurationLimitType = 1 + DurationLimitType_DurationLimit2 DurationLimitType = 2 + DurationLimitType_DurationLimit3 DurationLimitType = 3 +) + +// Enum value maps for DurationLimitType. +var ( + DurationLimitType_name = map[int32]string{ + 0: "DurationLimit0", + 1: "DurationLimit1", + 2: "DurationLimit2", + 3: "DurationLimit3", + } + DurationLimitType_value = map[string]int32{ + "DurationLimit0": 0, + "DurationLimit1": 1, + "DurationLimit2": 2, + "DurationLimit3": 3, + } +) + +func (x DurationLimitType) Enum() *DurationLimitType { + p := new(DurationLimitType) + *p = x + return p +} + +func (x DurationLimitType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DurationLimitType) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[16].Descriptor() +} + +func (DurationLimitType) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[16] +} + +func (x DurationLimitType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DurationLimitType.Descriptor instead. +func (DurationLimitType) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{16} +} + +type FareAttributeTransferType int32 + +const ( + FareAttributeTransferType_FareAttributeTransferTypeDisallowed FareAttributeTransferType = 0 + FareAttributeTransferType_FareAttributeTransferTypeOnce FareAttributeTransferType = 1 + FareAttributeTransferType_FareAttributeTransferTypeTwice FareAttributeTransferType = 2 +) + +// Enum value maps for FareAttributeTransferType. +var ( + FareAttributeTransferType_name = map[int32]string{ + 0: "FareAttributeTransferTypeDisallowed", + 1: "FareAttributeTransferTypeOnce", + 2: "FareAttributeTransferTypeTwice", + } + FareAttributeTransferType_value = map[string]int32{ + "FareAttributeTransferTypeDisallowed": 0, + "FareAttributeTransferTypeOnce": 1, + "FareAttributeTransferTypeTwice": 2, + } +) + +func (x FareAttributeTransferType) Enum() *FareAttributeTransferType { + p := new(FareAttributeTransferType) + *p = x + return p +} + +func (x FareAttributeTransferType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FareAttributeTransferType) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[17].Descriptor() +} + +func (FareAttributeTransferType) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[17] +} + +func (x FareAttributeTransferType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FareAttributeTransferType.Descriptor instead. +func (FareAttributeTransferType) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{17} +} + +type PaymentMethod int32 + +const ( + PaymentMethod_PaymentMethodOnboard PaymentMethod = 0 + PaymentMethod_PaymentMethodOffboard PaymentMethod = 1 +) + +// Enum value maps for PaymentMethod. +var ( + PaymentMethod_name = map[int32]string{ + 0: "PaymentMethodOnboard", + 1: "PaymentMethodOffboard", + } + PaymentMethod_value = map[string]int32{ + "PaymentMethodOnboard": 0, + "PaymentMethodOffboard": 1, + } +) + +func (x PaymentMethod) Enum() *PaymentMethod { + p := new(PaymentMethod) + *p = x + return p +} + +func (x PaymentMethod) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PaymentMethod) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[18].Descriptor() +} + +func (PaymentMethod) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[18] +} + +func (x PaymentMethod) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PaymentMethod.Descriptor instead. +func (PaymentMethod) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{18} +} + +type FeedEntity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Agency *Agency `protobuf:"bytes,1,opt,name=agency,proto3" json:"agency,omitempty"` + Stop *Stop `protobuf:"bytes,2,opt,name=stop,proto3" json:"stop,omitempty"` + Route *Route `protobuf:"bytes,3,opt,name=route,proto3" json:"route,omitempty"` + Trip *Trip `protobuf:"bytes,4,opt,name=trip,proto3" json:"trip,omitempty"` + StopTime *StopTime `protobuf:"bytes,5,opt,name=stop_time,json=stopTime,proto3" json:"stop_time,omitempty"` + Shape *Shape `protobuf:"bytes,6,opt,name=shape,proto3" json:"shape,omitempty"` + Service *Service `protobuf:"bytes,7,opt,name=service,proto3" json:"service,omitempty"` +} + +func (x *FeedEntity) Reset() { + *x = FeedEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeedEntity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeedEntity) ProtoMessage() {} + +func (x *FeedEntity) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeedEntity.ProtoReflect.Descriptor instead. +func (*FeedEntity) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{0} +} + +func (x *FeedEntity) GetAgency() *Agency { + if x != nil { + return x.Agency + } + return nil +} + +func (x *FeedEntity) GetStop() *Stop { + if x != nil { + return x.Stop + } + return nil +} + +func (x *FeedEntity) GetRoute() *Route { + if x != nil { + return x.Route + } + return nil +} + +func (x *FeedEntity) GetTrip() *Trip { + if x != nil { + return x.Trip + } + return nil +} + +func (x *FeedEntity) GetStopTime() *StopTime { + if x != nil { + return x.StopTime + } + return nil +} + +func (x *FeedEntity) GetShape() *Shape { + if x != nil { + return x.Shape + } + return nil +} + +func (x *FeedEntity) GetService() *Service { + if x != nil { + return x.Service + } + return nil +} + +type Agency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AgencyId *EntityID `protobuf:"bytes,1,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` + AgencyName string `protobuf:"bytes,2,opt,name=agency_name,json=agencyName,proto3" json:"agency_name,omitempty"` + AgencyUrl *Url `protobuf:"bytes,3,opt,name=agency_url,json=agencyUrl,proto3" json:"agency_url,omitempty"` + AgencyTimezone *Timezone `protobuf:"bytes,4,opt,name=agency_timezone,json=agencyTimezone,proto3" json:"agency_timezone,omitempty"` + AgencyLang *Language `protobuf:"bytes,5,opt,name=agency_lang,json=agencyLang,proto3" json:"agency_lang,omitempty"` + AgencyPhone string `protobuf:"bytes,6,opt,name=agency_phone,json=agencyPhone,proto3" json:"agency_phone,omitempty"` + AgencyFareUrl *Url `protobuf:"bytes,7,opt,name=agency_fare_url,json=agencyFareUrl,proto3" json:"agency_fare_url,omitempty"` + AgencyEmail *Email `protobuf:"bytes,8,opt,name=agency_email,json=agencyEmail,proto3" json:"agency_email,omitempty"` +} + +func (x *Agency) Reset() { + *x = Agency{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Agency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Agency) ProtoMessage() {} + +func (x *Agency) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Agency.ProtoReflect.Descriptor instead. +func (*Agency) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{1} +} + +func (x *Agency) GetAgencyId() *EntityID { + if x != nil { + return x.AgencyId + } + return nil +} + +func (x *Agency) GetAgencyName() string { + if x != nil { + return x.AgencyName + } + return "" +} + +func (x *Agency) GetAgencyUrl() *Url { + if x != nil { + return x.AgencyUrl + } + return nil +} + +func (x *Agency) GetAgencyTimezone() *Timezone { + if x != nil { + return x.AgencyTimezone + } + return nil +} + +func (x *Agency) GetAgencyLang() *Language { + if x != nil { + return x.AgencyLang + } + return nil +} + +func (x *Agency) GetAgencyPhone() string { + if x != nil { + return x.AgencyPhone + } + return "" +} + +func (x *Agency) GetAgencyFareUrl() *Url { + if x != nil { + return x.AgencyFareUrl + } + return nil +} + +func (x *Agency) GetAgencyEmail() *Email { + if x != nil { + return x.AgencyEmail + } + return nil +} + +type Stop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StopId *EntityID `protobuf:"bytes,1,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` + StopCode string `protobuf:"bytes,2,opt,name=stop_code,json=stopCode,proto3" json:"stop_code,omitempty"` + StopName string `protobuf:"bytes,3,opt,name=stop_name,json=stopName,proto3" json:"stop_name,omitempty"` + TtsStopName string `protobuf:"bytes,4,opt,name=tts_stop_name,json=ttsStopName,proto3" json:"tts_stop_name,omitempty"` + StopDesc string `protobuf:"bytes,5,opt,name=stop_desc,json=stopDesc,proto3" json:"stop_desc,omitempty"` + StopLat float64 `protobuf:"fixed64,6,opt,name=stop_lat,json=stopLat,proto3" json:"stop_lat,omitempty"` + StopLon float64 `protobuf:"fixed64,7,opt,name=stop_lon,json=stopLon,proto3" json:"stop_lon,omitempty"` + ZoneId string `protobuf:"bytes,8,opt,name=zone_id,json=zoneId,proto3" json:"zone_id,omitempty"` + StopUrl *Url `protobuf:"bytes,9,opt,name=stop_url,json=stopUrl,proto3" json:"stop_url,omitempty"` + LocationType StopLocationType `protobuf:"varint,10,opt,name=location_type,json=locationType,proto3,enum=StopLocationType" json:"location_type,omitempty"` + ParentStation *Reference `protobuf:"bytes,11,opt,name=parent_station,json=parentStation,proto3" json:"parent_station,omitempty"` + StopTimezone *Timezone `protobuf:"bytes,12,opt,name=stop_timezone,json=stopTimezone,proto3" json:"stop_timezone,omitempty"` + WheelchairBoarding WheelchairAccess `protobuf:"varint,13,opt,name=wheelchair_boarding,json=wheelchairBoarding,proto3,enum=WheelchairAccess" json:"wheelchair_boarding,omitempty"` + LevelId *Reference `protobuf:"bytes,14,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` + PlatformCode string `protobuf:"bytes,15,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` +} + +func (x *Stop) Reset() { + *x = Stop{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Stop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Stop) ProtoMessage() {} + +func (x *Stop) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Stop.ProtoReflect.Descriptor instead. +func (*Stop) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{2} +} + +func (x *Stop) GetStopId() *EntityID { + if x != nil { + return x.StopId + } + return nil +} + +func (x *Stop) GetStopCode() string { + if x != nil { + return x.StopCode + } + return "" +} + +func (x *Stop) GetStopName() string { + if x != nil { + return x.StopName + } + return "" +} + +func (x *Stop) GetTtsStopName() string { + if x != nil { + return x.TtsStopName + } + return "" +} + +func (x *Stop) GetStopDesc() string { + if x != nil { + return x.StopDesc + } + return "" +} + +func (x *Stop) GetStopLat() float64 { + if x != nil { + return x.StopLat + } + return 0 +} + +func (x *Stop) GetStopLon() float64 { + if x != nil { + return x.StopLon + } + return 0 +} + +func (x *Stop) GetZoneId() string { + if x != nil { + return x.ZoneId + } + return "" +} + +func (x *Stop) GetStopUrl() *Url { + if x != nil { + return x.StopUrl + } + return nil +} + +func (x *Stop) GetLocationType() StopLocationType { + if x != nil { + return x.LocationType + } + return StopLocationType_LocationPlatform +} + +func (x *Stop) GetParentStation() *Reference { + if x != nil { + return x.ParentStation + } + return nil +} + +func (x *Stop) GetStopTimezone() *Timezone { + if x != nil { + return x.StopTimezone + } + return nil +} + +func (x *Stop) GetWheelchairBoarding() WheelchairAccess { + if x != nil { + return x.WheelchairBoarding + } + return WheelchairAccess_WheelchairUnknown +} + +func (x *Stop) GetLevelId() *Reference { + if x != nil { + return x.LevelId + } + return nil +} + +func (x *Stop) GetPlatformCode() string { + if x != nil { + return x.PlatformCode + } + return "" +} + +type Route struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RouteId *EntityID `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + AgencyId *Reference `protobuf:"bytes,2,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` + RouteShortName string `protobuf:"bytes,3,opt,name=route_short_name,json=routeShortName,proto3" json:"route_short_name,omitempty"` + RouteLongName string `protobuf:"bytes,4,opt,name=route_long_name,json=routeLongName,proto3" json:"route_long_name,omitempty"` + RouteDesc string `protobuf:"bytes,5,opt,name=route_desc,json=routeDesc,proto3" json:"route_desc,omitempty"` + RouteType RouteType `protobuf:"varint,6,opt,name=route_type,json=routeType,proto3,enum=RouteType" json:"route_type,omitempty"` + RouteUrl *Url `protobuf:"bytes,7,opt,name=route_url,json=routeUrl,proto3" json:"route_url,omitempty"` + RouteColor *Color `protobuf:"bytes,8,opt,name=route_color,json=routeColor,proto3" json:"route_color,omitempty"` + RouteTextColor *Color `protobuf:"bytes,9,opt,name=route_text_color,json=routeTextColor,proto3" json:"route_text_color,omitempty"` + RouteSortOrder int32 `protobuf:"varint,10,opt,name=route_sort_order,json=routeSortOrder,proto3" json:"route_sort_order,omitempty"` + ContinuousPickup PickupAccess `protobuf:"varint,11,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` + ContinuousDropOff PickupAccess `protobuf:"varint,12,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` + NetworkId string `protobuf:"bytes,13,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` +} + +func (x *Route) Reset() { + *x = Route{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Route) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Route) ProtoMessage() {} + +func (x *Route) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Route.ProtoReflect.Descriptor instead. +func (*Route) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{3} +} + +func (x *Route) GetRouteId() *EntityID { + if x != nil { + return x.RouteId + } + return nil +} + +func (x *Route) GetAgencyId() *Reference { + if x != nil { + return x.AgencyId + } + return nil +} + +func (x *Route) GetRouteShortName() string { + if x != nil { + return x.RouteShortName + } + return "" +} + +func (x *Route) GetRouteLongName() string { + if x != nil { + return x.RouteLongName + } + return "" +} + +func (x *Route) GetRouteDesc() string { + if x != nil { + return x.RouteDesc + } + return "" +} + +func (x *Route) GetRouteType() RouteType { + if x != nil { + return x.RouteType + } + return RouteType_VehicleTram +} + +func (x *Route) GetRouteUrl() *Url { + if x != nil { + return x.RouteUrl + } + return nil +} + +func (x *Route) GetRouteColor() *Color { + if x != nil { + return x.RouteColor + } + return nil +} + +func (x *Route) GetRouteTextColor() *Color { + if x != nil { + return x.RouteTextColor + } + return nil +} + +func (x *Route) GetRouteSortOrder() int32 { + if x != nil { + return x.RouteSortOrder + } + return 0 +} + +func (x *Route) GetContinuousPickup() PickupAccess { + if x != nil { + return x.ContinuousPickup + } + return PickupAccess_PickupContinuous +} + +func (x *Route) GetContinuousDropOff() PickupAccess { + if x != nil { + return x.ContinuousDropOff + } + return PickupAccess_PickupContinuous +} + +func (x *Route) GetNetworkId() string { + if x != nil { + return x.NetworkId + } + return "" +} + +type Trip struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RouteId *Reference `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + ServiceId *Reference `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + TripId *EntityID `protobuf:"bytes,3,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` + TripHeadsign string `protobuf:"bytes,4,opt,name=trip_headsign,json=tripHeadsign,proto3" json:"trip_headsign,omitempty"` + TripShortName string `protobuf:"bytes,5,opt,name=trip_short_name,json=tripShortName,proto3" json:"trip_short_name,omitempty"` + DirectionId TripDirection `protobuf:"varint,6,opt,name=direction_id,json=directionId,proto3,enum=TripDirection" json:"direction_id,omitempty"` + BlockId string `protobuf:"bytes,7,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` + ShapeId *Reference `protobuf:"bytes,8,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + WheelchairAccessible WheelchairAccess `protobuf:"varint,9,opt,name=wheelchair_accessible,json=wheelchairAccessible,proto3,enum=WheelchairAccess" json:"wheelchair_accessible,omitempty"` + BikesAllowed BikeAccess `protobuf:"varint,10,opt,name=bikes_allowed,json=bikesAllowed,proto3,enum=BikeAccess" json:"bikes_allowed,omitempty"` +} + +func (x *Trip) Reset() { + *x = Trip{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Trip) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Trip) ProtoMessage() {} + +func (x *Trip) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Trip.ProtoReflect.Descriptor instead. +func (*Trip) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{4} +} + +func (x *Trip) GetRouteId() *Reference { + if x != nil { + return x.RouteId + } + return nil +} + +func (x *Trip) GetServiceId() *Reference { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *Trip) GetTripId() *EntityID { + if x != nil { + return x.TripId + } + return nil +} + +func (x *Trip) GetTripHeadsign() string { + if x != nil { + return x.TripHeadsign + } + return "" +} + +func (x *Trip) GetTripShortName() string { + if x != nil { + return x.TripShortName + } + return "" +} + +func (x *Trip) GetDirectionId() TripDirection { + if x != nil { + return x.DirectionId + } + return TripDirection_TripDirectionOutbound +} + +func (x *Trip) GetBlockId() string { + if x != nil { + return x.BlockId + } + return "" +} + +func (x *Trip) GetShapeId() *Reference { + if x != nil { + return x.ShapeId + } + return nil +} + +func (x *Trip) GetWheelchairAccessible() WheelchairAccess { + if x != nil { + return x.WheelchairAccessible + } + return WheelchairAccess_WheelchairUnknown +} + +func (x *Trip) GetBikesAllowed() BikeAccess { + if x != nil { + return x.BikesAllowed + } + return BikeAccess_BikeUnknown +} + +type StopTime struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TripId *Reference `protobuf:"bytes,1,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` + ArrivalTime *Seconds `protobuf:"bytes,2,opt,name=arrival_time,json=arrivalTime,proto3" json:"arrival_time,omitempty"` + DepartureTime *Seconds `protobuf:"bytes,3,opt,name=departure_time,json=departureTime,proto3" json:"departure_time,omitempty"` + StopId *Reference `protobuf:"bytes,4,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` + StopSequence int32 `protobuf:"varint,5,opt,name=stop_sequence,json=stopSequence,proto3" json:"stop_sequence,omitempty"` + StopHeadsign string `protobuf:"bytes,6,opt,name=stop_headsign,json=stopHeadsign,proto3" json:"stop_headsign,omitempty"` + ContinuousPickup PickupAccess `protobuf:"varint,7,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` + ContinuousDropOff PickupAccess `protobuf:"varint,8,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` + ShapeDistTraveled float64 `protobuf:"fixed64,9,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` + Timepoint StopTimepoint `protobuf:"varint,10,opt,name=timepoint,proto3,enum=StopTimepoint" json:"timepoint,omitempty"` + LocationId *Reference `protobuf:"bytes,11,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + LocationGroupId *Reference `protobuf:"bytes,12,opt,name=location_group_id,json=locationGroupId,proto3" json:"location_group_id,omitempty"` + StartPickupDropOffWindow *Seconds `protobuf:"bytes,13,opt,name=start_pickup_drop_off_window,json=startPickupDropOffWindow,proto3" json:"start_pickup_drop_off_window,omitempty"` + EndPickupDropOffWindow *Seconds `protobuf:"bytes,14,opt,name=end_pickup_drop_off_window,json=endPickupDropOffWindow,proto3" json:"end_pickup_drop_off_window,omitempty"` + PickupType PickupAccess `protobuf:"varint,15,opt,name=pickup_type,json=pickupType,proto3,enum=PickupAccess" json:"pickup_type,omitempty"` + DropOffType PickupAccess `protobuf:"varint,16,opt,name=drop_off_type,json=dropOffType,proto3,enum=PickupAccess" json:"drop_off_type,omitempty"` + PickupBookingRuleId *Reference `protobuf:"bytes,17,opt,name=pickup_booking_rule_id,json=pickupBookingRuleId,proto3" json:"pickup_booking_rule_id,omitempty"` + DropOffBookingRuleId *Reference `protobuf:"bytes,18,opt,name=drop_off_booking_rule_id,json=dropOffBookingRuleId,proto3" json:"drop_off_booking_rule_id,omitempty"` +} + +func (x *StopTime) Reset() { + *x = StopTime{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopTime) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopTime) ProtoMessage() {} + +func (x *StopTime) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopTime.ProtoReflect.Descriptor instead. +func (*StopTime) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{5} +} + +func (x *StopTime) GetTripId() *Reference { + if x != nil { + return x.TripId + } + return nil +} + +func (x *StopTime) GetArrivalTime() *Seconds { + if x != nil { + return x.ArrivalTime + } + return nil +} + +func (x *StopTime) GetDepartureTime() *Seconds { + if x != nil { + return x.DepartureTime + } + return nil +} + +func (x *StopTime) GetStopId() *Reference { + if x != nil { + return x.StopId + } + return nil +} + +func (x *StopTime) GetStopSequence() int32 { + if x != nil { + return x.StopSequence + } + return 0 +} + +func (x *StopTime) GetStopHeadsign() string { + if x != nil { + return x.StopHeadsign + } + return "" +} + +func (x *StopTime) GetContinuousPickup() PickupAccess { + if x != nil { + return x.ContinuousPickup + } + return PickupAccess_PickupContinuous +} + +func (x *StopTime) GetContinuousDropOff() PickupAccess { + if x != nil { + return x.ContinuousDropOff + } + return PickupAccess_PickupContinuous +} + +func (x *StopTime) GetShapeDistTraveled() float64 { + if x != nil { + return x.ShapeDistTraveled + } + return 0 +} + +func (x *StopTime) GetTimepoint() StopTimepoint { + if x != nil { + return x.Timepoint + } + return StopTimepoint_Approximate +} + +func (x *StopTime) GetLocationId() *Reference { + if x != nil { + return x.LocationId + } + return nil +} + +func (x *StopTime) GetLocationGroupId() *Reference { + if x != nil { + return x.LocationGroupId + } + return nil +} + +func (x *StopTime) GetStartPickupDropOffWindow() *Seconds { + if x != nil { + return x.StartPickupDropOffWindow + } + return nil +} + +func (x *StopTime) GetEndPickupDropOffWindow() *Seconds { + if x != nil { + return x.EndPickupDropOffWindow + } + return nil +} + +func (x *StopTime) GetPickupType() PickupAccess { + if x != nil { + return x.PickupType + } + return PickupAccess_PickupContinuous +} + +func (x *StopTime) GetDropOffType() PickupAccess { + if x != nil { + return x.DropOffType + } + return PickupAccess_PickupContinuous +} + +func (x *StopTime) GetPickupBookingRuleId() *Reference { + if x != nil { + return x.PickupBookingRuleId + } + return nil +} + +func (x *StopTime) GetDropOffBookingRuleId() *Reference { + if x != nil { + return x.DropOffBookingRuleId + } + return nil +} + +type Service struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ServiceId *EntityID `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + StartDate *Date `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + EndDate *Date `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + Added []*Date `protobuf:"bytes,4,rep,name=added,proto3" json:"added,omitempty"` + Removed []*Date `protobuf:"bytes,5,rep,name=removed,proto3" json:"removed,omitempty"` + Monday bool `protobuf:"varint,6,opt,name=monday,proto3" json:"monday,omitempty"` + Tuesday bool `protobuf:"varint,7,opt,name=tuesday,proto3" json:"tuesday,omitempty"` + Wednesday bool `protobuf:"varint,8,opt,name=wednesday,proto3" json:"wednesday,omitempty"` + Thursday bool `protobuf:"varint,9,opt,name=thursday,proto3" json:"thursday,omitempty"` + Friday bool `protobuf:"varint,10,opt,name=friday,proto3" json:"friday,omitempty"` + Saturday bool `protobuf:"varint,11,opt,name=saturday,proto3" json:"saturday,omitempty"` + Sunday bool `protobuf:"varint,12,opt,name=sunday,proto3" json:"sunday,omitempty"` +} + +func (x *Service) Reset() { + *x = Service{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Service) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Service) ProtoMessage() {} + +func (x *Service) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Service.ProtoReflect.Descriptor instead. +func (*Service) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{6} +} + +func (x *Service) GetServiceId() *EntityID { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *Service) GetStartDate() *Date { + if x != nil { + return x.StartDate + } + return nil +} + +func (x *Service) GetEndDate() *Date { + if x != nil { + return x.EndDate + } + return nil +} + +func (x *Service) GetAdded() []*Date { + if x != nil { + return x.Added + } + return nil +} + +func (x *Service) GetRemoved() []*Date { + if x != nil { + return x.Removed + } + return nil +} + +func (x *Service) GetMonday() bool { + if x != nil { + return x.Monday + } + return false +} + +func (x *Service) GetTuesday() bool { + if x != nil { + return x.Tuesday + } + return false +} + +func (x *Service) GetWednesday() bool { + if x != nil { + return x.Wednesday + } + return false +} + +func (x *Service) GetThursday() bool { + if x != nil { + return x.Thursday + } + return false +} + +func (x *Service) GetFriday() bool { + if x != nil { + return x.Friday + } + return false +} + +func (x *Service) GetSaturday() bool { + if x != nil { + return x.Saturday + } + return false +} + +func (x *Service) GetSunday() bool { + if x != nil { + return x.Sunday + } + return false +} + +type Calendar struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ServiceId *EntityID `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + StartDate *Date `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + EndDate *Date `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + Monday bool `protobuf:"varint,4,opt,name=monday,proto3" json:"monday,omitempty"` + Tuesday bool `protobuf:"varint,5,opt,name=tuesday,proto3" json:"tuesday,omitempty"` + Wednesday bool `protobuf:"varint,6,opt,name=wednesday,proto3" json:"wednesday,omitempty"` + Thursday bool `protobuf:"varint,7,opt,name=thursday,proto3" json:"thursday,omitempty"` + Friday bool `protobuf:"varint,8,opt,name=friday,proto3" json:"friday,omitempty"` + Saturday bool `protobuf:"varint,9,opt,name=saturday,proto3" json:"saturday,omitempty"` + Sunday bool `protobuf:"varint,10,opt,name=sunday,proto3" json:"sunday,omitempty"` +} + +func (x *Calendar) Reset() { + *x = Calendar{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Calendar) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Calendar) ProtoMessage() {} + +func (x *Calendar) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Calendar.ProtoReflect.Descriptor instead. +func (*Calendar) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{7} +} + +func (x *Calendar) GetServiceId() *EntityID { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *Calendar) GetStartDate() *Date { + if x != nil { + return x.StartDate + } + return nil +} + +func (x *Calendar) GetEndDate() *Date { + if x != nil { + return x.EndDate + } + return nil +} + +func (x *Calendar) GetMonday() bool { + if x != nil { + return x.Monday + } + return false +} + +func (x *Calendar) GetTuesday() bool { + if x != nil { + return x.Tuesday + } + return false +} + +func (x *Calendar) GetWednesday() bool { + if x != nil { + return x.Wednesday + } + return false +} + +func (x *Calendar) GetThursday() bool { + if x != nil { + return x.Thursday + } + return false +} + +func (x *Calendar) GetFriday() bool { + if x != nil { + return x.Friday + } + return false +} + +func (x *Calendar) GetSaturday() bool { + if x != nil { + return x.Saturday + } + return false +} + +func (x *Calendar) GetSunday() bool { + if x != nil { + return x.Sunday + } + return false +} + +type CalendarDate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ServiceId *Reference `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + Date *Date `protobuf:"bytes,2,opt,name=date,proto3" json:"date,omitempty"` + ExceptionType CalendarExceptionType `protobuf:"varint,3,opt,name=exception_type,json=exceptionType,proto3,enum=CalendarExceptionType" json:"exception_type,omitempty"` +} + +func (x *CalendarDate) Reset() { + *x = CalendarDate{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CalendarDate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CalendarDate) ProtoMessage() {} + +func (x *CalendarDate) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CalendarDate.ProtoReflect.Descriptor instead. +func (*CalendarDate) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{8} +} + +func (x *CalendarDate) GetServiceId() *Reference { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *CalendarDate) GetDate() *Date { + if x != nil { + return x.Date + } + return nil +} + +func (x *CalendarDate) GetExceptionType() CalendarExceptionType { + if x != nil { + return x.ExceptionType + } + return CalendarExceptionType_CalendarUnknown +} + +type FareAttribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FareId *EntityID `protobuf:"bytes,1,opt,name=fare_id,json=fareId,proto3" json:"fare_id,omitempty"` + Price *Money `protobuf:"bytes,2,opt,name=price,proto3" json:"price,omitempty"` + CurrencyType *Currency `protobuf:"bytes,3,opt,name=currency_type,json=currencyType,proto3" json:"currency_type,omitempty"` + PaymentMethod PaymentMethod `protobuf:"varint,4,opt,name=payment_method,json=paymentMethod,proto3,enum=PaymentMethod" json:"payment_method,omitempty"` + Transfers FareAttributeTransferType `protobuf:"varint,5,opt,name=transfers,proto3,enum=FareAttributeTransferType" json:"transfers,omitempty"` + AgencyId *Reference `protobuf:"bytes,6,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` + TransferDuration int32 `protobuf:"varint,7,opt,name=transfer_duration,json=transferDuration,proto3" json:"transfer_duration,omitempty"` +} + +func (x *FareAttribute) Reset() { + *x = FareAttribute{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareAttribute) ProtoMessage() {} + +func (x *FareAttribute) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareAttribute.ProtoReflect.Descriptor instead. +func (*FareAttribute) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{9} +} + +func (x *FareAttribute) GetFareId() *EntityID { + if x != nil { + return x.FareId + } + return nil +} + +func (x *FareAttribute) GetPrice() *Money { + if x != nil { + return x.Price + } + return nil +} + +func (x *FareAttribute) GetCurrencyType() *Currency { + if x != nil { + return x.CurrencyType + } + return nil +} + +func (x *FareAttribute) GetPaymentMethod() PaymentMethod { + if x != nil { + return x.PaymentMethod + } + return PaymentMethod_PaymentMethodOnboard +} + +func (x *FareAttribute) GetTransfers() FareAttributeTransferType { + if x != nil { + return x.Transfers + } + return FareAttributeTransferType_FareAttributeTransferTypeDisallowed +} + +func (x *FareAttribute) GetAgencyId() *Reference { + if x != nil { + return x.AgencyId + } + return nil +} + +func (x *FareAttribute) GetTransferDuration() int32 { + if x != nil { + return x.TransferDuration + } + return 0 +} + +type FareRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FareId *EntityID `protobuf:"bytes,1,opt,name=fare_id,json=fareId,proto3" json:"fare_id,omitempty"` + RouteId *Reference `protobuf:"bytes,2,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + OriginId *Reference `protobuf:"bytes,3,opt,name=origin_id,json=originId,proto3" json:"origin_id,omitempty"` + DestinationId *Reference `protobuf:"bytes,4,opt,name=destination_id,json=destinationId,proto3" json:"destination_id,omitempty"` + ContainsId *Reference `protobuf:"bytes,5,opt,name=contains_id,json=containsId,proto3" json:"contains_id,omitempty"` +} + +func (x *FareRule) Reset() { + *x = FareRule{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareRule) ProtoMessage() {} + +func (x *FareRule) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareRule.ProtoReflect.Descriptor instead. +func (*FareRule) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{10} +} + +func (x *FareRule) GetFareId() *EntityID { + if x != nil { + return x.FareId + } + return nil +} + +func (x *FareRule) GetRouteId() *Reference { + if x != nil { + return x.RouteId + } + return nil +} + +func (x *FareRule) GetOriginId() *Reference { + if x != nil { + return x.OriginId + } + return nil +} + +func (x *FareRule) GetDestinationId() *Reference { + if x != nil { + return x.DestinationId + } + return nil +} + +func (x *FareRule) GetContainsId() *Reference { + if x != nil { + return x.ContainsId + } + return nil +} + +type Timeframe struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TimeframeGroupId *EntityID `protobuf:"bytes,1,opt,name=timeframe_group_id,json=timeframeGroupId,proto3" json:"timeframe_group_id,omitempty"` + StartTime *Seconds `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime *Seconds `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + ServiceId *Reference `protobuf:"bytes,4,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` +} + +func (x *Timeframe) Reset() { + *x = Timeframe{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Timeframe) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Timeframe) ProtoMessage() {} + +func (x *Timeframe) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Timeframe.ProtoReflect.Descriptor instead. +func (*Timeframe) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{11} +} + +func (x *Timeframe) GetTimeframeGroupId() *EntityID { + if x != nil { + return x.TimeframeGroupId + } + return nil +} + +func (x *Timeframe) GetStartTime() *Seconds { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *Timeframe) GetEndTime() *Seconds { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *Timeframe) GetServiceId() *Reference { + if x != nil { + return x.ServiceId + } + return nil +} + +type FareMedia struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FareMediaId *EntityID `protobuf:"bytes,1,opt,name=fare_media_id,json=fareMediaId,proto3" json:"fare_media_id,omitempty"` + FareMediaName string `protobuf:"bytes,2,opt,name=fare_media_name,json=fareMediaName,proto3" json:"fare_media_name,omitempty"` + FareMediaType FareMediaType `protobuf:"varint,3,opt,name=fare_media_type,json=fareMediaType,proto3,enum=FareMediaType" json:"fare_media_type,omitempty"` +} + +func (x *FareMedia) Reset() { + *x = FareMedia{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareMedia) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareMedia) ProtoMessage() {} + +func (x *FareMedia) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareMedia.ProtoReflect.Descriptor instead. +func (*FareMedia) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{12} +} + +func (x *FareMedia) GetFareMediaId() *EntityID { + if x != nil { + return x.FareMediaId + } + return nil +} + +func (x *FareMedia) GetFareMediaName() string { + if x != nil { + return x.FareMediaName + } + return "" +} + +func (x *FareMedia) GetFareMediaType() FareMediaType { + if x != nil { + return x.FareMediaType + } + return FareMediaType_FareMediaNone +} + +type FareProduct struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FareProductId *EntityID `protobuf:"bytes,1,opt,name=fare_product_id,json=fareProductId,proto3" json:"fare_product_id,omitempty"` + FareProductName string `protobuf:"bytes,2,opt,name=fare_product_name,json=fareProductName,proto3" json:"fare_product_name,omitempty"` + FareMediaId *Reference `protobuf:"bytes,3,opt,name=fare_media_id,json=fareMediaId,proto3" json:"fare_media_id,omitempty"` + Amount *Money `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` + Currency *Currency `protobuf:"bytes,5,opt,name=currency,proto3" json:"currency,omitempty"` +} + +func (x *FareProduct) Reset() { + *x = FareProduct{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareProduct) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareProduct) ProtoMessage() {} + +func (x *FareProduct) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareProduct.ProtoReflect.Descriptor instead. +func (*FareProduct) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{13} +} + +func (x *FareProduct) GetFareProductId() *EntityID { + if x != nil { + return x.FareProductId + } + return nil +} + +func (x *FareProduct) GetFareProductName() string { + if x != nil { + return x.FareProductName + } + return "" +} + +func (x *FareProduct) GetFareMediaId() *Reference { + if x != nil { + return x.FareMediaId + } + return nil +} + +func (x *FareProduct) GetAmount() *Money { + if x != nil { + return x.Amount + } + return nil +} + +func (x *FareProduct) GetCurrency() *Currency { + if x != nil { + return x.Currency + } + return nil +} + +type FareLegRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LegGroupId *EntityID `protobuf:"bytes,1,opt,name=leg_group_id,json=legGroupId,proto3" json:"leg_group_id,omitempty"` + NetworkId *Reference `protobuf:"bytes,2,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + FromAreaId *Reference `protobuf:"bytes,3,opt,name=from_area_id,json=fromAreaId,proto3" json:"from_area_id,omitempty"` + ToAreaId *Reference `protobuf:"bytes,4,opt,name=to_area_id,json=toAreaId,proto3" json:"to_area_id,omitempty"` + FromTimeframeGroupId *Reference `protobuf:"bytes,5,opt,name=from_timeframe_group_id,json=fromTimeframeGroupId,proto3" json:"from_timeframe_group_id,omitempty"` + ToTimeframeGroupId *Reference `protobuf:"bytes,6,opt,name=to_timeframe_group_id,json=toTimeframeGroupId,proto3" json:"to_timeframe_group_id,omitempty"` + FareProductId *Reference `protobuf:"bytes,7,opt,name=fare_product_id,json=fareProductId,proto3" json:"fare_product_id,omitempty"` + RuleProirity int32 `protobuf:"varint,8,opt,name=rule_proirity,json=ruleProirity,proto3" json:"rule_proirity,omitempty"` +} + +func (x *FareLegRule) Reset() { + *x = FareLegRule{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareLegRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareLegRule) ProtoMessage() {} + +func (x *FareLegRule) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareLegRule.ProtoReflect.Descriptor instead. +func (*FareLegRule) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{14} +} + +func (x *FareLegRule) GetLegGroupId() *EntityID { + if x != nil { + return x.LegGroupId + } + return nil +} + +func (x *FareLegRule) GetNetworkId() *Reference { + if x != nil { + return x.NetworkId + } + return nil +} + +func (x *FareLegRule) GetFromAreaId() *Reference { + if x != nil { + return x.FromAreaId + } + return nil +} + +func (x *FareLegRule) GetToAreaId() *Reference { + if x != nil { + return x.ToAreaId + } + return nil +} + +func (x *FareLegRule) GetFromTimeframeGroupId() *Reference { + if x != nil { + return x.FromTimeframeGroupId + } + return nil +} + +func (x *FareLegRule) GetToTimeframeGroupId() *Reference { + if x != nil { + return x.ToTimeframeGroupId + } + return nil +} + +func (x *FareLegRule) GetFareProductId() *Reference { + if x != nil { + return x.FareProductId + } + return nil +} + +func (x *FareLegRule) GetRuleProirity() int32 { + if x != nil { + return x.RuleProirity + } + return 0 +} + +type FareTransferRule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Year int32 `protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"` - Month int32 `protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"` - Day int32 `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"` + FromLegGroupId *Reference `protobuf:"bytes,1,opt,name=from_leg_group_id,json=fromLegGroupId,proto3" json:"from_leg_group_id,omitempty"` + ToLegGroupId *Reference `protobuf:"bytes,2,opt,name=to_leg_group_id,json=toLegGroupId,proto3" json:"to_leg_group_id,omitempty"` + TransferCount *TransferCount `protobuf:"bytes,3,opt,name=transfer_count,json=transferCount,proto3" json:"transfer_count,omitempty"` + DurationLimitType DurationLimitType `protobuf:"varint,4,opt,name=duration_limit_type,json=durationLimitType,proto3,enum=DurationLimitType" json:"duration_limit_type,omitempty"` + FareTransferType FareTransferType `protobuf:"varint,5,opt,name=fare_transfer_type,json=fareTransferType,proto3,enum=FareTransferType" json:"fare_transfer_type,omitempty"` + FareProductId *Reference `protobuf:"bytes,6,opt,name=fare_product_id,json=fareProductId,proto3" json:"fare_product_id,omitempty"` } -func (x *Date) Reset() { - *x = Date{} +func (x *FareTransferRule) Reset() { + *x = FareTransferRule{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[0] + mi := &file_gtfs_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Date) String() string { +func (x *FareTransferRule) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Date) ProtoMessage() {} +func (*FareTransferRule) ProtoMessage() {} -func (x *Date) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[0] +func (x *FareTransferRule) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareTransferRule.ProtoReflect.Descriptor instead. +func (*FareTransferRule) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{15} +} + +func (x *FareTransferRule) GetFromLegGroupId() *Reference { + if x != nil { + return x.FromLegGroupId + } + return nil +} + +func (x *FareTransferRule) GetToLegGroupId() *Reference { + if x != nil { + return x.ToLegGroupId + } + return nil +} + +func (x *FareTransferRule) GetTransferCount() *TransferCount { + if x != nil { + return x.TransferCount + } + return nil +} + +func (x *FareTransferRule) GetDurationLimitType() DurationLimitType { + if x != nil { + return x.DurationLimitType + } + return DurationLimitType_DurationLimit0 +} + +func (x *FareTransferRule) GetFareTransferType() FareTransferType { + if x != nil { + return x.FareTransferType + } + return FareTransferType_FareTransfer0 +} + +func (x *FareTransferRule) GetFareProductId() *Reference { + if x != nil { + return x.FareProductId + } + return nil +} + +type Area struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AreaId *EntityID `protobuf:"bytes,1,opt,name=area_id,json=areaId,proto3" json:"area_id,omitempty"` + AreaName string `protobuf:"bytes,2,opt,name=area_name,json=areaName,proto3" json:"area_name,omitempty"` +} + +func (x *Area) Reset() { + *x = Area{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Area) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Area) ProtoMessage() {} + +func (x *Area) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Area.ProtoReflect.Descriptor instead. +func (*Area) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{16} +} + +func (x *Area) GetAreaId() *EntityID { + if x != nil { + return x.AreaId + } + return nil +} + +func (x *Area) GetAreaName() string { + if x != nil { + return x.AreaName + } + return "" +} + +type StopArea struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AreaId *Reference `protobuf:"bytes,1,opt,name=area_id,json=areaId,proto3" json:"area_id,omitempty"` + StopId *Reference `protobuf:"bytes,2,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` +} + +func (x *StopArea) Reset() { + *x = StopArea{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopArea) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopArea) ProtoMessage() {} + +func (x *StopArea) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopArea.ProtoReflect.Descriptor instead. +func (*StopArea) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{17} +} + +func (x *StopArea) GetAreaId() *Reference { + if x != nil { + return x.AreaId + } + return nil +} + +func (x *StopArea) GetStopId() *Reference { + if x != nil { + return x.StopId + } + return nil +} + +type Network struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NetworkId *EntityID `protobuf:"bytes,1,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + NetworkName string `protobuf:"bytes,2,opt,name=network_name,json=networkName,proto3" json:"network_name,omitempty"` +} + +func (x *Network) Reset() { + *x = Network{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Network) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Network) ProtoMessage() {} + +func (x *Network) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Network.ProtoReflect.Descriptor instead. +func (*Network) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{18} +} + +func (x *Network) GetNetworkId() *EntityID { + if x != nil { + return x.NetworkId + } + return nil +} + +func (x *Network) GetNetworkName() string { + if x != nil { + return x.NetworkName + } + return "" +} + +type RouteNetwork struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NetworkId *Reference `protobuf:"bytes,1,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + RouteId *Reference `protobuf:"bytes,2,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` +} + +func (x *RouteNetwork) Reset() { + *x = RouteNetwork{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RouteNetwork) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteNetwork) ProtoMessage() {} + +func (x *RouteNetwork) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteNetwork.ProtoReflect.Descriptor instead. +func (*RouteNetwork) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{19} +} + +func (x *RouteNetwork) GetNetworkId() *Reference { + if x != nil { + return x.NetworkId + } + return nil +} + +func (x *RouteNetwork) GetRouteId() *Reference { + if x != nil { + return x.RouteId + } + return nil +} + +type Frequency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TripId *Reference `protobuf:"bytes,1,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` + StartTime *Seconds `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime *Seconds `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + HeadwaySecs int32 `protobuf:"varint,4,opt,name=headway_secs,json=headwaySecs,proto3" json:"headway_secs,omitempty"` + ExactTime FrequencyExactTime `protobuf:"varint,5,opt,name=exact_time,json=exactTime,proto3,enum=FrequencyExactTime" json:"exact_time,omitempty"` +} + +func (x *Frequency) Reset() { + *x = Frequency{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Frequency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Frequency) ProtoMessage() {} + +func (x *Frequency) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -525,57 +2957,78 @@ func (x *Date) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Date.ProtoReflect.Descriptor instead. -func (*Date) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{0} +// Deprecated: Use Frequency.ProtoReflect.Descriptor instead. +func (*Frequency) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{20} } -func (x *Date) GetYear() int32 { +func (x *Frequency) GetTripId() *Reference { if x != nil { - return x.Year + return x.TripId } - return 0 + return nil } -func (x *Date) GetMonth() int32 { +func (x *Frequency) GetStartTime() *Seconds { if x != nil { - return x.Month + return x.StartTime } - return 0 + return nil } -func (x *Date) GetDay() int32 { +func (x *Frequency) GetEndTime() *Seconds { if x != nil { - return x.Day + return x.EndTime + } + return nil +} + +func (x *Frequency) GetHeadwaySecs() int32 { + if x != nil { + return x.HeadwaySecs } return 0 } -type Time struct { +func (x *Frequency) GetExactTime() FrequencyExactTime { + if x != nil { + return x.ExactTime + } + return FrequencyExactTime_FrequencyExactTimeFrequency +} + +type Transfer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` + FromStopId *Reference `protobuf:"bytes,1,opt,name=from_stop_id,json=fromStopId,proto3" json:"from_stop_id,omitempty"` + ToStopId *Reference `protobuf:"bytes,2,opt,name=to_stop_id,json=toStopId,proto3" json:"to_stop_id,omitempty"` + FromRouteId *Reference `protobuf:"bytes,3,opt,name=from_route_id,json=fromRouteId,proto3" json:"from_route_id,omitempty"` + ToRouteId *Reference `protobuf:"bytes,4,opt,name=to_route_id,json=toRouteId,proto3" json:"to_route_id,omitempty"` + FromTripId *Reference `protobuf:"bytes,5,opt,name=from_trip_id,json=fromTripId,proto3" json:"from_trip_id,omitempty"` + ToTripId *Reference `protobuf:"bytes,6,opt,name=to_trip_id,json=toTripId,proto3" json:"to_trip_id,omitempty"` + TransferType TransferType `protobuf:"varint,7,opt,name=transfer_type,json=transferType,proto3,enum=TransferType" json:"transfer_type,omitempty"` + MinTransferTime int32 `protobuf:"varint,8,opt,name=min_transfer_time,json=minTransferTime,proto3" json:"min_transfer_time,omitempty"` } -func (x *Time) Reset() { - *x = Time{} +func (x *Transfer) Reset() { + *x = Transfer{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[1] + mi := &file_gtfs_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Time) String() string { +func (x *Transfer) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Time) ProtoMessage() {} +func (*Transfer) ProtoMessage() {} -func (x *Time) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[1] +func (x *Transfer) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -586,43 +3039,103 @@ func (x *Time) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Time.ProtoReflect.Descriptor instead. -func (*Time) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{1} +// Deprecated: Use Transfer.ProtoReflect.Descriptor instead. +func (*Transfer) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{21} +} + +func (x *Transfer) GetFromStopId() *Reference { + if x != nil { + return x.FromStopId + } + return nil +} + +func (x *Transfer) GetToStopId() *Reference { + if x != nil { + return x.ToStopId + } + return nil +} + +func (x *Transfer) GetFromRouteId() *Reference { + if x != nil { + return x.FromRouteId + } + return nil +} + +func (x *Transfer) GetToRouteId() *Reference { + if x != nil { + return x.ToRouteId + } + return nil +} + +func (x *Transfer) GetFromTripId() *Reference { + if x != nil { + return x.FromTripId + } + return nil +} + +func (x *Transfer) GetToTripId() *Reference { + if x != nil { + return x.ToTripId + } + return nil +} + +func (x *Transfer) GetTransferType() TransferType { + if x != nil { + return x.TransferType + } + return TransferType_TransferTypeRecommended } -func (x *Time) GetSeconds() int64 { +func (x *Transfer) GetMinTransferTime() int32 { if x != nil { - return x.Seconds + return x.MinTransferTime } return 0 } -type Seconds struct { +type Pathway struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` -} - -func (x *Seconds) Reset() { - *x = Seconds{} + PathwayId *EntityID `protobuf:"bytes,1,opt,name=pathway_id,json=pathwayId,proto3" json:"pathway_id,omitempty"` + FromStopId *Reference `protobuf:"bytes,2,opt,name=from_stop_id,json=fromStopId,proto3" json:"from_stop_id,omitempty"` + ToStopId *Reference `protobuf:"bytes,3,opt,name=to_stop_id,json=toStopId,proto3" json:"to_stop_id,omitempty"` + PathwayMode PathwayMode `protobuf:"varint,4,opt,name=pathway_mode,json=pathwayMode,proto3,enum=PathwayMode" json:"pathway_mode,omitempty"` + IsBidirectional PathwayDirectionality `protobuf:"varint,5,opt,name=is_bidirectional,json=isBidirectional,proto3,enum=PathwayDirectionality" json:"is_bidirectional,omitempty"` + Length float64 `protobuf:"fixed64,6,opt,name=length,proto3" json:"length,omitempty"` + TraversalTime int32 `protobuf:"varint,7,opt,name=traversal_time,json=traversalTime,proto3" json:"traversal_time,omitempty"` + StairCount int32 `protobuf:"varint,8,opt,name=stair_count,json=stairCount,proto3" json:"stair_count,omitempty"` + MaxSlope float64 `protobuf:"fixed64,9,opt,name=max_slope,json=maxSlope,proto3" json:"max_slope,omitempty"` + MinWidth float64 `protobuf:"fixed64,10,opt,name=min_width,json=minWidth,proto3" json:"min_width,omitempty"` + SignpostedAs string `protobuf:"bytes,11,opt,name=signposted_as,json=signpostedAs,proto3" json:"signposted_as,omitempty"` + ReverseSignpostedAs string `protobuf:"bytes,12,opt,name=reverse_signposted_as,json=reverseSignpostedAs,proto3" json:"reverse_signposted_as,omitempty"` +} + +func (x *Pathway) Reset() { + *x = Pathway{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[2] + mi := &file_gtfs_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Seconds) String() string { +func (x *Pathway) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Seconds) ProtoMessage() {} +func (*Pathway) ProtoMessage() {} -func (x *Seconds) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[2] +func (x *Pathway) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -633,90 +3146,122 @@ func (x *Seconds) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Seconds.ProtoReflect.Descriptor instead. -func (*Seconds) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{2} +// Deprecated: Use Pathway.ProtoReflect.Descriptor instead. +func (*Pathway) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{22} } -func (x *Seconds) GetSeconds() int64 { +func (x *Pathway) GetPathwayId() *EntityID { if x != nil { - return x.Seconds + return x.PathwayId } - return 0 + return nil } -type EntityID struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Pathway) GetFromStopId() *Reference { + if x != nil { + return x.FromStopId + } + return nil +} - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +func (x *Pathway) GetToStopId() *Reference { + if x != nil { + return x.ToStopId + } + return nil } -func (x *EntityID) Reset() { - *x = EntityID{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Pathway) GetPathwayMode() PathwayMode { + if x != nil { + return x.PathwayMode } + return PathwayMode_PathwayModeUnknown } -func (x *EntityID) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Pathway) GetIsBidirectional() PathwayDirectionality { + if x != nil { + return x.IsBidirectional + } + return PathwayDirectionality_PathwayUnidirectional } -func (*EntityID) ProtoMessage() {} +func (x *Pathway) GetLength() float64 { + if x != nil { + return x.Length + } + return 0 +} -func (x *EntityID) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Pathway) GetTraversalTime() int32 { + if x != nil { + return x.TraversalTime } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use EntityID.ProtoReflect.Descriptor instead. -func (*EntityID) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{3} +func (x *Pathway) GetStairCount() int32 { + if x != nil { + return x.StairCount + } + return 0 +} + +func (x *Pathway) GetMaxSlope() float64 { + if x != nil { + return x.MaxSlope + } + return 0 +} + +func (x *Pathway) GetMinWidth() float64 { + if x != nil { + return x.MinWidth + } + return 0 } -func (x *EntityID) GetId() string { +func (x *Pathway) GetSignpostedAs() string { if x != nil { - return x.Id + return x.SignpostedAs } return "" } -type Timezone struct { +func (x *Pathway) GetReverseSignpostedAs() string { + if x != nil { + return x.ReverseSignpostedAs + } + return "" +} + +type Level struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Timezone string `protobuf:"bytes,1,opt,name=timezone,proto3" json:"timezone,omitempty"` + LevelId *EntityID `protobuf:"bytes,1,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` + LevelIndex float64 `protobuf:"fixed64,2,opt,name=level_index,json=levelIndex,proto3" json:"level_index,omitempty"` + LevelName string `protobuf:"bytes,3,opt,name=level_name,json=levelName,proto3" json:"level_name,omitempty"` } -func (x *Timezone) Reset() { - *x = Timezone{} +func (x *Level) Reset() { + *x = Level{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[4] + mi := &file_gtfs_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Timezone) String() string { +func (x *Level) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Timezone) ProtoMessage() {} +func (*Level) ProtoMessage() {} -func (x *Timezone) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[4] +func (x *Level) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -727,43 +3272,58 @@ func (x *Timezone) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Timezone.ProtoReflect.Descriptor instead. -func (*Timezone) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{4} +// Deprecated: Use Level.ProtoReflect.Descriptor instead. +func (*Level) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{23} +} + +func (x *Level) GetLevelId() *EntityID { + if x != nil { + return x.LevelId + } + return nil +} + +func (x *Level) GetLevelIndex() float64 { + if x != nil { + return x.LevelIndex + } + return 0 } -func (x *Timezone) GetTimezone() string { +func (x *Level) GetLevelName() string { if x != nil { - return x.Timezone + return x.LevelName } return "" } -type Reference struct { +type LocationGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"` + LocationGroupId *EntityID `protobuf:"bytes,1,opt,name=location_group_id,json=locationGroupId,proto3" json:"location_group_id,omitempty"` + LocationGroupName string `protobuf:"bytes,2,opt,name=location_group_name,json=locationGroupName,proto3" json:"location_group_name,omitempty"` } -func (x *Reference) Reset() { - *x = Reference{} +func (x *LocationGroup) Reset() { + *x = LocationGroup{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[5] + mi := &file_gtfs_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Reference) String() string { +func (x *LocationGroup) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Reference) ProtoMessage() {} +func (*LocationGroup) ProtoMessage() {} -func (x *Reference) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[5] +func (x *LocationGroup) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -774,43 +3334,51 @@ func (x *Reference) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Reference.ProtoReflect.Descriptor instead. -func (*Reference) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{5} +// Deprecated: Use LocationGroup.ProtoReflect.Descriptor instead. +func (*LocationGroup) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{24} +} + +func (x *LocationGroup) GetLocationGroupId() *EntityID { + if x != nil { + return x.LocationGroupId + } + return nil } -func (x *Reference) GetEntityId() string { +func (x *LocationGroup) GetLocationGroupName() string { if x != nil { - return x.EntityId + return x.LocationGroupName } return "" } -type Url struct { +type LocationGroupStop struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + LocationGroupId *Reference `protobuf:"bytes,1,opt,name=location_group_id,json=locationGroupId,proto3" json:"location_group_id,omitempty"` + StopId *Reference `protobuf:"bytes,2,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` } -func (x *Url) Reset() { - *x = Url{} +func (x *LocationGroupStop) Reset() { + *x = LocationGroupStop{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[6] + mi := &file_gtfs_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Url) String() string { +func (x *LocationGroupStop) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Url) ProtoMessage() {} +func (*LocationGroupStop) ProtoMessage() {} -func (x *Url) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[6] +func (x *LocationGroupStop) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -821,43 +3389,64 @@ func (x *Url) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Url.ProtoReflect.Descriptor instead. -func (*Url) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{6} +// Deprecated: Use LocationGroupStop.ProtoReflect.Descriptor instead. +func (*LocationGroupStop) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{25} } -func (x *Url) GetUrl() string { +func (x *LocationGroupStop) GetLocationGroupId() *Reference { if x != nil { - return x.Url + return x.LocationGroupId } - return "" + return nil } -type Color struct { +func (x *LocationGroupStop) GetStopId() *Reference { + if x != nil { + return x.StopId + } + return nil +} + +type BookingRule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Color string `protobuf:"bytes,1,opt,name=color,proto3" json:"color,omitempty"` -} - -func (x *Color) Reset() { - *x = Color{} + BookingRuleId *EntityID `protobuf:"bytes,1,opt,name=booking_rule_id,json=bookingRuleId,proto3" json:"booking_rule_id,omitempty"` + BookingType BookingRuleType `protobuf:"varint,2,opt,name=booking_type,json=bookingType,proto3,enum=BookingRuleType" json:"booking_type,omitempty"` + PriorNoticeDurationMin int32 `protobuf:"varint,3,opt,name=prior_notice_duration_min,json=priorNoticeDurationMin,proto3" json:"prior_notice_duration_min,omitempty"` + PriorNoticeDurationMax int32 `protobuf:"varint,4,opt,name=prior_notice_duration_max,json=priorNoticeDurationMax,proto3" json:"prior_notice_duration_max,omitempty"` + PriorNoticeLastDay int32 `protobuf:"varint,5,opt,name=prior_notice_last_day,json=priorNoticeLastDay,proto3" json:"prior_notice_last_day,omitempty"` + PriorNoticeLastTime *Seconds `protobuf:"bytes,6,opt,name=prior_notice_last_time,json=priorNoticeLastTime,proto3" json:"prior_notice_last_time,omitempty"` + PriorNoticeStartDay int32 `protobuf:"varint,7,opt,name=prior_notice_start_day,json=priorNoticeStartDay,proto3" json:"prior_notice_start_day,omitempty"` + PriorNoticeStartTime *Seconds `protobuf:"bytes,8,opt,name=prior_notice_start_time,json=priorNoticeStartTime,proto3" json:"prior_notice_start_time,omitempty"` + PriorNoticeServiceId *Reference `protobuf:"bytes,9,opt,name=prior_notice_service_id,json=priorNoticeServiceId,proto3" json:"prior_notice_service_id,omitempty"` + Message string `protobuf:"bytes,10,opt,name=message,proto3" json:"message,omitempty"` + PickupMessage string `protobuf:"bytes,11,opt,name=pickup_message,json=pickupMessage,proto3" json:"pickup_message,omitempty"` + DropOffMessage string `protobuf:"bytes,12,opt,name=drop_off_message,json=dropOffMessage,proto3" json:"drop_off_message,omitempty"` + PhoneNumber string `protobuf:"bytes,13,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` + InfoUrl *Url `protobuf:"bytes,14,opt,name=info_url,json=infoUrl,proto3" json:"info_url,omitempty"` + BookingUrl *Url `protobuf:"bytes,15,opt,name=booking_url,json=bookingUrl,proto3" json:"booking_url,omitempty"` +} + +func (x *BookingRule) Reset() { + *x = BookingRule{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[7] + mi := &file_gtfs_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Color) String() string { +func (x *BookingRule) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Color) ProtoMessage() {} +func (*BookingRule) ProtoMessage() {} -func (x *Color) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[7] +func (x *BookingRule) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -868,145 +3457,147 @@ func (x *Color) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Color.ProtoReflect.Descriptor instead. -func (*Color) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{7} +// Deprecated: Use BookingRule.ProtoReflect.Descriptor instead. +func (*BookingRule) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{26} } -func (x *Color) GetColor() string { +func (x *BookingRule) GetBookingRuleId() *EntityID { if x != nil { - return x.Color + return x.BookingRuleId } - return "" + return nil } -type FeedEntity struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Agency *Agency `protobuf:"bytes,1,opt,name=agency,proto3" json:"agency,omitempty"` - Stop *Stop `protobuf:"bytes,2,opt,name=stop,proto3" json:"stop,omitempty"` - Route *Route `protobuf:"bytes,3,opt,name=route,proto3" json:"route,omitempty"` - Trip *Trip `protobuf:"bytes,4,opt,name=trip,proto3" json:"trip,omitempty"` - StopTime *StopTime `protobuf:"bytes,5,opt,name=stop_time,json=stopTime,proto3" json:"stop_time,omitempty"` - Shape *Shape `protobuf:"bytes,6,opt,name=shape,proto3" json:"shape,omitempty"` - Service *Service `protobuf:"bytes,7,opt,name=service,proto3" json:"service,omitempty"` +func (x *BookingRule) GetBookingType() BookingRuleType { + if x != nil { + return x.BookingType + } + return BookingRuleType_BookingRuleTypeRealtime } -func (x *FeedEntity) Reset() { - *x = FeedEntity{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BookingRule) GetPriorNoticeDurationMin() int32 { + if x != nil { + return x.PriorNoticeDurationMin } + return 0 } -func (x *FeedEntity) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BookingRule) GetPriorNoticeDurationMax() int32 { + if x != nil { + return x.PriorNoticeDurationMax + } + return 0 } -func (*FeedEntity) ProtoMessage() {} +func (x *BookingRule) GetPriorNoticeLastDay() int32 { + if x != nil { + return x.PriorNoticeLastDay + } + return 0 +} -func (x *FeedEntity) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BookingRule) GetPriorNoticeLastTime() *Seconds { + if x != nil { + return x.PriorNoticeLastTime } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FeedEntity.ProtoReflect.Descriptor instead. -func (*FeedEntity) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{8} +func (x *BookingRule) GetPriorNoticeStartDay() int32 { + if x != nil { + return x.PriorNoticeStartDay + } + return 0 } -func (x *FeedEntity) GetAgency() *Agency { +func (x *BookingRule) GetPriorNoticeStartTime() *Seconds { if x != nil { - return x.Agency + return x.PriorNoticeStartTime } return nil } -func (x *FeedEntity) GetStop() *Stop { +func (x *BookingRule) GetPriorNoticeServiceId() *Reference { if x != nil { - return x.Stop + return x.PriorNoticeServiceId } return nil } -func (x *FeedEntity) GetRoute() *Route { +func (x *BookingRule) GetMessage() string { if x != nil { - return x.Route + return x.Message } - return nil + return "" } -func (x *FeedEntity) GetTrip() *Trip { +func (x *BookingRule) GetPickupMessage() string { if x != nil { - return x.Trip + return x.PickupMessage } - return nil + return "" } -func (x *FeedEntity) GetStopTime() *StopTime { +func (x *BookingRule) GetDropOffMessage() string { if x != nil { - return x.StopTime + return x.DropOffMessage } - return nil + return "" } -func (x *FeedEntity) GetShape() *Shape { +func (x *BookingRule) GetPhoneNumber() string { if x != nil { - return x.Shape + return x.PhoneNumber + } + return "" +} + +func (x *BookingRule) GetInfoUrl() *Url { + if x != nil { + return x.InfoUrl } return nil } -func (x *FeedEntity) GetService() *Service { +func (x *BookingRule) GetBookingUrl() *Url { if x != nil { - return x.Service + return x.BookingUrl } return nil } -type Agency struct { +type Translation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AgencyId *EntityID `protobuf:"bytes,1,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` - AgencyName string `protobuf:"bytes,2,opt,name=agency_name,json=agencyName,proto3" json:"agency_name,omitempty"` - AgencyUrl string `protobuf:"bytes,3,opt,name=agency_url,json=agencyUrl,proto3" json:"agency_url,omitempty"` - AgencyTimezone *Timezone `protobuf:"bytes,4,opt,name=agency_timezone,json=agencyTimezone,proto3" json:"agency_timezone,omitempty"` - AgencyLang string `protobuf:"bytes,5,opt,name=agency_lang,json=agencyLang,proto3" json:"agency_lang,omitempty"` - AgencyPhone string `protobuf:"bytes,6,opt,name=agency_phone,json=agencyPhone,proto3" json:"agency_phone,omitempty"` - AgencyFareUrl *Url `protobuf:"bytes,7,opt,name=agency_fare_url,json=agencyFareUrl,proto3" json:"agency_fare_url,omitempty"` - AgencyEmail string `protobuf:"bytes,8,opt,name=agency_email,json=agencyEmail,proto3" json:"agency_email,omitempty"` + TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` // a string enum, not supported in protobuf + FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + Language *Language `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"` + Translation string `protobuf:"bytes,4,opt,name=translation,proto3" json:"translation,omitempty"` + RecordId string `protobuf:"bytes,5,opt,name=record_id,json=recordId,proto3" json:"record_id,omitempty"` // technically a reference, but must be resolved manually + RecordSubId string `protobuf:"bytes,6,opt,name=record_sub_id,json=recordSubId,proto3" json:"record_sub_id,omitempty"` + FieldValue string `protobuf:"bytes,7,opt,name=field_value,json=fieldValue,proto3" json:"field_value,omitempty"` } -func (x *Agency) Reset() { - *x = Agency{} +func (x *Translation) Reset() { + *x = Translation{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[9] + mi := &file_gtfs_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Agency) String() string { +func (x *Translation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Agency) ProtoMessage() {} +func (*Translation) ProtoMessage() {} -func (x *Agency) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[9] +func (x *Translation) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1017,106 +3608,92 @@ func (x *Agency) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Agency.ProtoReflect.Descriptor instead. -func (*Agency) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{9} -} - -func (x *Agency) GetAgencyId() *EntityID { - if x != nil { - return x.AgencyId - } - return nil +// Deprecated: Use Translation.ProtoReflect.Descriptor instead. +func (*Translation) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{27} } -func (x *Agency) GetAgencyName() string { +func (x *Translation) GetTableName() string { if x != nil { - return x.AgencyName + return x.TableName } return "" } -func (x *Agency) GetAgencyUrl() string { +func (x *Translation) GetFieldName() string { if x != nil { - return x.AgencyUrl + return x.FieldName } return "" } -func (x *Agency) GetAgencyTimezone() *Timezone { +func (x *Translation) GetLanguage() *Language { if x != nil { - return x.AgencyTimezone + return x.Language } return nil } -func (x *Agency) GetAgencyLang() string { +func (x *Translation) GetTranslation() string { if x != nil { - return x.AgencyLang + return x.Translation } return "" } -func (x *Agency) GetAgencyPhone() string { +func (x *Translation) GetRecordId() string { if x != nil { - return x.AgencyPhone + return x.RecordId } return "" } -func (x *Agency) GetAgencyFareUrl() *Url { +func (x *Translation) GetRecordSubId() string { if x != nil { - return x.AgencyFareUrl + return x.RecordSubId } - return nil + return "" } -func (x *Agency) GetAgencyEmail() string { +func (x *Translation) GetFieldValue() string { if x != nil { - return x.AgencyEmail + return x.FieldValue } return "" } -type Stop struct { +type FeedInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - StopId *EntityID `protobuf:"bytes,1,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` - StopCode string `protobuf:"bytes,2,opt,name=stop_code,json=stopCode,proto3" json:"stop_code,omitempty"` - StopName string `protobuf:"bytes,3,opt,name=stop_name,json=stopName,proto3" json:"stop_name,omitempty"` - TtsStopName string `protobuf:"bytes,4,opt,name=tts_stop_name,json=ttsStopName,proto3" json:"tts_stop_name,omitempty"` - StopDesc string `protobuf:"bytes,5,opt,name=stop_desc,json=stopDesc,proto3" json:"stop_desc,omitempty"` - StopLat float64 `protobuf:"fixed64,6,opt,name=stop_lat,json=stopLat,proto3" json:"stop_lat,omitempty"` - StopLon float64 `protobuf:"fixed64,7,opt,name=stop_lon,json=stopLon,proto3" json:"stop_lon,omitempty"` - ZoneId string `protobuf:"bytes,8,opt,name=zone_id,json=zoneId,proto3" json:"zone_id,omitempty"` - StopUrl *Url `protobuf:"bytes,9,opt,name=stop_url,json=stopUrl,proto3" json:"stop_url,omitempty"` - LocationType LocationType `protobuf:"varint,10,opt,name=location_type,json=locationType,proto3,enum=LocationType" json:"location_type,omitempty"` - ParentStation *Reference `protobuf:"bytes,11,opt,name=parent_station,json=parentStation,proto3" json:"parent_station,omitempty"` - StopTimezone *Timezone `protobuf:"bytes,12,opt,name=stop_timezone,json=stopTimezone,proto3" json:"stop_timezone,omitempty"` - WheelchairBoarding WheelchairAccess `protobuf:"varint,13,opt,name=wheelchair_boarding,json=wheelchairBoarding,proto3,enum=WheelchairAccess" json:"wheelchair_boarding,omitempty"` - LevelId *Reference `protobuf:"bytes,14,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` - PlatformCode string `protobuf:"bytes,15,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` + FeedPublisherName string `protobuf:"bytes,1,opt,name=feed_publisher_name,json=feedPublisherName,proto3" json:"feed_publisher_name,omitempty"` + FeedPublisherUrl *Url `protobuf:"bytes,2,opt,name=feed_publisher_url,json=feedPublisherUrl,proto3" json:"feed_publisher_url,omitempty"` + FeedLang *Language `protobuf:"bytes,3,opt,name=feed_lang,json=feedLang,proto3" json:"feed_lang,omitempty"` + DefaultLang *Language `protobuf:"bytes,4,opt,name=default_lang,json=defaultLang,proto3" json:"default_lang,omitempty"` + FeedStartDate *Date `protobuf:"bytes,5,opt,name=feed_start_date,json=feedStartDate,proto3" json:"feed_start_date,omitempty"` + FeedEndDate *Date `protobuf:"bytes,6,opt,name=feed_end_date,json=feedEndDate,proto3" json:"feed_end_date,omitempty"` + FeedContactEmail *Email `protobuf:"bytes,7,opt,name=feed_contact_email,json=feedContactEmail,proto3" json:"feed_contact_email,omitempty"` + FeedContactUrl *Url `protobuf:"bytes,8,opt,name=feed_contact_url,json=feedContactUrl,proto3" json:"feed_contact_url,omitempty"` } -func (x *Stop) Reset() { - *x = Stop{} +func (x *FeedInfo) Reset() { + *x = FeedInfo{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[10] + mi := &file_gtfs_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Stop) String() string { +func (x *FeedInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Stop) ProtoMessage() {} +func (*FeedInfo) ProtoMessage() {} -func (x *Stop) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[10] +func (x *FeedInfo) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1127,153 +3704,134 @@ func (x *Stop) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Stop.ProtoReflect.Descriptor instead. -func (*Stop) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{10} -} - -func (x *Stop) GetStopId() *EntityID { - if x != nil { - return x.StopId - } - return nil +// Deprecated: Use FeedInfo.ProtoReflect.Descriptor instead. +func (*FeedInfo) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{28} } -func (x *Stop) GetStopCode() string { +func (x *FeedInfo) GetFeedPublisherName() string { if x != nil { - return x.StopCode + return x.FeedPublisherName } return "" } -func (x *Stop) GetStopName() string { +func (x *FeedInfo) GetFeedPublisherUrl() *Url { if x != nil { - return x.StopName + return x.FeedPublisherUrl } - return "" + return nil } -func (x *Stop) GetTtsStopName() string { +func (x *FeedInfo) GetFeedLang() *Language { if x != nil { - return x.TtsStopName + return x.FeedLang } - return "" + return nil } -func (x *Stop) GetStopDesc() string { +func (x *FeedInfo) GetDefaultLang() *Language { if x != nil { - return x.StopDesc + return x.DefaultLang } - return "" + return nil } -func (x *Stop) GetStopLat() float64 { +func (x *FeedInfo) GetFeedStartDate() *Date { if x != nil { - return x.StopLat + return x.FeedStartDate } - return 0 + return nil } -func (x *Stop) GetStopLon() float64 { +func (x *FeedInfo) GetFeedEndDate() *Date { if x != nil { - return x.StopLon + return x.FeedEndDate } - return 0 + return nil } -func (x *Stop) GetZoneId() string { +func (x *FeedInfo) GetFeedContactEmail() *Email { if x != nil { - return x.ZoneId + return x.FeedContactEmail } - return "" + return nil } -func (x *Stop) GetStopUrl() *Url { +func (x *FeedInfo) GetFeedContactUrl() *Url { if x != nil { - return x.StopUrl + return x.FeedContactUrl } return nil } -func (x *Stop) GetLocationType() LocationType { - if x != nil { - return x.LocationType - } - return LocationType_LocationPlatform +type Attribution struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (x *Stop) GetParentStation() *Reference { - if x != nil { - return x.ParentStation +func (x *Attribution) Reset() { + *x = Attribution{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *Stop) GetStopTimezone() *Timezone { - if x != nil { - return x.StopTimezone - } - return nil +func (x *Attribution) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Stop) GetWheelchairBoarding() WheelchairAccess { - if x != nil { - return x.WheelchairBoarding - } - return WheelchairAccess_WheelchairUnknown -} +func (*Attribution) ProtoMessage() {} -func (x *Stop) GetLevelId() *Reference { - if x != nil { - return x.LevelId +func (x *Attribution) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *Stop) GetPlatformCode() string { - if x != nil { - return x.PlatformCode - } - return "" +// Deprecated: Use Attribution.ProtoReflect.Descriptor instead. +func (*Attribution) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{29} } -type Route struct { +type ShapePoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RouteId *EntityID `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` - AgencyId *Reference `protobuf:"bytes,2,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` - RouteShortName string `protobuf:"bytes,3,opt,name=route_short_name,json=routeShortName,proto3" json:"route_short_name,omitempty"` - RouteLongName string `protobuf:"bytes,4,opt,name=route_long_name,json=routeLongName,proto3" json:"route_long_name,omitempty"` - RouteDesc string `protobuf:"bytes,5,opt,name=route_desc,json=routeDesc,proto3" json:"route_desc,omitempty"` - RouteType RouteType `protobuf:"varint,6,opt,name=route_type,json=routeType,proto3,enum=RouteType" json:"route_type,omitempty"` - RouteUrl *Url `protobuf:"bytes,7,opt,name=route_url,json=routeUrl,proto3" json:"route_url,omitempty"` - RouteColor *Color `protobuf:"bytes,8,opt,name=route_color,json=routeColor,proto3" json:"route_color,omitempty"` - RouteTextColor *Color `protobuf:"bytes,9,opt,name=route_text_color,json=routeTextColor,proto3" json:"route_text_color,omitempty"` - RouteSortOrder int32 `protobuf:"varint,10,opt,name=route_sort_order,json=routeSortOrder,proto3" json:"route_sort_order,omitempty"` - ContinuousPickup PickupAccess `protobuf:"varint,11,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` - ContinuousDropOff PickupAccess `protobuf:"varint,12,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` - NetworkId string `protobuf:"bytes,13,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + ShapePtLat float64 `protobuf:"fixed64,2,opt,name=shape_pt_lat,json=shapePtLat,proto3" json:"shape_pt_lat,omitempty"` + ShapePtLon float64 `protobuf:"fixed64,3,opt,name=shape_pt_lon,json=shapePtLon,proto3" json:"shape_pt_lon,omitempty"` + ShapePtSequence int32 `protobuf:"varint,4,opt,name=shape_pt_sequence,json=shapePtSequence,proto3" json:"shape_pt_sequence,omitempty"` + ShapeDistTraveled float64 `protobuf:"fixed64,5,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` } -func (x *Route) Reset() { - *x = Route{} +func (x *ShapePoint) Reset() { + *x = ShapePoint{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[11] + mi := &file_gtfs_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Route) String() string { +func (x *ShapePoint) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Route) ProtoMessage() {} +func (*ShapePoint) ProtoMessage() {} -func (x *Route) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[11] +func (x *ShapePoint) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1284,136 +3842,182 @@ func (x *Route) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Route.ProtoReflect.Descriptor instead. -func (*Route) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{11} +// Deprecated: Use ShapePoint.ProtoReflect.Descriptor instead. +func (*ShapePoint) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{30} } -func (x *Route) GetRouteId() *EntityID { +func (x *ShapePoint) GetShapeId() *EntityID { if x != nil { - return x.RouteId + return x.ShapeId } return nil } -func (x *Route) GetAgencyId() *Reference { +func (x *ShapePoint) GetShapePtLat() float64 { if x != nil { - return x.AgencyId + return x.ShapePtLat } - return nil + return 0 } -func (x *Route) GetRouteShortName() string { +func (x *ShapePoint) GetShapePtLon() float64 { if x != nil { - return x.RouteShortName + return x.ShapePtLon } - return "" + return 0 } -func (x *Route) GetRouteLongName() string { +func (x *ShapePoint) GetShapePtSequence() int32 { if x != nil { - return x.RouteLongName + return x.ShapePtSequence } - return "" + return 0 +} + +func (x *ShapePoint) GetShapeDistTraveled() float64 { + if x != nil { + return x.ShapeDistTraveled + } + return 0 +} + +type Shape struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + Shape *LineString `protobuf:"bytes,2,opt,name=shape,proto3" json:"shape,omitempty"` +} + +func (x *Shape) Reset() { + *x = Shape{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Shape) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Route) GetRouteDesc() string { - if x != nil { - return x.RouteDesc +func (*Shape) ProtoMessage() {} + +func (x *Shape) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *Route) GetRouteType() RouteType { - if x != nil { - return x.RouteType - } - return RouteType_VehicleTram +// Deprecated: Use Shape.ProtoReflect.Descriptor instead. +func (*Shape) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{31} } -func (x *Route) GetRouteUrl() *Url { +func (x *Shape) GetShapeId() *EntityID { if x != nil { - return x.RouteUrl + return x.ShapeId } return nil } -func (x *Route) GetRouteColor() *Color { +func (x *Shape) GetShape() *LineString { if x != nil { - return x.RouteColor + return x.Shape } return nil } -func (x *Route) GetRouteTextColor() *Color { - if x != nil { - return x.RouteTextColor - } - return nil +type Point struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Lon float64 `protobuf:"fixed64,1,opt,name=lon,proto3" json:"lon,omitempty"` + Lat float64 `protobuf:"fixed64,2,opt,name=lat,proto3" json:"lat,omitempty"` } -func (x *Route) GetRouteSortOrder() int32 { - if x != nil { - return x.RouteSortOrder +func (x *Point) Reset() { + *x = Point{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *Route) GetContinuousPickup() PickupAccess { - if x != nil { - return x.ContinuousPickup +func (x *Point) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Point) ProtoMessage() {} + +func (x *Point) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return PickupAccess_PickupContinuous + return mi.MessageOf(x) } -func (x *Route) GetContinuousDropOff() PickupAccess { +// Deprecated: Use Point.ProtoReflect.Descriptor instead. +func (*Point) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{32} +} + +func (x *Point) GetLon() float64 { if x != nil { - return x.ContinuousDropOff + return x.Lon } - return PickupAccess_PickupContinuous + return 0 } -func (x *Route) GetNetworkId() string { +func (x *Point) GetLat() float64 { if x != nil { - return x.NetworkId + return x.Lat } - return "" + return 0 } -type Trip struct { +type LineString struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RouteId *Reference `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` - ServiceId *Reference `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` - TripId *EntityID `protobuf:"bytes,3,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` - TripHeadsign string `protobuf:"bytes,4,opt,name=trip_headsign,json=tripHeadsign,proto3" json:"trip_headsign,omitempty"` - TripShortName string `protobuf:"bytes,5,opt,name=trip_short_name,json=tripShortName,proto3" json:"trip_short_name,omitempty"` - DirectionId Direction `protobuf:"varint,6,opt,name=direction_id,json=directionId,proto3,enum=Direction" json:"direction_id,omitempty"` - BlockId string `protobuf:"bytes,7,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` - ShapeId *Reference `protobuf:"bytes,8,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` - WheelchairAccessible WheelchairAccess `protobuf:"varint,9,opt,name=wheelchair_accessible,json=wheelchairAccessible,proto3,enum=WheelchairAccess" json:"wheelchair_accessible,omitempty"` - BikesAllowed BikeAccess `protobuf:"varint,10,opt,name=bikes_allowed,json=bikesAllowed,proto3,enum=BikeAccess" json:"bikes_allowed,omitempty"` + Stride uint32 `protobuf:"varint,1,opt,name=stride,proto3" json:"stride,omitempty"` + Coordinates []float64 `protobuf:"fixed64,2,rep,packed,name=coordinates,proto3" json:"coordinates,omitempty"` } -func (x *Trip) Reset() { - *x = Trip{} +func (x *LineString) Reset() { + *x = LineString{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[12] + mi := &file_gtfs_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Trip) String() string { +func (x *LineString) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Trip) ProtoMessage() {} +func (*LineString) ProtoMessage() {} -func (x *Trip) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[12] +func (x *LineString) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1424,115 +4028,113 @@ func (x *Trip) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Trip.ProtoReflect.Descriptor instead. -func (*Trip) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{12} +// Deprecated: Use LineString.ProtoReflect.Descriptor instead. +func (*LineString) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{33} } -func (x *Trip) GetRouteId() *Reference { +func (x *LineString) GetStride() uint32 { if x != nil { - return x.RouteId + return x.Stride } - return nil + return 0 } -func (x *Trip) GetServiceId() *Reference { +func (x *LineString) GetCoordinates() []float64 { if x != nil { - return x.ServiceId + return x.Coordinates } return nil } -func (x *Trip) GetTripId() *EntityID { - if x != nil { - return x.TripId - } - return nil +type Date struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Year int32 `protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"` + Month int32 `protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"` + Day int32 `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"` } -func (x *Trip) GetTripHeadsign() string { - if x != nil { - return x.TripHeadsign +func (x *Date) Reset() { + *x = Date{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Trip) GetTripShortName() string { - if x != nil { - return x.TripShortName - } - return "" +func (x *Date) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Trip) GetDirectionId() Direction { - if x != nil { - return x.DirectionId +func (*Date) ProtoMessage() {} + +func (x *Date) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return Direction_DirectionOutbound + return mi.MessageOf(x) } -func (x *Trip) GetBlockId() string { - if x != nil { - return x.BlockId - } - return "" +// Deprecated: Use Date.ProtoReflect.Descriptor instead. +func (*Date) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{34} } -func (x *Trip) GetShapeId() *Reference { +func (x *Date) GetYear() int32 { if x != nil { - return x.ShapeId + return x.Year } - return nil + return 0 } -func (x *Trip) GetWheelchairAccessible() WheelchairAccess { +func (x *Date) GetMonth() int32 { if x != nil { - return x.WheelchairAccessible + return x.Month } - return WheelchairAccess_WheelchairUnknown + return 0 } -func (x *Trip) GetBikesAllowed() BikeAccess { +func (x *Date) GetDay() int32 { if x != nil { - return x.BikesAllowed + return x.Day } - return BikeAccess_BikeUnknown + return 0 } -type StopTime struct { +type Time struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TripId *Reference `protobuf:"bytes,1,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` - ArrivalTime *Seconds `protobuf:"bytes,2,opt,name=arrival_time,json=arrivalTime,proto3" json:"arrival_time,omitempty"` - DepartureTime *Seconds `protobuf:"bytes,3,opt,name=departure_time,json=departureTime,proto3" json:"departure_time,omitempty"` - StopId *Reference `protobuf:"bytes,4,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` - StopSequence int32 `protobuf:"varint,5,opt,name=stop_sequence,json=stopSequence,proto3" json:"stop_sequence,omitempty"` - StopHeadsign string `protobuf:"bytes,6,opt,name=stop_headsign,json=stopHeadsign,proto3" json:"stop_headsign,omitempty"` - ContinuousPickup PickupAccess `protobuf:"varint,7,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` - ContinuousDropOff PickupAccess `protobuf:"varint,8,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` - ShapeDistTraveled float64 `protobuf:"fixed64,9,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` - Timepoint Timepoint `protobuf:"varint,10,opt,name=timepoint,proto3,enum=Timepoint" json:"timepoint,omitempty"` + Val int64 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *StopTime) Reset() { - *x = StopTime{} +func (x *Time) Reset() { + *x = Time{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[13] + mi := &file_gtfs_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StopTime) String() string { +func (x *Time) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StopTime) ProtoMessage() {} +func (*Time) ProtoMessage() {} -func (x *StopTime) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[13] +func (x *Time) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1543,117 +4145,90 @@ func (x *StopTime) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StopTime.ProtoReflect.Descriptor instead. -func (*StopTime) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{13} +// Deprecated: Use Time.ProtoReflect.Descriptor instead. +func (*Time) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{35} } -func (x *StopTime) GetTripId() *Reference { +func (x *Time) GetVal() int64 { if x != nil { - return x.TripId + return x.Val } - return nil + return 0 } -func (x *StopTime) GetArrivalTime() *Seconds { - if x != nil { - return x.ArrivalTime - } - return nil -} +type Seconds struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *StopTime) GetDepartureTime() *Seconds { - if x != nil { - return x.DepartureTime - } - return nil + Val int64 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *StopTime) GetStopId() *Reference { - if x != nil { - return x.StopId +func (x *Seconds) Reset() { + *x = Seconds{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *StopTime) GetStopSequence() int32 { - if x != nil { - return x.StopSequence - } - return 0 +func (x *Seconds) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *StopTime) GetStopHeadsign() string { - if x != nil { - return x.StopHeadsign - } - return "" -} +func (*Seconds) ProtoMessage() {} -func (x *StopTime) GetContinuousPickup() PickupAccess { - if x != nil { - return x.ContinuousPickup +func (x *Seconds) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return PickupAccess_PickupContinuous + return mi.MessageOf(x) } -func (x *StopTime) GetContinuousDropOff() PickupAccess { - if x != nil { - return x.ContinuousDropOff - } - return PickupAccess_PickupContinuous +// Deprecated: Use Seconds.ProtoReflect.Descriptor instead. +func (*Seconds) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{36} } -func (x *StopTime) GetShapeDistTraveled() float64 { +func (x *Seconds) GetVal() int64 { if x != nil { - return x.ShapeDistTraveled + return x.Val } return 0 } -func (x *StopTime) GetTimepoint() Timepoint { - if x != nil { - return x.Timepoint - } - return Timepoint_Approximate -} - -type Service struct { +type EntityID struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ServiceId *EntityID `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` - StartDate *Date `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` - EndDate *Date `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` - Added []*Date `protobuf:"bytes,4,rep,name=added,proto3" json:"added,omitempty"` - Removed []*Date `protobuf:"bytes,5,rep,name=removed,proto3" json:"removed,omitempty"` - Monday bool `protobuf:"varint,6,opt,name=monday,proto3" json:"monday,omitempty"` - Tuesday bool `protobuf:"varint,7,opt,name=tuesday,proto3" json:"tuesday,omitempty"` - Wednesday bool `protobuf:"varint,8,opt,name=wednesday,proto3" json:"wednesday,omitempty"` - Thursday bool `protobuf:"varint,9,opt,name=thursday,proto3" json:"thursday,omitempty"` - Friday bool `protobuf:"varint,10,opt,name=friday,proto3" json:"friday,omitempty"` - Saturday bool `protobuf:"varint,11,opt,name=saturday,proto3" json:"saturday,omitempty"` - Sunday bool `protobuf:"varint,12,opt,name=sunday,proto3" json:"sunday,omitempty"` + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *Service) Reset() { - *x = Service{} +func (x *EntityID) Reset() { + *x = EntityID{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[14] + mi := &file_gtfs_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Service) String() string { +func (x *EntityID) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Service) ProtoMessage() {} +func (*EntityID) ProtoMessage() {} -func (x *Service) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[14] +func (x *EntityID) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1664,129 +4239,137 @@ func (x *Service) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Service.ProtoReflect.Descriptor instead. -func (*Service) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{14} +// Deprecated: Use EntityID.ProtoReflect.Descriptor instead. +func (*EntityID) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{37} } -func (x *Service) GetServiceId() *EntityID { +func (x *EntityID) GetVal() string { if x != nil { - return x.ServiceId + return x.Val } - return nil + return "" } -func (x *Service) GetStartDate() *Date { - if x != nil { - return x.StartDate - } - return nil +type Timezone struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *Service) GetEndDate() *Date { - if x != nil { - return x.EndDate +func (x *Timezone) Reset() { + *x = Timezone{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *Service) GetAdded() []*Date { - if x != nil { - return x.Added - } - return nil +func (x *Timezone) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Service) GetRemoved() []*Date { - if x != nil { - return x.Removed +func (*Timezone) ProtoMessage() {} + +func (x *Timezone) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *Service) GetMonday() bool { - if x != nil { - return x.Monday - } - return false +// Deprecated: Use Timezone.ProtoReflect.Descriptor instead. +func (*Timezone) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{38} } -func (x *Service) GetTuesday() bool { +func (x *Timezone) GetVal() string { if x != nil { - return x.Tuesday + return x.Val } - return false + return "" } -func (x *Service) GetWednesday() bool { - if x != nil { - return x.Wednesday - } - return false +type Reference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *Service) GetThursday() bool { - if x != nil { - return x.Thursday +func (x *Reference) Reset() { + *x = Reference{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *Service) GetFriday() bool { - if x != nil { - return x.Friday - } - return false +func (x *Reference) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Service) GetSaturday() bool { - if x != nil { - return x.Saturday +func (*Reference) ProtoMessage() {} + +func (x *Reference) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *Service) GetSunday() bool { +// Deprecated: Use Reference.ProtoReflect.Descriptor instead. +func (*Reference) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{39} +} + +func (x *Reference) GetVal() string { if x != nil { - return x.Sunday + return x.Val } - return false + return "" } -type Calendar struct { +type Url struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ServiceId *EntityID `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` - StartDate *Date `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` - EndDate *Date `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` - Monday bool `protobuf:"varint,4,opt,name=monday,proto3" json:"monday,omitempty"` - Tuesday bool `protobuf:"varint,5,opt,name=tuesday,proto3" json:"tuesday,omitempty"` - Wednesday bool `protobuf:"varint,6,opt,name=wednesday,proto3" json:"wednesday,omitempty"` - Thursday bool `protobuf:"varint,7,opt,name=thursday,proto3" json:"thursday,omitempty"` - Friday bool `protobuf:"varint,8,opt,name=friday,proto3" json:"friday,omitempty"` - Saturday bool `protobuf:"varint,9,opt,name=saturday,proto3" json:"saturday,omitempty"` - Sunday bool `protobuf:"varint,10,opt,name=sunday,proto3" json:"sunday,omitempty"` + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *Calendar) Reset() { - *x = Calendar{} +func (x *Url) Reset() { + *x = Url{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[15] + mi := &file_gtfs_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Calendar) String() string { +func (x *Url) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Calendar) ProtoMessage() {} +func (*Url) ProtoMessage() {} -func (x *Calendar) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[15] +func (x *Url) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1797,108 +4380,137 @@ func (x *Calendar) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Calendar.ProtoReflect.Descriptor instead. -func (*Calendar) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{15} +// Deprecated: Use Url.ProtoReflect.Descriptor instead. +func (*Url) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{40} } -func (x *Calendar) GetServiceId() *EntityID { +func (x *Url) GetVal() string { if x != nil { - return x.ServiceId + return x.Val } - return nil + return "" } -func (x *Calendar) GetStartDate() *Date { - if x != nil { - return x.StartDate - } - return nil +type Email struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *Calendar) GetEndDate() *Date { - if x != nil { - return x.EndDate +func (x *Email) Reset() { + *x = Email{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *Calendar) GetMonday() bool { - if x != nil { - return x.Monday - } - return false +func (x *Email) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Calendar) GetTuesday() bool { - if x != nil { - return x.Tuesday +func (*Email) ProtoMessage() {} + +func (x *Email) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *Calendar) GetWednesday() bool { +// Deprecated: Use Email.ProtoReflect.Descriptor instead. +func (*Email) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{41} +} + +func (x *Email) GetVal() string { if x != nil { - return x.Wednesday + return x.Val } - return false + return "" } -func (x *Calendar) GetThursday() bool { - if x != nil { - return x.Thursday +type Color struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Color) Reset() { + *x = Color{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *Calendar) GetFriday() bool { - if x != nil { - return x.Friday +func (x *Color) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Color) ProtoMessage() {} + +func (x *Color) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *Calendar) GetSaturday() bool { - if x != nil { - return x.Saturday - } - return false +// Deprecated: Use Color.ProtoReflect.Descriptor instead. +func (*Color) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{42} } -func (x *Calendar) GetSunday() bool { +func (x *Color) GetVal() string { if x != nil { - return x.Sunday + return x.Val } - return false + return "" } -type CalendarDate struct { +type Money struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ServiceId *Reference `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` - Date *Date `protobuf:"bytes,2,opt,name=date,proto3" json:"date,omitempty"` - ExceptionType CalendarExceptionType `protobuf:"varint,3,opt,name=exception_type,json=exceptionType,proto3,enum=CalendarExceptionType" json:"exception_type,omitempty"` + Val float64 `protobuf:"fixed64,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *CalendarDate) Reset() { - *x = CalendarDate{} +func (x *Money) Reset() { + *x = Money{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[16] + mi := &file_gtfs_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CalendarDate) String() string { +func (x *Money) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CalendarDate) ProtoMessage() {} +func (*Money) ProtoMessage() {} -func (x *CalendarDate) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[16] +func (x *Money) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1909,61 +4521,43 @@ func (x *CalendarDate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CalendarDate.ProtoReflect.Descriptor instead. -func (*CalendarDate) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{16} -} - -func (x *CalendarDate) GetServiceId() *Reference { - if x != nil { - return x.ServiceId - } - return nil -} - -func (x *CalendarDate) GetDate() *Date { - if x != nil { - return x.Date - } - return nil +// Deprecated: Use Money.ProtoReflect.Descriptor instead. +func (*Money) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{43} } -func (x *CalendarDate) GetExceptionType() CalendarExceptionType { +func (x *Money) GetVal() float64 { if x != nil { - return x.ExceptionType + return x.Val } - return CalendarExceptionType_CalendarUnknown + return 0 } -type ShapePoint struct { +type Currency struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` - ShapePtLat float64 `protobuf:"fixed64,2,opt,name=shape_pt_lat,json=shapePtLat,proto3" json:"shape_pt_lat,omitempty"` - ShapePtLon float64 `protobuf:"fixed64,3,opt,name=shape_pt_lon,json=shapePtLon,proto3" json:"shape_pt_lon,omitempty"` - ShapePtSequence int32 `protobuf:"varint,4,opt,name=shape_pt_sequence,json=shapePtSequence,proto3" json:"shape_pt_sequence,omitempty"` - ShapeDistTraveled float64 `protobuf:"fixed64,5,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *ShapePoint) Reset() { - *x = ShapePoint{} +func (x *Currency) Reset() { + *x = Currency{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[17] + mi := &file_gtfs_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ShapePoint) String() string { +func (x *Currency) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ShapePoint) ProtoMessage() {} +func (*Currency) ProtoMessage() {} -func (x *ShapePoint) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[17] +func (x *Currency) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1974,72 +4568,43 @@ func (x *ShapePoint) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ShapePoint.ProtoReflect.Descriptor instead. -func (*ShapePoint) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{17} -} - -func (x *ShapePoint) GetShapeId() *EntityID { - if x != nil { - return x.ShapeId - } - return nil -} - -func (x *ShapePoint) GetShapePtLat() float64 { - if x != nil { - return x.ShapePtLat - } - return 0 -} - -func (x *ShapePoint) GetShapePtLon() float64 { - if x != nil { - return x.ShapePtLon - } - return 0 -} - -func (x *ShapePoint) GetShapePtSequence() int32 { - if x != nil { - return x.ShapePtSequence - } - return 0 +// Deprecated: Use Currency.ProtoReflect.Descriptor instead. +func (*Currency) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{44} } -func (x *ShapePoint) GetShapeDistTraveled() float64 { +func (x *Currency) GetVal() string { if x != nil { - return x.ShapeDistTraveled + return x.Val } - return 0 + return "" } -type Shape struct { +type Language struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` - Shape *LineString `protobuf:"bytes,2,opt,name=shape,proto3" json:"shape,omitempty"` + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` } -func (x *Shape) Reset() { - *x = Shape{} +func (x *Language) Reset() { + *x = Language{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[18] + mi := &file_gtfs_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Shape) String() string { +func (x *Language) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Shape) ProtoMessage() {} +func (*Language) ProtoMessage() {} -func (x *Shape) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[18] +func (x *Language) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2050,51 +4615,45 @@ func (x *Shape) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Shape.ProtoReflect.Descriptor instead. -func (*Shape) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{18} -} - -func (x *Shape) GetShapeId() *EntityID { - if x != nil { - return x.ShapeId - } - return nil +// Deprecated: Use Language.ProtoReflect.Descriptor instead. +func (*Language) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{45} } -func (x *Shape) GetShape() *LineString { +func (x *Language) GetVal() string { if x != nil { - return x.Shape + return x.Val } - return nil + return "" } -type Point struct { +// This must be a message so we can check for nil +// "0" and "" have different semantics in GTFS +type FareAttributeTransfer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Lon float32 `protobuf:"fixed32,1,opt,name=lon,proto3" json:"lon,omitempty"` - Lat float32 `protobuf:"fixed32,2,opt,name=lat,proto3" json:"lat,omitempty"` + TransferType FareAttributeTransferType `protobuf:"varint,1,opt,name=transfer_type,json=transferType,proto3,enum=FareAttributeTransferType" json:"transfer_type,omitempty"` } -func (x *Point) Reset() { - *x = Point{} +func (x *FareAttributeTransfer) Reset() { + *x = FareAttributeTransfer{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[19] + mi := &file_gtfs_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Point) String() string { +func (x *FareAttributeTransfer) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Point) ProtoMessage() {} +func (*FareAttributeTransfer) ProtoMessage() {} -func (x *Point) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[19] +func (x *FareAttributeTransfer) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2105,51 +4664,44 @@ func (x *Point) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Point.ProtoReflect.Descriptor instead. -func (*Point) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{19} -} - -func (x *Point) GetLon() float32 { - if x != nil { - return x.Lon - } - return 0 +// Deprecated: Use FareAttributeTransfer.ProtoReflect.Descriptor instead. +func (*FareAttributeTransfer) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{46} } -func (x *Point) GetLat() float32 { +func (x *FareAttributeTransfer) GetTransferType() FareAttributeTransferType { if x != nil { - return x.Lat + return x.TransferType } - return 0 + return FareAttributeTransferType_FareAttributeTransferTypeDisallowed } -type LineString struct { +// "0" and "" have different semantics +type TransferCount struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Stride int32 `protobuf:"varint,1,opt,name=stride,proto3" json:"stride,omitempty"` - Coordinates []float64 `protobuf:"fixed64,2,rep,packed,name=coordinates,proto3" json:"coordinates,omitempty"` + TransferCount int32 `protobuf:"varint,1,opt,name=transfer_count,json=transferCount,proto3" json:"transfer_count,omitempty"` } -func (x *LineString) Reset() { - *x = LineString{} +func (x *TransferCount) Reset() { + *x = TransferCount{} if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[20] + mi := &file_gtfs_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LineString) String() string { +func (x *TransferCount) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LineString) ProtoMessage() {} +func (*TransferCount) ProtoMessage() {} -func (x *LineString) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[20] +func (x *TransferCount) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,169 +4712,145 @@ func (x *LineString) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LineString.ProtoReflect.Descriptor instead. -func (*LineString) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{20} +// Deprecated: Use TransferCount.ProtoReflect.Descriptor instead. +func (*TransferCount) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{47} } -func (x *LineString) GetStride() int32 { +func (x *TransferCount) GetTransferCount() int32 { if x != nil { - return x.Stride + return x.TransferCount } return 0 } -func (x *LineString) GetCoordinates() []float64 { - if x != nil { - return x.Coordinates - } - return nil -} - var File_gtfs_proto protoreflect.FileDescriptor var file_gtfs_proto_rawDesc = []byte{ - 0x0a, 0x0a, 0x67, 0x74, 0x66, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x42, 0x0a, 0x04, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, - 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, - 0x22, 0x20, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x22, 0x23, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x1a, 0x0a, 0x08, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x22, 0x26, 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x22, 0x28, 0x0a, 0x09, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x1d, - 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0xeb, 0x01, - 0x0a, 0x0a, 0x46, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x06, - 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x41, - 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, - 0x04, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x53, 0x74, - 0x6f, 0x70, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, - 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x72, 0x69, 0x70, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x52, 0x04, 0x74, 0x72, 0x69, - 0x70, 0x12, 0x26, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x52, - 0x08, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x53, 0x68, 0x61, 0x70, 0x65, - 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xb9, 0x02, 0x0a, 0x06, - 0x41, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x26, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x49, 0x44, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, - 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x32, - 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, - 0x6e, 0x65, 0x52, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, - 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x61, 0x6e, - 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4c, + 0x0a, 0x0a, 0x67, 0x74, 0x66, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xeb, 0x01, 0x0a, + 0x0a, 0x46, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x06, 0x61, + 0x67, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x41, 0x67, + 0x65, 0x6e, 0x63, 0x79, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x04, + 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x53, 0x74, 0x6f, + 0x70, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x05, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x72, 0x69, 0x70, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x52, 0x04, 0x74, 0x72, 0x69, 0x70, + 0x12, 0x26, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x08, + 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x53, 0x68, 0x61, 0x70, 0x65, 0x52, + 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xd2, 0x02, 0x0a, 0x06, 0x41, + 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x26, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x49, 0x44, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, + 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, + 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x54, + 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, + 0x79, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x72, - 0x65, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, - 0x63, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xbc, 0x04, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, - 0x12, 0x22, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x73, 0x74, - 0x6f, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, - 0x0a, 0x0d, 0x74, 0x74, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x74, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x73, 0x63, 0x12, - 0x19, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, - 0x6f, 0x70, 0x5f, 0x6c, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, - 0x6f, 0x70, 0x4c, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, - 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x55, 0x72, 0x6c, 0x12, - 0x32, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, - 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x42, 0x0a, 0x13, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, - 0x68, 0x61, 0x69, 0x72, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x12, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, - 0x69, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, - 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xb4, 0x04, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x12, 0x24, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, - 0x28, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x53, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6e, 0x67, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, - 0x12, 0x29, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, - 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, - 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x06, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, - 0x73, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, - 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, - 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, - 0x3d, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, - 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, - 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, - 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x1d, - 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0xb4, 0x03, - 0x0a, 0x04, 0x54, 0x72, 0x69, 0x70, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, - 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, - 0x74, 0x72, 0x69, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x70, 0x48, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, - 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x70, - 0x53, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x0c, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x0a, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x69, 0x72, + 0x65, 0x55, 0x72, 0x6c, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, + 0xc0, 0x04, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, + 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, + 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x74, 0x73, 0x5f, 0x73, 0x74, + 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, + 0x74, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, + 0x6f, 0x70, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, + 0x74, 0x6f, 0x70, 0x44, 0x65, 0x73, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, + 0x6c, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4c, + 0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x6e, 0x12, 0x17, 0x0a, + 0x07, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x07, + 0x73, 0x74, 0x6f, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x36, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, + 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x31, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, + 0x6f, 0x6e, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, + 0x6e, 0x65, 0x12, 0x42, 0x0a, 0x13, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, + 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x52, 0x12, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x42, 0x6f, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x23, 0x0a, + 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x64, 0x65, 0x22, 0xb4, 0x04, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x08, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, + 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x49, 0x64, 0x12, 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x72, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6c, + 0x6f, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x29, 0x0a, 0x0a, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x0a, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, + 0x52, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0b, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x06, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x78, + 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x65, 0x78, 0x74, + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, + 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x3a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x69, + 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, + 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x13, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, + 0x66, 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, + 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, + 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0xb8, 0x03, 0x0a, 0x04, 0x54, 0x72, + 0x69, 0x70, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, + 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x70, + 0x5f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x74, 0x72, 0x69, 0x70, 0x48, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x26, 0x0a, + 0x0f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x72, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x54, 0x72, + 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, @@ -2335,7 +4863,7 @@ var file_gtfs_proto_rawDesc = []byte{ 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x0d, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x41, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x64, 0x22, 0xd1, 0x03, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, + 0x6f, 0x77, 0x65, 0x64, 0x22, 0xb2, 0x07, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, @@ -2361,62 +4889,411 @@ var file_gtfs_proto_rawDesc = []byte{ 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x12, 0x28, + 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x0a, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xf1, 0x02, 0x0a, 0x07, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x24, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x65, - 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, 0x64, - 0x64, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, - 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, - 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, - 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, - 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, - 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, 0x75, - 0x72, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, - 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x22, 0xb4, 0x02, 0x0a, - 0x08, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, - 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, 0x6e, - 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, 0x0a, - 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x74, - 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, - 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, - 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, - 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, 0x6e, - 0x64, 0x61, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x19, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, - 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x65, 0x78, - 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x45, 0x78, 0x63, - 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x65, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x0a, 0x53, 0x68, + 0x0e, 0x32, 0x0e, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x0b, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x11, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x12, 0x48, 0x0a, 0x1c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, + 0x70, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x52, 0x18, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x72, + 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x44, 0x0a, 0x1a, 0x65, + 0x6e, 0x64, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, + 0x66, 0x66, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x16, 0x65, 0x6e, 0x64, 0x50, 0x69, + 0x63, 0x6b, 0x75, 0x70, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x57, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x12, 0x2e, 0x0a, 0x0b, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x0a, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x31, 0x0a, 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, + 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x16, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x62, + 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x13, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, + 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x18, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, + 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x14, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x42, 0x6f, 0x6f, 0x6b, + 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xf1, 0x02, 0x0a, 0x07, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, + 0x64, 0x64, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, + 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, + 0x73, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, + 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, + 0x79, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, + 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, + 0x75, 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x22, 0xb4, 0x02, + 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, + 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, + 0x61, 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, + 0x6e, 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, + 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, + 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, + 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, + 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, + 0x6e, 0x64, 0x61, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, + 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x19, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, + 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x65, + 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x45, 0x78, + 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x63, + 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x0d, 0x46, + 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x07, + 0x66, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x66, 0x61, 0x72, 0x65, 0x49, 0x64, + 0x12, 0x1c, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x06, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2e, + 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, + 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, + 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, + 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xde, 0x01, 0x0a, 0x08, 0x46, 0x61, 0x72, 0x65, 0x52, 0x75, + 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, + 0x66, 0x61, 0x72, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, + 0x09, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x6f, 0x72, + 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x49, 0x64, 0x22, 0xbd, 0x01, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x10, 0x74, 0x69, 0x6d, + 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x27, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x09, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x09, 0x46, 0x61, 0x72, 0x65, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x12, 0x2d, 0x0a, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x0b, 0x66, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x61, + 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0f, 0x66, + 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x22, 0xe3, 0x01, 0x0a, 0x0b, 0x46, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x12, 0x31, 0x0a, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x52, + 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x98, 0x03, 0x0a, 0x0b, 0x46, 0x61, + 0x72, 0x65, 0x4c, 0x65, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x0c, 0x6c, 0x65, 0x67, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x0a, 0x6c, 0x65, 0x67, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, + 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, + 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x08, 0x74, 0x6f, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x17, 0x66, 0x72, 0x6f, + 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x15, + 0x74, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x12, 0x74, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x0f, 0x66, + 0x61, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x69, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x69, + 0x72, 0x69, 0x74, 0x79, 0x22, 0xec, 0x02, 0x0a, 0x10, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x66, 0x72, 0x6f, + 0x6d, 0x5f, 0x6c, 0x65, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x0e, 0x66, 0x72, 0x6f, 0x6d, 0x4c, 0x65, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x12, 0x31, 0x0a, 0x0f, 0x74, 0x6f, 0x5f, 0x6c, 0x65, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x74, 0x6f, 0x4c, 0x65, 0x67, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0d, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x13, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, + 0x0a, 0x12, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x46, 0x61, 0x72, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x66, + 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x32, 0x0a, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x04, 0x41, 0x72, 0x65, 0x61, 0x12, 0x22, 0x0a, 0x07, 0x61, + 0x72, 0x65, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x08, + 0x53, 0x74, 0x6f, 0x70, 0x41, 0x72, 0x65, 0x61, 0x12, 0x23, 0x0a, 0x07, 0x61, 0x72, 0x65, 0x61, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x23, 0x0a, + 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, + 0x49, 0x64, 0x22, 0x56, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x28, 0x0a, + 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x60, 0x0a, 0x0c, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x29, 0x0a, 0x0a, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x22, 0xd5, 0x01, 0x0a, + 0x09, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x07, 0x74, 0x72, + 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, + 0x27, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x09, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x68, 0x65, 0x61, 0x64, 0x77, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x77, 0x61, 0x79, 0x53, 0x65, 0x63, 0x73, + 0x12, 0x32, 0x0a, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x09, 0x65, 0x78, 0x61, 0x63, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf6, 0x02, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, + 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x08, 0x74, 0x6f, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x0d, 0x66, 0x72, 0x6f, + 0x6d, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x66, 0x72, + 0x6f, 0x6d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x72, + 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x72, 0x69, + 0x70, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x08, 0x74, 0x6f, 0x54, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, + 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x69, + 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf2, 0x03, + 0x0a, 0x07, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x61, 0x74, + 0x68, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x70, 0x61, 0x74, 0x68, 0x77, 0x61, + 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x6f, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x49, + 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x08, 0x74, 0x6f, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0c, 0x70, + 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0c, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, + 0x0b, 0x70, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x41, 0x0a, 0x10, + 0x69, 0x73, 0x5f, 0x62, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0f, + 0x69, 0x73, 0x42, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, + 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0d, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x69, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x69, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x69, 0x6e, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x08, 0x6d, 0x69, 0x6e, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, + 0x6e, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x41, 0x73, 0x12, 0x32, + 0x0a, 0x15, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x70, 0x6f, + 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, + 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, + 0x41, 0x73, 0x22, 0x6d, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x08, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x76, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x35, 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x11, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x36, + 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x22, 0xec, 0x05, 0x0a, 0x0b, + 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x0f, 0x62, + 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, + 0x0d, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x33, + 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, + 0x69, 0x63, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, + 0x69, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x39, + 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x31, 0x0a, 0x15, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, + 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, + 0x6f, 0x74, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x16, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x13, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, + 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x79, + 0x12, 0x3f, 0x0a, 0x17, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x14, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x41, 0x0a, 0x17, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, + 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, + 0x66, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, + 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x0a, + 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x22, 0xf6, 0x01, 0x0a, 0x0b, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x61, 0x6e, + 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x12, 0x22, + 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x75, 0x62, + 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x84, 0x03, 0x0a, 0x08, 0x46, 0x65, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, + 0x65, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, + 0x72, 0x6c, 0x52, 0x10, 0x66, 0x65, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, + 0x72, 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x6e, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x52, 0x08, 0x66, 0x65, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x2c, 0x0a, 0x0c, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x2d, 0x0a, 0x0f, 0x66, 0x65, + 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0d, 0x66, 0x65, 0x65, + 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x64, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x12, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x06, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x10, 0x66, 0x65, 0x65, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x66, 0x65, + 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x55, 0x72, 0x6c, 0x22, 0x0d, 0x0a, 0x0b, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd2, 0x01, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x70, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x20, @@ -2436,68 +5313,176 @@ var file_gtfs_proto_rawDesc = []byte{ 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6c, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6c, - 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6c, 0x61, 0x74, 0x22, 0x46, 0x0a, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6c, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x61, 0x74, 0x22, 0x46, 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x72, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x61, 0x74, 0x65, 0x73, 0x2a, 0x5a, 0x0a, 0x10, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, - 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, - 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, - 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x6c, - 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x68, 0x65, 0x65, 0x6c, - 0x63, 0x68, 0x61, 0x69, 0x72, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, - 0x02, 0x2a, 0x42, 0x0a, 0x0a, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, - 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, - 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, - 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x69, 0x6b, 0x65, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x5b, 0x0a, 0x0b, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x55, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, - 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x12, 0x13, 0x0a, - 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, - 0x10, 0x03, 0x2a, 0x64, 0x0a, 0x0c, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, - 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, - 0x75, 0x70, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, - 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x75, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, - 0x65, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x73, 0x6b, - 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x10, 0x03, 0x2a, 0x7b, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0x00, 0x12, 0x13, - 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x41, - 0x72, 0x65, 0x61, 0x10, 0x04, 0x2a, 0xcc, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x6d, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, - 0x75, 0x62, 0x77, 0x61, 0x79, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, - 0x6c, 0x65, 0x52, 0x61, 0x69, 0x6c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x65, 0x68, 0x69, - 0x63, 0x6c, 0x65, 0x42, 0x75, 0x73, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x65, 0x68, 0x69, - 0x63, 0x6c, 0x65, 0x46, 0x65, 0x72, 0x72, 0x79, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, - 0x68, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x63, 0x61, 0x72, 0x10, 0x05, 0x12, - 0x12, 0x0a, 0x0e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x47, 0x6f, 0x6e, 0x64, 0x6f, 0x6c, - 0x61, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x75, - 0x6e, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x65, 0x68, - 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x62, 0x75, 0x73, 0x10, 0x0b, 0x12, - 0x13, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, - 0x69, 0x6c, 0x10, 0x0c, 0x2a, 0x38, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, - 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x01, 0x2a, 0x27, - 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x41, - 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x01, 0x2a, 0x54, 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x65, 0x6e, - 0x64, 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x55, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, - 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, - 0x6e, 0x64, 0x61, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x10, 0x02, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x61, 0x74, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x79, 0x65, 0x61, + 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, 0x22, 0x18, 0x0a, 0x04, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, + 0x76, 0x61, 0x6c, 0x22, 0x1b, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x10, + 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x76, 0x61, 0x6c, + 0x22, 0x1c, 0x0a, 0x08, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, + 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1c, + 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1d, 0x0a, 0x09, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x17, 0x0a, 0x03, 0x55, + 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x76, 0x61, 0x6c, 0x22, 0x19, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, + 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, + 0x19, 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x19, 0x0a, 0x05, 0x4d, 0x6f, + 0x6e, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1c, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x76, 0x61, 0x6c, 0x22, 0x1c, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, + 0x6c, 0x22, 0x58, 0x0a, 0x15, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x36, 0x0a, 0x0d, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x2a, 0x5a, 0x0a, 0x10, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, + 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, 0x65, 0x6c, + 0x63, 0x68, 0x61, 0x69, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x15, + 0x0a, 0x11, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, + 0x61, 0x69, 0x72, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x2a, + 0x42, 0x0a, 0x0a, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x0f, 0x0a, + 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0f, + 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, + 0x12, 0x0a, 0x0e, 0x42, 0x69, 0x6b, 0x65, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x10, 0x02, 0x2a, 0x5b, 0x0a, 0x0b, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x69, 0x73, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x61, + 0x72, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x42, + 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x03, + 0x2a, 0x64, 0x0a, 0x0c, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, + 0x75, 0x6f, 0x75, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, + 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x75, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x10, + 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x73, 0x6b, 0x44, 0x72, + 0x69, 0x76, 0x65, 0x72, 0x10, 0x03, 0x2a, 0x7f, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x70, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0x00, + 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x03, 0x12, 0x18, 0x0a, + 0x14, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x41, 0x72, 0x65, 0x61, 0x10, 0x04, 0x2a, 0xcc, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, + 0x54, 0x72, 0x61, 0x6d, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, + 0x65, 0x53, 0x75, 0x62, 0x77, 0x61, 0x79, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, + 0x69, 0x63, 0x6c, 0x65, 0x52, 0x61, 0x69, 0x6c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x65, + 0x68, 0x69, 0x63, 0x6c, 0x65, 0x42, 0x75, 0x73, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x65, + 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x65, 0x72, 0x72, 0x79, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, + 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x63, 0x61, 0x72, 0x10, + 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x47, 0x6f, 0x6e, 0x64, + 0x6f, 0x6c, 0x61, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, + 0x46, 0x75, 0x6e, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x56, + 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x62, 0x75, 0x73, 0x10, + 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, + 0x72, 0x61, 0x69, 0x6c, 0x10, 0x0c, 0x2a, 0x44, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x70, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x01, 0x2a, 0x38, 0x0a, 0x0d, + 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0f, 0x0a, + 0x0b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, + 0x78, 0x61, 0x63, 0x74, 0x10, 0x01, 0x2a, 0x54, 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, + 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, + 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, 0x6e, + 0x64, 0x61, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x56, 0x0a, 0x12, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, + 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x64, 0x10, 0x01, 0x2a, 0xa9, 0x01, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x64, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, + 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x03, 0x12, 0x16, + 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, + 0x53, 0x65, 0x61, 0x74, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x75, 0x73, 0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0x05, + 0x2a, 0x4c, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x61, 0x74, + 0x68, 0x77, 0x61, 0x79, 0x55, 0x6e, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x42, + 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x10, 0x01, 0x2a, 0xd5, + 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x12, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, + 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x57, 0x61, 0x6c, 0x6b, 0x77, 0x61, 0x79, 0x10, 0x01, 0x12, 0x15, + 0x0a, 0x11, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, + 0x69, 0x72, 0x73, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, + 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x03, + 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x45, + 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x61, + 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, + 0x72, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, + 0x6f, 0x64, 0x65, 0x46, 0x61, 0x72, 0x65, 0x47, 0x61, 0x74, 0x65, 0x10, 0x06, 0x12, 0x17, 0x0a, + 0x13, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x69, 0x74, + 0x47, 0x61, 0x74, 0x65, 0x10, 0x07, 0x2a, 0x67, 0x0a, 0x0f, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, + 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x6f, 0x6f, + 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x61, 0x6c, + 0x74, 0x69, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, + 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x64, 0x61, 0x79, + 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x64, 0x61, 0x79, 0x10, 0x02, 0x2a, + 0x72, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x6f, 0x6e, + 0x65, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x50, 0x61, 0x70, 0x65, 0x72, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x43, 0x61, 0x72, 0x64, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x61, + 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x6f, 0x6f, 0x70, 0x10, + 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x70, + 0x70, 0x10, 0x04, 0x2a, 0x4b, 0x0a, 0x10, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x30, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, + 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x31, 0x10, 0x01, 0x12, 0x11, 0x0a, + 0x0d, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x32, 0x10, 0x02, + 0x2a, 0x63, 0x0a, 0x11, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x30, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x31, 0x10, 0x01, 0x12, 0x12, 0x0a, + 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x32, 0x10, + 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x33, 0x10, 0x03, 0x2a, 0x8b, 0x01, 0x0a, 0x19, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, + 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x6e, 0x63, 0x65, 0x10, 0x01, 0x12, + 0x22, 0x0a, 0x1e, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x54, 0x77, 0x69, 0x63, + 0x65, 0x10, 0x02, 0x2a, 0x44, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x10, 0x00, 0x12, 0x19, + 0x0a, 0x15, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, + 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x10, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -2512,99 +5497,223 @@ func file_gtfs_proto_rawDescGZIP() []byte { return file_gtfs_proto_rawDescData } -var file_gtfs_proto_enumTypes = make([]protoimpl.EnumInfo, 9) -var file_gtfs_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_gtfs_proto_enumTypes = make([]protoimpl.EnumInfo, 19) +var file_gtfs_proto_msgTypes = make([]protoimpl.MessageInfo, 48) var file_gtfs_proto_goTypes = []any{ - (WheelchairAccess)(0), // 0: WheelchairAccess - (BikeAccess)(0), // 1: BikeAccess - (BoardAccess)(0), // 2: BoardAccess - (PickupAccess)(0), // 3: PickupAccess - (LocationType)(0), // 4: LocationType - (RouteType)(0), // 5: RouteType - (Direction)(0), // 6: Direction - (Timepoint)(0), // 7: Timepoint - (CalendarExceptionType)(0), // 8: CalendarExceptionType - (*Date)(nil), // 9: Date - (*Time)(nil), // 10: Time - (*Seconds)(nil), // 11: Seconds - (*EntityID)(nil), // 12: EntityID - (*Timezone)(nil), // 13: Timezone - (*Reference)(nil), // 14: Reference - (*Url)(nil), // 15: Url - (*Color)(nil), // 16: Color - (*FeedEntity)(nil), // 17: FeedEntity - (*Agency)(nil), // 18: Agency - (*Stop)(nil), // 19: Stop - (*Route)(nil), // 20: Route - (*Trip)(nil), // 21: Trip - (*StopTime)(nil), // 22: StopTime - (*Service)(nil), // 23: Service - (*Calendar)(nil), // 24: Calendar - (*CalendarDate)(nil), // 25: CalendarDate - (*ShapePoint)(nil), // 26: ShapePoint - (*Shape)(nil), // 27: Shape - (*Point)(nil), // 28: Point - (*LineString)(nil), // 29: LineString + (WheelchairAccess)(0), // 0: WheelchairAccess + (BikeAccess)(0), // 1: BikeAccess + (BoardAccess)(0), // 2: BoardAccess + (PickupAccess)(0), // 3: PickupAccess + (StopLocationType)(0), // 4: StopLocationType + (RouteType)(0), // 5: RouteType + (TripDirection)(0), // 6: TripDirection + (StopTimepoint)(0), // 7: StopTimepoint + (CalendarExceptionType)(0), // 8: CalendarExceptionType + (FrequencyExactTime)(0), // 9: FrequencyExactTime + (TransferType)(0), // 10: TransferType + (PathwayDirectionality)(0), // 11: PathwayDirectionality + (PathwayMode)(0), // 12: PathwayMode + (BookingRuleType)(0), // 13: BookingRuleType + (FareMediaType)(0), // 14: FareMediaType + (FareTransferType)(0), // 15: FareTransferType + (DurationLimitType)(0), // 16: DurationLimitType + (FareAttributeTransferType)(0), // 17: FareAttributeTransferType + (PaymentMethod)(0), // 18: PaymentMethod + (*FeedEntity)(nil), // 19: FeedEntity + (*Agency)(nil), // 20: Agency + (*Stop)(nil), // 21: Stop + (*Route)(nil), // 22: Route + (*Trip)(nil), // 23: Trip + (*StopTime)(nil), // 24: StopTime + (*Service)(nil), // 25: Service + (*Calendar)(nil), // 26: Calendar + (*CalendarDate)(nil), // 27: CalendarDate + (*FareAttribute)(nil), // 28: FareAttribute + (*FareRule)(nil), // 29: FareRule + (*Timeframe)(nil), // 30: Timeframe + (*FareMedia)(nil), // 31: FareMedia + (*FareProduct)(nil), // 32: FareProduct + (*FareLegRule)(nil), // 33: FareLegRule + (*FareTransferRule)(nil), // 34: FareTransferRule + (*Area)(nil), // 35: Area + (*StopArea)(nil), // 36: StopArea + (*Network)(nil), // 37: Network + (*RouteNetwork)(nil), // 38: RouteNetwork + (*Frequency)(nil), // 39: Frequency + (*Transfer)(nil), // 40: Transfer + (*Pathway)(nil), // 41: Pathway + (*Level)(nil), // 42: Level + (*LocationGroup)(nil), // 43: LocationGroup + (*LocationGroupStop)(nil), // 44: LocationGroupStop + (*BookingRule)(nil), // 45: BookingRule + (*Translation)(nil), // 46: Translation + (*FeedInfo)(nil), // 47: FeedInfo + (*Attribution)(nil), // 48: Attribution + (*ShapePoint)(nil), // 49: ShapePoint + (*Shape)(nil), // 50: Shape + (*Point)(nil), // 51: Point + (*LineString)(nil), // 52: LineString + (*Date)(nil), // 53: Date + (*Time)(nil), // 54: Time + (*Seconds)(nil), // 55: Seconds + (*EntityID)(nil), // 56: EntityID + (*Timezone)(nil), // 57: Timezone + (*Reference)(nil), // 58: Reference + (*Url)(nil), // 59: Url + (*Email)(nil), // 60: Email + (*Color)(nil), // 61: Color + (*Money)(nil), // 62: Money + (*Currency)(nil), // 63: Currency + (*Language)(nil), // 64: Language + (*FareAttributeTransfer)(nil), // 65: FareAttributeTransfer + (*TransferCount)(nil), // 66: TransferCount } var file_gtfs_proto_depIdxs = []int32{ - 18, // 0: FeedEntity.agency:type_name -> Agency - 19, // 1: FeedEntity.stop:type_name -> Stop - 20, // 2: FeedEntity.route:type_name -> Route - 21, // 3: FeedEntity.trip:type_name -> Trip - 22, // 4: FeedEntity.stop_time:type_name -> StopTime - 27, // 5: FeedEntity.shape:type_name -> Shape - 23, // 6: FeedEntity.service:type_name -> Service - 12, // 7: Agency.agency_id:type_name -> EntityID - 13, // 8: Agency.agency_timezone:type_name -> Timezone - 15, // 9: Agency.agency_fare_url:type_name -> Url - 12, // 10: Stop.stop_id:type_name -> EntityID - 15, // 11: Stop.stop_url:type_name -> Url - 4, // 12: Stop.location_type:type_name -> LocationType - 14, // 13: Stop.parent_station:type_name -> Reference - 13, // 14: Stop.stop_timezone:type_name -> Timezone - 0, // 15: Stop.wheelchair_boarding:type_name -> WheelchairAccess - 14, // 16: Stop.level_id:type_name -> Reference - 12, // 17: Route.route_id:type_name -> EntityID - 14, // 18: Route.agency_id:type_name -> Reference - 5, // 19: Route.route_type:type_name -> RouteType - 15, // 20: Route.route_url:type_name -> Url - 16, // 21: Route.route_color:type_name -> Color - 16, // 22: Route.route_text_color:type_name -> Color - 3, // 23: Route.continuous_pickup:type_name -> PickupAccess - 3, // 24: Route.continuous_drop_off:type_name -> PickupAccess - 14, // 25: Trip.route_id:type_name -> Reference - 14, // 26: Trip.service_id:type_name -> Reference - 12, // 27: Trip.trip_id:type_name -> EntityID - 6, // 28: Trip.direction_id:type_name -> Direction - 14, // 29: Trip.shape_id:type_name -> Reference - 0, // 30: Trip.wheelchair_accessible:type_name -> WheelchairAccess - 1, // 31: Trip.bikes_allowed:type_name -> BikeAccess - 14, // 32: StopTime.trip_id:type_name -> Reference - 11, // 33: StopTime.arrival_time:type_name -> Seconds - 11, // 34: StopTime.departure_time:type_name -> Seconds - 14, // 35: StopTime.stop_id:type_name -> Reference - 3, // 36: StopTime.continuous_pickup:type_name -> PickupAccess - 3, // 37: StopTime.continuous_drop_off:type_name -> PickupAccess - 7, // 38: StopTime.timepoint:type_name -> Timepoint - 12, // 39: Service.service_id:type_name -> EntityID - 9, // 40: Service.start_date:type_name -> Date - 9, // 41: Service.end_date:type_name -> Date - 9, // 42: Service.added:type_name -> Date - 9, // 43: Service.removed:type_name -> Date - 12, // 44: Calendar.service_id:type_name -> EntityID - 9, // 45: Calendar.start_date:type_name -> Date - 9, // 46: Calendar.end_date:type_name -> Date - 14, // 47: CalendarDate.service_id:type_name -> Reference - 9, // 48: CalendarDate.date:type_name -> Date - 8, // 49: CalendarDate.exception_type:type_name -> CalendarExceptionType - 12, // 50: ShapePoint.shape_id:type_name -> EntityID - 12, // 51: Shape.shape_id:type_name -> EntityID - 29, // 52: Shape.shape:type_name -> LineString - 53, // [53:53] is the sub-list for method output_type - 53, // [53:53] is the sub-list for method input_type - 53, // [53:53] is the sub-list for extension type_name - 53, // [53:53] is the sub-list for extension extendee - 0, // [0:53] is the sub-list for field type_name + 20, // 0: FeedEntity.agency:type_name -> Agency + 21, // 1: FeedEntity.stop:type_name -> Stop + 22, // 2: FeedEntity.route:type_name -> Route + 23, // 3: FeedEntity.trip:type_name -> Trip + 24, // 4: FeedEntity.stop_time:type_name -> StopTime + 50, // 5: FeedEntity.shape:type_name -> Shape + 25, // 6: FeedEntity.service:type_name -> Service + 56, // 7: Agency.agency_id:type_name -> EntityID + 59, // 8: Agency.agency_url:type_name -> Url + 57, // 9: Agency.agency_timezone:type_name -> Timezone + 64, // 10: Agency.agency_lang:type_name -> Language + 59, // 11: Agency.agency_fare_url:type_name -> Url + 60, // 12: Agency.agency_email:type_name -> Email + 56, // 13: Stop.stop_id:type_name -> EntityID + 59, // 14: Stop.stop_url:type_name -> Url + 4, // 15: Stop.location_type:type_name -> StopLocationType + 58, // 16: Stop.parent_station:type_name -> Reference + 57, // 17: Stop.stop_timezone:type_name -> Timezone + 0, // 18: Stop.wheelchair_boarding:type_name -> WheelchairAccess + 58, // 19: Stop.level_id:type_name -> Reference + 56, // 20: Route.route_id:type_name -> EntityID + 58, // 21: Route.agency_id:type_name -> Reference + 5, // 22: Route.route_type:type_name -> RouteType + 59, // 23: Route.route_url:type_name -> Url + 61, // 24: Route.route_color:type_name -> Color + 61, // 25: Route.route_text_color:type_name -> Color + 3, // 26: Route.continuous_pickup:type_name -> PickupAccess + 3, // 27: Route.continuous_drop_off:type_name -> PickupAccess + 58, // 28: Trip.route_id:type_name -> Reference + 58, // 29: Trip.service_id:type_name -> Reference + 56, // 30: Trip.trip_id:type_name -> EntityID + 6, // 31: Trip.direction_id:type_name -> TripDirection + 58, // 32: Trip.shape_id:type_name -> Reference + 0, // 33: Trip.wheelchair_accessible:type_name -> WheelchairAccess + 1, // 34: Trip.bikes_allowed:type_name -> BikeAccess + 58, // 35: StopTime.trip_id:type_name -> Reference + 55, // 36: StopTime.arrival_time:type_name -> Seconds + 55, // 37: StopTime.departure_time:type_name -> Seconds + 58, // 38: StopTime.stop_id:type_name -> Reference + 3, // 39: StopTime.continuous_pickup:type_name -> PickupAccess + 3, // 40: StopTime.continuous_drop_off:type_name -> PickupAccess + 7, // 41: StopTime.timepoint:type_name -> StopTimepoint + 58, // 42: StopTime.location_id:type_name -> Reference + 58, // 43: StopTime.location_group_id:type_name -> Reference + 55, // 44: StopTime.start_pickup_drop_off_window:type_name -> Seconds + 55, // 45: StopTime.end_pickup_drop_off_window:type_name -> Seconds + 3, // 46: StopTime.pickup_type:type_name -> PickupAccess + 3, // 47: StopTime.drop_off_type:type_name -> PickupAccess + 58, // 48: StopTime.pickup_booking_rule_id:type_name -> Reference + 58, // 49: StopTime.drop_off_booking_rule_id:type_name -> Reference + 56, // 50: Service.service_id:type_name -> EntityID + 53, // 51: Service.start_date:type_name -> Date + 53, // 52: Service.end_date:type_name -> Date + 53, // 53: Service.added:type_name -> Date + 53, // 54: Service.removed:type_name -> Date + 56, // 55: Calendar.service_id:type_name -> EntityID + 53, // 56: Calendar.start_date:type_name -> Date + 53, // 57: Calendar.end_date:type_name -> Date + 58, // 58: CalendarDate.service_id:type_name -> Reference + 53, // 59: CalendarDate.date:type_name -> Date + 8, // 60: CalendarDate.exception_type:type_name -> CalendarExceptionType + 56, // 61: FareAttribute.fare_id:type_name -> EntityID + 62, // 62: FareAttribute.price:type_name -> Money + 63, // 63: FareAttribute.currency_type:type_name -> Currency + 18, // 64: FareAttribute.payment_method:type_name -> PaymentMethod + 17, // 65: FareAttribute.transfers:type_name -> FareAttributeTransferType + 58, // 66: FareAttribute.agency_id:type_name -> Reference + 56, // 67: FareRule.fare_id:type_name -> EntityID + 58, // 68: FareRule.route_id:type_name -> Reference + 58, // 69: FareRule.origin_id:type_name -> Reference + 58, // 70: FareRule.destination_id:type_name -> Reference + 58, // 71: FareRule.contains_id:type_name -> Reference + 56, // 72: Timeframe.timeframe_group_id:type_name -> EntityID + 55, // 73: Timeframe.start_time:type_name -> Seconds + 55, // 74: Timeframe.end_time:type_name -> Seconds + 58, // 75: Timeframe.service_id:type_name -> Reference + 56, // 76: FareMedia.fare_media_id:type_name -> EntityID + 14, // 77: FareMedia.fare_media_type:type_name -> FareMediaType + 56, // 78: FareProduct.fare_product_id:type_name -> EntityID + 58, // 79: FareProduct.fare_media_id:type_name -> Reference + 62, // 80: FareProduct.amount:type_name -> Money + 63, // 81: FareProduct.currency:type_name -> Currency + 56, // 82: FareLegRule.leg_group_id:type_name -> EntityID + 58, // 83: FareLegRule.network_id:type_name -> Reference + 58, // 84: FareLegRule.from_area_id:type_name -> Reference + 58, // 85: FareLegRule.to_area_id:type_name -> Reference + 58, // 86: FareLegRule.from_timeframe_group_id:type_name -> Reference + 58, // 87: FareLegRule.to_timeframe_group_id:type_name -> Reference + 58, // 88: FareLegRule.fare_product_id:type_name -> Reference + 58, // 89: FareTransferRule.from_leg_group_id:type_name -> Reference + 58, // 90: FareTransferRule.to_leg_group_id:type_name -> Reference + 66, // 91: FareTransferRule.transfer_count:type_name -> TransferCount + 16, // 92: FareTransferRule.duration_limit_type:type_name -> DurationLimitType + 15, // 93: FareTransferRule.fare_transfer_type:type_name -> FareTransferType + 58, // 94: FareTransferRule.fare_product_id:type_name -> Reference + 56, // 95: Area.area_id:type_name -> EntityID + 58, // 96: StopArea.area_id:type_name -> Reference + 58, // 97: StopArea.stop_id:type_name -> Reference + 56, // 98: Network.network_id:type_name -> EntityID + 58, // 99: RouteNetwork.network_id:type_name -> Reference + 58, // 100: RouteNetwork.route_id:type_name -> Reference + 58, // 101: Frequency.trip_id:type_name -> Reference + 55, // 102: Frequency.start_time:type_name -> Seconds + 55, // 103: Frequency.end_time:type_name -> Seconds + 9, // 104: Frequency.exact_time:type_name -> FrequencyExactTime + 58, // 105: Transfer.from_stop_id:type_name -> Reference + 58, // 106: Transfer.to_stop_id:type_name -> Reference + 58, // 107: Transfer.from_route_id:type_name -> Reference + 58, // 108: Transfer.to_route_id:type_name -> Reference + 58, // 109: Transfer.from_trip_id:type_name -> Reference + 58, // 110: Transfer.to_trip_id:type_name -> Reference + 10, // 111: Transfer.transfer_type:type_name -> TransferType + 56, // 112: Pathway.pathway_id:type_name -> EntityID + 58, // 113: Pathway.from_stop_id:type_name -> Reference + 58, // 114: Pathway.to_stop_id:type_name -> Reference + 12, // 115: Pathway.pathway_mode:type_name -> PathwayMode + 11, // 116: Pathway.is_bidirectional:type_name -> PathwayDirectionality + 56, // 117: Level.level_id:type_name -> EntityID + 56, // 118: LocationGroup.location_group_id:type_name -> EntityID + 58, // 119: LocationGroupStop.location_group_id:type_name -> Reference + 58, // 120: LocationGroupStop.stop_id:type_name -> Reference + 56, // 121: BookingRule.booking_rule_id:type_name -> EntityID + 13, // 122: BookingRule.booking_type:type_name -> BookingRuleType + 55, // 123: BookingRule.prior_notice_last_time:type_name -> Seconds + 55, // 124: BookingRule.prior_notice_start_time:type_name -> Seconds + 58, // 125: BookingRule.prior_notice_service_id:type_name -> Reference + 59, // 126: BookingRule.info_url:type_name -> Url + 59, // 127: BookingRule.booking_url:type_name -> Url + 64, // 128: Translation.language:type_name -> Language + 59, // 129: FeedInfo.feed_publisher_url:type_name -> Url + 64, // 130: FeedInfo.feed_lang:type_name -> Language + 64, // 131: FeedInfo.default_lang:type_name -> Language + 53, // 132: FeedInfo.feed_start_date:type_name -> Date + 53, // 133: FeedInfo.feed_end_date:type_name -> Date + 60, // 134: FeedInfo.feed_contact_email:type_name -> Email + 59, // 135: FeedInfo.feed_contact_url:type_name -> Url + 56, // 136: ShapePoint.shape_id:type_name -> EntityID + 56, // 137: Shape.shape_id:type_name -> EntityID + 52, // 138: Shape.shape:type_name -> LineString + 17, // 139: FareAttributeTransfer.transfer_type:type_name -> FareAttributeTransferType + 140, // [140:140] is the sub-list for method output_type + 140, // [140:140] is the sub-list for method input_type + 140, // [140:140] is the sub-list for extension type_name + 140, // [140:140] is the sub-list for extension extendee + 0, // [0:140] is the sub-list for field type_name } func init() { file_gtfs_proto_init() } @@ -2614,7 +5723,103 @@ func file_gtfs_proto_init() { } if !protoimpl.UnsafeEnabled { file_gtfs_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Date); i { + switch v := v.(*FeedEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*Agency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*Stop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Route); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*Trip); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*StopTime); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*Service); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*Calendar); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*CalendarDate); i { case 0: return &v.state case 1: @@ -2625,8 +5830,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Time); i { + file_gtfs_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*FareAttribute); i { case 0: return &v.state case 1: @@ -2637,8 +5842,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Seconds); i { + file_gtfs_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*FareRule); i { case 0: return &v.state case 1: @@ -2649,8 +5854,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*EntityID); i { + file_gtfs_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*Timeframe); i { case 0: return &v.state case 1: @@ -2661,8 +5866,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Timezone); i { + file_gtfs_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*FareMedia); i { case 0: return &v.state case 1: @@ -2673,8 +5878,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*Reference); i { + file_gtfs_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*FareProduct); i { case 0: return &v.state case 1: @@ -2685,8 +5890,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*Url); i { + file_gtfs_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*FareLegRule); i { case 0: return &v.state case 1: @@ -2697,8 +5902,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*Color); i { + file_gtfs_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*FareTransferRule); i { case 0: return &v.state case 1: @@ -2709,8 +5914,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*FeedEntity); i { + file_gtfs_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*Area); i { case 0: return &v.state case 1: @@ -2721,8 +5926,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*Agency); i { + file_gtfs_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*StopArea); i { case 0: return &v.state case 1: @@ -2733,8 +5938,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*Stop); i { + file_gtfs_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*Network); i { case 0: return &v.state case 1: @@ -2745,8 +5950,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*Route); i { + file_gtfs_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*RouteNetwork); i { case 0: return &v.state case 1: @@ -2757,8 +5962,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*Trip); i { + file_gtfs_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*Frequency); i { case 0: return &v.state case 1: @@ -2769,8 +5974,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*StopTime); i { + file_gtfs_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*Transfer); i { case 0: return &v.state case 1: @@ -2781,8 +5986,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*Service); i { + file_gtfs_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*Pathway); i { case 0: return &v.state case 1: @@ -2793,8 +5998,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*Calendar); i { + file_gtfs_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*Level); i { case 0: return &v.state case 1: @@ -2805,8 +6010,8 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*CalendarDate); i { + file_gtfs_proto_msgTypes[24].Exporter = func(v any, i int) any { + switch v := v.(*LocationGroup); i { case 0: return &v.state case 1: @@ -2817,7 +6022,67 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[17].Exporter = func(v any, i int) any { + file_gtfs_proto_msgTypes[25].Exporter = func(v any, i int) any { + switch v := v.(*LocationGroupStop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[26].Exporter = func(v any, i int) any { + switch v := v.(*BookingRule); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[27].Exporter = func(v any, i int) any { + switch v := v.(*Translation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*FeedInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*Attribution); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*ShapePoint); i { case 0: return &v.state @@ -2829,7 +6094,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[18].Exporter = func(v any, i int) any { + file_gtfs_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*Shape); i { case 0: return &v.state @@ -2841,7 +6106,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[19].Exporter = func(v any, i int) any { + file_gtfs_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*Point); i { case 0: return &v.state @@ -2853,7 +6118,7 @@ func file_gtfs_proto_init() { return nil } } - file_gtfs_proto_msgTypes[20].Exporter = func(v any, i int) any { + file_gtfs_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*LineString); i { case 0: return &v.state @@ -2865,14 +6130,182 @@ func file_gtfs_proto_init() { return nil } } + file_gtfs_proto_msgTypes[34].Exporter = func(v any, i int) any { + switch v := v.(*Date); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[35].Exporter = func(v any, i int) any { + switch v := v.(*Time); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[36].Exporter = func(v any, i int) any { + switch v := v.(*Seconds); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*EntityID); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[38].Exporter = func(v any, i int) any { + switch v := v.(*Timezone); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[39].Exporter = func(v any, i int) any { + switch v := v.(*Reference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[40].Exporter = func(v any, i int) any { + switch v := v.(*Url); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[41].Exporter = func(v any, i int) any { + switch v := v.(*Email); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[42].Exporter = func(v any, i int) any { + switch v := v.(*Color); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[43].Exporter = func(v any, i int) any { + switch v := v.(*Money); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[44].Exporter = func(v any, i int) any { + switch v := v.(*Currency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[45].Exporter = func(v any, i int) any { + switch v := v.(*Language); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[46].Exporter = func(v any, i int) any { + switch v := v.(*FareAttributeTransfer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[47].Exporter = func(v any, i int) any { + switch v := v.(*TransferCount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gtfs_proto_rawDesc, - NumEnums: 9, - NumMessages: 21, + NumEnums: 19, + NumMessages: 48, NumExtensions: 0, NumServices: 0, }, diff --git a/tlpb/gtfs.proto b/tlpb/gtfs.proto index 93e6172f..cca7e9c7 100644 --- a/tlpb/gtfs.proto +++ b/tlpb/gtfs.proto @@ -1,5 +1,404 @@ syntax = "proto3"; +///////////// +// GTFS entities + +message FeedEntity { + Agency agency = 1; + Stop stop = 2; + Route route = 3; + Trip trip = 4; + StopTime stop_time = 5; + Shape shape = 6; + Service service = 7; +} + +message Agency { + int64 id = 1; + int64 feed_version_id = 2; + EntityID agency_id = 3; + string agency_name = 4; + Url agency_url = 5; + Timezone agency_timezone = 6; + Language agency_lang = 7; + Phone agency_phone = 8; + Url agency_fare_url = 9; + Email agency_email = 10; +} + +message Stop { + int64 id = 1; + int64 feed_version_id = 2; + EntityID stop_id = 3; + string stop_code = 4; + string stop_name = 5; + string tts_stop_name = 6; + string stop_desc = 7; + double stop_lat = 8; + double stop_lon = 9; + string zone_id = 10; + Url stop_url = 11; + StopLocationType location_type = 12; + Reference parent_station = 13; + Timezone stop_timezone = 14; + WheelchairAccess wheelchair_boarding = 15; + Reference level_id = 16; + string platform_code = 17; +} + +message Route { + int64 id = 1; + int64 feed_version_id = 2; + EntityID route_id = 3; + Reference agency_id = 4; + string route_short_name = 5; + string route_long_name = 6; + string route_desc = 7; + RouteType route_type = 8; + Url route_url = 9; + Color route_color = 10; + Color route_text_color = 11; + int32 route_sort_order = 12; + PickupAccess continuous_pickup = 13; + PickupAccess continuous_drop_off = 14; + string network_id = 15; +} + +message Trip { + int64 id = 1; + int64 feed_version_id = 2; + Reference route_id = 3; + Reference service_id = 4; + EntityID trip_id = 5; + string trip_headsign = 6; + string trip_short_name = 7; + TripDirection direction_id = 8; + string block_id = 9; + Reference shape_id = 10; + WheelchairAccess wheelchair_accessible = 11; + BikeAccess bikes_allowed = 12; +} + +message StopTime { + int64 id = 1; + int64 feed_version_id = 2; + Reference trip_id = 3; + Seconds arrival_time = 4; + Seconds departure_time = 5; + Reference stop_id = 6; + int32 stop_sequence = 7; + string stop_headsign = 8; + PickupAccess continuous_pickup = 9; + PickupAccess continuous_drop_off = 10; + double shape_dist_traveled = 11; + StopTimepoint timepoint = 12; + Reference location_id = 13; + Reference location_group_id = 14; + Seconds start_pickup_drop_off_window = 15; + Seconds end_pickup_drop_off_window = 16; + PickupAccess pickup_type = 17; + PickupAccess drop_off_type = 18; + Reference pickup_booking_rule_id = 19; + Reference drop_off_booking_rule_id = 20; +} + +message Calendar { + int64 id = 1; + int64 feed_version_id = 2; + EntityID service_id = 3; + Date start_date = 4; + Date end_date = 5; + bool monday = 6; + bool tuesday = 7; + bool wednesday = 8; + bool thursday = 9; + bool friday = 10; + bool saturday = 11; + bool sunday = 12; +} + +message CalendarDate { + int64 id = 1; + int64 feed_version_id = 2; + Reference service_id = 3; + Date date = 4; + CalendarExceptionType exception_type = 5; +} + +message FareAttribute { + int64 id = 1; + int64 feed_version_id = 2; + EntityID fare_id = 3; + Money price = 4; + Currency currency_type = 5; + PaymentMethod payment_method = 6; + FareAttributeTransferType transfers = 7; + Reference agency_id = 8; + int32 transfer_duration = 9; +} + +message FareRule { + int64 id = 1; + int64 feed_version_id = 2; + EntityID fare_id = 3; + Reference route_id = 4; + Reference origin_id = 5; + Reference destination_id = 6; + Reference contains_id = 8; +} + +message Timeframe { + int64 id = 1; + int64 feed_version_id = 2; + EntityID timeframe_group_id = 3; + Seconds start_time = 4; + Seconds end_time = 5; + Reference service_id = 6; +} + +message FareMedia { + int64 id = 1; + int64 feed_version_id = 2; + EntityID fare_media_id = 3; + string fare_media_name = 4; + FareMediaType fare_media_type = 5; +} + +message FareProduct { + int64 id = 1; + int64 feed_version_id = 2; + EntityID fare_product_id = 3; + string fare_product_name = 4; + Reference fare_media_id = 5; + Money amount = 6; + Currency currency = 7; +} + +message FareLegRule { + int64 id = 1; + int64 feed_version_id = 2; + EntityID leg_group_id = 3; + Reference network_id = 4; + Reference from_area_id = 5; + Reference to_area_id = 6; + Reference from_timeframe_group_id = 7; + Reference to_timeframe_group_id = 8; + Reference fare_product_id = 9; + int32 rule_proirity = 10; +} + +message FareTransferRule { + int64 id = 1; + int64 feed_version_id = 2; + Reference from_leg_group_id = 3; + Reference to_leg_group_id = 4; + TransferCount transfer_count = 5; + DurationLimitType duration_limit_type = 6; + FareTransferType fare_transfer_type = 7; + Reference fare_product_id = 8; +} + +message Area { + int64 id = 1; + int64 feed_version_id = 2; + EntityID area_id = 3; + string area_name = 4; +} + +message StopArea { + int64 id = 1; + int64 feed_version_id = 2; + Reference area_id = 3; + Reference stop_id = 4; +} + +message Network { + int64 id = 1; + int64 feed_version_id = 2; + EntityID network_id = 3; + string network_name = 4; +} + +message RouteNetwork { + int64 id = 1; + int64 feed_version_id = 2; + Reference network_id = 3; + Reference route_id = 4; +} + +message Frequency { + int64 id = 1; + int64 feed_version_id = 2; + Reference trip_id = 3; + Seconds start_time = 4; + Seconds end_time = 5; + int32 headway_secs = 6; + FrequencyExactTime exact_time = 7; +} + +message Transfer { + int64 id = 1; + int64 feed_version_id = 2; + Reference from_stop_id = 3; + Reference to_stop_id = 4; + Reference from_route_id = 5; + Reference to_route_id = 6; + Reference from_trip_id = 7; + Reference to_trip_id = 8; + TransferType transfer_type = 9; + int32 min_transfer_time = 10; +} + +message Pathway { + int64 id = 1; + int64 feed_version_id = 2; + EntityID pathway_id = 3; + Reference from_stop_id = 4; + Reference to_stop_id = 5; + PathwayMode pathway_mode = 6; + PathwayDirectionality is_bidirectional = 7; + double length = 8; + int32 traversal_time = 9; + int32 stair_count = 10; + double max_slope = 11; + double min_width = 12; + string signposted_as = 13; + string reverse_signposted_as = 14; +} + +message Level { + int64 id = 1; + int64 feed_version_id = 2; + EntityID level_id = 3; + double level_index = 4; + string level_name = 5; +} + +message LocationGroup { + int64 id = 1; + int64 feed_version_id = 2; + EntityID location_group_id = 3; + string location_group_name = 4; +} + +message LocationGroupStop { + int64 id = 1; + int64 feed_version_id = 2; + Reference location_group_id = 3; + Reference stop_id = 4; +} + +message BookingRule { + int64 id = 1; + int64 feed_version_id = 2; + EntityID booking_rule_id = 3; + BookingRuleType booking_type = 4; + int32 prior_notice_duration_min = 5; + int32 prior_notice_duration_max = 6; + int32 prior_notice_last_day = 7; + Seconds prior_notice_last_time = 8; + int32 prior_notice_start_day = 9; + Seconds prior_notice_start_time = 10; + Reference prior_notice_service_id = 11; + string message = 12; + string pickup_message = 13; + string drop_off_message = 14; + string phone_number = 15; + Url info_url = 16; + Url booking_url = 17; +} + +message Translation { + int64 id = 1; + int64 feed_version_id = 2; + string table_name = 3; // a string enum, not supported in protobuf + string field_name = 4; + Language language = 5; + string translation = 6; + string record_id = 7; // technically a reference, but must be resolved manually + string record_sub_id = 8; + string field_value = 9; +} + +message FeedInfo { + int64 id = 1; + int64 feed_version_id = 2; + string feed_publisher_name = 3; + Url feed_publisher_url = 4; + Language feed_lang = 5; + Language default_lang = 6; + Date feed_start_date = 7; + Date feed_end_date = 8; + Email feed_contact_email = 9; + Url feed_contact_url = 10; +} + +message Attribution { + int64 id = 1; + int64 feed_version_id = 2; + EntityID attribution_id = 3; + Reference agency_id = 4; + Reference route_id = 5; + Reference trip_id = 6; + string organization_name = 7; + AttributionRole is_producer = 8; + AttributionRole is_operator = 9; + AttributionRole is_authority = 10; + Url attribution_url = 11; + Email attribution_email = 12; + Phone attribution_phone = 13; +} + +////////// +// Helper types + +message Service { + int64 id = 1; + int64 feed_version_id = 2; + EntityID service_id = 3; + Date start_date = 4; + Date end_date = 5; + repeated Date added = 6; + repeated Date removed = 7; + bool monday = 8; + bool tuesday = 9; + bool wednesday = 10; + bool thursday = 11; + bool friday = 12; + bool saturday = 13; + bool sunday = 14; +} + +/////////// +// Shapes and geometries + + +message ShapePoint { + EntityID shape_id = 1; + double shape_pt_lat = 2; + double shape_pt_lon = 3; + int32 shape_pt_sequence = 4; + double shape_dist_traveled = 5; +} + +message Shape { + EntityID shape_id = 1; + LineString shape = 2; +} + +message Point { + double lon = 1; + double lat = 2; +} + +message LineString { + uint32 stride = 1; + repeated double coordinates = 2; +} + +///////////// +// Base messages + message Date { int32 year = 1; int32 month = 2; @@ -7,13 +406,68 @@ message Date { } message Time { - int64 seconds = 1; + int64 val = 1; } message Seconds { - int64 seconds = 1; + int64 val = 1; +} + +message EntityID { + string val = 1; +} + +message Timezone { + string val = 1; +} + +message Reference { + string val = 1; +} + +message Url { + string val = 1; +} + +message Email { + string val = 1; +} + +message Color { + string val = 1; } +message Money { + int64 units = 1; + int64 nanos = 2; +} + +message Currency { + string val = 1; +} + +message Language { + string val = 1; +} + +message Phone { + string val = 1; +} + +// This must be a message so we can check for nil +// "0" and "" have different semantics in GTFS +message FareAttributeTransfer { + FareAttributeTransferType transfer_type = 1; +} + +// "0" and "" have different semantics +message TransferCount { + int32 transfer_count = 1; +} + +///////////// +// Base enums + enum WheelchairAccess { WheelchairUnknown = 0; WheelchairAllowed = 1; @@ -40,7 +494,7 @@ enum PickupAccess { PickupAskDriver = 3; } -enum LocationType { +enum StopLocationType { LocationPlatform = 0; LocationStation = 1; LocationEntrance = 2; @@ -61,14 +515,14 @@ enum RouteType { VehicleMonorail = 12; } -enum Direction { - DirectionOutbound = 0; - DirectionInbound = 1; +enum TripDirection { + TripDirectionOutbound = 0; + TripDirectionInbound = 1; } -enum Timepoint { +enum StopTimepoint { Approximate = 0; - Exact = 1; + StopTimepointExact = 1; } enum CalendarExceptionType { @@ -77,162 +531,76 @@ enum CalendarExceptionType { CalendarRemoved = 2; } -message EntityID { - string id = 1; +enum FrequencyExactTime { + FrequencyExactTimeFrequency = 0; + FrequencyExactTimeScheduled = 1; } -message Timezone { - string timezone = 1; +enum TransferType { + TransferTypeRecommended = 0; + TransferTypeTimed = 1; + TransferTypeMinTime = 2; + TransferTypeDisallowed = 3; + TransferTypeInSeat = 4; + TransferTypeMustExit = 5; } -message Reference { - string entity_id = 1; +enum PathwayDirectionality { + PathwayUnidirectional = 0; + PathwayBidirectional = 1; } -message Url { - string url = 1; +enum PathwayMode { + PathwayModeUnknown = 0; + PathwayModeWalkway = 1; + PathwayModeStairs = 2; + PathwayModeTravelator = 3; + PathwayModeEscalator = 4; + PathwayModeElevator = 5; + PatthwayModeFareGate = 6; + PathwayModeExitGate = 7; } -message Color { - string color = 1; +enum BookingRuleType { + BookingRuleTypeRealtime = 0; + BookingRuleTypeSameday = 1; + BookingRuleTypePriorday = 2; } -///////////// - -message FeedEntity { - Agency agency = 1; - Stop stop = 2; - Route route = 3; - Trip trip = 4; - StopTime stop_time = 5; - Shape shape = 6; - Service service = 7; +enum FareMediaType { + FareMediaNone = 0; + FareMediaPaper = 1; + FareMediaCard = 2; + FareMediaOpenLoop = 3; + FareMediaApp = 4; } -message Agency { - EntityID agency_id = 1; - string agency_name = 2; - string agency_url = 3; - Timezone agency_timezone = 4; - string agency_lang = 5; - string agency_phone = 6; - Url agency_fare_url = 7; - string agency_email = 8; +enum FareTransferType { + FareTransfer0 = 0; + FareTransfer1 = 1; + FareTransfer2 = 2; } -message Stop { - EntityID stop_id = 1; - string stop_code = 2; - string stop_name = 3; - string tts_stop_name = 4; - string stop_desc = 5; - double stop_lat = 6; - double stop_lon = 7; - string zone_id = 8; - Url stop_url = 9; - LocationType location_type = 10; - Reference parent_station = 11; - Timezone stop_timezone = 12; - WheelchairAccess wheelchair_boarding = 13; - Reference level_id = 14; - string platform_code = 15; +enum DurationLimitType { + DurationLimit0 = 0; + DurationLimit1 = 1; + DurationLimit2 = 2; + DurationLimit3 = 3; } -message Route { - EntityID route_id = 1; - Reference agency_id = 2; - string route_short_name = 3; - string route_long_name = 4; - string route_desc = 5; - RouteType route_type = 6; - Url route_url = 7; - Color route_color = 8; - Color route_text_color = 9; - int32 route_sort_order = 10; - PickupAccess continuous_pickup = 11; - PickupAccess continuous_drop_off = 12; - string network_id = 13; +enum FareAttributeTransferType { + FareAttributeTransferTypeDisallowed = 0; + FareAttributeTransferTypeOnce = 1; + FareAttributeTransferTypeTwice = 2; } -message Trip { - Reference route_id = 1; - Reference service_id = 2; - EntityID trip_id = 3; - string trip_headsign = 4; - string trip_short_name = 5; - Direction direction_id = 6; - string block_id = 7; - Reference shape_id = 8; - WheelchairAccess wheelchair_accessible = 9; - BikeAccess bikes_allowed = 10; +enum PaymentMethod { + PaymentMethodOnboard = 0; + PaymentMethodOffboard = 1; } -message StopTime { - Reference trip_id = 1; - Seconds arrival_time = 2; - Seconds departure_time = 3; - Reference stop_id = 4; - int32 stop_sequence = 5; - string stop_headsign = 6; - PickupAccess continuous_pickup = 7; - PickupAccess continuous_drop_off = 8; - double shape_dist_traveled = 9; - Timepoint timepoint = 10; -} - -message Service { - EntityID service_id = 1; - Date start_date = 2; - Date end_date = 3; - repeated Date added = 4; - repeated Date removed = 5; - bool monday = 6; - bool tuesday = 7; - bool wednesday = 8; - bool thursday = 9; - bool friday = 10; - bool saturday = 11; - bool sunday = 12; +enum AttributionRole { + AttributionRoleNotAssigned = 0; + AttributionRoleAssigned = 1; } -message Calendar { - EntityID service_id = 1; - Date start_date = 2; - Date end_date = 3; - bool monday = 4; - bool tuesday = 5; - bool wednesday = 6; - bool thursday = 7; - bool friday = 8; - bool saturday = 9; - bool sunday = 10; -} - -message CalendarDate { - Reference service_id = 1; - Date date = 2; - CalendarExceptionType exception_type = 3; -} - -message ShapePoint { - EntityID shape_id = 1; - double shape_pt_lat = 2; - double shape_pt_lon = 3; - int32 shape_pt_sequence = 4; - double shape_dist_traveled = 5; -} - -message Shape { - EntityID shape_id = 1; - LineString shape = 2; -} - -message Point { - float lon = 1; - float lat = 2; -} - -message LineString { - int32 stride = 1; - repeated double coordinates = 2; -} From 7a7a6f67b6aeae2501e1e6841ff12b71f08fbfbc Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Thu, 3 Oct 2024 20:08:00 -0700 Subject: [PATCH 04/14] More experiments --- go.mod | 12 +- go.sum | 10 + tlpb/csv_test.go | 77 ++++++++ tlpb/gtfs.proto | 4 +- tlpb/out/option.go | 59 ++++++ tlpb/out/out.go | 464 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 620 insertions(+), 6 deletions(-) create mode 100644 tlpb/out/option.go create mode 100644 tlpb/out/out.go diff --git a/go.mod b/go.mod index 70ec734e..96c46bb3 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/interline-io/transitland-lib -go 1.18 +go 1.21 + +toolchain go1.23.0 require ( github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.4 @@ -23,9 +25,9 @@ require ( github.com/rs/zerolog v1.31.0 github.com/sergi/go-diff v1.2.0 github.com/snabb/isoweek v1.0.1 - github.com/stretchr/testify v1.7.1 + github.com/stretchr/testify v1.9.0 github.com/twpayne/go-geom v1.4.1 - google.golang.org/protobuf v1.28.0 + google.golang.org/protobuf v1.34.2 ) require ( @@ -44,6 +46,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/sso v1.11.7 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.16.6 // indirect github.com/aws/smithy-go v1.11.2 // indirect + github.com/bufbuild/protocompile v0.14.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang-jwt/jwt v3.2.1+incompatible // indirect github.com/google/uuid v1.1.1 // indirect @@ -58,7 +61,8 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/crypto v0.14.0 // indirect golang.org/x/net v0.17.0 // indirect + golang.org/x/sync v0.8.0 // indirect golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/text v0.18.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 9ff56a15..a583f193 100644 --- a/go.sum +++ b/go.sum @@ -52,6 +52,8 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.16.6 h1:aYToU0/iazkMY67/BYLt3r6/LT/m github.com/aws/aws-sdk-go-v2/service/sts v1.16.6/go.mod h1:rP1rEOKAGZoXp4iGDxSXFvODAtXpm34Egf0lL0eshaQ= github.com/aws/smithy-go v1.11.2 h1:eG/N+CcUMAvsdffgMvjMKwfyDzIkjM6pfxMJ8Mzc6mE= github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -154,6 +156,8 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/twpayne/go-geom v1.4.1 h1:LeivFqaGBRfyg0XJJ9pkudcptwhSSrYN9KZUW6HcgdA= github.com/twpayne/go-geom v1.4.1/go.mod h1:k/zktXdL+qnA6OgKsdEGUTA17jbQ2ZPTUa3CCySuGpE= github.com/twpayne/go-kml v1.5.2/go.mod h1:kz8jAiIz6FIdU2Zjce9qGlVtgFYES9vt7BTPBHf5jl4= @@ -169,6 +173,8 @@ golang.org/x/net v0.0.0-20191003171128-d98b1b443823/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -184,12 +190,16 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tlpb/csv_test.go b/tlpb/csv_test.go index c29c09b7..75451143 100644 --- a/tlpb/csv_test.go +++ b/tlpb/csv_test.go @@ -1,9 +1,14 @@ package tlpb import ( + "context" + "fmt" + "strings" "testing" + "github.com/bufbuild/protocompile" "github.com/interline-io/transitland-lib/internal/testutil" + "google.golang.org/protobuf/reflect/protoreflect" ) func TestReadStopsPB(t *testing.T) { @@ -21,3 +26,75 @@ func BenchmarkReadStopsTT(b *testing.B) { ReadStopsTT(testutil.RelPath("test/data/external/bart.zip")) } } + +func TestCodegen(t *testing.T) { + compiler := protocompile.Compiler{ + Resolver: &protocompile.SourceResolver{}, + } + files, err := compiler.Compile(context.Background(), "gtfs.proto") + if err != nil { + t.Fatal(err) + } + fmt.Println("package out") + + for _, lf := range files { + // fmt.Printf("file %#v\n", file) + enums := lf.Enums() + for i := 0; i < enums.Len(); i++ { + en := enums.Get(i) + fmt.Printf("type %s int32\n\n", en.Name()) + } + msgs := lf.Messages() + for i := 0; i < msgs.Len(); i++ { + msg := msgs.Get(i) + fields := msg.Fields() + if fields.Len() == 1 && fields.Get(0).Name() == "val" { + field := fields.Get(0) + fmt.Printf("type %s Option[%s]\n\n", msg.Name(), mapKind(field)) + continue + } + + fmt.Printf("type %s struct {\n", msg.Name()) + for j := 0; j < fields.Len(); j++ { + field := fields.Get(j) + fieldName := toCamelCase(string(field.Name())) + fieldKind := mapKind(field) + fmt.Printf("\t%s %s\n", fieldName, fieldKind) + // fmt.Printf("\t%s %s `json:\"%s\"`\n", fieldName, fieldKind, field.Name()) + } + fmt.Println("}") + fmt.Println("") + + } + } +} + +func mapKind(field protoreflect.FieldDescriptor) string { + fieldKind := field.Kind().String() + switch fieldKind { + case "enum": + fieldKind = string(field.Enum().Name()) + case "double": + fieldKind = "float64" + case "float": + fieldKind = "float32" + } + if fmsg := field.Message(); fmsg != nil { + fieldKind = string(fmsg.Name()) + } + return fieldKind +} + +func toCamelCase(v string) string { + a := strings.Split(v, "_") + for i := 0; i < len(a); i++ { + s := a[i] + if s == "id" { + s = "ID" + } else { + s = strings.ToUpper(s[0:1]) + s[1:] + } + a[i] = s + } + return strings.Join(a, "") +} diff --git a/tlpb/gtfs.proto b/tlpb/gtfs.proto index cca7e9c7..ebcacb6a 100644 --- a/tlpb/gtfs.proto +++ b/tlpb/gtfs.proto @@ -457,12 +457,12 @@ message Phone { // This must be a message so we can check for nil // "0" and "" have different semantics in GTFS message FareAttributeTransfer { - FareAttributeTransferType transfer_type = 1; + FareAttributeTransferType val = 1; } // "0" and "" have different semantics message TransferCount { - int32 transfer_count = 1; + int32 val = 1; } ///////////// diff --git a/tlpb/out/option.go b/tlpb/out/option.go new file mode 100644 index 00000000..d2560296 --- /dev/null +++ b/tlpb/out/option.go @@ -0,0 +1,59 @@ +package out + +import ( + "database/sql/driver" + "encoding/json" +) + +type Option[T any] struct { + Val T + Valid bool +} + +func (r *Option[T]) Present() bool { + return r.Valid +} + +func (r Option[T]) String() string { + return "" + // if !r.Valid { + // return "" + // } + // out := "" + // if err := convertAssign(&out, r.Val); err != nil { + // b, _ := r.MarshalJSON() + // return string(b) + // } + // return out +} + +func (r *Option[T]) Error() error { + return nil +} + +func (r *Option[T]) Scan(src interface{}) error { + return nil + // err := convertAssign(&r.Val, src) + // r.Valid = (src != nil && err == nil) + // return err +} + +func (r Option[T]) Value() (driver.Value, error) { + if !r.Valid { + return nil, nil + } + return r.Val, nil +} + +func (r *Option[T]) UnmarshalJSON(v []byte) error { + err := json.Unmarshal(v, &r.Val) + r.Valid = (err == nil) + return err +} + +func (r Option[T]) MarshalJSON() ([]byte, error) { + if !r.Valid { + return []byte("null"), nil + } + return json.Marshal(r.Val) +} diff --git a/tlpb/out/out.go b/tlpb/out/out.go new file mode 100644 index 00000000..30d66593 --- /dev/null +++ b/tlpb/out/out.go @@ -0,0 +1,464 @@ +package out + +type WheelchairAccess int32 + +type BikeAccess int32 + +type BoardAccess int32 + +type PickupAccess int32 + +type StopLocationType int32 + +type RouteType int32 + +type TripDirection int32 + +type StopTimepoint int32 + +type CalendarExceptionType int32 + +type FrequencyExactTime int32 + +type TransferType int32 + +type PathwayDirectionality int32 + +type PathwayMode int32 + +type BookingRuleType int32 + +type FareMediaType int32 + +type FareTransferType int32 + +type DurationLimitType int32 + +type FareAttributeTransferType int32 + +type PaymentMethod int32 + +type AttributionRole int32 + +type FeedEntity struct { + Agency Agency + Stop Stop + Route Route + Trip Trip + StopTime StopTime + Shape Shape + Service Service +} + +type Agency struct { + ID int64 + FeedVersionID int64 + AgencyID EntityID + AgencyName string + AgencyUrl Url + AgencyTimezone Timezone + AgencyLang Language + AgencyPhone Phone + AgencyFareUrl Url + AgencyEmail Email +} + +type Stop struct { + ID int64 + FeedVersionID int64 + StopID EntityID + StopCode string + StopName string + TtsStopName string + StopDesc string + StopLat float64 + StopLon float64 + ZoneID string + StopUrl Url + LocationType StopLocationType + ParentStation Reference + StopTimezone Timezone + WheelchairBoarding WheelchairAccess + LevelID Reference + PlatformCode string +} + +type Route struct { + ID int64 + FeedVersionID int64 + RouteID EntityID + AgencyID Reference + RouteShortName string + RouteLongName string + RouteDesc string + RouteType RouteType + RouteUrl Url + RouteColor Color + RouteTextColor Color + RouteSortOrder int32 + ContinuousPickup PickupAccess + ContinuousDropOff PickupAccess + NetworkID string +} + +type Trip struct { + ID int64 + FeedVersionID int64 + RouteID Reference + ServiceID Reference + TripID EntityID + TripHeadsign string + TripShortName string + DirectionID TripDirection + BlockID string + ShapeID Reference + WheelchairAccessible WheelchairAccess + BikesAllowed BikeAccess +} + +type StopTime struct { + ID int64 + FeedVersionID int64 + TripID Reference + ArrivalTime Seconds + DepartureTime Seconds + StopID Reference + StopSequence int32 + StopHeadsign string + ContinuousPickup PickupAccess + ContinuousDropOff PickupAccess + ShapeDistTraveled float64 + Timepoint StopTimepoint + LocationID Reference + LocationGroupID Reference + StartPickupDropOffWindow Seconds + EndPickupDropOffWindow Seconds + PickupType PickupAccess + DropOffType PickupAccess + PickupBookingRuleID Reference + DropOffBookingRuleID Reference +} + +type Calendar struct { + ID int64 + FeedVersionID int64 + ServiceID EntityID + StartDate Date + EndDate Date + Monday bool + Tuesday bool + Wednesday bool + Thursday bool + Friday bool + Saturday bool + Sunday bool +} + +type CalendarDate struct { + ID int64 + FeedVersionID int64 + ServiceID Reference + Date Date + ExceptionType CalendarExceptionType +} + +type FareAttribute struct { + ID int64 + FeedVersionID int64 + FareID EntityID + Price Money + CurrencyType Currency + PaymentMethod PaymentMethod + Transfers FareAttributeTransferType + AgencyID Reference + TransferDuration int32 +} + +type FareRule struct { + ID int64 + FeedVersionID int64 + FareID EntityID + RouteID Reference + OriginID Reference + DestinationID Reference + ContainsID Reference +} + +type Timeframe struct { + ID int64 + FeedVersionID int64 + TimeframeGroupID EntityID + StartTime Seconds + EndTime Seconds + ServiceID Reference +} + +type FareMedia struct { + ID int64 + FeedVersionID int64 + FareMediaID EntityID + FareMediaName string + FareMediaType FareMediaType +} + +type FareProduct struct { + ID int64 + FeedVersionID int64 + FareProductID EntityID + FareProductName string + FareMediaID Reference + Amount Money + Currency Currency +} + +type FareLegRule struct { + ID int64 + FeedVersionID int64 + LegGroupID EntityID + NetworkID Reference + FromAreaID Reference + ToAreaID Reference + FromTimeframeGroupID Reference + ToTimeframeGroupID Reference + FareProductID Reference + RuleProirity int32 +} + +type FareTransferRule struct { + ID int64 + FeedVersionID int64 + FromLegGroupID Reference + ToLegGroupID Reference + TransferCount TransferCount + DurationLimitType DurationLimitType + FareTransferType FareTransferType + FareProductID Reference +} + +type Area struct { + ID int64 + FeedVersionID int64 + AreaID EntityID + AreaName string +} + +type StopArea struct { + ID int64 + FeedVersionID int64 + AreaID Reference + StopID Reference +} + +type Network struct { + ID int64 + FeedVersionID int64 + NetworkID EntityID + NetworkName string +} + +type RouteNetwork struct { + ID int64 + FeedVersionID int64 + NetworkID Reference + RouteID Reference +} + +type Frequency struct { + ID int64 + FeedVersionID int64 + TripID Reference + StartTime Seconds + EndTime Seconds + HeadwaySecs int32 + ExactTime FrequencyExactTime +} + +type Transfer struct { + ID int64 + FeedVersionID int64 + FromStopID Reference + ToStopID Reference + FromRouteID Reference + ToRouteID Reference + FromTripID Reference + ToTripID Reference + TransferType TransferType + MinTransferTime int32 +} + +type Pathway struct { + ID int64 + FeedVersionID int64 + PathwayID EntityID + FromStopID Reference + ToStopID Reference + PathwayMode PathwayMode + IsBidirectional PathwayDirectionality + Length float64 + TraversalTime int32 + StairCount int32 + MaxSlope float64 + MinWidth float64 + SignpostedAs string + ReverseSignpostedAs string +} + +type Level struct { + ID int64 + FeedVersionID int64 + LevelID EntityID + LevelIndex float64 + LevelName string +} + +type LocationGroup struct { + ID int64 + FeedVersionID int64 + LocationGroupID EntityID + LocationGroupName string +} + +type LocationGroupStop struct { + ID int64 + FeedVersionID int64 + LocationGroupID Reference + StopID Reference +} + +type BookingRule struct { + ID int64 + FeedVersionID int64 + BookingRuleID EntityID + BookingType BookingRuleType + PriorNoticeDurationMin int32 + PriorNoticeDurationMax int32 + PriorNoticeLastDay int32 + PriorNoticeLastTime Seconds + PriorNoticeStartDay int32 + PriorNoticeStartTime Seconds + PriorNoticeServiceID Reference + Message string + PickupMessage string + DropOffMessage string + PhoneNumber string + InfoUrl Url + BookingUrl Url +} + +type Translation struct { + ID int64 + FeedVersionID int64 + TableName string + FieldName string + Language Language + Translation string + RecordID string + RecordSubID string + FieldValue string +} + +type FeedInfo struct { + ID int64 + FeedVersionID int64 + FeedPublisherName string + FeedPublisherUrl Url + FeedLang Language + DefaultLang Language + FeedStartDate Date + FeedEndDate Date + FeedContactEmail Email + FeedContactUrl Url +} + +type Attribution struct { + ID int64 + FeedVersionID int64 + AttributionID EntityID + AgencyID Reference + RouteID Reference + TripID Reference + OrganizationName string + IsProducer AttributionRole + IsOperator AttributionRole + IsAuthority AttributionRole + AttributionUrl Url + AttributionEmail Email + AttributionPhone Phone +} + +type Service struct { + ID int64 + FeedVersionID int64 + ServiceID EntityID + StartDate Date + EndDate Date + Added Date + Removed Date + Monday bool + Tuesday bool + Wednesday bool + Thursday bool + Friday bool + Saturday bool + Sunday bool +} + +type ShapePoint struct { + ShapeID EntityID + ShapePtLat float64 + ShapePtLon float64 + ShapePtSequence int32 + ShapeDistTraveled float64 +} + +type Shape struct { + ShapeID EntityID + Shape LineString +} + +type Point struct { + Lon float64 + Lat float64 +} + +type LineString struct { + Stride uint32 + Coordinates float64 +} + +type Date struct { + Year int32 + Month int32 + Day int32 +} + +type Time Option[int64] + +type Seconds Option[int64] + +type EntityID Option[string] + +type Timezone Option[string] + +type Reference Option[string] + +type Url Option[string] + +type Email Option[string] + +type Color Option[string] + +type Money struct { + Units int64 + Nanos int64 +} + +type Currency Option[string] + +type Language Option[string] + +type Phone Option[string] + +type FareAttributeTransfer Option[FareAttributeTransferType] + +type TransferCount Option[int32] From 62602c7f3228a85f01fb224f1f698e2d8021fefd Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Fri, 4 Oct 2024 20:04:41 -0700 Subject: [PATCH 05/14] More experiments --- tl/tt/convert.go | 15 +- tlcsv/reflect.go | 11 +- tlpb/codegen_test.go | 94 + tlpb/csv.go | 79 - tlpb/csv_test.go | 187 +- tlpb/gtfs.pb.go | 6321 ------------------------------- tlpb/gtfs.proto | 439 ++- tlpb/gtfs/gtfs.go | 488 +++ tlpb/gtfs/option.go | 238 ++ tlpb/out/option.go | 59 - tlpb/out/out.go | 464 --- tlpb/pb/gtfs.pb.go | 8489 ++++++++++++++++++++++++++++++++++++++++++ tlpb/pb/pb.go | 59 + tlpb/tlpb.go | 3 - 14 files changed, 9744 insertions(+), 7202 deletions(-) create mode 100644 tlpb/codegen_test.go delete mode 100644 tlpb/csv.go delete mode 100644 tlpb/gtfs.pb.go create mode 100644 tlpb/gtfs/gtfs.go create mode 100644 tlpb/gtfs/option.go delete mode 100644 tlpb/out/option.go delete mode 100644 tlpb/out/out.go create mode 100644 tlpb/pb/gtfs.pb.go create mode 100644 tlpb/pb/pb.go delete mode 100644 tlpb/tlpb.go diff --git a/tl/tt/convert.go b/tl/tt/convert.go index 10701390..065588de 100644 --- a/tl/tt/convert.go +++ b/tl/tt/convert.go @@ -5,7 +5,6 @@ import ( "errors" "fmt" "math" - "reflect" "strconv" "time" @@ -62,22 +61,14 @@ func FromCsv(val any, strv string) error { *vf = v case canFromCsvString: if err := vf.FromCsv(strv); err != nil { - p = errors.New("field not scannable") + p = errors.New("field not scannable, FromCsv failed") } case canScan: if err := vf.Scan(strv); err != nil { - p = errors.New("field not scannable") + p = errors.New("field not scannable, Scan failed") } default: - // Handle protobuf enums - k := reflect.ValueOf(val) - if k.Elem().CanInt() { - v, e := strconv.ParseInt(strv, 0, 0) - p = e - k.Elem().SetInt(v) - } else { - p = errors.New("field not scannable") - } + p = errors.New("field not scannable") } return p } diff --git a/tlcsv/reflect.go b/tlcsv/reflect.go index 32f99a0a..9e362d2f 100644 --- a/tlcsv/reflect.go +++ b/tlcsv/reflect.go @@ -129,6 +129,8 @@ func loadRowReflect(ent interface{}, row Row) []error { strv = row.Row[i] } fieldInfo, ok := fmap[fieldName] + // fmt.Printf("FIELD: %s\n", fieldName) + // Add to extra fields if there's no struct tag if !ok { if extEnt, ok2 := ent.(tl.EntityWithExtra); ok2 { @@ -148,13 +150,9 @@ func loadRowReflect(ent interface{}, row Row) []error { } continue } + // Handle different known types - var fieldValue any - if k := reflectx.FieldByIndexes(entValue, fieldInfo.Index); k.Kind() == reflect.Pointer { - fieldValue = k.Interface() - } else { - fieldValue = k.Addr().Interface() - } + fieldValue := reflectx.FieldByIndexes(entValue, fieldInfo.Index).Addr().Interface() if err := tt.FromCsv(fieldValue, strv); err != nil { errs = append(errs, causes.NewFieldParseError(fieldName, strv)) } @@ -167,6 +165,7 @@ func loadRowReflect(ent interface{}, row Row) []error { } } } + // fmt.Printf("ENT DONE: %T %#v\n", ent, ent) return errs } diff --git a/tlpb/codegen_test.go b/tlpb/codegen_test.go new file mode 100644 index 00000000..c3764055 --- /dev/null +++ b/tlpb/codegen_test.go @@ -0,0 +1,94 @@ +package tlpb + +import ( + "context" + "fmt" + "os" + "strings" + "testing" + + "github.com/bufbuild/protocompile" + "google.golang.org/protobuf/reflect/protoreflect" +) + +func TestCodegen(t *testing.T) { + compiler := protocompile.Compiler{ + Resolver: &protocompile.SourceResolver{}, + } + files, err := compiler.Compile(context.Background(), "gtfs.proto") + if err != nil { + t.Fatal(err) + } + outf, err := os.Create("gtfs/gtfs.go") + if err != nil { + t.Fatal(err) + } + defer outf.Close() + + outf.WriteString("package gtfs\n\n") + outf.WriteString("type EnumValue int32\n\n") + + for _, lf := range files { + // fmt.Printf("file %#v\n", file) + enums := lf.Enums() + for i := 0; i < enums.Len(); i++ { + en := enums.Get(i) + outf.WriteString(fmt.Sprintf("type %s int32\n\n", en.Name())) + } + msgs := lf.Messages() + for i := 0; i < msgs.Len(); i++ { + msg := msgs.Get(i) + fields := msg.Fields() + if fields.Len() == 1 && fields.Get(0).Name() == "val" { + field := fields.Get(0) + outf.WriteString(fmt.Sprintf("type %s struct { Option[%s] }\n\n", msg.Name(), mapKind(field))) + continue + } + + outf.WriteString(fmt.Sprintf("type %s struct {\n", msg.Name())) + for j := 0; j < fields.Len(); j++ { + field := fields.Get(j) + fieldName := toCamelCase(string(field.Name())) + fieldKind := mapKind(field) + switch fieldKind { + case "DatabaseEntity": + outf.WriteString("\tDatabaseEntity\n") + default: + outf.WriteString(fmt.Sprintf("\t%s %s\n", fieldName, fieldKind)) + } + + } + outf.WriteString("}\n\n") + } + } +} + +func mapKind(field protoreflect.FieldDescriptor) string { + fieldKind := field.Kind().String() + switch fieldKind { + case "enum": + fieldKind = string(field.Enum().Name()) + case "double": + fieldKind = "float64" + case "float": + fieldKind = "float32" + } + if fmsg := field.Message(); fmsg != nil { + fieldKind = string(fmsg.Name()) + } + return fieldKind +} + +func toCamelCase(v string) string { + a := strings.Split(v, "_") + for i := 0; i < len(a); i++ { + s := a[i] + if s == "id" { + s = "ID" + } else { + s = strings.ToUpper(s[0:1]) + s[1:] + } + a[i] = s + } + return strings.Join(a, "") +} diff --git a/tlpb/csv.go b/tlpb/csv.go deleted file mode 100644 index 89ca72c4..00000000 --- a/tlpb/csv.go +++ /dev/null @@ -1,79 +0,0 @@ -package tlpb - -import ( - "encoding/json" - "fmt" - - "github.com/interline-io/transitland-lib/tl" - "github.com/interline-io/transitland-lib/tl/tt" - "github.com/interline-io/transitland-lib/tlcsv" - "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/reflect/protoreflect" -) - -func (t *Url) FromCsv(v string) error { - t.Val = v - return nil -} - -func (t *EntityID) FromCsv(v string) error { - t.Val = v - return nil -} - -func (t *Reference) FromCsv(v string) error { - t.Val = v - return nil -} - -func (t *Seconds) FromCsv(v string) error { - wt, err := tt.NewWideTime(v) - if err != nil { - return err - } - t.Val = int64(wt.Seconds) - return nil -} - -func pbJson(v protoreflect.ProtoMessage) string { - jj, _ := protojson.Marshal(v) - return string(jj) -} - -func ReadStopsPB(fn string) error { - a := tlcsv.NewZipAdapter(fn) - if err := a.Open(); err != nil { - panic(err) - } - a.ReadRows("stops.txt", func(row tlcsv.Row) { - ent := Stop{} - if errs := tlcsv.LoadRow(&ent, row); errs != nil { - for _, err := range errs { - panic(err) - } - } - _ = ent - fmt.Println(pbJson(&ent)) - }) - return nil -} - -func ReadStopsTT(fn string) error { - a := tlcsv.NewZipAdapter(fn) - if err := a.Open(); err != nil { - panic(err) - } - a.ReadRows("stops.txt", func(row tlcsv.Row) { - ent := tl.Stop{} - if errs := tlcsv.LoadRow(&ent, row); errs != nil { - for _, err := range errs { - panic(err) - } - } - _ = ent - jj, _ := json.Marshal(&ent) - fmt.Println(string(jj)) - // fmt.Println(pbJson(&ent)) - }) - return nil -} diff --git a/tlpb/csv_test.go b/tlpb/csv_test.go index 75451143..3a870234 100644 --- a/tlpb/csv_test.go +++ b/tlpb/csv_test.go @@ -1,100 +1,149 @@ package tlpb import ( - "context" + "encoding/json" "fmt" - "strings" "testing" - "github.com/bufbuild/protocompile" + "github.com/stretchr/testify/assert" + "github.com/interline-io/transitland-lib/internal/testutil" + "github.com/interline-io/transitland-lib/tl" + "github.com/interline-io/transitland-lib/tlcsv" + "github.com/interline-io/transitland-lib/tlpb/gtfs" + "github.com/interline-io/transitland-lib/tlpb/pb" + "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/reflect/protoreflect" ) -func TestReadStopsPB(t *testing.T) { - ReadStopsPB(testutil.RelPath("test/data/external/bart.zip")) +func printFirst(v []any) { + if len(v) == 0 { + return + } + fmt.Println(toJson(v[0])) } - -func BenchmarkReadStopsPB(b *testing.B) { - for n := 0; n < b.N; n++ { - ReadStopsPB(testutil.RelPath("test/data/external/bart.zip")) +func printAll(v []any) { + for _, ent := range v { + fmt.Println(toJson(ent)) } } -func BenchmarkReadStopsTT(b *testing.B) { +func pbJson(v protoreflect.ProtoMessage) string { + jj, _ := protojson.Marshal(v) + return string(jj) +} + +func toJson(v any) string { + jj, _ := json.Marshal(v) + return string(jj) +} + +var TESTFILE = "" +var TESTTABLE = "" + +func init() { + TESTFILE = testutil.RelPath("test/data/external/bart.zip") + TESTTABLE = "stops.txt" +} + +////////////////// + +func TestReadPB(t *testing.T) { + // ents, err := ReadPB(TESTFILE) + // if err != nil { + // t.Fatal(err) + // } + // for _, ent := range ents { + // fmt.Println(ent) + // } +} + +func BenchmarkReadPB(b *testing.B) { for n := 0; n < b.N; n++ { - ReadStopsTT(testutil.RelPath("test/data/external/bart.zip")) + ReadPB(TESTFILE) } } -func TestCodegen(t *testing.T) { - compiler := protocompile.Compiler{ - Resolver: &protocompile.SourceResolver{}, - } - files, err := compiler.Compile(context.Background(), "gtfs.proto") - if err != nil { - t.Fatal(err) +func ReadPB(fn string) ([]any, error) { + a := tlcsv.NewZipAdapter(fn) + if err := a.Open(); err != nil { + panic(err) } - fmt.Println("package out") - - for _, lf := range files { - // fmt.Printf("file %#v\n", file) - enums := lf.Enums() - for i := 0; i < enums.Len(); i++ { - en := enums.Get(i) - fmt.Printf("type %s int32\n\n", en.Name()) - } - msgs := lf.Messages() - for i := 0; i < msgs.Len(); i++ { - msg := msgs.Get(i) - fields := msg.Fields() - if fields.Len() == 1 && fields.Get(0).Name() == "val" { - field := fields.Get(0) - fmt.Printf("type %s Option[%s]\n\n", msg.Name(), mapKind(field)) - continue + var ret []any + err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { + ent := &pb.Stop{} + if errs := tlcsv.LoadRow(ent, row); errs != nil { + for _, err := range errs { + panic(err) } + } + ret = append(ret, ent) + }) + return ret, err +} - fmt.Printf("type %s struct {\n", msg.Name()) - for j := 0; j < fields.Len(); j++ { - field := fields.Get(j) - fieldName := toCamelCase(string(field.Name())) - fieldKind := mapKind(field) - fmt.Printf("\t%s %s\n", fieldName, fieldKind) - // fmt.Printf("\t%s %s `json:\"%s\"`\n", fieldName, fieldKind, field.Name()) - } - fmt.Println("}") - fmt.Println("") +////////////////// - } +func TestReadTT(t *testing.T) { + ents, err := ReadTT(TESTFILE) + assert.NoError(t, err) + printAll(ents) +} + +func BenchmarkReadTT(b *testing.B) { + for n := 0; n < b.N; n++ { + a, _ := ReadTT(TESTFILE) + printFirst(a) } } -func mapKind(field protoreflect.FieldDescriptor) string { - fieldKind := field.Kind().String() - switch fieldKind { - case "enum": - fieldKind = string(field.Enum().Name()) - case "double": - fieldKind = "float64" - case "float": - fieldKind = "float32" +func ReadTT(fn string) ([]any, error) { + a := tlcsv.NewZipAdapter(fn) + if err := a.Open(); err != nil { + panic(err) } - if fmsg := field.Message(); fmsg != nil { - fieldKind = string(fmsg.Name()) + var ret []any + err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { + ent := tl.Stop{} + if errs := tlcsv.LoadRow(&ent, row); errs != nil { + for _, err := range errs { + panic(err) + } + } + ret = append(ret, ent) + }) + return ret, err +} + +////////////////// + +func TestReadG(t *testing.T) { + ents, err := ReadG(TESTFILE) + assert.NoError(t, err) + printAll(ents) +} + +func BenchmarkReadG(b *testing.B) { + for n := 0; n < b.N; n++ { + a, _ := ReadG(TESTFILE) + printFirst(a) } - return fieldKind } -func toCamelCase(v string) string { - a := strings.Split(v, "_") - for i := 0; i < len(a); i++ { - s := a[i] - if s == "id" { - s = "ID" - } else { - s = strings.ToUpper(s[0:1]) + s[1:] - } - a[i] = s +func ReadG(fn string) ([]any, error) { + a := tlcsv.NewZipAdapter(fn) + if err := a.Open(); err != nil { + panic(err) } - return strings.Join(a, "") + var ret []any + err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { + ent := gtfs.Stop{} + if errs := tlcsv.LoadRow(&ent, row); errs != nil { + for _, err := range errs { + panic(err) + } + } + ret = append(ret, ent) + }) + return ret, err } diff --git a/tlpb/gtfs.pb.go b/tlpb/gtfs.pb.go deleted file mode 100644 index f6fca274..00000000 --- a/tlpb/gtfs.pb.go +++ /dev/null @@ -1,6321 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.2 -// protoc v5.27.1 -// source: gtfs.proto - -package tlpb - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type WheelchairAccess int32 - -const ( - WheelchairAccess_WheelchairUnknown WheelchairAccess = 0 - WheelchairAccess_WheelchairAllowed WheelchairAccess = 1 - WheelchairAccess_WheelchairDisallowed WheelchairAccess = 2 -) - -// Enum value maps for WheelchairAccess. -var ( - WheelchairAccess_name = map[int32]string{ - 0: "WheelchairUnknown", - 1: "WheelchairAllowed", - 2: "WheelchairDisallowed", - } - WheelchairAccess_value = map[string]int32{ - "WheelchairUnknown": 0, - "WheelchairAllowed": 1, - "WheelchairDisallowed": 2, - } -) - -func (x WheelchairAccess) Enum() *WheelchairAccess { - p := new(WheelchairAccess) - *p = x - return p -} - -func (x WheelchairAccess) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (WheelchairAccess) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[0].Descriptor() -} - -func (WheelchairAccess) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[0] -} - -func (x WheelchairAccess) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use WheelchairAccess.Descriptor instead. -func (WheelchairAccess) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{0} -} - -type BikeAccess int32 - -const ( - BikeAccess_BikeUnknown BikeAccess = 0 - BikeAccess_BikeAllowed BikeAccess = 1 - BikeAccess_BikeDisallowed BikeAccess = 2 -) - -// Enum value maps for BikeAccess. -var ( - BikeAccess_name = map[int32]string{ - 0: "BikeUnknown", - 1: "BikeAllowed", - 2: "BikeDisallowed", - } - BikeAccess_value = map[string]int32{ - "BikeUnknown": 0, - "BikeAllowed": 1, - "BikeDisallowed": 2, - } -) - -func (x BikeAccess) Enum() *BikeAccess { - p := new(BikeAccess) - *p = x - return p -} - -func (x BikeAccess) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (BikeAccess) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[1].Descriptor() -} - -func (BikeAccess) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[1] -} - -func (x BikeAccess) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use BikeAccess.Descriptor instead. -func (BikeAccess) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{1} -} - -type BoardAccess int32 - -const ( - BoardAccess_BoardUnknown BoardAccess = 0 - BoardAccess_BoardDisallowed BoardAccess = 1 - BoardAccess_BoardAllowed BoardAccess = 2 - BoardAccess_BoardCoordinate BoardAccess = 3 -) - -// Enum value maps for BoardAccess. -var ( - BoardAccess_name = map[int32]string{ - 0: "BoardUnknown", - 1: "BoardDisallowed", - 2: "BoardAllowed", - 3: "BoardCoordinate", - } - BoardAccess_value = map[string]int32{ - "BoardUnknown": 0, - "BoardDisallowed": 1, - "BoardAllowed": 2, - "BoardCoordinate": 3, - } -) - -func (x BoardAccess) Enum() *BoardAccess { - p := new(BoardAccess) - *p = x - return p -} - -func (x BoardAccess) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (BoardAccess) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[2].Descriptor() -} - -func (BoardAccess) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[2] -} - -func (x BoardAccess) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use BoardAccess.Descriptor instead. -func (BoardAccess) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{2} -} - -type PickupAccess int32 - -const ( - PickupAccess_PickupContinuous PickupAccess = 0 - PickupAccess_PickupDisallowed PickupAccess = 1 - PickupAccess_PickupMustPhone PickupAccess = 2 - PickupAccess_PickupAskDriver PickupAccess = 3 -) - -// Enum value maps for PickupAccess. -var ( - PickupAccess_name = map[int32]string{ - 0: "PickupContinuous", - 1: "PickupDisallowed", - 2: "PickupMustPhone", - 3: "PickupAskDriver", - } - PickupAccess_value = map[string]int32{ - "PickupContinuous": 0, - "PickupDisallowed": 1, - "PickupMustPhone": 2, - "PickupAskDriver": 3, - } -) - -func (x PickupAccess) Enum() *PickupAccess { - p := new(PickupAccess) - *p = x - return p -} - -func (x PickupAccess) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (PickupAccess) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[3].Descriptor() -} - -func (PickupAccess) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[3] -} - -func (x PickupAccess) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use PickupAccess.Descriptor instead. -func (PickupAccess) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{3} -} - -type StopLocationType int32 - -const ( - StopLocationType_LocationPlatform StopLocationType = 0 - StopLocationType_LocationStation StopLocationType = 1 - StopLocationType_LocationEntrance StopLocationType = 2 - StopLocationType_LocationNode StopLocationType = 3 - StopLocationType_LocationBoardingArea StopLocationType = 4 -) - -// Enum value maps for StopLocationType. -var ( - StopLocationType_name = map[int32]string{ - 0: "LocationPlatform", - 1: "LocationStation", - 2: "LocationEntrance", - 3: "LocationNode", - 4: "LocationBoardingArea", - } - StopLocationType_value = map[string]int32{ - "LocationPlatform": 0, - "LocationStation": 1, - "LocationEntrance": 2, - "LocationNode": 3, - "LocationBoardingArea": 4, - } -) - -func (x StopLocationType) Enum() *StopLocationType { - p := new(StopLocationType) - *p = x - return p -} - -func (x StopLocationType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StopLocationType) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[4].Descriptor() -} - -func (StopLocationType) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[4] -} - -func (x StopLocationType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use StopLocationType.Descriptor instead. -func (StopLocationType) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{4} -} - -type RouteType int32 - -const ( - RouteType_VehicleTram RouteType = 0 - RouteType_VehicleSubway RouteType = 1 - RouteType_VehicleRail RouteType = 2 - RouteType_VehicleBus RouteType = 3 - RouteType_VehicleFerry RouteType = 4 - RouteType_VehicleCablecar RouteType = 5 - RouteType_VehicleGondola RouteType = 6 - RouteType_VehicleFunicular RouteType = 7 - RouteType_VehicleTrollebus RouteType = 11 - RouteType_VehicleMonorail RouteType = 12 -) - -// Enum value maps for RouteType. -var ( - RouteType_name = map[int32]string{ - 0: "VehicleTram", - 1: "VehicleSubway", - 2: "VehicleRail", - 3: "VehicleBus", - 4: "VehicleFerry", - 5: "VehicleCablecar", - 6: "VehicleGondola", - 7: "VehicleFunicular", - 11: "VehicleTrollebus", - 12: "VehicleMonorail", - } - RouteType_value = map[string]int32{ - "VehicleTram": 0, - "VehicleSubway": 1, - "VehicleRail": 2, - "VehicleBus": 3, - "VehicleFerry": 4, - "VehicleCablecar": 5, - "VehicleGondola": 6, - "VehicleFunicular": 7, - "VehicleTrollebus": 11, - "VehicleMonorail": 12, - } -) - -func (x RouteType) Enum() *RouteType { - p := new(RouteType) - *p = x - return p -} - -func (x RouteType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (RouteType) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[5].Descriptor() -} - -func (RouteType) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[5] -} - -func (x RouteType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use RouteType.Descriptor instead. -func (RouteType) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{5} -} - -type TripDirection int32 - -const ( - TripDirection_TripDirectionOutbound TripDirection = 0 - TripDirection_TripDirectionInbound TripDirection = 1 -) - -// Enum value maps for TripDirection. -var ( - TripDirection_name = map[int32]string{ - 0: "TripDirectionOutbound", - 1: "TripDirectionInbound", - } - TripDirection_value = map[string]int32{ - "TripDirectionOutbound": 0, - "TripDirectionInbound": 1, - } -) - -func (x TripDirection) Enum() *TripDirection { - p := new(TripDirection) - *p = x - return p -} - -func (x TripDirection) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (TripDirection) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[6].Descriptor() -} - -func (TripDirection) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[6] -} - -func (x TripDirection) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use TripDirection.Descriptor instead. -func (TripDirection) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{6} -} - -type StopTimepoint int32 - -const ( - StopTimepoint_Approximate StopTimepoint = 0 - StopTimepoint_StopTimepointExact StopTimepoint = 1 -) - -// Enum value maps for StopTimepoint. -var ( - StopTimepoint_name = map[int32]string{ - 0: "Approximate", - 1: "StopTimepointExact", - } - StopTimepoint_value = map[string]int32{ - "Approximate": 0, - "StopTimepointExact": 1, - } -) - -func (x StopTimepoint) Enum() *StopTimepoint { - p := new(StopTimepoint) - *p = x - return p -} - -func (x StopTimepoint) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StopTimepoint) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[7].Descriptor() -} - -func (StopTimepoint) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[7] -} - -func (x StopTimepoint) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use StopTimepoint.Descriptor instead. -func (StopTimepoint) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{7} -} - -type CalendarExceptionType int32 - -const ( - CalendarExceptionType_CalendarUnknown CalendarExceptionType = 0 - CalendarExceptionType_CalendarAdded CalendarExceptionType = 1 - CalendarExceptionType_CalendarRemoved CalendarExceptionType = 2 -) - -// Enum value maps for CalendarExceptionType. -var ( - CalendarExceptionType_name = map[int32]string{ - 0: "CalendarUnknown", - 1: "CalendarAdded", - 2: "CalendarRemoved", - } - CalendarExceptionType_value = map[string]int32{ - "CalendarUnknown": 0, - "CalendarAdded": 1, - "CalendarRemoved": 2, - } -) - -func (x CalendarExceptionType) Enum() *CalendarExceptionType { - p := new(CalendarExceptionType) - *p = x - return p -} - -func (x CalendarExceptionType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CalendarExceptionType) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[8].Descriptor() -} - -func (CalendarExceptionType) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[8] -} - -func (x CalendarExceptionType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CalendarExceptionType.Descriptor instead. -func (CalendarExceptionType) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{8} -} - -type FrequencyExactTime int32 - -const ( - FrequencyExactTime_FrequencyExactTimeFrequency FrequencyExactTime = 0 - FrequencyExactTime_FrequencyExactTimeScheduled FrequencyExactTime = 1 -) - -// Enum value maps for FrequencyExactTime. -var ( - FrequencyExactTime_name = map[int32]string{ - 0: "FrequencyExactTimeFrequency", - 1: "FrequencyExactTimeScheduled", - } - FrequencyExactTime_value = map[string]int32{ - "FrequencyExactTimeFrequency": 0, - "FrequencyExactTimeScheduled": 1, - } -) - -func (x FrequencyExactTime) Enum() *FrequencyExactTime { - p := new(FrequencyExactTime) - *p = x - return p -} - -func (x FrequencyExactTime) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FrequencyExactTime) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[9].Descriptor() -} - -func (FrequencyExactTime) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[9] -} - -func (x FrequencyExactTime) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use FrequencyExactTime.Descriptor instead. -func (FrequencyExactTime) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{9} -} - -type TransferType int32 - -const ( - TransferType_TransferTypeRecommended TransferType = 0 - TransferType_TransferTypeTimed TransferType = 1 - TransferType_TransferTypeMinTime TransferType = 2 - TransferType_TransferTypeDisallowed TransferType = 3 - TransferType_TransferTypeInSeat TransferType = 4 - TransferType_TransferTypeMustExit TransferType = 5 -) - -// Enum value maps for TransferType. -var ( - TransferType_name = map[int32]string{ - 0: "TransferTypeRecommended", - 1: "TransferTypeTimed", - 2: "TransferTypeMinTime", - 3: "TransferTypeDisallowed", - 4: "TransferTypeInSeat", - 5: "TransferTypeMustExit", - } - TransferType_value = map[string]int32{ - "TransferTypeRecommended": 0, - "TransferTypeTimed": 1, - "TransferTypeMinTime": 2, - "TransferTypeDisallowed": 3, - "TransferTypeInSeat": 4, - "TransferTypeMustExit": 5, - } -) - -func (x TransferType) Enum() *TransferType { - p := new(TransferType) - *p = x - return p -} - -func (x TransferType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (TransferType) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[10].Descriptor() -} - -func (TransferType) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[10] -} - -func (x TransferType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use TransferType.Descriptor instead. -func (TransferType) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{10} -} - -type PathwayDirectionality int32 - -const ( - PathwayDirectionality_PathwayUnidirectional PathwayDirectionality = 0 - PathwayDirectionality_PathwayBidirectional PathwayDirectionality = 1 -) - -// Enum value maps for PathwayDirectionality. -var ( - PathwayDirectionality_name = map[int32]string{ - 0: "PathwayUnidirectional", - 1: "PathwayBidirectional", - } - PathwayDirectionality_value = map[string]int32{ - "PathwayUnidirectional": 0, - "PathwayBidirectional": 1, - } -) - -func (x PathwayDirectionality) Enum() *PathwayDirectionality { - p := new(PathwayDirectionality) - *p = x - return p -} - -func (x PathwayDirectionality) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (PathwayDirectionality) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[11].Descriptor() -} - -func (PathwayDirectionality) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[11] -} - -func (x PathwayDirectionality) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use PathwayDirectionality.Descriptor instead. -func (PathwayDirectionality) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{11} -} - -type PathwayMode int32 - -const ( - PathwayMode_PathwayModeUnknown PathwayMode = 0 - PathwayMode_PathwayModeWalkway PathwayMode = 1 - PathwayMode_PathwayModeStairs PathwayMode = 2 - PathwayMode_PathwayModeTravelator PathwayMode = 3 - PathwayMode_PathwayModeEscalator PathwayMode = 4 - PathwayMode_PathwayModeElevator PathwayMode = 5 - PathwayMode_PatthwayModeFareGate PathwayMode = 6 - PathwayMode_PathwayModeExitGate PathwayMode = 7 -) - -// Enum value maps for PathwayMode. -var ( - PathwayMode_name = map[int32]string{ - 0: "PathwayModeUnknown", - 1: "PathwayModeWalkway", - 2: "PathwayModeStairs", - 3: "PathwayModeTravelator", - 4: "PathwayModeEscalator", - 5: "PathwayModeElevator", - 6: "PatthwayModeFareGate", - 7: "PathwayModeExitGate", - } - PathwayMode_value = map[string]int32{ - "PathwayModeUnknown": 0, - "PathwayModeWalkway": 1, - "PathwayModeStairs": 2, - "PathwayModeTravelator": 3, - "PathwayModeEscalator": 4, - "PathwayModeElevator": 5, - "PatthwayModeFareGate": 6, - "PathwayModeExitGate": 7, - } -) - -func (x PathwayMode) Enum() *PathwayMode { - p := new(PathwayMode) - *p = x - return p -} - -func (x PathwayMode) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (PathwayMode) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[12].Descriptor() -} - -func (PathwayMode) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[12] -} - -func (x PathwayMode) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use PathwayMode.Descriptor instead. -func (PathwayMode) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{12} -} - -type BookingRuleType int32 - -const ( - BookingRuleType_BookingRuleTypeRealtime BookingRuleType = 0 - BookingRuleType_BookingRuleTypeSameday BookingRuleType = 1 - BookingRuleType_BookingRuleTypePriorday BookingRuleType = 2 -) - -// Enum value maps for BookingRuleType. -var ( - BookingRuleType_name = map[int32]string{ - 0: "BookingRuleTypeRealtime", - 1: "BookingRuleTypeSameday", - 2: "BookingRuleTypePriorday", - } - BookingRuleType_value = map[string]int32{ - "BookingRuleTypeRealtime": 0, - "BookingRuleTypeSameday": 1, - "BookingRuleTypePriorday": 2, - } -) - -func (x BookingRuleType) Enum() *BookingRuleType { - p := new(BookingRuleType) - *p = x - return p -} - -func (x BookingRuleType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (BookingRuleType) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[13].Descriptor() -} - -func (BookingRuleType) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[13] -} - -func (x BookingRuleType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use BookingRuleType.Descriptor instead. -func (BookingRuleType) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{13} -} - -type FareMediaType int32 - -const ( - FareMediaType_FareMediaNone FareMediaType = 0 - FareMediaType_FareMediaPaper FareMediaType = 1 - FareMediaType_FareMediaCard FareMediaType = 2 - FareMediaType_FareMediaOpenLoop FareMediaType = 3 - FareMediaType_FareMediaApp FareMediaType = 4 -) - -// Enum value maps for FareMediaType. -var ( - FareMediaType_name = map[int32]string{ - 0: "FareMediaNone", - 1: "FareMediaPaper", - 2: "FareMediaCard", - 3: "FareMediaOpenLoop", - 4: "FareMediaApp", - } - FareMediaType_value = map[string]int32{ - "FareMediaNone": 0, - "FareMediaPaper": 1, - "FareMediaCard": 2, - "FareMediaOpenLoop": 3, - "FareMediaApp": 4, - } -) - -func (x FareMediaType) Enum() *FareMediaType { - p := new(FareMediaType) - *p = x - return p -} - -func (x FareMediaType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FareMediaType) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[14].Descriptor() -} - -func (FareMediaType) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[14] -} - -func (x FareMediaType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use FareMediaType.Descriptor instead. -func (FareMediaType) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{14} -} - -type FareTransferType int32 - -const ( - FareTransferType_FareTransfer0 FareTransferType = 0 - FareTransferType_FareTransfer1 FareTransferType = 1 - FareTransferType_FareTransfer2 FareTransferType = 2 -) - -// Enum value maps for FareTransferType. -var ( - FareTransferType_name = map[int32]string{ - 0: "FareTransfer0", - 1: "FareTransfer1", - 2: "FareTransfer2", - } - FareTransferType_value = map[string]int32{ - "FareTransfer0": 0, - "FareTransfer1": 1, - "FareTransfer2": 2, - } -) - -func (x FareTransferType) Enum() *FareTransferType { - p := new(FareTransferType) - *p = x - return p -} - -func (x FareTransferType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FareTransferType) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[15].Descriptor() -} - -func (FareTransferType) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[15] -} - -func (x FareTransferType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use FareTransferType.Descriptor instead. -func (FareTransferType) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{15} -} - -type DurationLimitType int32 - -const ( - DurationLimitType_DurationLimit0 DurationLimitType = 0 - DurationLimitType_DurationLimit1 DurationLimitType = 1 - DurationLimitType_DurationLimit2 DurationLimitType = 2 - DurationLimitType_DurationLimit3 DurationLimitType = 3 -) - -// Enum value maps for DurationLimitType. -var ( - DurationLimitType_name = map[int32]string{ - 0: "DurationLimit0", - 1: "DurationLimit1", - 2: "DurationLimit2", - 3: "DurationLimit3", - } - DurationLimitType_value = map[string]int32{ - "DurationLimit0": 0, - "DurationLimit1": 1, - "DurationLimit2": 2, - "DurationLimit3": 3, - } -) - -func (x DurationLimitType) Enum() *DurationLimitType { - p := new(DurationLimitType) - *p = x - return p -} - -func (x DurationLimitType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DurationLimitType) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[16].Descriptor() -} - -func (DurationLimitType) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[16] -} - -func (x DurationLimitType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DurationLimitType.Descriptor instead. -func (DurationLimitType) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{16} -} - -type FareAttributeTransferType int32 - -const ( - FareAttributeTransferType_FareAttributeTransferTypeDisallowed FareAttributeTransferType = 0 - FareAttributeTransferType_FareAttributeTransferTypeOnce FareAttributeTransferType = 1 - FareAttributeTransferType_FareAttributeTransferTypeTwice FareAttributeTransferType = 2 -) - -// Enum value maps for FareAttributeTransferType. -var ( - FareAttributeTransferType_name = map[int32]string{ - 0: "FareAttributeTransferTypeDisallowed", - 1: "FareAttributeTransferTypeOnce", - 2: "FareAttributeTransferTypeTwice", - } - FareAttributeTransferType_value = map[string]int32{ - "FareAttributeTransferTypeDisallowed": 0, - "FareAttributeTransferTypeOnce": 1, - "FareAttributeTransferTypeTwice": 2, - } -) - -func (x FareAttributeTransferType) Enum() *FareAttributeTransferType { - p := new(FareAttributeTransferType) - *p = x - return p -} - -func (x FareAttributeTransferType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FareAttributeTransferType) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[17].Descriptor() -} - -func (FareAttributeTransferType) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[17] -} - -func (x FareAttributeTransferType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use FareAttributeTransferType.Descriptor instead. -func (FareAttributeTransferType) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{17} -} - -type PaymentMethod int32 - -const ( - PaymentMethod_PaymentMethodOnboard PaymentMethod = 0 - PaymentMethod_PaymentMethodOffboard PaymentMethod = 1 -) - -// Enum value maps for PaymentMethod. -var ( - PaymentMethod_name = map[int32]string{ - 0: "PaymentMethodOnboard", - 1: "PaymentMethodOffboard", - } - PaymentMethod_value = map[string]int32{ - "PaymentMethodOnboard": 0, - "PaymentMethodOffboard": 1, - } -) - -func (x PaymentMethod) Enum() *PaymentMethod { - p := new(PaymentMethod) - *p = x - return p -} - -func (x PaymentMethod) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (PaymentMethod) Descriptor() protoreflect.EnumDescriptor { - return file_gtfs_proto_enumTypes[18].Descriptor() -} - -func (PaymentMethod) Type() protoreflect.EnumType { - return &file_gtfs_proto_enumTypes[18] -} - -func (x PaymentMethod) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use PaymentMethod.Descriptor instead. -func (PaymentMethod) EnumDescriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{18} -} - -type FeedEntity struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Agency *Agency `protobuf:"bytes,1,opt,name=agency,proto3" json:"agency,omitempty"` - Stop *Stop `protobuf:"bytes,2,opt,name=stop,proto3" json:"stop,omitempty"` - Route *Route `protobuf:"bytes,3,opt,name=route,proto3" json:"route,omitempty"` - Trip *Trip `protobuf:"bytes,4,opt,name=trip,proto3" json:"trip,omitempty"` - StopTime *StopTime `protobuf:"bytes,5,opt,name=stop_time,json=stopTime,proto3" json:"stop_time,omitempty"` - Shape *Shape `protobuf:"bytes,6,opt,name=shape,proto3" json:"shape,omitempty"` - Service *Service `protobuf:"bytes,7,opt,name=service,proto3" json:"service,omitempty"` -} - -func (x *FeedEntity) Reset() { - *x = FeedEntity{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FeedEntity) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FeedEntity) ProtoMessage() {} - -func (x *FeedEntity) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FeedEntity.ProtoReflect.Descriptor instead. -func (*FeedEntity) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{0} -} - -func (x *FeedEntity) GetAgency() *Agency { - if x != nil { - return x.Agency - } - return nil -} - -func (x *FeedEntity) GetStop() *Stop { - if x != nil { - return x.Stop - } - return nil -} - -func (x *FeedEntity) GetRoute() *Route { - if x != nil { - return x.Route - } - return nil -} - -func (x *FeedEntity) GetTrip() *Trip { - if x != nil { - return x.Trip - } - return nil -} - -func (x *FeedEntity) GetStopTime() *StopTime { - if x != nil { - return x.StopTime - } - return nil -} - -func (x *FeedEntity) GetShape() *Shape { - if x != nil { - return x.Shape - } - return nil -} - -func (x *FeedEntity) GetService() *Service { - if x != nil { - return x.Service - } - return nil -} - -type Agency struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AgencyId *EntityID `protobuf:"bytes,1,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` - AgencyName string `protobuf:"bytes,2,opt,name=agency_name,json=agencyName,proto3" json:"agency_name,omitempty"` - AgencyUrl *Url `protobuf:"bytes,3,opt,name=agency_url,json=agencyUrl,proto3" json:"agency_url,omitempty"` - AgencyTimezone *Timezone `protobuf:"bytes,4,opt,name=agency_timezone,json=agencyTimezone,proto3" json:"agency_timezone,omitempty"` - AgencyLang *Language `protobuf:"bytes,5,opt,name=agency_lang,json=agencyLang,proto3" json:"agency_lang,omitempty"` - AgencyPhone string `protobuf:"bytes,6,opt,name=agency_phone,json=agencyPhone,proto3" json:"agency_phone,omitempty"` - AgencyFareUrl *Url `protobuf:"bytes,7,opt,name=agency_fare_url,json=agencyFareUrl,proto3" json:"agency_fare_url,omitempty"` - AgencyEmail *Email `protobuf:"bytes,8,opt,name=agency_email,json=agencyEmail,proto3" json:"agency_email,omitempty"` -} - -func (x *Agency) Reset() { - *x = Agency{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Agency) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Agency) ProtoMessage() {} - -func (x *Agency) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Agency.ProtoReflect.Descriptor instead. -func (*Agency) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{1} -} - -func (x *Agency) GetAgencyId() *EntityID { - if x != nil { - return x.AgencyId - } - return nil -} - -func (x *Agency) GetAgencyName() string { - if x != nil { - return x.AgencyName - } - return "" -} - -func (x *Agency) GetAgencyUrl() *Url { - if x != nil { - return x.AgencyUrl - } - return nil -} - -func (x *Agency) GetAgencyTimezone() *Timezone { - if x != nil { - return x.AgencyTimezone - } - return nil -} - -func (x *Agency) GetAgencyLang() *Language { - if x != nil { - return x.AgencyLang - } - return nil -} - -func (x *Agency) GetAgencyPhone() string { - if x != nil { - return x.AgencyPhone - } - return "" -} - -func (x *Agency) GetAgencyFareUrl() *Url { - if x != nil { - return x.AgencyFareUrl - } - return nil -} - -func (x *Agency) GetAgencyEmail() *Email { - if x != nil { - return x.AgencyEmail - } - return nil -} - -type Stop struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - StopId *EntityID `protobuf:"bytes,1,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` - StopCode string `protobuf:"bytes,2,opt,name=stop_code,json=stopCode,proto3" json:"stop_code,omitempty"` - StopName string `protobuf:"bytes,3,opt,name=stop_name,json=stopName,proto3" json:"stop_name,omitempty"` - TtsStopName string `protobuf:"bytes,4,opt,name=tts_stop_name,json=ttsStopName,proto3" json:"tts_stop_name,omitempty"` - StopDesc string `protobuf:"bytes,5,opt,name=stop_desc,json=stopDesc,proto3" json:"stop_desc,omitempty"` - StopLat float64 `protobuf:"fixed64,6,opt,name=stop_lat,json=stopLat,proto3" json:"stop_lat,omitempty"` - StopLon float64 `protobuf:"fixed64,7,opt,name=stop_lon,json=stopLon,proto3" json:"stop_lon,omitempty"` - ZoneId string `protobuf:"bytes,8,opt,name=zone_id,json=zoneId,proto3" json:"zone_id,omitempty"` - StopUrl *Url `protobuf:"bytes,9,opt,name=stop_url,json=stopUrl,proto3" json:"stop_url,omitempty"` - LocationType StopLocationType `protobuf:"varint,10,opt,name=location_type,json=locationType,proto3,enum=StopLocationType" json:"location_type,omitempty"` - ParentStation *Reference `protobuf:"bytes,11,opt,name=parent_station,json=parentStation,proto3" json:"parent_station,omitempty"` - StopTimezone *Timezone `protobuf:"bytes,12,opt,name=stop_timezone,json=stopTimezone,proto3" json:"stop_timezone,omitempty"` - WheelchairBoarding WheelchairAccess `protobuf:"varint,13,opt,name=wheelchair_boarding,json=wheelchairBoarding,proto3,enum=WheelchairAccess" json:"wheelchair_boarding,omitempty"` - LevelId *Reference `protobuf:"bytes,14,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` - PlatformCode string `protobuf:"bytes,15,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` -} - -func (x *Stop) Reset() { - *x = Stop{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Stop) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Stop) ProtoMessage() {} - -func (x *Stop) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Stop.ProtoReflect.Descriptor instead. -func (*Stop) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{2} -} - -func (x *Stop) GetStopId() *EntityID { - if x != nil { - return x.StopId - } - return nil -} - -func (x *Stop) GetStopCode() string { - if x != nil { - return x.StopCode - } - return "" -} - -func (x *Stop) GetStopName() string { - if x != nil { - return x.StopName - } - return "" -} - -func (x *Stop) GetTtsStopName() string { - if x != nil { - return x.TtsStopName - } - return "" -} - -func (x *Stop) GetStopDesc() string { - if x != nil { - return x.StopDesc - } - return "" -} - -func (x *Stop) GetStopLat() float64 { - if x != nil { - return x.StopLat - } - return 0 -} - -func (x *Stop) GetStopLon() float64 { - if x != nil { - return x.StopLon - } - return 0 -} - -func (x *Stop) GetZoneId() string { - if x != nil { - return x.ZoneId - } - return "" -} - -func (x *Stop) GetStopUrl() *Url { - if x != nil { - return x.StopUrl - } - return nil -} - -func (x *Stop) GetLocationType() StopLocationType { - if x != nil { - return x.LocationType - } - return StopLocationType_LocationPlatform -} - -func (x *Stop) GetParentStation() *Reference { - if x != nil { - return x.ParentStation - } - return nil -} - -func (x *Stop) GetStopTimezone() *Timezone { - if x != nil { - return x.StopTimezone - } - return nil -} - -func (x *Stop) GetWheelchairBoarding() WheelchairAccess { - if x != nil { - return x.WheelchairBoarding - } - return WheelchairAccess_WheelchairUnknown -} - -func (x *Stop) GetLevelId() *Reference { - if x != nil { - return x.LevelId - } - return nil -} - -func (x *Stop) GetPlatformCode() string { - if x != nil { - return x.PlatformCode - } - return "" -} - -type Route struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RouteId *EntityID `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` - AgencyId *Reference `protobuf:"bytes,2,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` - RouteShortName string `protobuf:"bytes,3,opt,name=route_short_name,json=routeShortName,proto3" json:"route_short_name,omitempty"` - RouteLongName string `protobuf:"bytes,4,opt,name=route_long_name,json=routeLongName,proto3" json:"route_long_name,omitempty"` - RouteDesc string `protobuf:"bytes,5,opt,name=route_desc,json=routeDesc,proto3" json:"route_desc,omitempty"` - RouteType RouteType `protobuf:"varint,6,opt,name=route_type,json=routeType,proto3,enum=RouteType" json:"route_type,omitempty"` - RouteUrl *Url `protobuf:"bytes,7,opt,name=route_url,json=routeUrl,proto3" json:"route_url,omitempty"` - RouteColor *Color `protobuf:"bytes,8,opt,name=route_color,json=routeColor,proto3" json:"route_color,omitempty"` - RouteTextColor *Color `protobuf:"bytes,9,opt,name=route_text_color,json=routeTextColor,proto3" json:"route_text_color,omitempty"` - RouteSortOrder int32 `protobuf:"varint,10,opt,name=route_sort_order,json=routeSortOrder,proto3" json:"route_sort_order,omitempty"` - ContinuousPickup PickupAccess `protobuf:"varint,11,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` - ContinuousDropOff PickupAccess `protobuf:"varint,12,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` - NetworkId string `protobuf:"bytes,13,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` -} - -func (x *Route) Reset() { - *x = Route{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Route) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Route) ProtoMessage() {} - -func (x *Route) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Route.ProtoReflect.Descriptor instead. -func (*Route) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{3} -} - -func (x *Route) GetRouteId() *EntityID { - if x != nil { - return x.RouteId - } - return nil -} - -func (x *Route) GetAgencyId() *Reference { - if x != nil { - return x.AgencyId - } - return nil -} - -func (x *Route) GetRouteShortName() string { - if x != nil { - return x.RouteShortName - } - return "" -} - -func (x *Route) GetRouteLongName() string { - if x != nil { - return x.RouteLongName - } - return "" -} - -func (x *Route) GetRouteDesc() string { - if x != nil { - return x.RouteDesc - } - return "" -} - -func (x *Route) GetRouteType() RouteType { - if x != nil { - return x.RouteType - } - return RouteType_VehicleTram -} - -func (x *Route) GetRouteUrl() *Url { - if x != nil { - return x.RouteUrl - } - return nil -} - -func (x *Route) GetRouteColor() *Color { - if x != nil { - return x.RouteColor - } - return nil -} - -func (x *Route) GetRouteTextColor() *Color { - if x != nil { - return x.RouteTextColor - } - return nil -} - -func (x *Route) GetRouteSortOrder() int32 { - if x != nil { - return x.RouteSortOrder - } - return 0 -} - -func (x *Route) GetContinuousPickup() PickupAccess { - if x != nil { - return x.ContinuousPickup - } - return PickupAccess_PickupContinuous -} - -func (x *Route) GetContinuousDropOff() PickupAccess { - if x != nil { - return x.ContinuousDropOff - } - return PickupAccess_PickupContinuous -} - -func (x *Route) GetNetworkId() string { - if x != nil { - return x.NetworkId - } - return "" -} - -type Trip struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RouteId *Reference `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` - ServiceId *Reference `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` - TripId *EntityID `protobuf:"bytes,3,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` - TripHeadsign string `protobuf:"bytes,4,opt,name=trip_headsign,json=tripHeadsign,proto3" json:"trip_headsign,omitempty"` - TripShortName string `protobuf:"bytes,5,opt,name=trip_short_name,json=tripShortName,proto3" json:"trip_short_name,omitempty"` - DirectionId TripDirection `protobuf:"varint,6,opt,name=direction_id,json=directionId,proto3,enum=TripDirection" json:"direction_id,omitempty"` - BlockId string `protobuf:"bytes,7,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` - ShapeId *Reference `protobuf:"bytes,8,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` - WheelchairAccessible WheelchairAccess `protobuf:"varint,9,opt,name=wheelchair_accessible,json=wheelchairAccessible,proto3,enum=WheelchairAccess" json:"wheelchair_accessible,omitempty"` - BikesAllowed BikeAccess `protobuf:"varint,10,opt,name=bikes_allowed,json=bikesAllowed,proto3,enum=BikeAccess" json:"bikes_allowed,omitempty"` -} - -func (x *Trip) Reset() { - *x = Trip{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Trip) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Trip) ProtoMessage() {} - -func (x *Trip) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Trip.ProtoReflect.Descriptor instead. -func (*Trip) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{4} -} - -func (x *Trip) GetRouteId() *Reference { - if x != nil { - return x.RouteId - } - return nil -} - -func (x *Trip) GetServiceId() *Reference { - if x != nil { - return x.ServiceId - } - return nil -} - -func (x *Trip) GetTripId() *EntityID { - if x != nil { - return x.TripId - } - return nil -} - -func (x *Trip) GetTripHeadsign() string { - if x != nil { - return x.TripHeadsign - } - return "" -} - -func (x *Trip) GetTripShortName() string { - if x != nil { - return x.TripShortName - } - return "" -} - -func (x *Trip) GetDirectionId() TripDirection { - if x != nil { - return x.DirectionId - } - return TripDirection_TripDirectionOutbound -} - -func (x *Trip) GetBlockId() string { - if x != nil { - return x.BlockId - } - return "" -} - -func (x *Trip) GetShapeId() *Reference { - if x != nil { - return x.ShapeId - } - return nil -} - -func (x *Trip) GetWheelchairAccessible() WheelchairAccess { - if x != nil { - return x.WheelchairAccessible - } - return WheelchairAccess_WheelchairUnknown -} - -func (x *Trip) GetBikesAllowed() BikeAccess { - if x != nil { - return x.BikesAllowed - } - return BikeAccess_BikeUnknown -} - -type StopTime struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TripId *Reference `protobuf:"bytes,1,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` - ArrivalTime *Seconds `protobuf:"bytes,2,opt,name=arrival_time,json=arrivalTime,proto3" json:"arrival_time,omitempty"` - DepartureTime *Seconds `protobuf:"bytes,3,opt,name=departure_time,json=departureTime,proto3" json:"departure_time,omitempty"` - StopId *Reference `protobuf:"bytes,4,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` - StopSequence int32 `protobuf:"varint,5,opt,name=stop_sequence,json=stopSequence,proto3" json:"stop_sequence,omitempty"` - StopHeadsign string `protobuf:"bytes,6,opt,name=stop_headsign,json=stopHeadsign,proto3" json:"stop_headsign,omitempty"` - ContinuousPickup PickupAccess `protobuf:"varint,7,opt,name=continuous_pickup,json=continuousPickup,proto3,enum=PickupAccess" json:"continuous_pickup,omitempty"` - ContinuousDropOff PickupAccess `protobuf:"varint,8,opt,name=continuous_drop_off,json=continuousDropOff,proto3,enum=PickupAccess" json:"continuous_drop_off,omitempty"` - ShapeDistTraveled float64 `protobuf:"fixed64,9,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` - Timepoint StopTimepoint `protobuf:"varint,10,opt,name=timepoint,proto3,enum=StopTimepoint" json:"timepoint,omitempty"` - LocationId *Reference `protobuf:"bytes,11,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` - LocationGroupId *Reference `protobuf:"bytes,12,opt,name=location_group_id,json=locationGroupId,proto3" json:"location_group_id,omitempty"` - StartPickupDropOffWindow *Seconds `protobuf:"bytes,13,opt,name=start_pickup_drop_off_window,json=startPickupDropOffWindow,proto3" json:"start_pickup_drop_off_window,omitempty"` - EndPickupDropOffWindow *Seconds `protobuf:"bytes,14,opt,name=end_pickup_drop_off_window,json=endPickupDropOffWindow,proto3" json:"end_pickup_drop_off_window,omitempty"` - PickupType PickupAccess `protobuf:"varint,15,opt,name=pickup_type,json=pickupType,proto3,enum=PickupAccess" json:"pickup_type,omitempty"` - DropOffType PickupAccess `protobuf:"varint,16,opt,name=drop_off_type,json=dropOffType,proto3,enum=PickupAccess" json:"drop_off_type,omitempty"` - PickupBookingRuleId *Reference `protobuf:"bytes,17,opt,name=pickup_booking_rule_id,json=pickupBookingRuleId,proto3" json:"pickup_booking_rule_id,omitempty"` - DropOffBookingRuleId *Reference `protobuf:"bytes,18,opt,name=drop_off_booking_rule_id,json=dropOffBookingRuleId,proto3" json:"drop_off_booking_rule_id,omitempty"` -} - -func (x *StopTime) Reset() { - *x = StopTime{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StopTime) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StopTime) ProtoMessage() {} - -func (x *StopTime) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StopTime.ProtoReflect.Descriptor instead. -func (*StopTime) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{5} -} - -func (x *StopTime) GetTripId() *Reference { - if x != nil { - return x.TripId - } - return nil -} - -func (x *StopTime) GetArrivalTime() *Seconds { - if x != nil { - return x.ArrivalTime - } - return nil -} - -func (x *StopTime) GetDepartureTime() *Seconds { - if x != nil { - return x.DepartureTime - } - return nil -} - -func (x *StopTime) GetStopId() *Reference { - if x != nil { - return x.StopId - } - return nil -} - -func (x *StopTime) GetStopSequence() int32 { - if x != nil { - return x.StopSequence - } - return 0 -} - -func (x *StopTime) GetStopHeadsign() string { - if x != nil { - return x.StopHeadsign - } - return "" -} - -func (x *StopTime) GetContinuousPickup() PickupAccess { - if x != nil { - return x.ContinuousPickup - } - return PickupAccess_PickupContinuous -} - -func (x *StopTime) GetContinuousDropOff() PickupAccess { - if x != nil { - return x.ContinuousDropOff - } - return PickupAccess_PickupContinuous -} - -func (x *StopTime) GetShapeDistTraveled() float64 { - if x != nil { - return x.ShapeDistTraveled - } - return 0 -} - -func (x *StopTime) GetTimepoint() StopTimepoint { - if x != nil { - return x.Timepoint - } - return StopTimepoint_Approximate -} - -func (x *StopTime) GetLocationId() *Reference { - if x != nil { - return x.LocationId - } - return nil -} - -func (x *StopTime) GetLocationGroupId() *Reference { - if x != nil { - return x.LocationGroupId - } - return nil -} - -func (x *StopTime) GetStartPickupDropOffWindow() *Seconds { - if x != nil { - return x.StartPickupDropOffWindow - } - return nil -} - -func (x *StopTime) GetEndPickupDropOffWindow() *Seconds { - if x != nil { - return x.EndPickupDropOffWindow - } - return nil -} - -func (x *StopTime) GetPickupType() PickupAccess { - if x != nil { - return x.PickupType - } - return PickupAccess_PickupContinuous -} - -func (x *StopTime) GetDropOffType() PickupAccess { - if x != nil { - return x.DropOffType - } - return PickupAccess_PickupContinuous -} - -func (x *StopTime) GetPickupBookingRuleId() *Reference { - if x != nil { - return x.PickupBookingRuleId - } - return nil -} - -func (x *StopTime) GetDropOffBookingRuleId() *Reference { - if x != nil { - return x.DropOffBookingRuleId - } - return nil -} - -type Service struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ServiceId *EntityID `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` - StartDate *Date `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` - EndDate *Date `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` - Added []*Date `protobuf:"bytes,4,rep,name=added,proto3" json:"added,omitempty"` - Removed []*Date `protobuf:"bytes,5,rep,name=removed,proto3" json:"removed,omitempty"` - Monday bool `protobuf:"varint,6,opt,name=monday,proto3" json:"monday,omitempty"` - Tuesday bool `protobuf:"varint,7,opt,name=tuesday,proto3" json:"tuesday,omitempty"` - Wednesday bool `protobuf:"varint,8,opt,name=wednesday,proto3" json:"wednesday,omitempty"` - Thursday bool `protobuf:"varint,9,opt,name=thursday,proto3" json:"thursday,omitempty"` - Friday bool `protobuf:"varint,10,opt,name=friday,proto3" json:"friday,omitempty"` - Saturday bool `protobuf:"varint,11,opt,name=saturday,proto3" json:"saturday,omitempty"` - Sunday bool `protobuf:"varint,12,opt,name=sunday,proto3" json:"sunday,omitempty"` -} - -func (x *Service) Reset() { - *x = Service{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Service) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Service) ProtoMessage() {} - -func (x *Service) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Service.ProtoReflect.Descriptor instead. -func (*Service) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{6} -} - -func (x *Service) GetServiceId() *EntityID { - if x != nil { - return x.ServiceId - } - return nil -} - -func (x *Service) GetStartDate() *Date { - if x != nil { - return x.StartDate - } - return nil -} - -func (x *Service) GetEndDate() *Date { - if x != nil { - return x.EndDate - } - return nil -} - -func (x *Service) GetAdded() []*Date { - if x != nil { - return x.Added - } - return nil -} - -func (x *Service) GetRemoved() []*Date { - if x != nil { - return x.Removed - } - return nil -} - -func (x *Service) GetMonday() bool { - if x != nil { - return x.Monday - } - return false -} - -func (x *Service) GetTuesday() bool { - if x != nil { - return x.Tuesday - } - return false -} - -func (x *Service) GetWednesday() bool { - if x != nil { - return x.Wednesday - } - return false -} - -func (x *Service) GetThursday() bool { - if x != nil { - return x.Thursday - } - return false -} - -func (x *Service) GetFriday() bool { - if x != nil { - return x.Friday - } - return false -} - -func (x *Service) GetSaturday() bool { - if x != nil { - return x.Saturday - } - return false -} - -func (x *Service) GetSunday() bool { - if x != nil { - return x.Sunday - } - return false -} - -type Calendar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ServiceId *EntityID `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` - StartDate *Date `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` - EndDate *Date `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` - Monday bool `protobuf:"varint,4,opt,name=monday,proto3" json:"monday,omitempty"` - Tuesday bool `protobuf:"varint,5,opt,name=tuesday,proto3" json:"tuesday,omitempty"` - Wednesday bool `protobuf:"varint,6,opt,name=wednesday,proto3" json:"wednesday,omitempty"` - Thursday bool `protobuf:"varint,7,opt,name=thursday,proto3" json:"thursday,omitempty"` - Friday bool `protobuf:"varint,8,opt,name=friday,proto3" json:"friday,omitempty"` - Saturday bool `protobuf:"varint,9,opt,name=saturday,proto3" json:"saturday,omitempty"` - Sunday bool `protobuf:"varint,10,opt,name=sunday,proto3" json:"sunday,omitempty"` -} - -func (x *Calendar) Reset() { - *x = Calendar{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Calendar) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Calendar) ProtoMessage() {} - -func (x *Calendar) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Calendar.ProtoReflect.Descriptor instead. -func (*Calendar) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{7} -} - -func (x *Calendar) GetServiceId() *EntityID { - if x != nil { - return x.ServiceId - } - return nil -} - -func (x *Calendar) GetStartDate() *Date { - if x != nil { - return x.StartDate - } - return nil -} - -func (x *Calendar) GetEndDate() *Date { - if x != nil { - return x.EndDate - } - return nil -} - -func (x *Calendar) GetMonday() bool { - if x != nil { - return x.Monday - } - return false -} - -func (x *Calendar) GetTuesday() bool { - if x != nil { - return x.Tuesday - } - return false -} - -func (x *Calendar) GetWednesday() bool { - if x != nil { - return x.Wednesday - } - return false -} - -func (x *Calendar) GetThursday() bool { - if x != nil { - return x.Thursday - } - return false -} - -func (x *Calendar) GetFriday() bool { - if x != nil { - return x.Friday - } - return false -} - -func (x *Calendar) GetSaturday() bool { - if x != nil { - return x.Saturday - } - return false -} - -func (x *Calendar) GetSunday() bool { - if x != nil { - return x.Sunday - } - return false -} - -type CalendarDate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ServiceId *Reference `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` - Date *Date `protobuf:"bytes,2,opt,name=date,proto3" json:"date,omitempty"` - ExceptionType CalendarExceptionType `protobuf:"varint,3,opt,name=exception_type,json=exceptionType,proto3,enum=CalendarExceptionType" json:"exception_type,omitempty"` -} - -func (x *CalendarDate) Reset() { - *x = CalendarDate{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CalendarDate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CalendarDate) ProtoMessage() {} - -func (x *CalendarDate) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CalendarDate.ProtoReflect.Descriptor instead. -func (*CalendarDate) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{8} -} - -func (x *CalendarDate) GetServiceId() *Reference { - if x != nil { - return x.ServiceId - } - return nil -} - -func (x *CalendarDate) GetDate() *Date { - if x != nil { - return x.Date - } - return nil -} - -func (x *CalendarDate) GetExceptionType() CalendarExceptionType { - if x != nil { - return x.ExceptionType - } - return CalendarExceptionType_CalendarUnknown -} - -type FareAttribute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FareId *EntityID `protobuf:"bytes,1,opt,name=fare_id,json=fareId,proto3" json:"fare_id,omitempty"` - Price *Money `protobuf:"bytes,2,opt,name=price,proto3" json:"price,omitempty"` - CurrencyType *Currency `protobuf:"bytes,3,opt,name=currency_type,json=currencyType,proto3" json:"currency_type,omitempty"` - PaymentMethod PaymentMethod `protobuf:"varint,4,opt,name=payment_method,json=paymentMethod,proto3,enum=PaymentMethod" json:"payment_method,omitempty"` - Transfers FareAttributeTransferType `protobuf:"varint,5,opt,name=transfers,proto3,enum=FareAttributeTransferType" json:"transfers,omitempty"` - AgencyId *Reference `protobuf:"bytes,6,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` - TransferDuration int32 `protobuf:"varint,7,opt,name=transfer_duration,json=transferDuration,proto3" json:"transfer_duration,omitempty"` -} - -func (x *FareAttribute) Reset() { - *x = FareAttribute{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FareAttribute) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FareAttribute) ProtoMessage() {} - -func (x *FareAttribute) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FareAttribute.ProtoReflect.Descriptor instead. -func (*FareAttribute) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{9} -} - -func (x *FareAttribute) GetFareId() *EntityID { - if x != nil { - return x.FareId - } - return nil -} - -func (x *FareAttribute) GetPrice() *Money { - if x != nil { - return x.Price - } - return nil -} - -func (x *FareAttribute) GetCurrencyType() *Currency { - if x != nil { - return x.CurrencyType - } - return nil -} - -func (x *FareAttribute) GetPaymentMethod() PaymentMethod { - if x != nil { - return x.PaymentMethod - } - return PaymentMethod_PaymentMethodOnboard -} - -func (x *FareAttribute) GetTransfers() FareAttributeTransferType { - if x != nil { - return x.Transfers - } - return FareAttributeTransferType_FareAttributeTransferTypeDisallowed -} - -func (x *FareAttribute) GetAgencyId() *Reference { - if x != nil { - return x.AgencyId - } - return nil -} - -func (x *FareAttribute) GetTransferDuration() int32 { - if x != nil { - return x.TransferDuration - } - return 0 -} - -type FareRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FareId *EntityID `protobuf:"bytes,1,opt,name=fare_id,json=fareId,proto3" json:"fare_id,omitempty"` - RouteId *Reference `protobuf:"bytes,2,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` - OriginId *Reference `protobuf:"bytes,3,opt,name=origin_id,json=originId,proto3" json:"origin_id,omitempty"` - DestinationId *Reference `protobuf:"bytes,4,opt,name=destination_id,json=destinationId,proto3" json:"destination_id,omitempty"` - ContainsId *Reference `protobuf:"bytes,5,opt,name=contains_id,json=containsId,proto3" json:"contains_id,omitempty"` -} - -func (x *FareRule) Reset() { - *x = FareRule{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FareRule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FareRule) ProtoMessage() {} - -func (x *FareRule) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FareRule.ProtoReflect.Descriptor instead. -func (*FareRule) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{10} -} - -func (x *FareRule) GetFareId() *EntityID { - if x != nil { - return x.FareId - } - return nil -} - -func (x *FareRule) GetRouteId() *Reference { - if x != nil { - return x.RouteId - } - return nil -} - -func (x *FareRule) GetOriginId() *Reference { - if x != nil { - return x.OriginId - } - return nil -} - -func (x *FareRule) GetDestinationId() *Reference { - if x != nil { - return x.DestinationId - } - return nil -} - -func (x *FareRule) GetContainsId() *Reference { - if x != nil { - return x.ContainsId - } - return nil -} - -type Timeframe struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TimeframeGroupId *EntityID `protobuf:"bytes,1,opt,name=timeframe_group_id,json=timeframeGroupId,proto3" json:"timeframe_group_id,omitempty"` - StartTime *Seconds `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - EndTime *Seconds `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - ServiceId *Reference `protobuf:"bytes,4,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` -} - -func (x *Timeframe) Reset() { - *x = Timeframe{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Timeframe) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Timeframe) ProtoMessage() {} - -func (x *Timeframe) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Timeframe.ProtoReflect.Descriptor instead. -func (*Timeframe) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{11} -} - -func (x *Timeframe) GetTimeframeGroupId() *EntityID { - if x != nil { - return x.TimeframeGroupId - } - return nil -} - -func (x *Timeframe) GetStartTime() *Seconds { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *Timeframe) GetEndTime() *Seconds { - if x != nil { - return x.EndTime - } - return nil -} - -func (x *Timeframe) GetServiceId() *Reference { - if x != nil { - return x.ServiceId - } - return nil -} - -type FareMedia struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FareMediaId *EntityID `protobuf:"bytes,1,opt,name=fare_media_id,json=fareMediaId,proto3" json:"fare_media_id,omitempty"` - FareMediaName string `protobuf:"bytes,2,opt,name=fare_media_name,json=fareMediaName,proto3" json:"fare_media_name,omitempty"` - FareMediaType FareMediaType `protobuf:"varint,3,opt,name=fare_media_type,json=fareMediaType,proto3,enum=FareMediaType" json:"fare_media_type,omitempty"` -} - -func (x *FareMedia) Reset() { - *x = FareMedia{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FareMedia) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FareMedia) ProtoMessage() {} - -func (x *FareMedia) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FareMedia.ProtoReflect.Descriptor instead. -func (*FareMedia) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{12} -} - -func (x *FareMedia) GetFareMediaId() *EntityID { - if x != nil { - return x.FareMediaId - } - return nil -} - -func (x *FareMedia) GetFareMediaName() string { - if x != nil { - return x.FareMediaName - } - return "" -} - -func (x *FareMedia) GetFareMediaType() FareMediaType { - if x != nil { - return x.FareMediaType - } - return FareMediaType_FareMediaNone -} - -type FareProduct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FareProductId *EntityID `protobuf:"bytes,1,opt,name=fare_product_id,json=fareProductId,proto3" json:"fare_product_id,omitempty"` - FareProductName string `protobuf:"bytes,2,opt,name=fare_product_name,json=fareProductName,proto3" json:"fare_product_name,omitempty"` - FareMediaId *Reference `protobuf:"bytes,3,opt,name=fare_media_id,json=fareMediaId,proto3" json:"fare_media_id,omitempty"` - Amount *Money `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` - Currency *Currency `protobuf:"bytes,5,opt,name=currency,proto3" json:"currency,omitempty"` -} - -func (x *FareProduct) Reset() { - *x = FareProduct{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FareProduct) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FareProduct) ProtoMessage() {} - -func (x *FareProduct) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FareProduct.ProtoReflect.Descriptor instead. -func (*FareProduct) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{13} -} - -func (x *FareProduct) GetFareProductId() *EntityID { - if x != nil { - return x.FareProductId - } - return nil -} - -func (x *FareProduct) GetFareProductName() string { - if x != nil { - return x.FareProductName - } - return "" -} - -func (x *FareProduct) GetFareMediaId() *Reference { - if x != nil { - return x.FareMediaId - } - return nil -} - -func (x *FareProduct) GetAmount() *Money { - if x != nil { - return x.Amount - } - return nil -} - -func (x *FareProduct) GetCurrency() *Currency { - if x != nil { - return x.Currency - } - return nil -} - -type FareLegRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LegGroupId *EntityID `protobuf:"bytes,1,opt,name=leg_group_id,json=legGroupId,proto3" json:"leg_group_id,omitempty"` - NetworkId *Reference `protobuf:"bytes,2,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` - FromAreaId *Reference `protobuf:"bytes,3,opt,name=from_area_id,json=fromAreaId,proto3" json:"from_area_id,omitempty"` - ToAreaId *Reference `protobuf:"bytes,4,opt,name=to_area_id,json=toAreaId,proto3" json:"to_area_id,omitempty"` - FromTimeframeGroupId *Reference `protobuf:"bytes,5,opt,name=from_timeframe_group_id,json=fromTimeframeGroupId,proto3" json:"from_timeframe_group_id,omitempty"` - ToTimeframeGroupId *Reference `protobuf:"bytes,6,opt,name=to_timeframe_group_id,json=toTimeframeGroupId,proto3" json:"to_timeframe_group_id,omitempty"` - FareProductId *Reference `protobuf:"bytes,7,opt,name=fare_product_id,json=fareProductId,proto3" json:"fare_product_id,omitempty"` - RuleProirity int32 `protobuf:"varint,8,opt,name=rule_proirity,json=ruleProirity,proto3" json:"rule_proirity,omitempty"` -} - -func (x *FareLegRule) Reset() { - *x = FareLegRule{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FareLegRule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FareLegRule) ProtoMessage() {} - -func (x *FareLegRule) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FareLegRule.ProtoReflect.Descriptor instead. -func (*FareLegRule) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{14} -} - -func (x *FareLegRule) GetLegGroupId() *EntityID { - if x != nil { - return x.LegGroupId - } - return nil -} - -func (x *FareLegRule) GetNetworkId() *Reference { - if x != nil { - return x.NetworkId - } - return nil -} - -func (x *FareLegRule) GetFromAreaId() *Reference { - if x != nil { - return x.FromAreaId - } - return nil -} - -func (x *FareLegRule) GetToAreaId() *Reference { - if x != nil { - return x.ToAreaId - } - return nil -} - -func (x *FareLegRule) GetFromTimeframeGroupId() *Reference { - if x != nil { - return x.FromTimeframeGroupId - } - return nil -} - -func (x *FareLegRule) GetToTimeframeGroupId() *Reference { - if x != nil { - return x.ToTimeframeGroupId - } - return nil -} - -func (x *FareLegRule) GetFareProductId() *Reference { - if x != nil { - return x.FareProductId - } - return nil -} - -func (x *FareLegRule) GetRuleProirity() int32 { - if x != nil { - return x.RuleProirity - } - return 0 -} - -type FareTransferRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromLegGroupId *Reference `protobuf:"bytes,1,opt,name=from_leg_group_id,json=fromLegGroupId,proto3" json:"from_leg_group_id,omitempty"` - ToLegGroupId *Reference `protobuf:"bytes,2,opt,name=to_leg_group_id,json=toLegGroupId,proto3" json:"to_leg_group_id,omitempty"` - TransferCount *TransferCount `protobuf:"bytes,3,opt,name=transfer_count,json=transferCount,proto3" json:"transfer_count,omitempty"` - DurationLimitType DurationLimitType `protobuf:"varint,4,opt,name=duration_limit_type,json=durationLimitType,proto3,enum=DurationLimitType" json:"duration_limit_type,omitempty"` - FareTransferType FareTransferType `protobuf:"varint,5,opt,name=fare_transfer_type,json=fareTransferType,proto3,enum=FareTransferType" json:"fare_transfer_type,omitempty"` - FareProductId *Reference `protobuf:"bytes,6,opt,name=fare_product_id,json=fareProductId,proto3" json:"fare_product_id,omitempty"` -} - -func (x *FareTransferRule) Reset() { - *x = FareTransferRule{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FareTransferRule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FareTransferRule) ProtoMessage() {} - -func (x *FareTransferRule) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FareTransferRule.ProtoReflect.Descriptor instead. -func (*FareTransferRule) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{15} -} - -func (x *FareTransferRule) GetFromLegGroupId() *Reference { - if x != nil { - return x.FromLegGroupId - } - return nil -} - -func (x *FareTransferRule) GetToLegGroupId() *Reference { - if x != nil { - return x.ToLegGroupId - } - return nil -} - -func (x *FareTransferRule) GetTransferCount() *TransferCount { - if x != nil { - return x.TransferCount - } - return nil -} - -func (x *FareTransferRule) GetDurationLimitType() DurationLimitType { - if x != nil { - return x.DurationLimitType - } - return DurationLimitType_DurationLimit0 -} - -func (x *FareTransferRule) GetFareTransferType() FareTransferType { - if x != nil { - return x.FareTransferType - } - return FareTransferType_FareTransfer0 -} - -func (x *FareTransferRule) GetFareProductId() *Reference { - if x != nil { - return x.FareProductId - } - return nil -} - -type Area struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AreaId *EntityID `protobuf:"bytes,1,opt,name=area_id,json=areaId,proto3" json:"area_id,omitempty"` - AreaName string `protobuf:"bytes,2,opt,name=area_name,json=areaName,proto3" json:"area_name,omitempty"` -} - -func (x *Area) Reset() { - *x = Area{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Area) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Area) ProtoMessage() {} - -func (x *Area) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Area.ProtoReflect.Descriptor instead. -func (*Area) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{16} -} - -func (x *Area) GetAreaId() *EntityID { - if x != nil { - return x.AreaId - } - return nil -} - -func (x *Area) GetAreaName() string { - if x != nil { - return x.AreaName - } - return "" -} - -type StopArea struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AreaId *Reference `protobuf:"bytes,1,opt,name=area_id,json=areaId,proto3" json:"area_id,omitempty"` - StopId *Reference `protobuf:"bytes,2,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` -} - -func (x *StopArea) Reset() { - *x = StopArea{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StopArea) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StopArea) ProtoMessage() {} - -func (x *StopArea) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StopArea.ProtoReflect.Descriptor instead. -func (*StopArea) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{17} -} - -func (x *StopArea) GetAreaId() *Reference { - if x != nil { - return x.AreaId - } - return nil -} - -func (x *StopArea) GetStopId() *Reference { - if x != nil { - return x.StopId - } - return nil -} - -type Network struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NetworkId *EntityID `protobuf:"bytes,1,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` - NetworkName string `protobuf:"bytes,2,opt,name=network_name,json=networkName,proto3" json:"network_name,omitempty"` -} - -func (x *Network) Reset() { - *x = Network{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Network) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Network) ProtoMessage() {} - -func (x *Network) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Network.ProtoReflect.Descriptor instead. -func (*Network) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{18} -} - -func (x *Network) GetNetworkId() *EntityID { - if x != nil { - return x.NetworkId - } - return nil -} - -func (x *Network) GetNetworkName() string { - if x != nil { - return x.NetworkName - } - return "" -} - -type RouteNetwork struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NetworkId *Reference `protobuf:"bytes,1,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` - RouteId *Reference `protobuf:"bytes,2,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` -} - -func (x *RouteNetwork) Reset() { - *x = RouteNetwork{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RouteNetwork) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RouteNetwork) ProtoMessage() {} - -func (x *RouteNetwork) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RouteNetwork.ProtoReflect.Descriptor instead. -func (*RouteNetwork) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{19} -} - -func (x *RouteNetwork) GetNetworkId() *Reference { - if x != nil { - return x.NetworkId - } - return nil -} - -func (x *RouteNetwork) GetRouteId() *Reference { - if x != nil { - return x.RouteId - } - return nil -} - -type Frequency struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TripId *Reference `protobuf:"bytes,1,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` - StartTime *Seconds `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - EndTime *Seconds `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - HeadwaySecs int32 `protobuf:"varint,4,opt,name=headway_secs,json=headwaySecs,proto3" json:"headway_secs,omitempty"` - ExactTime FrequencyExactTime `protobuf:"varint,5,opt,name=exact_time,json=exactTime,proto3,enum=FrequencyExactTime" json:"exact_time,omitempty"` -} - -func (x *Frequency) Reset() { - *x = Frequency{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Frequency) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Frequency) ProtoMessage() {} - -func (x *Frequency) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Frequency.ProtoReflect.Descriptor instead. -func (*Frequency) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{20} -} - -func (x *Frequency) GetTripId() *Reference { - if x != nil { - return x.TripId - } - return nil -} - -func (x *Frequency) GetStartTime() *Seconds { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *Frequency) GetEndTime() *Seconds { - if x != nil { - return x.EndTime - } - return nil -} - -func (x *Frequency) GetHeadwaySecs() int32 { - if x != nil { - return x.HeadwaySecs - } - return 0 -} - -func (x *Frequency) GetExactTime() FrequencyExactTime { - if x != nil { - return x.ExactTime - } - return FrequencyExactTime_FrequencyExactTimeFrequency -} - -type Transfer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromStopId *Reference `protobuf:"bytes,1,opt,name=from_stop_id,json=fromStopId,proto3" json:"from_stop_id,omitempty"` - ToStopId *Reference `protobuf:"bytes,2,opt,name=to_stop_id,json=toStopId,proto3" json:"to_stop_id,omitempty"` - FromRouteId *Reference `protobuf:"bytes,3,opt,name=from_route_id,json=fromRouteId,proto3" json:"from_route_id,omitempty"` - ToRouteId *Reference `protobuf:"bytes,4,opt,name=to_route_id,json=toRouteId,proto3" json:"to_route_id,omitempty"` - FromTripId *Reference `protobuf:"bytes,5,opt,name=from_trip_id,json=fromTripId,proto3" json:"from_trip_id,omitempty"` - ToTripId *Reference `protobuf:"bytes,6,opt,name=to_trip_id,json=toTripId,proto3" json:"to_trip_id,omitempty"` - TransferType TransferType `protobuf:"varint,7,opt,name=transfer_type,json=transferType,proto3,enum=TransferType" json:"transfer_type,omitempty"` - MinTransferTime int32 `protobuf:"varint,8,opt,name=min_transfer_time,json=minTransferTime,proto3" json:"min_transfer_time,omitempty"` -} - -func (x *Transfer) Reset() { - *x = Transfer{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Transfer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Transfer) ProtoMessage() {} - -func (x *Transfer) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Transfer.ProtoReflect.Descriptor instead. -func (*Transfer) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{21} -} - -func (x *Transfer) GetFromStopId() *Reference { - if x != nil { - return x.FromStopId - } - return nil -} - -func (x *Transfer) GetToStopId() *Reference { - if x != nil { - return x.ToStopId - } - return nil -} - -func (x *Transfer) GetFromRouteId() *Reference { - if x != nil { - return x.FromRouteId - } - return nil -} - -func (x *Transfer) GetToRouteId() *Reference { - if x != nil { - return x.ToRouteId - } - return nil -} - -func (x *Transfer) GetFromTripId() *Reference { - if x != nil { - return x.FromTripId - } - return nil -} - -func (x *Transfer) GetToTripId() *Reference { - if x != nil { - return x.ToTripId - } - return nil -} - -func (x *Transfer) GetTransferType() TransferType { - if x != nil { - return x.TransferType - } - return TransferType_TransferTypeRecommended -} - -func (x *Transfer) GetMinTransferTime() int32 { - if x != nil { - return x.MinTransferTime - } - return 0 -} - -type Pathway struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PathwayId *EntityID `protobuf:"bytes,1,opt,name=pathway_id,json=pathwayId,proto3" json:"pathway_id,omitempty"` - FromStopId *Reference `protobuf:"bytes,2,opt,name=from_stop_id,json=fromStopId,proto3" json:"from_stop_id,omitempty"` - ToStopId *Reference `protobuf:"bytes,3,opt,name=to_stop_id,json=toStopId,proto3" json:"to_stop_id,omitempty"` - PathwayMode PathwayMode `protobuf:"varint,4,opt,name=pathway_mode,json=pathwayMode,proto3,enum=PathwayMode" json:"pathway_mode,omitempty"` - IsBidirectional PathwayDirectionality `protobuf:"varint,5,opt,name=is_bidirectional,json=isBidirectional,proto3,enum=PathwayDirectionality" json:"is_bidirectional,omitempty"` - Length float64 `protobuf:"fixed64,6,opt,name=length,proto3" json:"length,omitempty"` - TraversalTime int32 `protobuf:"varint,7,opt,name=traversal_time,json=traversalTime,proto3" json:"traversal_time,omitempty"` - StairCount int32 `protobuf:"varint,8,opt,name=stair_count,json=stairCount,proto3" json:"stair_count,omitempty"` - MaxSlope float64 `protobuf:"fixed64,9,opt,name=max_slope,json=maxSlope,proto3" json:"max_slope,omitempty"` - MinWidth float64 `protobuf:"fixed64,10,opt,name=min_width,json=minWidth,proto3" json:"min_width,omitempty"` - SignpostedAs string `protobuf:"bytes,11,opt,name=signposted_as,json=signpostedAs,proto3" json:"signposted_as,omitempty"` - ReverseSignpostedAs string `protobuf:"bytes,12,opt,name=reverse_signposted_as,json=reverseSignpostedAs,proto3" json:"reverse_signposted_as,omitempty"` -} - -func (x *Pathway) Reset() { - *x = Pathway{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Pathway) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Pathway) ProtoMessage() {} - -func (x *Pathway) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Pathway.ProtoReflect.Descriptor instead. -func (*Pathway) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{22} -} - -func (x *Pathway) GetPathwayId() *EntityID { - if x != nil { - return x.PathwayId - } - return nil -} - -func (x *Pathway) GetFromStopId() *Reference { - if x != nil { - return x.FromStopId - } - return nil -} - -func (x *Pathway) GetToStopId() *Reference { - if x != nil { - return x.ToStopId - } - return nil -} - -func (x *Pathway) GetPathwayMode() PathwayMode { - if x != nil { - return x.PathwayMode - } - return PathwayMode_PathwayModeUnknown -} - -func (x *Pathway) GetIsBidirectional() PathwayDirectionality { - if x != nil { - return x.IsBidirectional - } - return PathwayDirectionality_PathwayUnidirectional -} - -func (x *Pathway) GetLength() float64 { - if x != nil { - return x.Length - } - return 0 -} - -func (x *Pathway) GetTraversalTime() int32 { - if x != nil { - return x.TraversalTime - } - return 0 -} - -func (x *Pathway) GetStairCount() int32 { - if x != nil { - return x.StairCount - } - return 0 -} - -func (x *Pathway) GetMaxSlope() float64 { - if x != nil { - return x.MaxSlope - } - return 0 -} - -func (x *Pathway) GetMinWidth() float64 { - if x != nil { - return x.MinWidth - } - return 0 -} - -func (x *Pathway) GetSignpostedAs() string { - if x != nil { - return x.SignpostedAs - } - return "" -} - -func (x *Pathway) GetReverseSignpostedAs() string { - if x != nil { - return x.ReverseSignpostedAs - } - return "" -} - -type Level struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LevelId *EntityID `protobuf:"bytes,1,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` - LevelIndex float64 `protobuf:"fixed64,2,opt,name=level_index,json=levelIndex,proto3" json:"level_index,omitempty"` - LevelName string `protobuf:"bytes,3,opt,name=level_name,json=levelName,proto3" json:"level_name,omitempty"` -} - -func (x *Level) Reset() { - *x = Level{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Level) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Level) ProtoMessage() {} - -func (x *Level) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Level.ProtoReflect.Descriptor instead. -func (*Level) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{23} -} - -func (x *Level) GetLevelId() *EntityID { - if x != nil { - return x.LevelId - } - return nil -} - -func (x *Level) GetLevelIndex() float64 { - if x != nil { - return x.LevelIndex - } - return 0 -} - -func (x *Level) GetLevelName() string { - if x != nil { - return x.LevelName - } - return "" -} - -type LocationGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LocationGroupId *EntityID `protobuf:"bytes,1,opt,name=location_group_id,json=locationGroupId,proto3" json:"location_group_id,omitempty"` - LocationGroupName string `protobuf:"bytes,2,opt,name=location_group_name,json=locationGroupName,proto3" json:"location_group_name,omitempty"` -} - -func (x *LocationGroup) Reset() { - *x = LocationGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LocationGroup) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LocationGroup) ProtoMessage() {} - -func (x *LocationGroup) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LocationGroup.ProtoReflect.Descriptor instead. -func (*LocationGroup) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{24} -} - -func (x *LocationGroup) GetLocationGroupId() *EntityID { - if x != nil { - return x.LocationGroupId - } - return nil -} - -func (x *LocationGroup) GetLocationGroupName() string { - if x != nil { - return x.LocationGroupName - } - return "" -} - -type LocationGroupStop struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LocationGroupId *Reference `protobuf:"bytes,1,opt,name=location_group_id,json=locationGroupId,proto3" json:"location_group_id,omitempty"` - StopId *Reference `protobuf:"bytes,2,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` -} - -func (x *LocationGroupStop) Reset() { - *x = LocationGroupStop{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LocationGroupStop) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LocationGroupStop) ProtoMessage() {} - -func (x *LocationGroupStop) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LocationGroupStop.ProtoReflect.Descriptor instead. -func (*LocationGroupStop) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{25} -} - -func (x *LocationGroupStop) GetLocationGroupId() *Reference { - if x != nil { - return x.LocationGroupId - } - return nil -} - -func (x *LocationGroupStop) GetStopId() *Reference { - if x != nil { - return x.StopId - } - return nil -} - -type BookingRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BookingRuleId *EntityID `protobuf:"bytes,1,opt,name=booking_rule_id,json=bookingRuleId,proto3" json:"booking_rule_id,omitempty"` - BookingType BookingRuleType `protobuf:"varint,2,opt,name=booking_type,json=bookingType,proto3,enum=BookingRuleType" json:"booking_type,omitempty"` - PriorNoticeDurationMin int32 `protobuf:"varint,3,opt,name=prior_notice_duration_min,json=priorNoticeDurationMin,proto3" json:"prior_notice_duration_min,omitempty"` - PriorNoticeDurationMax int32 `protobuf:"varint,4,opt,name=prior_notice_duration_max,json=priorNoticeDurationMax,proto3" json:"prior_notice_duration_max,omitempty"` - PriorNoticeLastDay int32 `protobuf:"varint,5,opt,name=prior_notice_last_day,json=priorNoticeLastDay,proto3" json:"prior_notice_last_day,omitempty"` - PriorNoticeLastTime *Seconds `protobuf:"bytes,6,opt,name=prior_notice_last_time,json=priorNoticeLastTime,proto3" json:"prior_notice_last_time,omitempty"` - PriorNoticeStartDay int32 `protobuf:"varint,7,opt,name=prior_notice_start_day,json=priorNoticeStartDay,proto3" json:"prior_notice_start_day,omitempty"` - PriorNoticeStartTime *Seconds `protobuf:"bytes,8,opt,name=prior_notice_start_time,json=priorNoticeStartTime,proto3" json:"prior_notice_start_time,omitempty"` - PriorNoticeServiceId *Reference `protobuf:"bytes,9,opt,name=prior_notice_service_id,json=priorNoticeServiceId,proto3" json:"prior_notice_service_id,omitempty"` - Message string `protobuf:"bytes,10,opt,name=message,proto3" json:"message,omitempty"` - PickupMessage string `protobuf:"bytes,11,opt,name=pickup_message,json=pickupMessage,proto3" json:"pickup_message,omitempty"` - DropOffMessage string `protobuf:"bytes,12,opt,name=drop_off_message,json=dropOffMessage,proto3" json:"drop_off_message,omitempty"` - PhoneNumber string `protobuf:"bytes,13,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` - InfoUrl *Url `protobuf:"bytes,14,opt,name=info_url,json=infoUrl,proto3" json:"info_url,omitempty"` - BookingUrl *Url `protobuf:"bytes,15,opt,name=booking_url,json=bookingUrl,proto3" json:"booking_url,omitempty"` -} - -func (x *BookingRule) Reset() { - *x = BookingRule{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BookingRule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BookingRule) ProtoMessage() {} - -func (x *BookingRule) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BookingRule.ProtoReflect.Descriptor instead. -func (*BookingRule) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{26} -} - -func (x *BookingRule) GetBookingRuleId() *EntityID { - if x != nil { - return x.BookingRuleId - } - return nil -} - -func (x *BookingRule) GetBookingType() BookingRuleType { - if x != nil { - return x.BookingType - } - return BookingRuleType_BookingRuleTypeRealtime -} - -func (x *BookingRule) GetPriorNoticeDurationMin() int32 { - if x != nil { - return x.PriorNoticeDurationMin - } - return 0 -} - -func (x *BookingRule) GetPriorNoticeDurationMax() int32 { - if x != nil { - return x.PriorNoticeDurationMax - } - return 0 -} - -func (x *BookingRule) GetPriorNoticeLastDay() int32 { - if x != nil { - return x.PriorNoticeLastDay - } - return 0 -} - -func (x *BookingRule) GetPriorNoticeLastTime() *Seconds { - if x != nil { - return x.PriorNoticeLastTime - } - return nil -} - -func (x *BookingRule) GetPriorNoticeStartDay() int32 { - if x != nil { - return x.PriorNoticeStartDay - } - return 0 -} - -func (x *BookingRule) GetPriorNoticeStartTime() *Seconds { - if x != nil { - return x.PriorNoticeStartTime - } - return nil -} - -func (x *BookingRule) GetPriorNoticeServiceId() *Reference { - if x != nil { - return x.PriorNoticeServiceId - } - return nil -} - -func (x *BookingRule) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *BookingRule) GetPickupMessage() string { - if x != nil { - return x.PickupMessage - } - return "" -} - -func (x *BookingRule) GetDropOffMessage() string { - if x != nil { - return x.DropOffMessage - } - return "" -} - -func (x *BookingRule) GetPhoneNumber() string { - if x != nil { - return x.PhoneNumber - } - return "" -} - -func (x *BookingRule) GetInfoUrl() *Url { - if x != nil { - return x.InfoUrl - } - return nil -} - -func (x *BookingRule) GetBookingUrl() *Url { - if x != nil { - return x.BookingUrl - } - return nil -} - -type Translation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` // a string enum, not supported in protobuf - FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - Language *Language `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"` - Translation string `protobuf:"bytes,4,opt,name=translation,proto3" json:"translation,omitempty"` - RecordId string `protobuf:"bytes,5,opt,name=record_id,json=recordId,proto3" json:"record_id,omitempty"` // technically a reference, but must be resolved manually - RecordSubId string `protobuf:"bytes,6,opt,name=record_sub_id,json=recordSubId,proto3" json:"record_sub_id,omitempty"` - FieldValue string `protobuf:"bytes,7,opt,name=field_value,json=fieldValue,proto3" json:"field_value,omitempty"` -} - -func (x *Translation) Reset() { - *x = Translation{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Translation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Translation) ProtoMessage() {} - -func (x *Translation) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Translation.ProtoReflect.Descriptor instead. -func (*Translation) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{27} -} - -func (x *Translation) GetTableName() string { - if x != nil { - return x.TableName - } - return "" -} - -func (x *Translation) GetFieldName() string { - if x != nil { - return x.FieldName - } - return "" -} - -func (x *Translation) GetLanguage() *Language { - if x != nil { - return x.Language - } - return nil -} - -func (x *Translation) GetTranslation() string { - if x != nil { - return x.Translation - } - return "" -} - -func (x *Translation) GetRecordId() string { - if x != nil { - return x.RecordId - } - return "" -} - -func (x *Translation) GetRecordSubId() string { - if x != nil { - return x.RecordSubId - } - return "" -} - -func (x *Translation) GetFieldValue() string { - if x != nil { - return x.FieldValue - } - return "" -} - -type FeedInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FeedPublisherName string `protobuf:"bytes,1,opt,name=feed_publisher_name,json=feedPublisherName,proto3" json:"feed_publisher_name,omitempty"` - FeedPublisherUrl *Url `protobuf:"bytes,2,opt,name=feed_publisher_url,json=feedPublisherUrl,proto3" json:"feed_publisher_url,omitempty"` - FeedLang *Language `protobuf:"bytes,3,opt,name=feed_lang,json=feedLang,proto3" json:"feed_lang,omitempty"` - DefaultLang *Language `protobuf:"bytes,4,opt,name=default_lang,json=defaultLang,proto3" json:"default_lang,omitempty"` - FeedStartDate *Date `protobuf:"bytes,5,opt,name=feed_start_date,json=feedStartDate,proto3" json:"feed_start_date,omitempty"` - FeedEndDate *Date `protobuf:"bytes,6,opt,name=feed_end_date,json=feedEndDate,proto3" json:"feed_end_date,omitempty"` - FeedContactEmail *Email `protobuf:"bytes,7,opt,name=feed_contact_email,json=feedContactEmail,proto3" json:"feed_contact_email,omitempty"` - FeedContactUrl *Url `protobuf:"bytes,8,opt,name=feed_contact_url,json=feedContactUrl,proto3" json:"feed_contact_url,omitempty"` -} - -func (x *FeedInfo) Reset() { - *x = FeedInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FeedInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FeedInfo) ProtoMessage() {} - -func (x *FeedInfo) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FeedInfo.ProtoReflect.Descriptor instead. -func (*FeedInfo) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{28} -} - -func (x *FeedInfo) GetFeedPublisherName() string { - if x != nil { - return x.FeedPublisherName - } - return "" -} - -func (x *FeedInfo) GetFeedPublisherUrl() *Url { - if x != nil { - return x.FeedPublisherUrl - } - return nil -} - -func (x *FeedInfo) GetFeedLang() *Language { - if x != nil { - return x.FeedLang - } - return nil -} - -func (x *FeedInfo) GetDefaultLang() *Language { - if x != nil { - return x.DefaultLang - } - return nil -} - -func (x *FeedInfo) GetFeedStartDate() *Date { - if x != nil { - return x.FeedStartDate - } - return nil -} - -func (x *FeedInfo) GetFeedEndDate() *Date { - if x != nil { - return x.FeedEndDate - } - return nil -} - -func (x *FeedInfo) GetFeedContactEmail() *Email { - if x != nil { - return x.FeedContactEmail - } - return nil -} - -func (x *FeedInfo) GetFeedContactUrl() *Url { - if x != nil { - return x.FeedContactUrl - } - return nil -} - -type Attribution struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Attribution) Reset() { - *x = Attribution{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Attribution) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Attribution) ProtoMessage() {} - -func (x *Attribution) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Attribution.ProtoReflect.Descriptor instead. -func (*Attribution) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{29} -} - -type ShapePoint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` - ShapePtLat float64 `protobuf:"fixed64,2,opt,name=shape_pt_lat,json=shapePtLat,proto3" json:"shape_pt_lat,omitempty"` - ShapePtLon float64 `protobuf:"fixed64,3,opt,name=shape_pt_lon,json=shapePtLon,proto3" json:"shape_pt_lon,omitempty"` - ShapePtSequence int32 `protobuf:"varint,4,opt,name=shape_pt_sequence,json=shapePtSequence,proto3" json:"shape_pt_sequence,omitempty"` - ShapeDistTraveled float64 `protobuf:"fixed64,5,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` -} - -func (x *ShapePoint) Reset() { - *x = ShapePoint{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ShapePoint) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ShapePoint) ProtoMessage() {} - -func (x *ShapePoint) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ShapePoint.ProtoReflect.Descriptor instead. -func (*ShapePoint) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{30} -} - -func (x *ShapePoint) GetShapeId() *EntityID { - if x != nil { - return x.ShapeId - } - return nil -} - -func (x *ShapePoint) GetShapePtLat() float64 { - if x != nil { - return x.ShapePtLat - } - return 0 -} - -func (x *ShapePoint) GetShapePtLon() float64 { - if x != nil { - return x.ShapePtLon - } - return 0 -} - -func (x *ShapePoint) GetShapePtSequence() int32 { - if x != nil { - return x.ShapePtSequence - } - return 0 -} - -func (x *ShapePoint) GetShapeDistTraveled() float64 { - if x != nil { - return x.ShapeDistTraveled - } - return 0 -} - -type Shape struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ShapeId *EntityID `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` - Shape *LineString `protobuf:"bytes,2,opt,name=shape,proto3" json:"shape,omitempty"` -} - -func (x *Shape) Reset() { - *x = Shape{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Shape) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Shape) ProtoMessage() {} - -func (x *Shape) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Shape.ProtoReflect.Descriptor instead. -func (*Shape) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{31} -} - -func (x *Shape) GetShapeId() *EntityID { - if x != nil { - return x.ShapeId - } - return nil -} - -func (x *Shape) GetShape() *LineString { - if x != nil { - return x.Shape - } - return nil -} - -type Point struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Lon float64 `protobuf:"fixed64,1,opt,name=lon,proto3" json:"lon,omitempty"` - Lat float64 `protobuf:"fixed64,2,opt,name=lat,proto3" json:"lat,omitempty"` -} - -func (x *Point) Reset() { - *x = Point{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Point) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Point) ProtoMessage() {} - -func (x *Point) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Point.ProtoReflect.Descriptor instead. -func (*Point) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{32} -} - -func (x *Point) GetLon() float64 { - if x != nil { - return x.Lon - } - return 0 -} - -func (x *Point) GetLat() float64 { - if x != nil { - return x.Lat - } - return 0 -} - -type LineString struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Stride uint32 `protobuf:"varint,1,opt,name=stride,proto3" json:"stride,omitempty"` - Coordinates []float64 `protobuf:"fixed64,2,rep,packed,name=coordinates,proto3" json:"coordinates,omitempty"` -} - -func (x *LineString) Reset() { - *x = LineString{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LineString) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LineString) ProtoMessage() {} - -func (x *LineString) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LineString.ProtoReflect.Descriptor instead. -func (*LineString) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{33} -} - -func (x *LineString) GetStride() uint32 { - if x != nil { - return x.Stride - } - return 0 -} - -func (x *LineString) GetCoordinates() []float64 { - if x != nil { - return x.Coordinates - } - return nil -} - -type Date struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Year int32 `protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"` - Month int32 `protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"` - Day int32 `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"` -} - -func (x *Date) Reset() { - *x = Date{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Date) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Date) ProtoMessage() {} - -func (x *Date) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Date.ProtoReflect.Descriptor instead. -func (*Date) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{34} -} - -func (x *Date) GetYear() int32 { - if x != nil { - return x.Year - } - return 0 -} - -func (x *Date) GetMonth() int32 { - if x != nil { - return x.Month - } - return 0 -} - -func (x *Date) GetDay() int32 { - if x != nil { - return x.Day - } - return 0 -} - -type Time struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val int64 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Time) Reset() { - *x = Time{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Time) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Time) ProtoMessage() {} - -func (x *Time) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Time.ProtoReflect.Descriptor instead. -func (*Time) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{35} -} - -func (x *Time) GetVal() int64 { - if x != nil { - return x.Val - } - return 0 -} - -type Seconds struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val int64 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Seconds) Reset() { - *x = Seconds{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Seconds) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Seconds) ProtoMessage() {} - -func (x *Seconds) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Seconds.ProtoReflect.Descriptor instead. -func (*Seconds) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{36} -} - -func (x *Seconds) GetVal() int64 { - if x != nil { - return x.Val - } - return 0 -} - -type EntityID struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *EntityID) Reset() { - *x = EntityID{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EntityID) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EntityID) ProtoMessage() {} - -func (x *EntityID) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EntityID.ProtoReflect.Descriptor instead. -func (*EntityID) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{37} -} - -func (x *EntityID) GetVal() string { - if x != nil { - return x.Val - } - return "" -} - -type Timezone struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Timezone) Reset() { - *x = Timezone{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Timezone) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Timezone) ProtoMessage() {} - -func (x *Timezone) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Timezone.ProtoReflect.Descriptor instead. -func (*Timezone) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{38} -} - -func (x *Timezone) GetVal() string { - if x != nil { - return x.Val - } - return "" -} - -type Reference struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Reference) Reset() { - *x = Reference{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Reference) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Reference) ProtoMessage() {} - -func (x *Reference) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Reference.ProtoReflect.Descriptor instead. -func (*Reference) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{39} -} - -func (x *Reference) GetVal() string { - if x != nil { - return x.Val - } - return "" -} - -type Url struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Url) Reset() { - *x = Url{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Url) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Url) ProtoMessage() {} - -func (x *Url) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Url.ProtoReflect.Descriptor instead. -func (*Url) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{40} -} - -func (x *Url) GetVal() string { - if x != nil { - return x.Val - } - return "" -} - -type Email struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Email) Reset() { - *x = Email{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Email) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Email) ProtoMessage() {} - -func (x *Email) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Email.ProtoReflect.Descriptor instead. -func (*Email) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{41} -} - -func (x *Email) GetVal() string { - if x != nil { - return x.Val - } - return "" -} - -type Color struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Color) Reset() { - *x = Color{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Color) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Color) ProtoMessage() {} - -func (x *Color) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Color.ProtoReflect.Descriptor instead. -func (*Color) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{42} -} - -func (x *Color) GetVal() string { - if x != nil { - return x.Val - } - return "" -} - -type Money struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val float64 `protobuf:"fixed64,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Money) Reset() { - *x = Money{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Money) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Money) ProtoMessage() {} - -func (x *Money) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Money.ProtoReflect.Descriptor instead. -func (*Money) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{43} -} - -func (x *Money) GetVal() float64 { - if x != nil { - return x.Val - } - return 0 -} - -type Currency struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Currency) Reset() { - *x = Currency{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Currency) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Currency) ProtoMessage() {} - -func (x *Currency) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Currency.ProtoReflect.Descriptor instead. -func (*Currency) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{44} -} - -func (x *Currency) GetVal() string { - if x != nil { - return x.Val - } - return "" -} - -type Language struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` -} - -func (x *Language) Reset() { - *x = Language{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Language) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Language) ProtoMessage() {} - -func (x *Language) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Language.ProtoReflect.Descriptor instead. -func (*Language) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{45} -} - -func (x *Language) GetVal() string { - if x != nil { - return x.Val - } - return "" -} - -// This must be a message so we can check for nil -// "0" and "" have different semantics in GTFS -type FareAttributeTransfer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TransferType FareAttributeTransferType `protobuf:"varint,1,opt,name=transfer_type,json=transferType,proto3,enum=FareAttributeTransferType" json:"transfer_type,omitempty"` -} - -func (x *FareAttributeTransfer) Reset() { - *x = FareAttributeTransfer{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FareAttributeTransfer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FareAttributeTransfer) ProtoMessage() {} - -func (x *FareAttributeTransfer) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FareAttributeTransfer.ProtoReflect.Descriptor instead. -func (*FareAttributeTransfer) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{46} -} - -func (x *FareAttributeTransfer) GetTransferType() FareAttributeTransferType { - if x != nil { - return x.TransferType - } - return FareAttributeTransferType_FareAttributeTransferTypeDisallowed -} - -// "0" and "" have different semantics -type TransferCount struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TransferCount int32 `protobuf:"varint,1,opt,name=transfer_count,json=transferCount,proto3" json:"transfer_count,omitempty"` -} - -func (x *TransferCount) Reset() { - *x = TransferCount{} - if protoimpl.UnsafeEnabled { - mi := &file_gtfs_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TransferCount) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TransferCount) ProtoMessage() {} - -func (x *TransferCount) ProtoReflect() protoreflect.Message { - mi := &file_gtfs_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TransferCount.ProtoReflect.Descriptor instead. -func (*TransferCount) Descriptor() ([]byte, []int) { - return file_gtfs_proto_rawDescGZIP(), []int{47} -} - -func (x *TransferCount) GetTransferCount() int32 { - if x != nil { - return x.TransferCount - } - return 0 -} - -var File_gtfs_proto protoreflect.FileDescriptor - -var file_gtfs_proto_rawDesc = []byte{ - 0x0a, 0x0a, 0x67, 0x74, 0x66, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xeb, 0x01, 0x0a, - 0x0a, 0x46, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x06, 0x61, - 0x67, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x41, 0x67, - 0x65, 0x6e, 0x63, 0x79, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x04, - 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x53, 0x74, 0x6f, - 0x70, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x05, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x72, 0x69, 0x70, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x52, 0x04, 0x74, 0x72, 0x69, 0x70, - 0x12, 0x26, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x08, - 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x53, 0x68, 0x61, 0x70, 0x65, 0x52, - 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xd2, 0x02, 0x0a, 0x06, 0x41, - 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x26, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x49, 0x44, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, - 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, - 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, - 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x54, - 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, - 0x79, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4c, - 0x61, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x68, - 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, - 0x79, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x72, - 0x65, 0x55, 0x72, 0x6c, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, - 0xc0, 0x04, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x73, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, - 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, - 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x74, 0x73, 0x5f, 0x73, 0x74, - 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, - 0x74, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, - 0x6f, 0x70, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x74, 0x6f, 0x70, 0x44, 0x65, 0x73, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, - 0x6c, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4c, - 0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x6f, 0x6e, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x6e, 0x12, 0x17, 0x0a, - 0x07, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x07, - 0x73, 0x74, 0x6f, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x36, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, - 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x31, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, - 0x6f, 0x6e, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, - 0x6e, 0x65, 0x12, 0x42, 0x0a, 0x13, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, - 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x52, 0x12, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x42, 0x6f, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x23, 0x0a, - 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0xb4, 0x04, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x08, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, - 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x49, 0x64, 0x12, 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x72, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6c, - 0x6f, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x29, 0x0a, 0x0a, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x0a, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, - 0x52, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0b, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x06, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x78, - 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x65, 0x78, 0x74, - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, - 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, - 0x3a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x69, - 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, - 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x69, - 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x13, 0x63, - 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, - 0x66, 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, - 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0xb8, 0x03, 0x0a, 0x04, 0x54, 0x72, - 0x69, 0x70, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, - 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x70, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x74, 0x72, 0x69, 0x70, 0x48, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x26, 0x0a, - 0x0f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x72, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x54, 0x72, - 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x15, 0x77, 0x68, - 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, - 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, - 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x14, 0x77, 0x68, - 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, - 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x0d, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x42, 0x69, 0x6b, 0x65, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x41, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x64, 0x22, 0xb2, 0x07, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x23, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, - 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, - 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x0b, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, - 0x70, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x73, - 0x69, 0x67, 0x6e, 0x12, 0x3a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, - 0x73, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, - 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, - 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, - 0x3d, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, - 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, - 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, - 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x2e, - 0x0a, 0x13, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, - 0x76, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x12, 0x2c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x0e, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x0b, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x12, 0x48, 0x0a, 0x1c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, - 0x70, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x52, 0x18, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x72, - 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x44, 0x0a, 0x1a, 0x65, - 0x6e, 0x64, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, - 0x66, 0x66, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x16, 0x65, 0x6e, 0x64, 0x50, 0x69, - 0x63, 0x6b, 0x75, 0x70, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x12, 0x2e, 0x0a, 0x0b, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x0a, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x31, 0x0a, 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, - 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x16, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x62, - 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x52, 0x13, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, - 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x18, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, - 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x14, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x42, 0x6f, 0x6f, 0x6b, - 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xf1, 0x02, 0x0a, 0x07, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, - 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, - 0x64, 0x64, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x72, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, - 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, - 0x73, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, - 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, - 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, - 0x79, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, - 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, - 0x75, 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x22, 0xb4, 0x02, - 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x12, 0x28, 0x0a, 0x0a, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, - 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, - 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, - 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, - 0x61, 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x6f, - 0x6e, 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1c, - 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, - 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, - 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, - 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x75, - 0x6e, 0x64, 0x61, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, - 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x19, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, - 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x65, - 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x45, 0x78, - 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x63, - 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x0d, 0x46, - 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x07, - 0x66, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x66, 0x61, 0x72, 0x65, 0x49, 0x64, - 0x12, 0x1c, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x06, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2e, - 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, - 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, - 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, - 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, - 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xde, 0x01, 0x0a, 0x08, 0x46, 0x61, 0x72, 0x65, 0x52, 0x75, - 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, - 0x66, 0x61, 0x72, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, - 0x09, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x6f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x73, 0x49, 0x64, 0x22, 0xbd, 0x01, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x10, 0x74, 0x69, 0x6d, - 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x27, 0x0a, - 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x09, 0x46, 0x61, 0x72, 0x65, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x12, 0x2d, 0x0a, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x0b, 0x66, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, - 0x61, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x61, - 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0f, 0x66, - 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, - 0x79, 0x70, 0x65, 0x22, 0xe3, 0x01, 0x0a, 0x0b, 0x46, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x12, 0x31, 0x0a, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x52, - 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x98, 0x03, 0x0a, 0x0b, 0x46, 0x61, - 0x72, 0x65, 0x4c, 0x65, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x0c, 0x6c, 0x65, 0x67, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x0a, 0x6c, 0x65, 0x67, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, - 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, - 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, - 0x08, 0x74, 0x6f, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x17, 0x66, 0x72, 0x6f, - 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x15, - 0x74, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x12, 0x74, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x0f, 0x66, - 0x61, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, - 0x23, 0x0a, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x69, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x69, - 0x72, 0x69, 0x74, 0x79, 0x22, 0xec, 0x02, 0x0a, 0x10, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x66, 0x72, 0x6f, - 0x6d, 0x5f, 0x6c, 0x65, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x52, 0x0e, 0x66, 0x72, 0x6f, 0x6d, 0x4c, 0x65, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, - 0x12, 0x31, 0x0a, 0x0f, 0x74, 0x6f, 0x5f, 0x6c, 0x65, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x74, 0x6f, 0x4c, 0x65, 0x67, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0d, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x13, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, - 0x0a, 0x12, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x46, 0x61, 0x72, - 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x66, - 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x32, 0x0a, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x04, 0x41, 0x72, 0x65, 0x61, 0x12, 0x22, 0x0a, 0x07, 0x61, - 0x72, 0x65, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x08, - 0x53, 0x74, 0x6f, 0x70, 0x41, 0x72, 0x65, 0x61, 0x12, 0x23, 0x0a, 0x07, 0x61, 0x72, 0x65, 0x61, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x23, 0x0a, - 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, - 0x49, 0x64, 0x22, 0x56, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x28, 0x0a, - 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x60, 0x0a, 0x0c, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x29, 0x0a, 0x0a, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x22, 0xd5, 0x01, 0x0a, - 0x09, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x07, 0x74, 0x72, - 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, - 0x27, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x09, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x68, 0x65, 0x61, 0x64, 0x77, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x77, 0x61, 0x79, 0x53, 0x65, 0x63, 0x73, - 0x12, 0x32, 0x0a, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x09, 0x65, 0x78, 0x61, 0x63, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf6, 0x02, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, - 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, - 0x08, 0x74, 0x6f, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x0d, 0x66, 0x72, 0x6f, - 0x6d, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x66, 0x72, - 0x6f, 0x6d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x72, - 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x72, 0x69, - 0x70, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x08, 0x74, 0x6f, 0x54, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, - 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x69, - 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf2, 0x03, - 0x0a, 0x07, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x61, 0x74, - 0x68, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x09, 0x70, 0x61, 0x74, 0x68, 0x77, 0x61, - 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x6f, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x49, - 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x08, 0x74, 0x6f, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0c, 0x70, - 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x0c, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, - 0x0b, 0x70, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x41, 0x0a, 0x10, - 0x69, 0x73, 0x5f, 0x62, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0f, - 0x69, 0x73, 0x42, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, - 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x69, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x69, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x69, 0x6e, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x08, 0x6d, 0x69, 0x6e, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, - 0x6e, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x41, 0x73, 0x12, 0x32, - 0x0a, 0x15, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x70, 0x6f, - 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, - 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, - 0x41, 0x73, 0x22, 0x6d, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x08, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0x76, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x35, 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x11, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x36, - 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x22, 0xec, 0x05, 0x0a, 0x0b, - 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x0f, 0x62, - 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, - 0x0d, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x33, - 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, - 0x69, 0x63, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, - 0x69, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x39, - 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x64, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x31, 0x0a, 0x15, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, - 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, - 0x6f, 0x74, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x16, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x13, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, - 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x79, - 0x12, 0x3f, 0x0a, 0x17, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x14, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x41, 0x0a, 0x17, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, - 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, - 0x66, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, - 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x0a, - 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x22, 0xf6, 0x01, 0x0a, 0x0b, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, - 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x61, 0x6e, - 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x12, 0x22, - 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x75, 0x62, - 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x84, 0x03, 0x0a, 0x08, 0x46, 0x65, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, - 0x65, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, - 0x72, 0x6c, 0x52, 0x10, 0x66, 0x65, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x72, 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x6e, - 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x52, 0x08, 0x66, 0x65, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x2c, 0x0a, 0x0c, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x2d, 0x0a, 0x0f, 0x66, 0x65, - 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x64, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0d, 0x66, 0x65, 0x65, - 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x64, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x12, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x06, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x10, 0x66, 0x65, 0x65, 0x64, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x66, 0x65, - 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x64, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x55, 0x72, 0x6c, 0x22, 0x0d, 0x0a, 0x0b, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd2, 0x01, 0x0a, 0x0a, 0x53, 0x68, - 0x61, 0x70, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x20, - 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x6c, 0x61, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x4c, 0x61, 0x74, - 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x6c, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x4c, - 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x73, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, - 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2e, - 0x0a, 0x13, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, - 0x76, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x22, 0x50, - 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x49, 0x44, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, - 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x4c, - 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, - 0x22, 0x2b, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6c, - 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x61, 0x74, 0x22, 0x46, 0x0a, - 0x0a, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x61, 0x74, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x79, 0x65, 0x61, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, 0x22, 0x18, 0x0a, 0x04, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x76, 0x61, 0x6c, 0x22, 0x1b, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x76, 0x61, 0x6c, - 0x22, 0x1c, 0x0a, 0x08, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, - 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1c, - 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1d, 0x0a, 0x09, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x17, 0x0a, 0x03, 0x55, - 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x76, 0x61, 0x6c, 0x22, 0x19, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, - 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, - 0x19, 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x19, 0x0a, 0x05, 0x4d, 0x6f, - 0x6e, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1c, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x76, 0x61, 0x6c, 0x22, 0x1c, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, - 0x6c, 0x22, 0x58, 0x0a, 0x15, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1a, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x36, 0x0a, 0x0d, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x2a, 0x5a, 0x0a, 0x10, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, - 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, 0x65, 0x6c, - 0x63, 0x68, 0x61, 0x69, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x15, - 0x0a, 0x11, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, - 0x61, 0x69, 0x72, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x2a, - 0x42, 0x0a, 0x0a, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x0f, 0x0a, - 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0f, - 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, - 0x12, 0x0a, 0x0e, 0x42, 0x69, 0x6b, 0x65, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x10, 0x02, 0x2a, 0x5b, 0x0a, 0x0b, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x69, 0x73, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x61, - 0x72, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x03, - 0x2a, 0x64, 0x0a, 0x0c, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, - 0x75, 0x6f, 0x75, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, - 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, - 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x75, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x10, - 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x73, 0x6b, 0x44, 0x72, - 0x69, 0x76, 0x65, 0x72, 0x10, 0x03, 0x2a, 0x7f, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x70, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0x00, - 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x03, 0x12, 0x18, 0x0a, - 0x14, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x41, 0x72, 0x65, 0x61, 0x10, 0x04, 0x2a, 0xcc, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, - 0x54, 0x72, 0x61, 0x6d, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, - 0x65, 0x53, 0x75, 0x62, 0x77, 0x61, 0x79, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, - 0x69, 0x63, 0x6c, 0x65, 0x52, 0x61, 0x69, 0x6c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x65, - 0x68, 0x69, 0x63, 0x6c, 0x65, 0x42, 0x75, 0x73, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x65, - 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x65, 0x72, 0x72, 0x79, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, - 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x63, 0x61, 0x72, 0x10, - 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x47, 0x6f, 0x6e, 0x64, - 0x6f, 0x6c, 0x61, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, - 0x46, 0x75, 0x6e, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x56, - 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x62, 0x75, 0x73, 0x10, - 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, - 0x72, 0x61, 0x69, 0x6c, 0x10, 0x0c, 0x2a, 0x44, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x70, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x01, 0x2a, 0x38, 0x0a, 0x0d, - 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0f, 0x0a, - 0x0b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x10, 0x00, 0x12, 0x16, - 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, - 0x78, 0x61, 0x63, 0x74, 0x10, 0x01, 0x2a, 0x54, 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, - 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, - 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, 0x6e, - 0x64, 0x61, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x56, 0x0a, 0x12, - 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, - 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x64, 0x10, 0x01, 0x2a, 0xa9, 0x01, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x64, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x03, 0x12, 0x16, - 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, - 0x53, 0x65, 0x61, 0x74, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x75, 0x73, 0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0x05, - 0x2a, 0x4c, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x61, 0x74, - 0x68, 0x77, 0x61, 0x79, 0x55, 0x6e, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x42, - 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x10, 0x01, 0x2a, 0xd5, - 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x12, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, - 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x57, 0x61, 0x6c, 0x6b, 0x77, 0x61, 0x79, 0x10, 0x01, 0x12, 0x15, - 0x0a, 0x11, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, - 0x69, 0x72, 0x73, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, - 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x03, - 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x45, - 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x61, - 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, - 0x72, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, - 0x6f, 0x64, 0x65, 0x46, 0x61, 0x72, 0x65, 0x47, 0x61, 0x74, 0x65, 0x10, 0x06, 0x12, 0x17, 0x0a, - 0x13, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x69, 0x74, - 0x47, 0x61, 0x74, 0x65, 0x10, 0x07, 0x2a, 0x67, 0x0a, 0x0f, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, - 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x6f, 0x6f, - 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x61, 0x6c, - 0x74, 0x69, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, - 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x64, 0x61, 0x79, - 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x64, 0x61, 0x79, 0x10, 0x02, 0x2a, - 0x72, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x6f, 0x6e, - 0x65, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x50, 0x61, 0x70, 0x65, 0x72, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x43, 0x61, 0x72, 0x64, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x61, - 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x6f, 0x6f, 0x70, 0x10, - 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x70, - 0x70, 0x10, 0x04, 0x2a, 0x4b, 0x0a, 0x10, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x30, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, - 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x31, 0x10, 0x01, 0x12, 0x11, 0x0a, - 0x0d, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x32, 0x10, 0x02, - 0x2a, 0x63, 0x0a, 0x11, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x30, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x31, 0x10, 0x01, 0x12, 0x12, 0x0a, - 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x32, 0x10, - 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x33, 0x10, 0x03, 0x2a, 0x8b, 0x01, 0x0a, 0x19, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, - 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x6e, 0x63, 0x65, 0x10, 0x01, 0x12, - 0x22, 0x0a, 0x1e, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x54, 0x77, 0x69, 0x63, - 0x65, 0x10, 0x02, 0x2a, 0x44, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x10, 0x00, 0x12, 0x19, - 0x0a, 0x15, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, - 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x10, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_gtfs_proto_rawDescOnce sync.Once - file_gtfs_proto_rawDescData = file_gtfs_proto_rawDesc -) - -func file_gtfs_proto_rawDescGZIP() []byte { - file_gtfs_proto_rawDescOnce.Do(func() { - file_gtfs_proto_rawDescData = protoimpl.X.CompressGZIP(file_gtfs_proto_rawDescData) - }) - return file_gtfs_proto_rawDescData -} - -var file_gtfs_proto_enumTypes = make([]protoimpl.EnumInfo, 19) -var file_gtfs_proto_msgTypes = make([]protoimpl.MessageInfo, 48) -var file_gtfs_proto_goTypes = []any{ - (WheelchairAccess)(0), // 0: WheelchairAccess - (BikeAccess)(0), // 1: BikeAccess - (BoardAccess)(0), // 2: BoardAccess - (PickupAccess)(0), // 3: PickupAccess - (StopLocationType)(0), // 4: StopLocationType - (RouteType)(0), // 5: RouteType - (TripDirection)(0), // 6: TripDirection - (StopTimepoint)(0), // 7: StopTimepoint - (CalendarExceptionType)(0), // 8: CalendarExceptionType - (FrequencyExactTime)(0), // 9: FrequencyExactTime - (TransferType)(0), // 10: TransferType - (PathwayDirectionality)(0), // 11: PathwayDirectionality - (PathwayMode)(0), // 12: PathwayMode - (BookingRuleType)(0), // 13: BookingRuleType - (FareMediaType)(0), // 14: FareMediaType - (FareTransferType)(0), // 15: FareTransferType - (DurationLimitType)(0), // 16: DurationLimitType - (FareAttributeTransferType)(0), // 17: FareAttributeTransferType - (PaymentMethod)(0), // 18: PaymentMethod - (*FeedEntity)(nil), // 19: FeedEntity - (*Agency)(nil), // 20: Agency - (*Stop)(nil), // 21: Stop - (*Route)(nil), // 22: Route - (*Trip)(nil), // 23: Trip - (*StopTime)(nil), // 24: StopTime - (*Service)(nil), // 25: Service - (*Calendar)(nil), // 26: Calendar - (*CalendarDate)(nil), // 27: CalendarDate - (*FareAttribute)(nil), // 28: FareAttribute - (*FareRule)(nil), // 29: FareRule - (*Timeframe)(nil), // 30: Timeframe - (*FareMedia)(nil), // 31: FareMedia - (*FareProduct)(nil), // 32: FareProduct - (*FareLegRule)(nil), // 33: FareLegRule - (*FareTransferRule)(nil), // 34: FareTransferRule - (*Area)(nil), // 35: Area - (*StopArea)(nil), // 36: StopArea - (*Network)(nil), // 37: Network - (*RouteNetwork)(nil), // 38: RouteNetwork - (*Frequency)(nil), // 39: Frequency - (*Transfer)(nil), // 40: Transfer - (*Pathway)(nil), // 41: Pathway - (*Level)(nil), // 42: Level - (*LocationGroup)(nil), // 43: LocationGroup - (*LocationGroupStop)(nil), // 44: LocationGroupStop - (*BookingRule)(nil), // 45: BookingRule - (*Translation)(nil), // 46: Translation - (*FeedInfo)(nil), // 47: FeedInfo - (*Attribution)(nil), // 48: Attribution - (*ShapePoint)(nil), // 49: ShapePoint - (*Shape)(nil), // 50: Shape - (*Point)(nil), // 51: Point - (*LineString)(nil), // 52: LineString - (*Date)(nil), // 53: Date - (*Time)(nil), // 54: Time - (*Seconds)(nil), // 55: Seconds - (*EntityID)(nil), // 56: EntityID - (*Timezone)(nil), // 57: Timezone - (*Reference)(nil), // 58: Reference - (*Url)(nil), // 59: Url - (*Email)(nil), // 60: Email - (*Color)(nil), // 61: Color - (*Money)(nil), // 62: Money - (*Currency)(nil), // 63: Currency - (*Language)(nil), // 64: Language - (*FareAttributeTransfer)(nil), // 65: FareAttributeTransfer - (*TransferCount)(nil), // 66: TransferCount -} -var file_gtfs_proto_depIdxs = []int32{ - 20, // 0: FeedEntity.agency:type_name -> Agency - 21, // 1: FeedEntity.stop:type_name -> Stop - 22, // 2: FeedEntity.route:type_name -> Route - 23, // 3: FeedEntity.trip:type_name -> Trip - 24, // 4: FeedEntity.stop_time:type_name -> StopTime - 50, // 5: FeedEntity.shape:type_name -> Shape - 25, // 6: FeedEntity.service:type_name -> Service - 56, // 7: Agency.agency_id:type_name -> EntityID - 59, // 8: Agency.agency_url:type_name -> Url - 57, // 9: Agency.agency_timezone:type_name -> Timezone - 64, // 10: Agency.agency_lang:type_name -> Language - 59, // 11: Agency.agency_fare_url:type_name -> Url - 60, // 12: Agency.agency_email:type_name -> Email - 56, // 13: Stop.stop_id:type_name -> EntityID - 59, // 14: Stop.stop_url:type_name -> Url - 4, // 15: Stop.location_type:type_name -> StopLocationType - 58, // 16: Stop.parent_station:type_name -> Reference - 57, // 17: Stop.stop_timezone:type_name -> Timezone - 0, // 18: Stop.wheelchair_boarding:type_name -> WheelchairAccess - 58, // 19: Stop.level_id:type_name -> Reference - 56, // 20: Route.route_id:type_name -> EntityID - 58, // 21: Route.agency_id:type_name -> Reference - 5, // 22: Route.route_type:type_name -> RouteType - 59, // 23: Route.route_url:type_name -> Url - 61, // 24: Route.route_color:type_name -> Color - 61, // 25: Route.route_text_color:type_name -> Color - 3, // 26: Route.continuous_pickup:type_name -> PickupAccess - 3, // 27: Route.continuous_drop_off:type_name -> PickupAccess - 58, // 28: Trip.route_id:type_name -> Reference - 58, // 29: Trip.service_id:type_name -> Reference - 56, // 30: Trip.trip_id:type_name -> EntityID - 6, // 31: Trip.direction_id:type_name -> TripDirection - 58, // 32: Trip.shape_id:type_name -> Reference - 0, // 33: Trip.wheelchair_accessible:type_name -> WheelchairAccess - 1, // 34: Trip.bikes_allowed:type_name -> BikeAccess - 58, // 35: StopTime.trip_id:type_name -> Reference - 55, // 36: StopTime.arrival_time:type_name -> Seconds - 55, // 37: StopTime.departure_time:type_name -> Seconds - 58, // 38: StopTime.stop_id:type_name -> Reference - 3, // 39: StopTime.continuous_pickup:type_name -> PickupAccess - 3, // 40: StopTime.continuous_drop_off:type_name -> PickupAccess - 7, // 41: StopTime.timepoint:type_name -> StopTimepoint - 58, // 42: StopTime.location_id:type_name -> Reference - 58, // 43: StopTime.location_group_id:type_name -> Reference - 55, // 44: StopTime.start_pickup_drop_off_window:type_name -> Seconds - 55, // 45: StopTime.end_pickup_drop_off_window:type_name -> Seconds - 3, // 46: StopTime.pickup_type:type_name -> PickupAccess - 3, // 47: StopTime.drop_off_type:type_name -> PickupAccess - 58, // 48: StopTime.pickup_booking_rule_id:type_name -> Reference - 58, // 49: StopTime.drop_off_booking_rule_id:type_name -> Reference - 56, // 50: Service.service_id:type_name -> EntityID - 53, // 51: Service.start_date:type_name -> Date - 53, // 52: Service.end_date:type_name -> Date - 53, // 53: Service.added:type_name -> Date - 53, // 54: Service.removed:type_name -> Date - 56, // 55: Calendar.service_id:type_name -> EntityID - 53, // 56: Calendar.start_date:type_name -> Date - 53, // 57: Calendar.end_date:type_name -> Date - 58, // 58: CalendarDate.service_id:type_name -> Reference - 53, // 59: CalendarDate.date:type_name -> Date - 8, // 60: CalendarDate.exception_type:type_name -> CalendarExceptionType - 56, // 61: FareAttribute.fare_id:type_name -> EntityID - 62, // 62: FareAttribute.price:type_name -> Money - 63, // 63: FareAttribute.currency_type:type_name -> Currency - 18, // 64: FareAttribute.payment_method:type_name -> PaymentMethod - 17, // 65: FareAttribute.transfers:type_name -> FareAttributeTransferType - 58, // 66: FareAttribute.agency_id:type_name -> Reference - 56, // 67: FareRule.fare_id:type_name -> EntityID - 58, // 68: FareRule.route_id:type_name -> Reference - 58, // 69: FareRule.origin_id:type_name -> Reference - 58, // 70: FareRule.destination_id:type_name -> Reference - 58, // 71: FareRule.contains_id:type_name -> Reference - 56, // 72: Timeframe.timeframe_group_id:type_name -> EntityID - 55, // 73: Timeframe.start_time:type_name -> Seconds - 55, // 74: Timeframe.end_time:type_name -> Seconds - 58, // 75: Timeframe.service_id:type_name -> Reference - 56, // 76: FareMedia.fare_media_id:type_name -> EntityID - 14, // 77: FareMedia.fare_media_type:type_name -> FareMediaType - 56, // 78: FareProduct.fare_product_id:type_name -> EntityID - 58, // 79: FareProduct.fare_media_id:type_name -> Reference - 62, // 80: FareProduct.amount:type_name -> Money - 63, // 81: FareProduct.currency:type_name -> Currency - 56, // 82: FareLegRule.leg_group_id:type_name -> EntityID - 58, // 83: FareLegRule.network_id:type_name -> Reference - 58, // 84: FareLegRule.from_area_id:type_name -> Reference - 58, // 85: FareLegRule.to_area_id:type_name -> Reference - 58, // 86: FareLegRule.from_timeframe_group_id:type_name -> Reference - 58, // 87: FareLegRule.to_timeframe_group_id:type_name -> Reference - 58, // 88: FareLegRule.fare_product_id:type_name -> Reference - 58, // 89: FareTransferRule.from_leg_group_id:type_name -> Reference - 58, // 90: FareTransferRule.to_leg_group_id:type_name -> Reference - 66, // 91: FareTransferRule.transfer_count:type_name -> TransferCount - 16, // 92: FareTransferRule.duration_limit_type:type_name -> DurationLimitType - 15, // 93: FareTransferRule.fare_transfer_type:type_name -> FareTransferType - 58, // 94: FareTransferRule.fare_product_id:type_name -> Reference - 56, // 95: Area.area_id:type_name -> EntityID - 58, // 96: StopArea.area_id:type_name -> Reference - 58, // 97: StopArea.stop_id:type_name -> Reference - 56, // 98: Network.network_id:type_name -> EntityID - 58, // 99: RouteNetwork.network_id:type_name -> Reference - 58, // 100: RouteNetwork.route_id:type_name -> Reference - 58, // 101: Frequency.trip_id:type_name -> Reference - 55, // 102: Frequency.start_time:type_name -> Seconds - 55, // 103: Frequency.end_time:type_name -> Seconds - 9, // 104: Frequency.exact_time:type_name -> FrequencyExactTime - 58, // 105: Transfer.from_stop_id:type_name -> Reference - 58, // 106: Transfer.to_stop_id:type_name -> Reference - 58, // 107: Transfer.from_route_id:type_name -> Reference - 58, // 108: Transfer.to_route_id:type_name -> Reference - 58, // 109: Transfer.from_trip_id:type_name -> Reference - 58, // 110: Transfer.to_trip_id:type_name -> Reference - 10, // 111: Transfer.transfer_type:type_name -> TransferType - 56, // 112: Pathway.pathway_id:type_name -> EntityID - 58, // 113: Pathway.from_stop_id:type_name -> Reference - 58, // 114: Pathway.to_stop_id:type_name -> Reference - 12, // 115: Pathway.pathway_mode:type_name -> PathwayMode - 11, // 116: Pathway.is_bidirectional:type_name -> PathwayDirectionality - 56, // 117: Level.level_id:type_name -> EntityID - 56, // 118: LocationGroup.location_group_id:type_name -> EntityID - 58, // 119: LocationGroupStop.location_group_id:type_name -> Reference - 58, // 120: LocationGroupStop.stop_id:type_name -> Reference - 56, // 121: BookingRule.booking_rule_id:type_name -> EntityID - 13, // 122: BookingRule.booking_type:type_name -> BookingRuleType - 55, // 123: BookingRule.prior_notice_last_time:type_name -> Seconds - 55, // 124: BookingRule.prior_notice_start_time:type_name -> Seconds - 58, // 125: BookingRule.prior_notice_service_id:type_name -> Reference - 59, // 126: BookingRule.info_url:type_name -> Url - 59, // 127: BookingRule.booking_url:type_name -> Url - 64, // 128: Translation.language:type_name -> Language - 59, // 129: FeedInfo.feed_publisher_url:type_name -> Url - 64, // 130: FeedInfo.feed_lang:type_name -> Language - 64, // 131: FeedInfo.default_lang:type_name -> Language - 53, // 132: FeedInfo.feed_start_date:type_name -> Date - 53, // 133: FeedInfo.feed_end_date:type_name -> Date - 60, // 134: FeedInfo.feed_contact_email:type_name -> Email - 59, // 135: FeedInfo.feed_contact_url:type_name -> Url - 56, // 136: ShapePoint.shape_id:type_name -> EntityID - 56, // 137: Shape.shape_id:type_name -> EntityID - 52, // 138: Shape.shape:type_name -> LineString - 17, // 139: FareAttributeTransfer.transfer_type:type_name -> FareAttributeTransferType - 140, // [140:140] is the sub-list for method output_type - 140, // [140:140] is the sub-list for method input_type - 140, // [140:140] is the sub-list for extension type_name - 140, // [140:140] is the sub-list for extension extendee - 0, // [0:140] is the sub-list for field type_name -} - -func init() { file_gtfs_proto_init() } -func file_gtfs_proto_init() { - if File_gtfs_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_gtfs_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*FeedEntity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Agency); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Stop); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Route); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Trip); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*StopTime); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*Service); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*Calendar); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*CalendarDate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*FareAttribute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*FareRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*Timeframe); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*FareMedia); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*FareProduct); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*FareLegRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*FareTransferRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*Area); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*StopArea); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*Network); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*RouteNetwork); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*Frequency); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*Transfer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*Pathway); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*Level); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*LocationGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*LocationGroupStop); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*BookingRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*Translation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*FeedInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*Attribution); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*ShapePoint); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*Shape); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*Point); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*LineString); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*Date); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*Time); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*Seconds); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*EntityID); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*Timezone); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*Reference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*Url); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*Email); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*Color); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*Money); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*Currency); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*Language); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*FareAttributeTransfer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gtfs_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*TransferCount); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_gtfs_proto_rawDesc, - NumEnums: 19, - NumMessages: 48, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_gtfs_proto_goTypes, - DependencyIndexes: file_gtfs_proto_depIdxs, - EnumInfos: file_gtfs_proto_enumTypes, - MessageInfos: file_gtfs_proto_msgTypes, - }.Build() - File_gtfs_proto = out.File - file_gtfs_proto_rawDesc = nil - file_gtfs_proto_goTypes = nil - file_gtfs_proto_depIdxs = nil -} diff --git a/tlpb/gtfs.proto b/tlpb/gtfs.proto index ebcacb6a..6498a874 100644 --- a/tlpb/gtfs.proto +++ b/tlpb/gtfs.proto @@ -14,10 +14,9 @@ message FeedEntity { } message Agency { - int64 id = 1; - int64 feed_version_id = 2; - EntityID agency_id = 3; - string agency_name = 4; + DatabaseEntity id = 1; + Key agency_id = 3; + String agency_name = 4; Url agency_url = 5; Timezone agency_timezone = 6; Language agency_lang = 7; @@ -27,70 +26,66 @@ message Agency { } message Stop { - int64 id = 1; - int64 feed_version_id = 2; - EntityID stop_id = 3; - string stop_code = 4; - string stop_name = 5; - string tts_stop_name = 6; - string stop_desc = 7; - double stop_lat = 8; - double stop_lon = 9; - string zone_id = 10; + DatabaseEntity id = 1; + Key stop_id = 3; + String stop_code = 4; + String stop_name = 5; + String tts_stop_name = 6; + String stop_desc = 7; + Float stop_lat = 8; + Float stop_lon = 9; + String zone_id = 10; Url stop_url = 11; StopLocationType location_type = 12; Reference parent_station = 13; Timezone stop_timezone = 14; WheelchairAccess wheelchair_boarding = 15; Reference level_id = 16; - string platform_code = 17; + String platform_code = 17; } message Route { - int64 id = 1; - int64 feed_version_id = 2; - EntityID route_id = 3; + DatabaseEntity id = 1; + Key route_id = 3; Reference agency_id = 4; - string route_short_name = 5; - string route_long_name = 6; - string route_desc = 7; + String route_short_name = 5; + String route_long_name = 6; + String route_desc = 7; RouteType route_type = 8; Url route_url = 9; Color route_color = 10; Color route_text_color = 11; - int32 route_sort_order = 12; + Int route_sort_order = 12; PickupAccess continuous_pickup = 13; PickupAccess continuous_drop_off = 14; - string network_id = 15; + String network_id = 15; } message Trip { - int64 id = 1; - int64 feed_version_id = 2; + DatabaseEntity id = 1; Reference route_id = 3; Reference service_id = 4; - EntityID trip_id = 5; - string trip_headsign = 6; - string trip_short_name = 7; + Key trip_id = 5; + String trip_headsign = 6; + String trip_short_name = 7; TripDirection direction_id = 8; - string block_id = 9; + String block_id = 9; Reference shape_id = 10; WheelchairAccess wheelchair_accessible = 11; BikeAccess bikes_allowed = 12; } message StopTime { - int64 id = 1; - int64 feed_version_id = 2; + DatabaseEntity id = 1; Reference trip_id = 3; Seconds arrival_time = 4; Seconds departure_time = 5; Reference stop_id = 6; - int32 stop_sequence = 7; - string stop_headsign = 8; + Int stop_sequence = 7; + String stop_headsign = 8; PickupAccess continuous_pickup = 9; PickupAccess continuous_drop_off = 10; - double shape_dist_traveled = 11; + Float shape_dist_traveled = 11; StopTimepoint timepoint = 12; Reference location_id = 13; Reference location_group_id = 14; @@ -103,44 +98,40 @@ message StopTime { } message Calendar { - int64 id = 1; - int64 feed_version_id = 2; - EntityID service_id = 3; + DatabaseEntity id = 1; + Key service_id = 3; Date start_date = 4; Date end_date = 5; - bool monday = 6; - bool tuesday = 7; - bool wednesday = 8; - bool thursday = 9; - bool friday = 10; - bool saturday = 11; - bool sunday = 12; + Bool monday = 6; + Bool tuesday = 7; + Bool wednesday = 8; + Bool thursday = 9; + Bool friday = 10; + Bool saturday = 11; + Bool sunday = 12; } message CalendarDate { - int64 id = 1; - int64 feed_version_id = 2; + DatabaseEntity id = 1; Reference service_id = 3; Date date = 4; CalendarExceptionType exception_type = 5; } message FareAttribute { - int64 id = 1; - int64 feed_version_id = 2; - EntityID fare_id = 3; + DatabaseEntity id = 1; + Key fare_id = 3; Money price = 4; Currency currency_type = 5; PaymentMethod payment_method = 6; FareAttributeTransferType transfers = 7; Reference agency_id = 8; - int32 transfer_duration = 9; + Int transfer_duration = 9; } message FareRule { - int64 id = 1; - int64 feed_version_id = 2; - EntityID fare_id = 3; + DatabaseEntity id = 1; + Key fare_id = 3; Reference route_id = 4; Reference origin_id = 5; Reference destination_id = 6; @@ -148,97 +139,86 @@ message FareRule { } message Timeframe { - int64 id = 1; - int64 feed_version_id = 2; - EntityID timeframe_group_id = 3; + DatabaseEntity id = 1; + Key timeframe_group_id = 3; Seconds start_time = 4; Seconds end_time = 5; Reference service_id = 6; } message FareMedia { - int64 id = 1; - int64 feed_version_id = 2; - EntityID fare_media_id = 3; - string fare_media_name = 4; + DatabaseEntity id = 1; + Key fare_media_id = 3; + String fare_media_name = 4; FareMediaType fare_media_type = 5; } message FareProduct { - int64 id = 1; - int64 feed_version_id = 2; - EntityID fare_product_id = 3; - string fare_product_name = 4; + DatabaseEntity id = 1; + Key fare_product_id = 3; + String fare_product_name = 4; Reference fare_media_id = 5; Money amount = 6; Currency currency = 7; } message FareLegRule { - int64 id = 1; - int64 feed_version_id = 2; - EntityID leg_group_id = 3; + DatabaseEntity id = 1; + Key leg_group_id = 3; Reference network_id = 4; Reference from_area_id = 5; Reference to_area_id = 6; Reference from_timeframe_group_id = 7; Reference to_timeframe_group_id = 8; Reference fare_product_id = 9; - int32 rule_proirity = 10; + Int rule_proirity = 10; } message FareTransferRule { - int64 id = 1; - int64 feed_version_id = 2; + DatabaseEntity id = 1; Reference from_leg_group_id = 3; Reference to_leg_group_id = 4; - TransferCount transfer_count = 5; + Int transfer_count = 5; DurationLimitType duration_limit_type = 6; FareTransferType fare_transfer_type = 7; Reference fare_product_id = 8; } message Area { - int64 id = 1; - int64 feed_version_id = 2; - EntityID area_id = 3; - string area_name = 4; + DatabaseEntity id = 1; + Key area_id = 3; + String area_name = 4; } message StopArea { - int64 id = 1; - int64 feed_version_id = 2; + DatabaseEntity id = 1; Reference area_id = 3; Reference stop_id = 4; } message Network { - int64 id = 1; - int64 feed_version_id = 2; - EntityID network_id = 3; - string network_name = 4; + DatabaseEntity id = 1; + Key network_id = 3; + String network_name = 4; } message RouteNetwork { - int64 id = 1; - int64 feed_version_id = 2; + DatabaseEntity id = 1; Reference network_id = 3; Reference route_id = 4; } message Frequency { - int64 id = 1; - int64 feed_version_id = 2; + DatabaseEntity id = 1; Reference trip_id = 3; Seconds start_time = 4; Seconds end_time = 5; - int32 headway_secs = 6; + Int headway_secs = 6; FrequencyExactTime exact_time = 7; } message Transfer { - int64 id = 1; - int64 feed_version_id = 2; + DatabaseEntity id = 1; Reference from_stop_id = 3; Reference to_stop_id = 4; Reference from_route_id = 5; @@ -246,84 +226,77 @@ message Transfer { Reference from_trip_id = 7; Reference to_trip_id = 8; TransferType transfer_type = 9; - int32 min_transfer_time = 10; + Int min_transfer_time = 10; } message Pathway { - int64 id = 1; - int64 feed_version_id = 2; - EntityID pathway_id = 3; + DatabaseEntity id = 1; + Key pathway_id = 3; Reference from_stop_id = 4; Reference to_stop_id = 5; PathwayMode pathway_mode = 6; PathwayDirectionality is_bidirectional = 7; - double length = 8; - int32 traversal_time = 9; - int32 stair_count = 10; - double max_slope = 11; - double min_width = 12; - string signposted_as = 13; - string reverse_signposted_as = 14; + Float length = 8; + Int traversal_time = 9; + Int stair_count = 10; + Float max_slope = 11; + Float min_width = 12; + String signposted_as = 13; + String reverse_signposted_as = 14; } message Level { - int64 id = 1; - int64 feed_version_id = 2; - EntityID level_id = 3; - double level_index = 4; - string level_name = 5; + DatabaseEntity id = 1; + Key level_id = 3; + Float level_index = 4; + String level_name = 5; } message LocationGroup { - int64 id = 1; - int64 feed_version_id = 2; - EntityID location_group_id = 3; - string location_group_name = 4; + DatabaseEntity id = 1; + Key location_group_id = 3; + String location_group_name = 4; } message LocationGroupStop { - int64 id = 1; - int64 feed_version_id = 2; + DatabaseEntity id = 1; Reference location_group_id = 3; Reference stop_id = 4; } message BookingRule { - int64 id = 1; - int64 feed_version_id = 2; - EntityID booking_rule_id = 3; + DatabaseEntity id = 1; + Key booking_rule_id = 3; BookingRuleType booking_type = 4; - int32 prior_notice_duration_min = 5; - int32 prior_notice_duration_max = 6; - int32 prior_notice_last_day = 7; + Int prior_notice_duration_min = 5; + Int prior_notice_duration_max = 6; + Int prior_notice_last_day = 7; Seconds prior_notice_last_time = 8; - int32 prior_notice_start_day = 9; + Int prior_notice_start_day = 9; Seconds prior_notice_start_time = 10; Reference prior_notice_service_id = 11; - string message = 12; - string pickup_message = 13; - string drop_off_message = 14; - string phone_number = 15; + String message = 12; + String pickup_message = 13; + String drop_off_message = 14; + String phone_number = 15; Url info_url = 16; Url booking_url = 17; } message Translation { - int64 id = 1; - int64 feed_version_id = 2; - string table_name = 3; // a string enum, not supported in protobuf - string field_name = 4; + DatabaseEntity id = 1; + String table_name = 3; // a String enum, not supported in protobuf + String field_name = 4; Language language = 5; - string translation = 6; - string record_id = 7; // technically a reference, but must be resolved manually - string record_sub_id = 8; - string field_value = 9; + String translation = 6; + String record_id = 7; // technically a reference, but must be resolved manually + String record_sub_id = 8; + String field_value = 9; } message FeedInfo { - int64 id = 1; - int64 feed_version_id = 2; - string feed_publisher_name = 3; + DatabaseEntity id = 1; + String feed_publisher_name = 3; Url feed_publisher_url = 4; Language feed_lang = 5; Language default_lang = 6; @@ -334,13 +307,12 @@ message FeedInfo { } message Attribution { - int64 id = 1; - int64 feed_version_id = 2; - EntityID attribution_id = 3; + DatabaseEntity id = 1; + Key attribution_id = 3; Reference agency_id = 4; Reference route_id = 5; Reference trip_id = 6; - string organization_name = 7; + String organization_name = 7; AttributionRole is_producer = 8; AttributionRole is_operator = 9; AttributionRole is_authority = 10; @@ -349,43 +321,42 @@ message Attribution { Phone attribution_phone = 13; } +message ShapePoint { + Key shape_id = 1; + double shape_pt_lat = 2; + double shape_pt_lon = 3; + int32 shape_pt_sequence = 4; + double shape_dist_traveled = 5; +} + ////////// // Helper types message Service { - int64 id = 1; - int64 feed_version_id = 2; - EntityID service_id = 3; + DatabaseEntity id = 1; + Key service_id = 3; Date start_date = 4; Date end_date = 5; repeated Date added = 6; repeated Date removed = 7; - bool monday = 8; - bool tuesday = 9; - bool wednesday = 10; - bool thursday = 11; - bool friday = 12; - bool saturday = 13; - bool sunday = 14; -} - -/////////// -// Shapes and geometries - - -message ShapePoint { - EntityID shape_id = 1; - double shape_pt_lat = 2; - double shape_pt_lon = 3; - int32 shape_pt_sequence = 4; - double shape_dist_traveled = 5; + Bool monday = 8; + Bool tuesday = 9; + Bool wednesday = 10; + Bool thursday = 11; + Bool friday = 12; + Bool saturday = 13; + Bool sunday = 14; } message Shape { - EntityID shape_id = 1; - LineString shape = 2; + DatabaseEntity id = 1; + Key shape_id = 2; + LineString geometry = 3; } +/////////// +// Shapes and geometries + message Point { double lon = 1; double lat = 2; @@ -399,13 +370,18 @@ message LineString { ///////////// // Base messages +message DatabaseEntity { + int64 id = 1; + int64 feed_version_id = 2; +} + message Date { int32 year = 1; int32 month = 2; int32 day = 3; } -message Time { +message Timestamp { int64 val = 1; } @@ -413,7 +389,7 @@ message Seconds { int64 val = 1; } -message EntityID { +message Key { string val = 1; } @@ -454,47 +430,72 @@ message Phone { string val = 1; } -// This must be a message so we can check for nil -// "0" and "" have different semantics in GTFS -message FareAttributeTransfer { - FareAttributeTransferType val = 1; +message Float { + double val = 1; +} + +message String { + string val = 1; +} + +message Int { + int64 val = 1; } -// "0" and "" have different semantics -message TransferCount { - int32 val = 1; +message Bool { + bool val = 1; } ///////////// // Base enums -enum WheelchairAccess { +message WheelchairAccess { + WheelchairAccessEnum val = 1; +} + +enum WheelchairAccessEnum { WheelchairUnknown = 0; WheelchairAllowed = 1; WheelchairDisallowed = 2; } -enum BikeAccess { +message BikeAccess { + BikeAccessEnum val = 1; +} + +enum BikeAccessEnum { BikeUnknown = 0; BikeAllowed = 1; BikeDisallowed = 2; } -enum BoardAccess { +message BoardAccess { + BoardAccessEnum val = 1; +} + +enum BoardAccessEnum { BoardUnknown = 0; BoardDisallowed = 1; BoardAllowed = 2; BoardCoordinate = 3; } -enum PickupAccess { +message PickupAccess { + PickupAccessEnum val = 1; +} + +enum PickupAccessEnum { PickupContinuous = 0; PickupDisallowed = 1; PickupMustPhone = 2; PickupAskDriver = 3; } -enum StopLocationType { +message StopLocationType { + StopLocationTypeEnum val = 1; +} + +enum StopLocationTypeEnum { LocationPlatform = 0; LocationStation = 1; LocationEntrance = 2; @@ -502,7 +503,11 @@ enum StopLocationType { LocationBoardingArea = 4; } -enum RouteType { +message RouteType { + RouteTypeEnum val = 1; +} + +enum RouteTypeEnum { VehicleTram = 0; VehicleSubway = 1; VehicleRail = 2; @@ -515,28 +520,48 @@ enum RouteType { VehicleMonorail = 12; } -enum TripDirection { +message TripDirection { + TripDirectionEnum val = 1; +} + +enum TripDirectionEnum { TripDirectionOutbound = 0; TripDirectionInbound = 1; } -enum StopTimepoint { +message StopTimepoint { + StopTimepointEnum val = 1; +} + +enum StopTimepointEnum { Approximate = 0; StopTimepointExact = 1; } -enum CalendarExceptionType { +message CalendarExceptionType { + CalendarExceptionTypeEnum val = 1; +} + +enum CalendarExceptionTypeEnum { CalendarUnknown = 0; CalendarAdded = 1; CalendarRemoved = 2; } -enum FrequencyExactTime { +message FrequencyExactTime { + FrequencyExactTimeEnum val = 1; +} + +enum FrequencyExactTimeEnum { FrequencyExactTimeFrequency = 0; FrequencyExactTimeScheduled = 1; } -enum TransferType { +message TransferType { + TransferTypeEnum val = 1; +} + +enum TransferTypeEnum { TransferTypeRecommended = 0; TransferTypeTimed = 1; TransferTypeMinTime = 2; @@ -545,12 +570,20 @@ enum TransferType { TransferTypeMustExit = 5; } -enum PathwayDirectionality { +message PathwayDirectionality { + PathwayDirectionalityEnum val = 1; +} + +enum PathwayDirectionalityEnum { PathwayUnidirectional = 0; PathwayBidirectional = 1; } -enum PathwayMode { +message PathwayMode { + PathwayModeEnum val = 1; +} + +enum PathwayModeEnum { PathwayModeUnknown = 0; PathwayModeWalkway = 1; PathwayModeStairs = 2; @@ -561,13 +594,21 @@ enum PathwayMode { PathwayModeExitGate = 7; } -enum BookingRuleType { +message BookingRuleType { + BookingRuleTypeEnum val = 1; +} + +enum BookingRuleTypeEnum { BookingRuleTypeRealtime = 0; BookingRuleTypeSameday = 1; BookingRuleTypePriorday = 2; } -enum FareMediaType { +message FareMediaType { + FareMediaTypeEnum val = 1; +} + +enum FareMediaTypeEnum { FareMediaNone = 0; FareMediaPaper = 1; FareMediaCard = 2; @@ -575,31 +616,51 @@ enum FareMediaType { FareMediaApp = 4; } -enum FareTransferType { +message FareTransferType { + FareTransferTypeEnum val = 1; +} + +enum FareTransferTypeEnum { FareTransfer0 = 0; FareTransfer1 = 1; FareTransfer2 = 2; } -enum DurationLimitType { +message DurationLimitType { + DurationLimitTypeEnum val = 1; +} + +enum DurationLimitTypeEnum { DurationLimit0 = 0; DurationLimit1 = 1; DurationLimit2 = 2; DurationLimit3 = 3; } -enum FareAttributeTransferType { +message FareAttributeTransferType { + FareAttributeTransferTypeEnum val = 1; +} + +enum FareAttributeTransferTypeEnum { FareAttributeTransferTypeDisallowed = 0; FareAttributeTransferTypeOnce = 1; FareAttributeTransferTypeTwice = 2; } -enum PaymentMethod { +message PaymentMethod { + PaymentMethodEnum val = 1; +} + +enum PaymentMethodEnum { PaymentMethodOnboard = 0; PaymentMethodOffboard = 1; } -enum AttributionRole { +message AttributionRole { + AttributionRoleEnum val = 1; +} + +enum AttributionRoleEnum { AttributionRoleNotAssigned = 0; AttributionRoleAssigned = 1; } diff --git a/tlpb/gtfs/gtfs.go b/tlpb/gtfs/gtfs.go new file mode 100644 index 00000000..e413e60e --- /dev/null +++ b/tlpb/gtfs/gtfs.go @@ -0,0 +1,488 @@ +package gtfs + +type EnumValue int32 + +type WheelchairAccessEnum int32 + +type BikeAccessEnum int32 + +type BoardAccessEnum int32 + +type PickupAccessEnum int32 + +type StopLocationTypeEnum int32 + +type RouteTypeEnum int32 + +type TripDirectionEnum int32 + +type StopTimepointEnum int32 + +type CalendarExceptionTypeEnum int32 + +type FrequencyExactTimeEnum int32 + +type TransferTypeEnum int32 + +type PathwayDirectionalityEnum int32 + +type PathwayModeEnum int32 + +type BookingRuleTypeEnum int32 + +type FareMediaTypeEnum int32 + +type FareTransferTypeEnum int32 + +type DurationLimitTypeEnum int32 + +type FareAttributeTransferTypeEnum int32 + +type PaymentMethodEnum int32 + +type AttributionRoleEnum int32 + +type FeedEntity struct { + Agency Agency + Stop Stop + Route Route + Trip Trip + StopTime StopTime + Shape Shape + Service Service +} + +type Agency struct { + DatabaseEntity + AgencyID Key + AgencyName String + AgencyUrl Url + AgencyTimezone Timezone + AgencyLang Language + AgencyPhone Phone + AgencyFareUrl Url + AgencyEmail Email +} + +type Stop struct { + DatabaseEntity + StopID Key + StopCode String + StopName String + TtsStopName String + StopDesc String + StopLat Float + StopLon Float + ZoneID String + StopUrl Url + LocationType StopLocationType + ParentStation Reference + StopTimezone Timezone + WheelchairBoarding WheelchairAccess + LevelID Reference + PlatformCode String +} + +type Route struct { + DatabaseEntity + RouteID Key + AgencyID Reference + RouteShortName String + RouteLongName String + RouteDesc String + RouteType RouteType + RouteUrl Url + RouteColor Color + RouteTextColor Color + RouteSortOrder Int + ContinuousPickup PickupAccess + ContinuousDropOff PickupAccess + NetworkID String +} + +type Trip struct { + DatabaseEntity + RouteID Reference + ServiceID Reference + TripID Key + TripHeadsign String + TripShortName String + DirectionID TripDirection + BlockID String + ShapeID Reference + WheelchairAccessible WheelchairAccess + BikesAllowed BikeAccess +} + +type StopTime struct { + DatabaseEntity + TripID Reference + ArrivalTime Seconds + DepartureTime Seconds + StopID Reference + StopSequence Int + StopHeadsign String + ContinuousPickup PickupAccess + ContinuousDropOff PickupAccess + ShapeDistTraveled Float + Timepoint StopTimepoint + LocationID Reference + LocationGroupID Reference + StartPickupDropOffWindow Seconds + EndPickupDropOffWindow Seconds + PickupType PickupAccess + DropOffType PickupAccess + PickupBookingRuleID Reference + DropOffBookingRuleID Reference +} + +type Calendar struct { + DatabaseEntity + ServiceID Key + StartDate Date + EndDate Date + Monday Bool + Tuesday Bool + Wednesday Bool + Thursday Bool + Friday Bool + Saturday Bool + Sunday Bool +} + +type CalendarDate struct { + DatabaseEntity + ServiceID Reference + Date Date + ExceptionType CalendarExceptionType +} + +type FareAttribute struct { + DatabaseEntity + FareID Key + Price Money + CurrencyType Currency + PaymentMethod PaymentMethod + Transfers FareAttributeTransferType + AgencyID Reference + TransferDuration Int +} + +type FareRule struct { + DatabaseEntity + FareID Key + RouteID Reference + OriginID Reference + DestinationID Reference + ContainsID Reference +} + +type Timeframe struct { + DatabaseEntity + TimeframeGroupID Key + StartTime Seconds + EndTime Seconds + ServiceID Reference +} + +type FareMedia struct { + DatabaseEntity + FareMediaID Key + FareMediaName String + FareMediaType FareMediaType +} + +type FareProduct struct { + DatabaseEntity + FareProductID Key + FareProductName String + FareMediaID Reference + Amount Money + Currency Currency +} + +type FareLegRule struct { + DatabaseEntity + LegGroupID Key + NetworkID Reference + FromAreaID Reference + ToAreaID Reference + FromTimeframeGroupID Reference + ToTimeframeGroupID Reference + FareProductID Reference + RuleProirity Int +} + +type FareTransferRule struct { + DatabaseEntity + FromLegGroupID Reference + ToLegGroupID Reference + TransferCount Int + DurationLimitType DurationLimitType + FareTransferType FareTransferType + FareProductID Reference +} + +type Area struct { + DatabaseEntity + AreaID Key + AreaName String +} + +type StopArea struct { + DatabaseEntity + AreaID Reference + StopID Reference +} + +type Network struct { + DatabaseEntity + NetworkID Key + NetworkName String +} + +type RouteNetwork struct { + DatabaseEntity + NetworkID Reference + RouteID Reference +} + +type Frequency struct { + DatabaseEntity + TripID Reference + StartTime Seconds + EndTime Seconds + HeadwaySecs Int + ExactTime FrequencyExactTime +} + +type Transfer struct { + DatabaseEntity + FromStopID Reference + ToStopID Reference + FromRouteID Reference + ToRouteID Reference + FromTripID Reference + ToTripID Reference + TransferType TransferType + MinTransferTime Int +} + +type Pathway struct { + DatabaseEntity + PathwayID Key + FromStopID Reference + ToStopID Reference + PathwayMode PathwayMode + IsBidirectional PathwayDirectionality + Length Float + TraversalTime Int + StairCount Int + MaxSlope Float + MinWidth Float + SignpostedAs String + ReverseSignpostedAs String +} + +type Level struct { + DatabaseEntity + LevelID Key + LevelIndex Float + LevelName String +} + +type LocationGroup struct { + DatabaseEntity + LocationGroupID Key + LocationGroupName String +} + +type LocationGroupStop struct { + DatabaseEntity + LocationGroupID Reference + StopID Reference +} + +type BookingRule struct { + DatabaseEntity + BookingRuleID Key + BookingType BookingRuleType + PriorNoticeDurationMin Int + PriorNoticeDurationMax Int + PriorNoticeLastDay Int + PriorNoticeLastTime Seconds + PriorNoticeStartDay Int + PriorNoticeStartTime Seconds + PriorNoticeServiceID Reference + Message String + PickupMessage String + DropOffMessage String + PhoneNumber String + InfoUrl Url + BookingUrl Url +} + +type Translation struct { + DatabaseEntity + TableName String + FieldName String + Language Language + Translation String + RecordID String + RecordSubID String + FieldValue String +} + +type FeedInfo struct { + DatabaseEntity + FeedPublisherName String + FeedPublisherUrl Url + FeedLang Language + DefaultLang Language + FeedStartDate Date + FeedEndDate Date + FeedContactEmail Email + FeedContactUrl Url +} + +type Attribution struct { + DatabaseEntity + AttributionID Key + AgencyID Reference + RouteID Reference + TripID Reference + OrganizationName String + IsProducer AttributionRole + IsOperator AttributionRole + IsAuthority AttributionRole + AttributionUrl Url + AttributionEmail Email + AttributionPhone Phone +} + +type ShapePoint struct { + ShapeID Key + ShapePtLat float64 + ShapePtLon float64 + ShapePtSequence int32 + ShapeDistTraveled float64 +} + +type Service struct { + DatabaseEntity + ServiceID Key + StartDate Date + EndDate Date + Added Date + Removed Date + Monday Bool + Tuesday Bool + Wednesday Bool + Thursday Bool + Friday Bool + Saturday Bool + Sunday Bool +} + +type Shape struct { + DatabaseEntity + ShapeID Key + Geometry LineString +} + +type Point struct { + Lon float64 + Lat float64 +} + +type LineString struct { + Stride uint32 + Coordinates float64 +} + +type DatabaseEntity struct { + ID int64 + FeedVersionID int64 +} + +type Date struct { + Year int32 + Month int32 + Day int32 +} + +type Timestamp struct { Option[int64] } + +type Seconds struct { Option[int64] } + +type Key struct { Option[string] } + +type Timezone struct { Option[string] } + +type Reference struct { Option[string] } + +type Url struct { Option[string] } + +type Email struct { Option[string] } + +type Color struct { Option[string] } + +type Money struct { + Units int64 + Nanos int64 +} + +type Currency struct { Option[string] } + +type Language struct { Option[string] } + +type Phone struct { Option[string] } + +type Float struct { Option[float64] } + +type String struct { Option[string] } + +type Int struct { Option[int64] } + +type Bool struct { Option[bool] } + +type WheelchairAccess struct { Option[WheelchairAccessEnum] } + +type BikeAccess struct { Option[BikeAccessEnum] } + +type BoardAccess struct { Option[BoardAccessEnum] } + +type PickupAccess struct { Option[PickupAccessEnum] } + +type StopLocationType struct { Option[StopLocationTypeEnum] } + +type RouteType struct { Option[RouteTypeEnum] } + +type TripDirection struct { Option[TripDirectionEnum] } + +type StopTimepoint struct { Option[StopTimepointEnum] } + +type CalendarExceptionType struct { Option[CalendarExceptionTypeEnum] } + +type FrequencyExactTime struct { Option[FrequencyExactTimeEnum] } + +type TransferType struct { Option[TransferTypeEnum] } + +type PathwayDirectionality struct { Option[PathwayDirectionalityEnum] } + +type PathwayMode struct { Option[PathwayModeEnum] } + +type BookingRuleType struct { Option[BookingRuleTypeEnum] } + +type FareMediaType struct { Option[FareMediaTypeEnum] } + +type FareTransferType struct { Option[FareTransferTypeEnum] } + +type DurationLimitType struct { Option[DurationLimitTypeEnum] } + +type FareAttributeTransferType struct { Option[FareAttributeTransferTypeEnum] } + +type PaymentMethod struct { Option[PaymentMethodEnum] } + +type AttributionRole struct { Option[AttributionRoleEnum] } + diff --git a/tlpb/gtfs/option.go b/tlpb/gtfs/option.go new file mode 100644 index 00000000..fe0d63af --- /dev/null +++ b/tlpb/gtfs/option.go @@ -0,0 +1,238 @@ +package gtfs + +import ( + "database/sql/driver" + "encoding/json" + "errors" + "fmt" + "reflect" + "strconv" + "time" + + "github.com/interline-io/transitland-lib/tl/tt" +) + +func (r *EnumValue) FromCsv(v string) error { + a, err := parseInt32(v) + *r = EnumValue(a) + return err +} + +func (r *Seconds) FromCsv(v string) error { + wt, err := tt.NewWideTime(v) + r.Val = int64(wt.Seconds) + r.Valid = (err == nil) + return nil +} + +type Option[T any] struct { + Val T + Valid bool +} + +func (r *Option[T]) Present() bool { + return r.Valid +} + +func (r *Option[T]) FromCsv(v string) error { + err := convertAssign(&r.Val, v) + if err != nil { + // fmt.Printf("\tfailed string '%s' into %T: %s\n", v, r.Val, err.Error()) + return err + } + // fmt.Printf("\t\tgot: %T %v\n", r.Val, r.Val) + r.Valid = (err == nil) + return nil +} + +func (r Option[T]) String() string { + if !r.Valid { + return "" + } + out := "" + if err := convertAssign(&out, r.Val); err != nil { + b, _ := r.MarshalJSON() + return string(b) + } + return out +} + +func (r *Option[T]) Error() error { + return nil +} + +func (r *Option[T]) Scan(src interface{}) error { + err := convertAssign(&r.Val, src) + r.Valid = (src != nil && err == nil) + return err +} + +func (r Option[T]) Value() (driver.Value, error) { + if !r.Valid { + return nil, nil + } + return r.Val, nil +} + +func (r *Option[T]) UnmarshalJSON(v []byte) error { + err := json.Unmarshal(v, &r.Val) + r.Valid = (err == nil) + return err +} + +func (r Option[T]) MarshalJSON() ([]byte, error) { + if !r.Valid { + return []byte("null"), nil + } + return json.Marshal(r.Val) +} + +type canFromCsv interface { + FromCsv(string) error +} + +func convertAssign(dest any, src any) error { + // fmt.Printf("convertAssign %T '%v' into %T\n", src, src, dest) + if src == nil { + return nil + } + var err error + switch d := dest.(type) { + case *string: + switch s := src.(type) { + case string: + *d = s + case []byte: + *d = string(s) + case int: + *d = strconv.Itoa(s) + case int64: + *d = strconv.Itoa(int(s)) + case float64: + *d = fmt.Sprintf("%0.5f", s) + case time.Time: + *d = s.Format(time.RFC3339) + default: + err = cannotConvert() + } + case *int: + switch s := src.(type) { + case string: + *d, err = strconv.Atoi(s) + case []byte: + *d, err = strconv.Atoi(string(s)) + case int: + *d = int(s) + case int64: + *d = int(s) + case float64: + *d = int(s) + default: + err = cannotConvert() + } + case *int64: + switch s := src.(type) { + case string: + *d, err = strconv.ParseInt(s, 10, 64) + case []byte: + *d, err = strconv.ParseInt(string(s), 10, 64) + case int: + *d = int64(s) + case int64: + *d = int64(s) + case float64: + *d = int64(s) + default: + err = cannotConvert() + } + case *int32: + switch s := src.(type) { + case string: + *d, err = parseInt32(s) + case []byte: + *d, err = parseInt32(string(s)) + case int: + *d = int32(s) + case int64: + *d = int32(s) + case float64: + *d = int32(s) + default: + err = cannotConvert() + } + case *float64: + switch s := src.(type) { + case string: + *d, err = strconv.ParseFloat(s, 64) + case []byte: + *d, err = strconv.ParseFloat(string(s), 64) + case int: + *d = float64(s) + case int64: + *d = float64(s) + case float64: + *d = float64(s) + default: + err = cannotConvert() + } + case *bool: + switch s := src.(type) { + case string: + if s == "true" { + *d = true + } else if s == "false" { + *d = false + } else { + err = cannotConvert() + } + case bool: + *d = s + default: + err = cannotConvert() + } + case *time.Time: + switch s := src.(type) { + case []byte: + *d, err = parseTime(string(s)) + case string: + *d, err = parseTime(s) + case time.Time: + *d = s + default: + err = cannotConvert() + } + default: + // Handle type aliases + k := reflect.ValueOf(dest).Elem() + if k.CanInt() { + xi := int64(0) + err = convertAssign(&xi, src) + k.SetInt(xi) + } else { + err = cannotConvert() + } + } + return err +} + +func parseInt32(s string) (int32, error) { + d, err := strconv.ParseInt(s, 10, 64) + return int32(d), err +} + +func cannotConvert() error { + return errors.New("cannot convert") +} + +func parseTime(d string) (time.Time, error) { + var err error + var s time.Time + if len(d) == 8 { + s, err = time.Parse("20060102", d) + } else if len(d) == 10 { + s, err = time.Parse("2006-01-02", d) + } else { + s, err = time.Parse(time.RFC3339, d) + } + return s, err +} diff --git a/tlpb/out/option.go b/tlpb/out/option.go deleted file mode 100644 index d2560296..00000000 --- a/tlpb/out/option.go +++ /dev/null @@ -1,59 +0,0 @@ -package out - -import ( - "database/sql/driver" - "encoding/json" -) - -type Option[T any] struct { - Val T - Valid bool -} - -func (r *Option[T]) Present() bool { - return r.Valid -} - -func (r Option[T]) String() string { - return "" - // if !r.Valid { - // return "" - // } - // out := "" - // if err := convertAssign(&out, r.Val); err != nil { - // b, _ := r.MarshalJSON() - // return string(b) - // } - // return out -} - -func (r *Option[T]) Error() error { - return nil -} - -func (r *Option[T]) Scan(src interface{}) error { - return nil - // err := convertAssign(&r.Val, src) - // r.Valid = (src != nil && err == nil) - // return err -} - -func (r Option[T]) Value() (driver.Value, error) { - if !r.Valid { - return nil, nil - } - return r.Val, nil -} - -func (r *Option[T]) UnmarshalJSON(v []byte) error { - err := json.Unmarshal(v, &r.Val) - r.Valid = (err == nil) - return err -} - -func (r Option[T]) MarshalJSON() ([]byte, error) { - if !r.Valid { - return []byte("null"), nil - } - return json.Marshal(r.Val) -} diff --git a/tlpb/out/out.go b/tlpb/out/out.go deleted file mode 100644 index 30d66593..00000000 --- a/tlpb/out/out.go +++ /dev/null @@ -1,464 +0,0 @@ -package out - -type WheelchairAccess int32 - -type BikeAccess int32 - -type BoardAccess int32 - -type PickupAccess int32 - -type StopLocationType int32 - -type RouteType int32 - -type TripDirection int32 - -type StopTimepoint int32 - -type CalendarExceptionType int32 - -type FrequencyExactTime int32 - -type TransferType int32 - -type PathwayDirectionality int32 - -type PathwayMode int32 - -type BookingRuleType int32 - -type FareMediaType int32 - -type FareTransferType int32 - -type DurationLimitType int32 - -type FareAttributeTransferType int32 - -type PaymentMethod int32 - -type AttributionRole int32 - -type FeedEntity struct { - Agency Agency - Stop Stop - Route Route - Trip Trip - StopTime StopTime - Shape Shape - Service Service -} - -type Agency struct { - ID int64 - FeedVersionID int64 - AgencyID EntityID - AgencyName string - AgencyUrl Url - AgencyTimezone Timezone - AgencyLang Language - AgencyPhone Phone - AgencyFareUrl Url - AgencyEmail Email -} - -type Stop struct { - ID int64 - FeedVersionID int64 - StopID EntityID - StopCode string - StopName string - TtsStopName string - StopDesc string - StopLat float64 - StopLon float64 - ZoneID string - StopUrl Url - LocationType StopLocationType - ParentStation Reference - StopTimezone Timezone - WheelchairBoarding WheelchairAccess - LevelID Reference - PlatformCode string -} - -type Route struct { - ID int64 - FeedVersionID int64 - RouteID EntityID - AgencyID Reference - RouteShortName string - RouteLongName string - RouteDesc string - RouteType RouteType - RouteUrl Url - RouteColor Color - RouteTextColor Color - RouteSortOrder int32 - ContinuousPickup PickupAccess - ContinuousDropOff PickupAccess - NetworkID string -} - -type Trip struct { - ID int64 - FeedVersionID int64 - RouteID Reference - ServiceID Reference - TripID EntityID - TripHeadsign string - TripShortName string - DirectionID TripDirection - BlockID string - ShapeID Reference - WheelchairAccessible WheelchairAccess - BikesAllowed BikeAccess -} - -type StopTime struct { - ID int64 - FeedVersionID int64 - TripID Reference - ArrivalTime Seconds - DepartureTime Seconds - StopID Reference - StopSequence int32 - StopHeadsign string - ContinuousPickup PickupAccess - ContinuousDropOff PickupAccess - ShapeDistTraveled float64 - Timepoint StopTimepoint - LocationID Reference - LocationGroupID Reference - StartPickupDropOffWindow Seconds - EndPickupDropOffWindow Seconds - PickupType PickupAccess - DropOffType PickupAccess - PickupBookingRuleID Reference - DropOffBookingRuleID Reference -} - -type Calendar struct { - ID int64 - FeedVersionID int64 - ServiceID EntityID - StartDate Date - EndDate Date - Monday bool - Tuesday bool - Wednesday bool - Thursday bool - Friday bool - Saturday bool - Sunday bool -} - -type CalendarDate struct { - ID int64 - FeedVersionID int64 - ServiceID Reference - Date Date - ExceptionType CalendarExceptionType -} - -type FareAttribute struct { - ID int64 - FeedVersionID int64 - FareID EntityID - Price Money - CurrencyType Currency - PaymentMethod PaymentMethod - Transfers FareAttributeTransferType - AgencyID Reference - TransferDuration int32 -} - -type FareRule struct { - ID int64 - FeedVersionID int64 - FareID EntityID - RouteID Reference - OriginID Reference - DestinationID Reference - ContainsID Reference -} - -type Timeframe struct { - ID int64 - FeedVersionID int64 - TimeframeGroupID EntityID - StartTime Seconds - EndTime Seconds - ServiceID Reference -} - -type FareMedia struct { - ID int64 - FeedVersionID int64 - FareMediaID EntityID - FareMediaName string - FareMediaType FareMediaType -} - -type FareProduct struct { - ID int64 - FeedVersionID int64 - FareProductID EntityID - FareProductName string - FareMediaID Reference - Amount Money - Currency Currency -} - -type FareLegRule struct { - ID int64 - FeedVersionID int64 - LegGroupID EntityID - NetworkID Reference - FromAreaID Reference - ToAreaID Reference - FromTimeframeGroupID Reference - ToTimeframeGroupID Reference - FareProductID Reference - RuleProirity int32 -} - -type FareTransferRule struct { - ID int64 - FeedVersionID int64 - FromLegGroupID Reference - ToLegGroupID Reference - TransferCount TransferCount - DurationLimitType DurationLimitType - FareTransferType FareTransferType - FareProductID Reference -} - -type Area struct { - ID int64 - FeedVersionID int64 - AreaID EntityID - AreaName string -} - -type StopArea struct { - ID int64 - FeedVersionID int64 - AreaID Reference - StopID Reference -} - -type Network struct { - ID int64 - FeedVersionID int64 - NetworkID EntityID - NetworkName string -} - -type RouteNetwork struct { - ID int64 - FeedVersionID int64 - NetworkID Reference - RouteID Reference -} - -type Frequency struct { - ID int64 - FeedVersionID int64 - TripID Reference - StartTime Seconds - EndTime Seconds - HeadwaySecs int32 - ExactTime FrequencyExactTime -} - -type Transfer struct { - ID int64 - FeedVersionID int64 - FromStopID Reference - ToStopID Reference - FromRouteID Reference - ToRouteID Reference - FromTripID Reference - ToTripID Reference - TransferType TransferType - MinTransferTime int32 -} - -type Pathway struct { - ID int64 - FeedVersionID int64 - PathwayID EntityID - FromStopID Reference - ToStopID Reference - PathwayMode PathwayMode - IsBidirectional PathwayDirectionality - Length float64 - TraversalTime int32 - StairCount int32 - MaxSlope float64 - MinWidth float64 - SignpostedAs string - ReverseSignpostedAs string -} - -type Level struct { - ID int64 - FeedVersionID int64 - LevelID EntityID - LevelIndex float64 - LevelName string -} - -type LocationGroup struct { - ID int64 - FeedVersionID int64 - LocationGroupID EntityID - LocationGroupName string -} - -type LocationGroupStop struct { - ID int64 - FeedVersionID int64 - LocationGroupID Reference - StopID Reference -} - -type BookingRule struct { - ID int64 - FeedVersionID int64 - BookingRuleID EntityID - BookingType BookingRuleType - PriorNoticeDurationMin int32 - PriorNoticeDurationMax int32 - PriorNoticeLastDay int32 - PriorNoticeLastTime Seconds - PriorNoticeStartDay int32 - PriorNoticeStartTime Seconds - PriorNoticeServiceID Reference - Message string - PickupMessage string - DropOffMessage string - PhoneNumber string - InfoUrl Url - BookingUrl Url -} - -type Translation struct { - ID int64 - FeedVersionID int64 - TableName string - FieldName string - Language Language - Translation string - RecordID string - RecordSubID string - FieldValue string -} - -type FeedInfo struct { - ID int64 - FeedVersionID int64 - FeedPublisherName string - FeedPublisherUrl Url - FeedLang Language - DefaultLang Language - FeedStartDate Date - FeedEndDate Date - FeedContactEmail Email - FeedContactUrl Url -} - -type Attribution struct { - ID int64 - FeedVersionID int64 - AttributionID EntityID - AgencyID Reference - RouteID Reference - TripID Reference - OrganizationName string - IsProducer AttributionRole - IsOperator AttributionRole - IsAuthority AttributionRole - AttributionUrl Url - AttributionEmail Email - AttributionPhone Phone -} - -type Service struct { - ID int64 - FeedVersionID int64 - ServiceID EntityID - StartDate Date - EndDate Date - Added Date - Removed Date - Monday bool - Tuesday bool - Wednesday bool - Thursday bool - Friday bool - Saturday bool - Sunday bool -} - -type ShapePoint struct { - ShapeID EntityID - ShapePtLat float64 - ShapePtLon float64 - ShapePtSequence int32 - ShapeDistTraveled float64 -} - -type Shape struct { - ShapeID EntityID - Shape LineString -} - -type Point struct { - Lon float64 - Lat float64 -} - -type LineString struct { - Stride uint32 - Coordinates float64 -} - -type Date struct { - Year int32 - Month int32 - Day int32 -} - -type Time Option[int64] - -type Seconds Option[int64] - -type EntityID Option[string] - -type Timezone Option[string] - -type Reference Option[string] - -type Url Option[string] - -type Email Option[string] - -type Color Option[string] - -type Money struct { - Units int64 - Nanos int64 -} - -type Currency Option[string] - -type Language Option[string] - -type Phone Option[string] - -type FareAttributeTransfer Option[FareAttributeTransferType] - -type TransferCount Option[int32] diff --git a/tlpb/pb/gtfs.pb.go b/tlpb/pb/gtfs.pb.go new file mode 100644 index 00000000..3b1fdfcf --- /dev/null +++ b/tlpb/pb/gtfs.pb.go @@ -0,0 +1,8489 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.27.1 +// source: gtfs.proto + +package pb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type WheelchairAccessEnum int32 + +const ( + WheelchairAccessEnum_WheelchairUnknown WheelchairAccessEnum = 0 + WheelchairAccessEnum_WheelchairAllowed WheelchairAccessEnum = 1 + WheelchairAccessEnum_WheelchairDisallowed WheelchairAccessEnum = 2 +) + +// Enum value maps for WheelchairAccessEnum. +var ( + WheelchairAccessEnum_name = map[int32]string{ + 0: "WheelchairUnknown", + 1: "WheelchairAllowed", + 2: "WheelchairDisallowed", + } + WheelchairAccessEnum_value = map[string]int32{ + "WheelchairUnknown": 0, + "WheelchairAllowed": 1, + "WheelchairDisallowed": 2, + } +) + +func (x WheelchairAccessEnum) Enum() *WheelchairAccessEnum { + p := new(WheelchairAccessEnum) + *p = x + return p +} + +func (x WheelchairAccessEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WheelchairAccessEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[0].Descriptor() +} + +func (WheelchairAccessEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[0] +} + +func (x WheelchairAccessEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WheelchairAccessEnum.Descriptor instead. +func (WheelchairAccessEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{0} +} + +type BikeAccessEnum int32 + +const ( + BikeAccessEnum_BikeUnknown BikeAccessEnum = 0 + BikeAccessEnum_BikeAllowed BikeAccessEnum = 1 + BikeAccessEnum_BikeDisallowed BikeAccessEnum = 2 +) + +// Enum value maps for BikeAccessEnum. +var ( + BikeAccessEnum_name = map[int32]string{ + 0: "BikeUnknown", + 1: "BikeAllowed", + 2: "BikeDisallowed", + } + BikeAccessEnum_value = map[string]int32{ + "BikeUnknown": 0, + "BikeAllowed": 1, + "BikeDisallowed": 2, + } +) + +func (x BikeAccessEnum) Enum() *BikeAccessEnum { + p := new(BikeAccessEnum) + *p = x + return p +} + +func (x BikeAccessEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BikeAccessEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[1].Descriptor() +} + +func (BikeAccessEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[1] +} + +func (x BikeAccessEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BikeAccessEnum.Descriptor instead. +func (BikeAccessEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{1} +} + +type BoardAccessEnum int32 + +const ( + BoardAccessEnum_BoardUnknown BoardAccessEnum = 0 + BoardAccessEnum_BoardDisallowed BoardAccessEnum = 1 + BoardAccessEnum_BoardAllowed BoardAccessEnum = 2 + BoardAccessEnum_BoardCoordinate BoardAccessEnum = 3 +) + +// Enum value maps for BoardAccessEnum. +var ( + BoardAccessEnum_name = map[int32]string{ + 0: "BoardUnknown", + 1: "BoardDisallowed", + 2: "BoardAllowed", + 3: "BoardCoordinate", + } + BoardAccessEnum_value = map[string]int32{ + "BoardUnknown": 0, + "BoardDisallowed": 1, + "BoardAllowed": 2, + "BoardCoordinate": 3, + } +) + +func (x BoardAccessEnum) Enum() *BoardAccessEnum { + p := new(BoardAccessEnum) + *p = x + return p +} + +func (x BoardAccessEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BoardAccessEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[2].Descriptor() +} + +func (BoardAccessEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[2] +} + +func (x BoardAccessEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BoardAccessEnum.Descriptor instead. +func (BoardAccessEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{2} +} + +type PickupAccessEnum int32 + +const ( + PickupAccessEnum_PickupContinuous PickupAccessEnum = 0 + PickupAccessEnum_PickupDisallowed PickupAccessEnum = 1 + PickupAccessEnum_PickupMustPhone PickupAccessEnum = 2 + PickupAccessEnum_PickupAskDriver PickupAccessEnum = 3 +) + +// Enum value maps for PickupAccessEnum. +var ( + PickupAccessEnum_name = map[int32]string{ + 0: "PickupContinuous", + 1: "PickupDisallowed", + 2: "PickupMustPhone", + 3: "PickupAskDriver", + } + PickupAccessEnum_value = map[string]int32{ + "PickupContinuous": 0, + "PickupDisallowed": 1, + "PickupMustPhone": 2, + "PickupAskDriver": 3, + } +) + +func (x PickupAccessEnum) Enum() *PickupAccessEnum { + p := new(PickupAccessEnum) + *p = x + return p +} + +func (x PickupAccessEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PickupAccessEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[3].Descriptor() +} + +func (PickupAccessEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[3] +} + +func (x PickupAccessEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PickupAccessEnum.Descriptor instead. +func (PickupAccessEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{3} +} + +type StopLocationTypeEnum int32 + +const ( + StopLocationTypeEnum_LocationPlatform StopLocationTypeEnum = 0 + StopLocationTypeEnum_LocationStation StopLocationTypeEnum = 1 + StopLocationTypeEnum_LocationEntrance StopLocationTypeEnum = 2 + StopLocationTypeEnum_LocationNode StopLocationTypeEnum = 3 + StopLocationTypeEnum_LocationBoardingArea StopLocationTypeEnum = 4 +) + +// Enum value maps for StopLocationTypeEnum. +var ( + StopLocationTypeEnum_name = map[int32]string{ + 0: "LocationPlatform", + 1: "LocationStation", + 2: "LocationEntrance", + 3: "LocationNode", + 4: "LocationBoardingArea", + } + StopLocationTypeEnum_value = map[string]int32{ + "LocationPlatform": 0, + "LocationStation": 1, + "LocationEntrance": 2, + "LocationNode": 3, + "LocationBoardingArea": 4, + } +) + +func (x StopLocationTypeEnum) Enum() *StopLocationTypeEnum { + p := new(StopLocationTypeEnum) + *p = x + return p +} + +func (x StopLocationTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StopLocationTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[4].Descriptor() +} + +func (StopLocationTypeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[4] +} + +func (x StopLocationTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StopLocationTypeEnum.Descriptor instead. +func (StopLocationTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{4} +} + +type RouteTypeEnum int32 + +const ( + RouteTypeEnum_VehicleTram RouteTypeEnum = 0 + RouteTypeEnum_VehicleSubway RouteTypeEnum = 1 + RouteTypeEnum_VehicleRail RouteTypeEnum = 2 + RouteTypeEnum_VehicleBus RouteTypeEnum = 3 + RouteTypeEnum_VehicleFerry RouteTypeEnum = 4 + RouteTypeEnum_VehicleCablecar RouteTypeEnum = 5 + RouteTypeEnum_VehicleGondola RouteTypeEnum = 6 + RouteTypeEnum_VehicleFunicular RouteTypeEnum = 7 + RouteTypeEnum_VehicleTrollebus RouteTypeEnum = 11 + RouteTypeEnum_VehicleMonorail RouteTypeEnum = 12 +) + +// Enum value maps for RouteTypeEnum. +var ( + RouteTypeEnum_name = map[int32]string{ + 0: "VehicleTram", + 1: "VehicleSubway", + 2: "VehicleRail", + 3: "VehicleBus", + 4: "VehicleFerry", + 5: "VehicleCablecar", + 6: "VehicleGondola", + 7: "VehicleFunicular", + 11: "VehicleTrollebus", + 12: "VehicleMonorail", + } + RouteTypeEnum_value = map[string]int32{ + "VehicleTram": 0, + "VehicleSubway": 1, + "VehicleRail": 2, + "VehicleBus": 3, + "VehicleFerry": 4, + "VehicleCablecar": 5, + "VehicleGondola": 6, + "VehicleFunicular": 7, + "VehicleTrollebus": 11, + "VehicleMonorail": 12, + } +) + +func (x RouteTypeEnum) Enum() *RouteTypeEnum { + p := new(RouteTypeEnum) + *p = x + return p +} + +func (x RouteTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RouteTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[5].Descriptor() +} + +func (RouteTypeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[5] +} + +func (x RouteTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RouteTypeEnum.Descriptor instead. +func (RouteTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{5} +} + +type TripDirectionEnum int32 + +const ( + TripDirectionEnum_TripDirectionOutbound TripDirectionEnum = 0 + TripDirectionEnum_TripDirectionInbound TripDirectionEnum = 1 +) + +// Enum value maps for TripDirectionEnum. +var ( + TripDirectionEnum_name = map[int32]string{ + 0: "TripDirectionOutbound", + 1: "TripDirectionInbound", + } + TripDirectionEnum_value = map[string]int32{ + "TripDirectionOutbound": 0, + "TripDirectionInbound": 1, + } +) + +func (x TripDirectionEnum) Enum() *TripDirectionEnum { + p := new(TripDirectionEnum) + *p = x + return p +} + +func (x TripDirectionEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TripDirectionEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[6].Descriptor() +} + +func (TripDirectionEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[6] +} + +func (x TripDirectionEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TripDirectionEnum.Descriptor instead. +func (TripDirectionEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{6} +} + +type StopTimepointEnum int32 + +const ( + StopTimepointEnum_Approximate StopTimepointEnum = 0 + StopTimepointEnum_StopTimepointExact StopTimepointEnum = 1 +) + +// Enum value maps for StopTimepointEnum. +var ( + StopTimepointEnum_name = map[int32]string{ + 0: "Approximate", + 1: "StopTimepointExact", + } + StopTimepointEnum_value = map[string]int32{ + "Approximate": 0, + "StopTimepointExact": 1, + } +) + +func (x StopTimepointEnum) Enum() *StopTimepointEnum { + p := new(StopTimepointEnum) + *p = x + return p +} + +func (x StopTimepointEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StopTimepointEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[7].Descriptor() +} + +func (StopTimepointEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[7] +} + +func (x StopTimepointEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StopTimepointEnum.Descriptor instead. +func (StopTimepointEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{7} +} + +type CalendarExceptionTypeEnum int32 + +const ( + CalendarExceptionTypeEnum_CalendarUnknown CalendarExceptionTypeEnum = 0 + CalendarExceptionTypeEnum_CalendarAdded CalendarExceptionTypeEnum = 1 + CalendarExceptionTypeEnum_CalendarRemoved CalendarExceptionTypeEnum = 2 +) + +// Enum value maps for CalendarExceptionTypeEnum. +var ( + CalendarExceptionTypeEnum_name = map[int32]string{ + 0: "CalendarUnknown", + 1: "CalendarAdded", + 2: "CalendarRemoved", + } + CalendarExceptionTypeEnum_value = map[string]int32{ + "CalendarUnknown": 0, + "CalendarAdded": 1, + "CalendarRemoved": 2, + } +) + +func (x CalendarExceptionTypeEnum) Enum() *CalendarExceptionTypeEnum { + p := new(CalendarExceptionTypeEnum) + *p = x + return p +} + +func (x CalendarExceptionTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CalendarExceptionTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[8].Descriptor() +} + +func (CalendarExceptionTypeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[8] +} + +func (x CalendarExceptionTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CalendarExceptionTypeEnum.Descriptor instead. +func (CalendarExceptionTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{8} +} + +type FrequencyExactTimeEnum int32 + +const ( + FrequencyExactTimeEnum_FrequencyExactTimeFrequency FrequencyExactTimeEnum = 0 + FrequencyExactTimeEnum_FrequencyExactTimeScheduled FrequencyExactTimeEnum = 1 +) + +// Enum value maps for FrequencyExactTimeEnum. +var ( + FrequencyExactTimeEnum_name = map[int32]string{ + 0: "FrequencyExactTimeFrequency", + 1: "FrequencyExactTimeScheduled", + } + FrequencyExactTimeEnum_value = map[string]int32{ + "FrequencyExactTimeFrequency": 0, + "FrequencyExactTimeScheduled": 1, + } +) + +func (x FrequencyExactTimeEnum) Enum() *FrequencyExactTimeEnum { + p := new(FrequencyExactTimeEnum) + *p = x + return p +} + +func (x FrequencyExactTimeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FrequencyExactTimeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[9].Descriptor() +} + +func (FrequencyExactTimeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[9] +} + +func (x FrequencyExactTimeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FrequencyExactTimeEnum.Descriptor instead. +func (FrequencyExactTimeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{9} +} + +type TransferTypeEnum int32 + +const ( + TransferTypeEnum_TransferTypeRecommended TransferTypeEnum = 0 + TransferTypeEnum_TransferTypeTimed TransferTypeEnum = 1 + TransferTypeEnum_TransferTypeMinTime TransferTypeEnum = 2 + TransferTypeEnum_TransferTypeDisallowed TransferTypeEnum = 3 + TransferTypeEnum_TransferTypeInSeat TransferTypeEnum = 4 + TransferTypeEnum_TransferTypeMustExit TransferTypeEnum = 5 +) + +// Enum value maps for TransferTypeEnum. +var ( + TransferTypeEnum_name = map[int32]string{ + 0: "TransferTypeRecommended", + 1: "TransferTypeTimed", + 2: "TransferTypeMinTime", + 3: "TransferTypeDisallowed", + 4: "TransferTypeInSeat", + 5: "TransferTypeMustExit", + } + TransferTypeEnum_value = map[string]int32{ + "TransferTypeRecommended": 0, + "TransferTypeTimed": 1, + "TransferTypeMinTime": 2, + "TransferTypeDisallowed": 3, + "TransferTypeInSeat": 4, + "TransferTypeMustExit": 5, + } +) + +func (x TransferTypeEnum) Enum() *TransferTypeEnum { + p := new(TransferTypeEnum) + *p = x + return p +} + +func (x TransferTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransferTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[10].Descriptor() +} + +func (TransferTypeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[10] +} + +func (x TransferTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransferTypeEnum.Descriptor instead. +func (TransferTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{10} +} + +type PathwayDirectionalityEnum int32 + +const ( + PathwayDirectionalityEnum_PathwayUnidirectional PathwayDirectionalityEnum = 0 + PathwayDirectionalityEnum_PathwayBidirectional PathwayDirectionalityEnum = 1 +) + +// Enum value maps for PathwayDirectionalityEnum. +var ( + PathwayDirectionalityEnum_name = map[int32]string{ + 0: "PathwayUnidirectional", + 1: "PathwayBidirectional", + } + PathwayDirectionalityEnum_value = map[string]int32{ + "PathwayUnidirectional": 0, + "PathwayBidirectional": 1, + } +) + +func (x PathwayDirectionalityEnum) Enum() *PathwayDirectionalityEnum { + p := new(PathwayDirectionalityEnum) + *p = x + return p +} + +func (x PathwayDirectionalityEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PathwayDirectionalityEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[11].Descriptor() +} + +func (PathwayDirectionalityEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[11] +} + +func (x PathwayDirectionalityEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PathwayDirectionalityEnum.Descriptor instead. +func (PathwayDirectionalityEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{11} +} + +type PathwayModeEnum int32 + +const ( + PathwayModeEnum_PathwayModeUnknown PathwayModeEnum = 0 + PathwayModeEnum_PathwayModeWalkway PathwayModeEnum = 1 + PathwayModeEnum_PathwayModeStairs PathwayModeEnum = 2 + PathwayModeEnum_PathwayModeTravelator PathwayModeEnum = 3 + PathwayModeEnum_PathwayModeEscalator PathwayModeEnum = 4 + PathwayModeEnum_PathwayModeElevator PathwayModeEnum = 5 + PathwayModeEnum_PatthwayModeFareGate PathwayModeEnum = 6 + PathwayModeEnum_PathwayModeExitGate PathwayModeEnum = 7 +) + +// Enum value maps for PathwayModeEnum. +var ( + PathwayModeEnum_name = map[int32]string{ + 0: "PathwayModeUnknown", + 1: "PathwayModeWalkway", + 2: "PathwayModeStairs", + 3: "PathwayModeTravelator", + 4: "PathwayModeEscalator", + 5: "PathwayModeElevator", + 6: "PatthwayModeFareGate", + 7: "PathwayModeExitGate", + } + PathwayModeEnum_value = map[string]int32{ + "PathwayModeUnknown": 0, + "PathwayModeWalkway": 1, + "PathwayModeStairs": 2, + "PathwayModeTravelator": 3, + "PathwayModeEscalator": 4, + "PathwayModeElevator": 5, + "PatthwayModeFareGate": 6, + "PathwayModeExitGate": 7, + } +) + +func (x PathwayModeEnum) Enum() *PathwayModeEnum { + p := new(PathwayModeEnum) + *p = x + return p +} + +func (x PathwayModeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PathwayModeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[12].Descriptor() +} + +func (PathwayModeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[12] +} + +func (x PathwayModeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PathwayModeEnum.Descriptor instead. +func (PathwayModeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{12} +} + +type BookingRuleTypeEnum int32 + +const ( + BookingRuleTypeEnum_BookingRuleTypeRealtime BookingRuleTypeEnum = 0 + BookingRuleTypeEnum_BookingRuleTypeSameday BookingRuleTypeEnum = 1 + BookingRuleTypeEnum_BookingRuleTypePriorday BookingRuleTypeEnum = 2 +) + +// Enum value maps for BookingRuleTypeEnum. +var ( + BookingRuleTypeEnum_name = map[int32]string{ + 0: "BookingRuleTypeRealtime", + 1: "BookingRuleTypeSameday", + 2: "BookingRuleTypePriorday", + } + BookingRuleTypeEnum_value = map[string]int32{ + "BookingRuleTypeRealtime": 0, + "BookingRuleTypeSameday": 1, + "BookingRuleTypePriorday": 2, + } +) + +func (x BookingRuleTypeEnum) Enum() *BookingRuleTypeEnum { + p := new(BookingRuleTypeEnum) + *p = x + return p +} + +func (x BookingRuleTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BookingRuleTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[13].Descriptor() +} + +func (BookingRuleTypeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[13] +} + +func (x BookingRuleTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BookingRuleTypeEnum.Descriptor instead. +func (BookingRuleTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{13} +} + +type FareMediaTypeEnum int32 + +const ( + FareMediaTypeEnum_FareMediaNone FareMediaTypeEnum = 0 + FareMediaTypeEnum_FareMediaPaper FareMediaTypeEnum = 1 + FareMediaTypeEnum_FareMediaCard FareMediaTypeEnum = 2 + FareMediaTypeEnum_FareMediaOpenLoop FareMediaTypeEnum = 3 + FareMediaTypeEnum_FareMediaApp FareMediaTypeEnum = 4 +) + +// Enum value maps for FareMediaTypeEnum. +var ( + FareMediaTypeEnum_name = map[int32]string{ + 0: "FareMediaNone", + 1: "FareMediaPaper", + 2: "FareMediaCard", + 3: "FareMediaOpenLoop", + 4: "FareMediaApp", + } + FareMediaTypeEnum_value = map[string]int32{ + "FareMediaNone": 0, + "FareMediaPaper": 1, + "FareMediaCard": 2, + "FareMediaOpenLoop": 3, + "FareMediaApp": 4, + } +) + +func (x FareMediaTypeEnum) Enum() *FareMediaTypeEnum { + p := new(FareMediaTypeEnum) + *p = x + return p +} + +func (x FareMediaTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FareMediaTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[14].Descriptor() +} + +func (FareMediaTypeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[14] +} + +func (x FareMediaTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FareMediaTypeEnum.Descriptor instead. +func (FareMediaTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{14} +} + +type FareTransferTypeEnum int32 + +const ( + FareTransferTypeEnum_FareTransfer0 FareTransferTypeEnum = 0 + FareTransferTypeEnum_FareTransfer1 FareTransferTypeEnum = 1 + FareTransferTypeEnum_FareTransfer2 FareTransferTypeEnum = 2 +) + +// Enum value maps for FareTransferTypeEnum. +var ( + FareTransferTypeEnum_name = map[int32]string{ + 0: "FareTransfer0", + 1: "FareTransfer1", + 2: "FareTransfer2", + } + FareTransferTypeEnum_value = map[string]int32{ + "FareTransfer0": 0, + "FareTransfer1": 1, + "FareTransfer2": 2, + } +) + +func (x FareTransferTypeEnum) Enum() *FareTransferTypeEnum { + p := new(FareTransferTypeEnum) + *p = x + return p +} + +func (x FareTransferTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FareTransferTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[15].Descriptor() +} + +func (FareTransferTypeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[15] +} + +func (x FareTransferTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FareTransferTypeEnum.Descriptor instead. +func (FareTransferTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{15} +} + +type DurationLimitTypeEnum int32 + +const ( + DurationLimitTypeEnum_DurationLimit0 DurationLimitTypeEnum = 0 + DurationLimitTypeEnum_DurationLimit1 DurationLimitTypeEnum = 1 + DurationLimitTypeEnum_DurationLimit2 DurationLimitTypeEnum = 2 + DurationLimitTypeEnum_DurationLimit3 DurationLimitTypeEnum = 3 +) + +// Enum value maps for DurationLimitTypeEnum. +var ( + DurationLimitTypeEnum_name = map[int32]string{ + 0: "DurationLimit0", + 1: "DurationLimit1", + 2: "DurationLimit2", + 3: "DurationLimit3", + } + DurationLimitTypeEnum_value = map[string]int32{ + "DurationLimit0": 0, + "DurationLimit1": 1, + "DurationLimit2": 2, + "DurationLimit3": 3, + } +) + +func (x DurationLimitTypeEnum) Enum() *DurationLimitTypeEnum { + p := new(DurationLimitTypeEnum) + *p = x + return p +} + +func (x DurationLimitTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DurationLimitTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[16].Descriptor() +} + +func (DurationLimitTypeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[16] +} + +func (x DurationLimitTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DurationLimitTypeEnum.Descriptor instead. +func (DurationLimitTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{16} +} + +type FareAttributeTransferTypeEnum int32 + +const ( + FareAttributeTransferTypeEnum_FareAttributeTransferTypeDisallowed FareAttributeTransferTypeEnum = 0 + FareAttributeTransferTypeEnum_FareAttributeTransferTypeOnce FareAttributeTransferTypeEnum = 1 + FareAttributeTransferTypeEnum_FareAttributeTransferTypeTwice FareAttributeTransferTypeEnum = 2 +) + +// Enum value maps for FareAttributeTransferTypeEnum. +var ( + FareAttributeTransferTypeEnum_name = map[int32]string{ + 0: "FareAttributeTransferTypeDisallowed", + 1: "FareAttributeTransferTypeOnce", + 2: "FareAttributeTransferTypeTwice", + } + FareAttributeTransferTypeEnum_value = map[string]int32{ + "FareAttributeTransferTypeDisallowed": 0, + "FareAttributeTransferTypeOnce": 1, + "FareAttributeTransferTypeTwice": 2, + } +) + +func (x FareAttributeTransferTypeEnum) Enum() *FareAttributeTransferTypeEnum { + p := new(FareAttributeTransferTypeEnum) + *p = x + return p +} + +func (x FareAttributeTransferTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FareAttributeTransferTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[17].Descriptor() +} + +func (FareAttributeTransferTypeEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[17] +} + +func (x FareAttributeTransferTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FareAttributeTransferTypeEnum.Descriptor instead. +func (FareAttributeTransferTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{17} +} + +type PaymentMethodEnum int32 + +const ( + PaymentMethodEnum_PaymentMethodOnboard PaymentMethodEnum = 0 + PaymentMethodEnum_PaymentMethodOffboard PaymentMethodEnum = 1 +) + +// Enum value maps for PaymentMethodEnum. +var ( + PaymentMethodEnum_name = map[int32]string{ + 0: "PaymentMethodOnboard", + 1: "PaymentMethodOffboard", + } + PaymentMethodEnum_value = map[string]int32{ + "PaymentMethodOnboard": 0, + "PaymentMethodOffboard": 1, + } +) + +func (x PaymentMethodEnum) Enum() *PaymentMethodEnum { + p := new(PaymentMethodEnum) + *p = x + return p +} + +func (x PaymentMethodEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PaymentMethodEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[18].Descriptor() +} + +func (PaymentMethodEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[18] +} + +func (x PaymentMethodEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PaymentMethodEnum.Descriptor instead. +func (PaymentMethodEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{18} +} + +type AttributionRoleEnum int32 + +const ( + AttributionRoleEnum_AttributionRoleNotAssigned AttributionRoleEnum = 0 + AttributionRoleEnum_AttributionRoleAssigned AttributionRoleEnum = 1 +) + +// Enum value maps for AttributionRoleEnum. +var ( + AttributionRoleEnum_name = map[int32]string{ + 0: "AttributionRoleNotAssigned", + 1: "AttributionRoleAssigned", + } + AttributionRoleEnum_value = map[string]int32{ + "AttributionRoleNotAssigned": 0, + "AttributionRoleAssigned": 1, + } +) + +func (x AttributionRoleEnum) Enum() *AttributionRoleEnum { + p := new(AttributionRoleEnum) + *p = x + return p +} + +func (x AttributionRoleEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AttributionRoleEnum) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_proto_enumTypes[19].Descriptor() +} + +func (AttributionRoleEnum) Type() protoreflect.EnumType { + return &file_gtfs_proto_enumTypes[19] +} + +func (x AttributionRoleEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AttributionRoleEnum.Descriptor instead. +func (AttributionRoleEnum) EnumDescriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{19} +} + +type FeedEntity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Agency *Agency `protobuf:"bytes,1,opt,name=agency,proto3" json:"agency,omitempty"` + Stop *Stop `protobuf:"bytes,2,opt,name=stop,proto3" json:"stop,omitempty"` + Route *Route `protobuf:"bytes,3,opt,name=route,proto3" json:"route,omitempty"` + Trip *Trip `protobuf:"bytes,4,opt,name=trip,proto3" json:"trip,omitempty"` + StopTime *StopTime `protobuf:"bytes,5,opt,name=stop_time,json=stopTime,proto3" json:"stop_time,omitempty"` + Shape *Shape `protobuf:"bytes,6,opt,name=shape,proto3" json:"shape,omitempty"` + Service *Service `protobuf:"bytes,7,opt,name=service,proto3" json:"service,omitempty"` +} + +func (x *FeedEntity) Reset() { + *x = FeedEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeedEntity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeedEntity) ProtoMessage() {} + +func (x *FeedEntity) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeedEntity.ProtoReflect.Descriptor instead. +func (*FeedEntity) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{0} +} + +func (x *FeedEntity) GetAgency() *Agency { + if x != nil { + return x.Agency + } + return nil +} + +func (x *FeedEntity) GetStop() *Stop { + if x != nil { + return x.Stop + } + return nil +} + +func (x *FeedEntity) GetRoute() *Route { + if x != nil { + return x.Route + } + return nil +} + +func (x *FeedEntity) GetTrip() *Trip { + if x != nil { + return x.Trip + } + return nil +} + +func (x *FeedEntity) GetStopTime() *StopTime { + if x != nil { + return x.StopTime + } + return nil +} + +func (x *FeedEntity) GetShape() *Shape { + if x != nil { + return x.Shape + } + return nil +} + +func (x *FeedEntity) GetService() *Service { + if x != nil { + return x.Service + } + return nil +} + +type Agency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + AgencyId *Key `protobuf:"bytes,3,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` + AgencyName *String `protobuf:"bytes,4,opt,name=agency_name,json=agencyName,proto3" json:"agency_name,omitempty"` + AgencyUrl *Url `protobuf:"bytes,5,opt,name=agency_url,json=agencyUrl,proto3" json:"agency_url,omitempty"` + AgencyTimezone *Timezone `protobuf:"bytes,6,opt,name=agency_timezone,json=agencyTimezone,proto3" json:"agency_timezone,omitempty"` + AgencyLang *Language `protobuf:"bytes,7,opt,name=agency_lang,json=agencyLang,proto3" json:"agency_lang,omitempty"` + AgencyPhone *Phone `protobuf:"bytes,8,opt,name=agency_phone,json=agencyPhone,proto3" json:"agency_phone,omitempty"` + AgencyFareUrl *Url `protobuf:"bytes,9,opt,name=agency_fare_url,json=agencyFareUrl,proto3" json:"agency_fare_url,omitempty"` + AgencyEmail *Email `protobuf:"bytes,10,opt,name=agency_email,json=agencyEmail,proto3" json:"agency_email,omitempty"` +} + +func (x *Agency) Reset() { + *x = Agency{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Agency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Agency) ProtoMessage() {} + +func (x *Agency) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Agency.ProtoReflect.Descriptor instead. +func (*Agency) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{1} +} + +func (x *Agency) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Agency) GetAgencyId() *Key { + if x != nil { + return x.AgencyId + } + return nil +} + +func (x *Agency) GetAgencyName() *String { + if x != nil { + return x.AgencyName + } + return nil +} + +func (x *Agency) GetAgencyUrl() *Url { + if x != nil { + return x.AgencyUrl + } + return nil +} + +func (x *Agency) GetAgencyTimezone() *Timezone { + if x != nil { + return x.AgencyTimezone + } + return nil +} + +func (x *Agency) GetAgencyLang() *Language { + if x != nil { + return x.AgencyLang + } + return nil +} + +func (x *Agency) GetAgencyPhone() *Phone { + if x != nil { + return x.AgencyPhone + } + return nil +} + +func (x *Agency) GetAgencyFareUrl() *Url { + if x != nil { + return x.AgencyFareUrl + } + return nil +} + +func (x *Agency) GetAgencyEmail() *Email { + if x != nil { + return x.AgencyEmail + } + return nil +} + +type Stop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + StopId *Key `protobuf:"bytes,3,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` + StopCode *String `protobuf:"bytes,4,opt,name=stop_code,json=stopCode,proto3" json:"stop_code,omitempty"` + StopName *String `protobuf:"bytes,5,opt,name=stop_name,json=stopName,proto3" json:"stop_name,omitempty"` + TtsStopName *String `protobuf:"bytes,6,opt,name=tts_stop_name,json=ttsStopName,proto3" json:"tts_stop_name,omitempty"` + StopDesc *String `protobuf:"bytes,7,opt,name=stop_desc,json=stopDesc,proto3" json:"stop_desc,omitempty"` + StopLat *Float `protobuf:"bytes,8,opt,name=stop_lat,json=stopLat,proto3" json:"stop_lat,omitempty"` + StopLon *Float `protobuf:"bytes,9,opt,name=stop_lon,json=stopLon,proto3" json:"stop_lon,omitempty"` + ZoneId *String `protobuf:"bytes,10,opt,name=zone_id,json=zoneId,proto3" json:"zone_id,omitempty"` + StopUrl *Url `protobuf:"bytes,11,opt,name=stop_url,json=stopUrl,proto3" json:"stop_url,omitempty"` + LocationType *StopLocationType `protobuf:"bytes,12,opt,name=location_type,json=locationType,proto3" json:"location_type,omitempty"` + ParentStation *Reference `protobuf:"bytes,13,opt,name=parent_station,json=parentStation,proto3" json:"parent_station,omitempty"` + StopTimezone *Timezone `protobuf:"bytes,14,opt,name=stop_timezone,json=stopTimezone,proto3" json:"stop_timezone,omitempty"` + WheelchairBoarding *WheelchairAccess `protobuf:"bytes,15,opt,name=wheelchair_boarding,json=wheelchairBoarding,proto3" json:"wheelchair_boarding,omitempty"` + LevelId *Reference `protobuf:"bytes,16,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` + PlatformCode *String `protobuf:"bytes,17,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` +} + +func (x *Stop) Reset() { + *x = Stop{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Stop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Stop) ProtoMessage() {} + +func (x *Stop) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Stop.ProtoReflect.Descriptor instead. +func (*Stop) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{2} +} + +func (x *Stop) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Stop) GetStopId() *Key { + if x != nil { + return x.StopId + } + return nil +} + +func (x *Stop) GetStopCode() *String { + if x != nil { + return x.StopCode + } + return nil +} + +func (x *Stop) GetStopName() *String { + if x != nil { + return x.StopName + } + return nil +} + +func (x *Stop) GetTtsStopName() *String { + if x != nil { + return x.TtsStopName + } + return nil +} + +func (x *Stop) GetStopDesc() *String { + if x != nil { + return x.StopDesc + } + return nil +} + +func (x *Stop) GetStopLat() *Float { + if x != nil { + return x.StopLat + } + return nil +} + +func (x *Stop) GetStopLon() *Float { + if x != nil { + return x.StopLon + } + return nil +} + +func (x *Stop) GetZoneId() *String { + if x != nil { + return x.ZoneId + } + return nil +} + +func (x *Stop) GetStopUrl() *Url { + if x != nil { + return x.StopUrl + } + return nil +} + +func (x *Stop) GetLocationType() *StopLocationType { + if x != nil { + return x.LocationType + } + return nil +} + +func (x *Stop) GetParentStation() *Reference { + if x != nil { + return x.ParentStation + } + return nil +} + +func (x *Stop) GetStopTimezone() *Timezone { + if x != nil { + return x.StopTimezone + } + return nil +} + +func (x *Stop) GetWheelchairBoarding() *WheelchairAccess { + if x != nil { + return x.WheelchairBoarding + } + return nil +} + +func (x *Stop) GetLevelId() *Reference { + if x != nil { + return x.LevelId + } + return nil +} + +func (x *Stop) GetPlatformCode() *String { + if x != nil { + return x.PlatformCode + } + return nil +} + +type Route struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + RouteId *Key `protobuf:"bytes,3,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + AgencyId *Reference `protobuf:"bytes,4,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` + RouteShortName *String `protobuf:"bytes,5,opt,name=route_short_name,json=routeShortName,proto3" json:"route_short_name,omitempty"` + RouteLongName *String `protobuf:"bytes,6,opt,name=route_long_name,json=routeLongName,proto3" json:"route_long_name,omitempty"` + RouteDesc *String `protobuf:"bytes,7,opt,name=route_desc,json=routeDesc,proto3" json:"route_desc,omitempty"` + RouteType *RouteType `protobuf:"bytes,8,opt,name=route_type,json=routeType,proto3" json:"route_type,omitempty"` + RouteUrl *Url `protobuf:"bytes,9,opt,name=route_url,json=routeUrl,proto3" json:"route_url,omitempty"` + RouteColor *Color `protobuf:"bytes,10,opt,name=route_color,json=routeColor,proto3" json:"route_color,omitempty"` + RouteTextColor *Color `protobuf:"bytes,11,opt,name=route_text_color,json=routeTextColor,proto3" json:"route_text_color,omitempty"` + RouteSortOrder *Int `protobuf:"bytes,12,opt,name=route_sort_order,json=routeSortOrder,proto3" json:"route_sort_order,omitempty"` + ContinuousPickup *PickupAccess `protobuf:"bytes,13,opt,name=continuous_pickup,json=continuousPickup,proto3" json:"continuous_pickup,omitempty"` + ContinuousDropOff *PickupAccess `protobuf:"bytes,14,opt,name=continuous_drop_off,json=continuousDropOff,proto3" json:"continuous_drop_off,omitempty"` + NetworkId *String `protobuf:"bytes,15,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` +} + +func (x *Route) Reset() { + *x = Route{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Route) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Route) ProtoMessage() {} + +func (x *Route) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Route.ProtoReflect.Descriptor instead. +func (*Route) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{3} +} + +func (x *Route) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Route) GetRouteId() *Key { + if x != nil { + return x.RouteId + } + return nil +} + +func (x *Route) GetAgencyId() *Reference { + if x != nil { + return x.AgencyId + } + return nil +} + +func (x *Route) GetRouteShortName() *String { + if x != nil { + return x.RouteShortName + } + return nil +} + +func (x *Route) GetRouteLongName() *String { + if x != nil { + return x.RouteLongName + } + return nil +} + +func (x *Route) GetRouteDesc() *String { + if x != nil { + return x.RouteDesc + } + return nil +} + +func (x *Route) GetRouteType() *RouteType { + if x != nil { + return x.RouteType + } + return nil +} + +func (x *Route) GetRouteUrl() *Url { + if x != nil { + return x.RouteUrl + } + return nil +} + +func (x *Route) GetRouteColor() *Color { + if x != nil { + return x.RouteColor + } + return nil +} + +func (x *Route) GetRouteTextColor() *Color { + if x != nil { + return x.RouteTextColor + } + return nil +} + +func (x *Route) GetRouteSortOrder() *Int { + if x != nil { + return x.RouteSortOrder + } + return nil +} + +func (x *Route) GetContinuousPickup() *PickupAccess { + if x != nil { + return x.ContinuousPickup + } + return nil +} + +func (x *Route) GetContinuousDropOff() *PickupAccess { + if x != nil { + return x.ContinuousDropOff + } + return nil +} + +func (x *Route) GetNetworkId() *String { + if x != nil { + return x.NetworkId + } + return nil +} + +type Trip struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + RouteId *Reference `protobuf:"bytes,3,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + ServiceId *Reference `protobuf:"bytes,4,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + TripId *Key `protobuf:"bytes,5,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` + TripHeadsign *String `protobuf:"bytes,6,opt,name=trip_headsign,json=tripHeadsign,proto3" json:"trip_headsign,omitempty"` + TripShortName *String `protobuf:"bytes,7,opt,name=trip_short_name,json=tripShortName,proto3" json:"trip_short_name,omitempty"` + DirectionId *TripDirection `protobuf:"bytes,8,opt,name=direction_id,json=directionId,proto3" json:"direction_id,omitempty"` + BlockId *String `protobuf:"bytes,9,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` + ShapeId *Reference `protobuf:"bytes,10,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + WheelchairAccessible *WheelchairAccess `protobuf:"bytes,11,opt,name=wheelchair_accessible,json=wheelchairAccessible,proto3" json:"wheelchair_accessible,omitempty"` + BikesAllowed *BikeAccess `protobuf:"bytes,12,opt,name=bikes_allowed,json=bikesAllowed,proto3" json:"bikes_allowed,omitempty"` +} + +func (x *Trip) Reset() { + *x = Trip{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Trip) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Trip) ProtoMessage() {} + +func (x *Trip) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Trip.ProtoReflect.Descriptor instead. +func (*Trip) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{4} +} + +func (x *Trip) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Trip) GetRouteId() *Reference { + if x != nil { + return x.RouteId + } + return nil +} + +func (x *Trip) GetServiceId() *Reference { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *Trip) GetTripId() *Key { + if x != nil { + return x.TripId + } + return nil +} + +func (x *Trip) GetTripHeadsign() *String { + if x != nil { + return x.TripHeadsign + } + return nil +} + +func (x *Trip) GetTripShortName() *String { + if x != nil { + return x.TripShortName + } + return nil +} + +func (x *Trip) GetDirectionId() *TripDirection { + if x != nil { + return x.DirectionId + } + return nil +} + +func (x *Trip) GetBlockId() *String { + if x != nil { + return x.BlockId + } + return nil +} + +func (x *Trip) GetShapeId() *Reference { + if x != nil { + return x.ShapeId + } + return nil +} + +func (x *Trip) GetWheelchairAccessible() *WheelchairAccess { + if x != nil { + return x.WheelchairAccessible + } + return nil +} + +func (x *Trip) GetBikesAllowed() *BikeAccess { + if x != nil { + return x.BikesAllowed + } + return nil +} + +type StopTime struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + TripId *Reference `protobuf:"bytes,3,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` + ArrivalTime *Seconds `protobuf:"bytes,4,opt,name=arrival_time,json=arrivalTime,proto3" json:"arrival_time,omitempty"` + DepartureTime *Seconds `protobuf:"bytes,5,opt,name=departure_time,json=departureTime,proto3" json:"departure_time,omitempty"` + StopId *Reference `protobuf:"bytes,6,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` + StopSequence *Int `protobuf:"bytes,7,opt,name=stop_sequence,json=stopSequence,proto3" json:"stop_sequence,omitempty"` + StopHeadsign *String `protobuf:"bytes,8,opt,name=stop_headsign,json=stopHeadsign,proto3" json:"stop_headsign,omitempty"` + ContinuousPickup *PickupAccess `protobuf:"bytes,9,opt,name=continuous_pickup,json=continuousPickup,proto3" json:"continuous_pickup,omitempty"` + ContinuousDropOff *PickupAccess `protobuf:"bytes,10,opt,name=continuous_drop_off,json=continuousDropOff,proto3" json:"continuous_drop_off,omitempty"` + ShapeDistTraveled *Float `protobuf:"bytes,11,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` + Timepoint *StopTimepoint `protobuf:"bytes,12,opt,name=timepoint,proto3" json:"timepoint,omitempty"` + LocationId *Reference `protobuf:"bytes,13,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + LocationGroupId *Reference `protobuf:"bytes,14,opt,name=location_group_id,json=locationGroupId,proto3" json:"location_group_id,omitempty"` + StartPickupDropOffWindow *Seconds `protobuf:"bytes,15,opt,name=start_pickup_drop_off_window,json=startPickupDropOffWindow,proto3" json:"start_pickup_drop_off_window,omitempty"` + EndPickupDropOffWindow *Seconds `protobuf:"bytes,16,opt,name=end_pickup_drop_off_window,json=endPickupDropOffWindow,proto3" json:"end_pickup_drop_off_window,omitempty"` + PickupType *PickupAccess `protobuf:"bytes,17,opt,name=pickup_type,json=pickupType,proto3" json:"pickup_type,omitempty"` + DropOffType *PickupAccess `protobuf:"bytes,18,opt,name=drop_off_type,json=dropOffType,proto3" json:"drop_off_type,omitempty"` + PickupBookingRuleId *Reference `protobuf:"bytes,19,opt,name=pickup_booking_rule_id,json=pickupBookingRuleId,proto3" json:"pickup_booking_rule_id,omitempty"` + DropOffBookingRuleId *Reference `protobuf:"bytes,20,opt,name=drop_off_booking_rule_id,json=dropOffBookingRuleId,proto3" json:"drop_off_booking_rule_id,omitempty"` +} + +func (x *StopTime) Reset() { + *x = StopTime{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopTime) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopTime) ProtoMessage() {} + +func (x *StopTime) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopTime.ProtoReflect.Descriptor instead. +func (*StopTime) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{5} +} + +func (x *StopTime) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *StopTime) GetTripId() *Reference { + if x != nil { + return x.TripId + } + return nil +} + +func (x *StopTime) GetArrivalTime() *Seconds { + if x != nil { + return x.ArrivalTime + } + return nil +} + +func (x *StopTime) GetDepartureTime() *Seconds { + if x != nil { + return x.DepartureTime + } + return nil +} + +func (x *StopTime) GetStopId() *Reference { + if x != nil { + return x.StopId + } + return nil +} + +func (x *StopTime) GetStopSequence() *Int { + if x != nil { + return x.StopSequence + } + return nil +} + +func (x *StopTime) GetStopHeadsign() *String { + if x != nil { + return x.StopHeadsign + } + return nil +} + +func (x *StopTime) GetContinuousPickup() *PickupAccess { + if x != nil { + return x.ContinuousPickup + } + return nil +} + +func (x *StopTime) GetContinuousDropOff() *PickupAccess { + if x != nil { + return x.ContinuousDropOff + } + return nil +} + +func (x *StopTime) GetShapeDistTraveled() *Float { + if x != nil { + return x.ShapeDistTraveled + } + return nil +} + +func (x *StopTime) GetTimepoint() *StopTimepoint { + if x != nil { + return x.Timepoint + } + return nil +} + +func (x *StopTime) GetLocationId() *Reference { + if x != nil { + return x.LocationId + } + return nil +} + +func (x *StopTime) GetLocationGroupId() *Reference { + if x != nil { + return x.LocationGroupId + } + return nil +} + +func (x *StopTime) GetStartPickupDropOffWindow() *Seconds { + if x != nil { + return x.StartPickupDropOffWindow + } + return nil +} + +func (x *StopTime) GetEndPickupDropOffWindow() *Seconds { + if x != nil { + return x.EndPickupDropOffWindow + } + return nil +} + +func (x *StopTime) GetPickupType() *PickupAccess { + if x != nil { + return x.PickupType + } + return nil +} + +func (x *StopTime) GetDropOffType() *PickupAccess { + if x != nil { + return x.DropOffType + } + return nil +} + +func (x *StopTime) GetPickupBookingRuleId() *Reference { + if x != nil { + return x.PickupBookingRuleId + } + return nil +} + +func (x *StopTime) GetDropOffBookingRuleId() *Reference { + if x != nil { + return x.DropOffBookingRuleId + } + return nil +} + +type Calendar struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ServiceId *Key `protobuf:"bytes,3,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + StartDate *Date `protobuf:"bytes,4,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + EndDate *Date `protobuf:"bytes,5,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + Monday *Bool `protobuf:"bytes,6,opt,name=monday,proto3" json:"monday,omitempty"` + Tuesday *Bool `protobuf:"bytes,7,opt,name=tuesday,proto3" json:"tuesday,omitempty"` + Wednesday *Bool `protobuf:"bytes,8,opt,name=wednesday,proto3" json:"wednesday,omitempty"` + Thursday *Bool `protobuf:"bytes,9,opt,name=thursday,proto3" json:"thursday,omitempty"` + Friday *Bool `protobuf:"bytes,10,opt,name=friday,proto3" json:"friday,omitempty"` + Saturday *Bool `protobuf:"bytes,11,opt,name=saturday,proto3" json:"saturday,omitempty"` + Sunday *Bool `protobuf:"bytes,12,opt,name=sunday,proto3" json:"sunday,omitempty"` +} + +func (x *Calendar) Reset() { + *x = Calendar{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Calendar) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Calendar) ProtoMessage() {} + +func (x *Calendar) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Calendar.ProtoReflect.Descriptor instead. +func (*Calendar) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{6} +} + +func (x *Calendar) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Calendar) GetServiceId() *Key { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *Calendar) GetStartDate() *Date { + if x != nil { + return x.StartDate + } + return nil +} + +func (x *Calendar) GetEndDate() *Date { + if x != nil { + return x.EndDate + } + return nil +} + +func (x *Calendar) GetMonday() *Bool { + if x != nil { + return x.Monday + } + return nil +} + +func (x *Calendar) GetTuesday() *Bool { + if x != nil { + return x.Tuesday + } + return nil +} + +func (x *Calendar) GetWednesday() *Bool { + if x != nil { + return x.Wednesday + } + return nil +} + +func (x *Calendar) GetThursday() *Bool { + if x != nil { + return x.Thursday + } + return nil +} + +func (x *Calendar) GetFriday() *Bool { + if x != nil { + return x.Friday + } + return nil +} + +func (x *Calendar) GetSaturday() *Bool { + if x != nil { + return x.Saturday + } + return nil +} + +func (x *Calendar) GetSunday() *Bool { + if x != nil { + return x.Sunday + } + return nil +} + +type CalendarDate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ServiceId *Reference `protobuf:"bytes,3,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + Date *Date `protobuf:"bytes,4,opt,name=date,proto3" json:"date,omitempty"` + ExceptionType *CalendarExceptionType `protobuf:"bytes,5,opt,name=exception_type,json=exceptionType,proto3" json:"exception_type,omitempty"` +} + +func (x *CalendarDate) Reset() { + *x = CalendarDate{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CalendarDate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CalendarDate) ProtoMessage() {} + +func (x *CalendarDate) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CalendarDate.ProtoReflect.Descriptor instead. +func (*CalendarDate) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{7} +} + +func (x *CalendarDate) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *CalendarDate) GetServiceId() *Reference { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *CalendarDate) GetDate() *Date { + if x != nil { + return x.Date + } + return nil +} + +func (x *CalendarDate) GetExceptionType() *CalendarExceptionType { + if x != nil { + return x.ExceptionType + } + return nil +} + +type FareAttribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + FareId *Key `protobuf:"bytes,3,opt,name=fare_id,json=fareId,proto3" json:"fare_id,omitempty"` + Price *Money `protobuf:"bytes,4,opt,name=price,proto3" json:"price,omitempty"` + CurrencyType *Currency `protobuf:"bytes,5,opt,name=currency_type,json=currencyType,proto3" json:"currency_type,omitempty"` + PaymentMethod *PaymentMethod `protobuf:"bytes,6,opt,name=payment_method,json=paymentMethod,proto3" json:"payment_method,omitempty"` + Transfers *FareAttributeTransferType `protobuf:"bytes,7,opt,name=transfers,proto3" json:"transfers,omitempty"` + AgencyId *Reference `protobuf:"bytes,8,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` + TransferDuration *Int `protobuf:"bytes,9,opt,name=transfer_duration,json=transferDuration,proto3" json:"transfer_duration,omitempty"` +} + +func (x *FareAttribute) Reset() { + *x = FareAttribute{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareAttribute) ProtoMessage() {} + +func (x *FareAttribute) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareAttribute.ProtoReflect.Descriptor instead. +func (*FareAttribute) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{8} +} + +func (x *FareAttribute) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *FareAttribute) GetFareId() *Key { + if x != nil { + return x.FareId + } + return nil +} + +func (x *FareAttribute) GetPrice() *Money { + if x != nil { + return x.Price + } + return nil +} + +func (x *FareAttribute) GetCurrencyType() *Currency { + if x != nil { + return x.CurrencyType + } + return nil +} + +func (x *FareAttribute) GetPaymentMethod() *PaymentMethod { + if x != nil { + return x.PaymentMethod + } + return nil +} + +func (x *FareAttribute) GetTransfers() *FareAttributeTransferType { + if x != nil { + return x.Transfers + } + return nil +} + +func (x *FareAttribute) GetAgencyId() *Reference { + if x != nil { + return x.AgencyId + } + return nil +} + +func (x *FareAttribute) GetTransferDuration() *Int { + if x != nil { + return x.TransferDuration + } + return nil +} + +type FareRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + FareId *Key `protobuf:"bytes,3,opt,name=fare_id,json=fareId,proto3" json:"fare_id,omitempty"` + RouteId *Reference `protobuf:"bytes,4,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + OriginId *Reference `protobuf:"bytes,5,opt,name=origin_id,json=originId,proto3" json:"origin_id,omitempty"` + DestinationId *Reference `protobuf:"bytes,6,opt,name=destination_id,json=destinationId,proto3" json:"destination_id,omitempty"` + ContainsId *Reference `protobuf:"bytes,8,opt,name=contains_id,json=containsId,proto3" json:"contains_id,omitempty"` +} + +func (x *FareRule) Reset() { + *x = FareRule{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareRule) ProtoMessage() {} + +func (x *FareRule) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareRule.ProtoReflect.Descriptor instead. +func (*FareRule) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{9} +} + +func (x *FareRule) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *FareRule) GetFareId() *Key { + if x != nil { + return x.FareId + } + return nil +} + +func (x *FareRule) GetRouteId() *Reference { + if x != nil { + return x.RouteId + } + return nil +} + +func (x *FareRule) GetOriginId() *Reference { + if x != nil { + return x.OriginId + } + return nil +} + +func (x *FareRule) GetDestinationId() *Reference { + if x != nil { + return x.DestinationId + } + return nil +} + +func (x *FareRule) GetContainsId() *Reference { + if x != nil { + return x.ContainsId + } + return nil +} + +type Timeframe struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + TimeframeGroupId *Key `protobuf:"bytes,3,opt,name=timeframe_group_id,json=timeframeGroupId,proto3" json:"timeframe_group_id,omitempty"` + StartTime *Seconds `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime *Seconds `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + ServiceId *Reference `protobuf:"bytes,6,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` +} + +func (x *Timeframe) Reset() { + *x = Timeframe{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Timeframe) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Timeframe) ProtoMessage() {} + +func (x *Timeframe) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Timeframe.ProtoReflect.Descriptor instead. +func (*Timeframe) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{10} +} + +func (x *Timeframe) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Timeframe) GetTimeframeGroupId() *Key { + if x != nil { + return x.TimeframeGroupId + } + return nil +} + +func (x *Timeframe) GetStartTime() *Seconds { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *Timeframe) GetEndTime() *Seconds { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *Timeframe) GetServiceId() *Reference { + if x != nil { + return x.ServiceId + } + return nil +} + +type FareMedia struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + FareMediaId *Key `protobuf:"bytes,3,opt,name=fare_media_id,json=fareMediaId,proto3" json:"fare_media_id,omitempty"` + FareMediaName *String `protobuf:"bytes,4,opt,name=fare_media_name,json=fareMediaName,proto3" json:"fare_media_name,omitempty"` + FareMediaType *FareMediaType `protobuf:"bytes,5,opt,name=fare_media_type,json=fareMediaType,proto3" json:"fare_media_type,omitempty"` +} + +func (x *FareMedia) Reset() { + *x = FareMedia{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareMedia) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareMedia) ProtoMessage() {} + +func (x *FareMedia) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareMedia.ProtoReflect.Descriptor instead. +func (*FareMedia) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{11} +} + +func (x *FareMedia) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *FareMedia) GetFareMediaId() *Key { + if x != nil { + return x.FareMediaId + } + return nil +} + +func (x *FareMedia) GetFareMediaName() *String { + if x != nil { + return x.FareMediaName + } + return nil +} + +func (x *FareMedia) GetFareMediaType() *FareMediaType { + if x != nil { + return x.FareMediaType + } + return nil +} + +type FareProduct struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + FareProductId *Key `protobuf:"bytes,3,opt,name=fare_product_id,json=fareProductId,proto3" json:"fare_product_id,omitempty"` + FareProductName *String `protobuf:"bytes,4,opt,name=fare_product_name,json=fareProductName,proto3" json:"fare_product_name,omitempty"` + FareMediaId *Reference `protobuf:"bytes,5,opt,name=fare_media_id,json=fareMediaId,proto3" json:"fare_media_id,omitempty"` + Amount *Money `protobuf:"bytes,6,opt,name=amount,proto3" json:"amount,omitempty"` + Currency *Currency `protobuf:"bytes,7,opt,name=currency,proto3" json:"currency,omitempty"` +} + +func (x *FareProduct) Reset() { + *x = FareProduct{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareProduct) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareProduct) ProtoMessage() {} + +func (x *FareProduct) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareProduct.ProtoReflect.Descriptor instead. +func (*FareProduct) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{12} +} + +func (x *FareProduct) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *FareProduct) GetFareProductId() *Key { + if x != nil { + return x.FareProductId + } + return nil +} + +func (x *FareProduct) GetFareProductName() *String { + if x != nil { + return x.FareProductName + } + return nil +} + +func (x *FareProduct) GetFareMediaId() *Reference { + if x != nil { + return x.FareMediaId + } + return nil +} + +func (x *FareProduct) GetAmount() *Money { + if x != nil { + return x.Amount + } + return nil +} + +func (x *FareProduct) GetCurrency() *Currency { + if x != nil { + return x.Currency + } + return nil +} + +type FareLegRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + LegGroupId *Key `protobuf:"bytes,3,opt,name=leg_group_id,json=legGroupId,proto3" json:"leg_group_id,omitempty"` + NetworkId *Reference `protobuf:"bytes,4,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + FromAreaId *Reference `protobuf:"bytes,5,opt,name=from_area_id,json=fromAreaId,proto3" json:"from_area_id,omitempty"` + ToAreaId *Reference `protobuf:"bytes,6,opt,name=to_area_id,json=toAreaId,proto3" json:"to_area_id,omitempty"` + FromTimeframeGroupId *Reference `protobuf:"bytes,7,opt,name=from_timeframe_group_id,json=fromTimeframeGroupId,proto3" json:"from_timeframe_group_id,omitempty"` + ToTimeframeGroupId *Reference `protobuf:"bytes,8,opt,name=to_timeframe_group_id,json=toTimeframeGroupId,proto3" json:"to_timeframe_group_id,omitempty"` + FareProductId *Reference `protobuf:"bytes,9,opt,name=fare_product_id,json=fareProductId,proto3" json:"fare_product_id,omitempty"` + RuleProirity *Int `protobuf:"bytes,10,opt,name=rule_proirity,json=ruleProirity,proto3" json:"rule_proirity,omitempty"` +} + +func (x *FareLegRule) Reset() { + *x = FareLegRule{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareLegRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareLegRule) ProtoMessage() {} + +func (x *FareLegRule) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareLegRule.ProtoReflect.Descriptor instead. +func (*FareLegRule) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{13} +} + +func (x *FareLegRule) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *FareLegRule) GetLegGroupId() *Key { + if x != nil { + return x.LegGroupId + } + return nil +} + +func (x *FareLegRule) GetNetworkId() *Reference { + if x != nil { + return x.NetworkId + } + return nil +} + +func (x *FareLegRule) GetFromAreaId() *Reference { + if x != nil { + return x.FromAreaId + } + return nil +} + +func (x *FareLegRule) GetToAreaId() *Reference { + if x != nil { + return x.ToAreaId + } + return nil +} + +func (x *FareLegRule) GetFromTimeframeGroupId() *Reference { + if x != nil { + return x.FromTimeframeGroupId + } + return nil +} + +func (x *FareLegRule) GetToTimeframeGroupId() *Reference { + if x != nil { + return x.ToTimeframeGroupId + } + return nil +} + +func (x *FareLegRule) GetFareProductId() *Reference { + if x != nil { + return x.FareProductId + } + return nil +} + +func (x *FareLegRule) GetRuleProirity() *Int { + if x != nil { + return x.RuleProirity + } + return nil +} + +type FareTransferRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + FromLegGroupId *Reference `protobuf:"bytes,3,opt,name=from_leg_group_id,json=fromLegGroupId,proto3" json:"from_leg_group_id,omitempty"` + ToLegGroupId *Reference `protobuf:"bytes,4,opt,name=to_leg_group_id,json=toLegGroupId,proto3" json:"to_leg_group_id,omitempty"` + TransferCount *Int `protobuf:"bytes,5,opt,name=transfer_count,json=transferCount,proto3" json:"transfer_count,omitempty"` + DurationLimitType *DurationLimitType `protobuf:"bytes,6,opt,name=duration_limit_type,json=durationLimitType,proto3" json:"duration_limit_type,omitempty"` + FareTransferType *FareTransferType `protobuf:"bytes,7,opt,name=fare_transfer_type,json=fareTransferType,proto3" json:"fare_transfer_type,omitempty"` + FareProductId *Reference `protobuf:"bytes,8,opt,name=fare_product_id,json=fareProductId,proto3" json:"fare_product_id,omitempty"` +} + +func (x *FareTransferRule) Reset() { + *x = FareTransferRule{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareTransferRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareTransferRule) ProtoMessage() {} + +func (x *FareTransferRule) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareTransferRule.ProtoReflect.Descriptor instead. +func (*FareTransferRule) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{14} +} + +func (x *FareTransferRule) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *FareTransferRule) GetFromLegGroupId() *Reference { + if x != nil { + return x.FromLegGroupId + } + return nil +} + +func (x *FareTransferRule) GetToLegGroupId() *Reference { + if x != nil { + return x.ToLegGroupId + } + return nil +} + +func (x *FareTransferRule) GetTransferCount() *Int { + if x != nil { + return x.TransferCount + } + return nil +} + +func (x *FareTransferRule) GetDurationLimitType() *DurationLimitType { + if x != nil { + return x.DurationLimitType + } + return nil +} + +func (x *FareTransferRule) GetFareTransferType() *FareTransferType { + if x != nil { + return x.FareTransferType + } + return nil +} + +func (x *FareTransferRule) GetFareProductId() *Reference { + if x != nil { + return x.FareProductId + } + return nil +} + +type Area struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + AreaId *Key `protobuf:"bytes,3,opt,name=area_id,json=areaId,proto3" json:"area_id,omitempty"` + AreaName *String `protobuf:"bytes,4,opt,name=area_name,json=areaName,proto3" json:"area_name,omitempty"` +} + +func (x *Area) Reset() { + *x = Area{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Area) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Area) ProtoMessage() {} + +func (x *Area) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Area.ProtoReflect.Descriptor instead. +func (*Area) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{15} +} + +func (x *Area) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Area) GetAreaId() *Key { + if x != nil { + return x.AreaId + } + return nil +} + +func (x *Area) GetAreaName() *String { + if x != nil { + return x.AreaName + } + return nil +} + +type StopArea struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + AreaId *Reference `protobuf:"bytes,3,opt,name=area_id,json=areaId,proto3" json:"area_id,omitempty"` + StopId *Reference `protobuf:"bytes,4,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` +} + +func (x *StopArea) Reset() { + *x = StopArea{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopArea) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopArea) ProtoMessage() {} + +func (x *StopArea) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopArea.ProtoReflect.Descriptor instead. +func (*StopArea) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{16} +} + +func (x *StopArea) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *StopArea) GetAreaId() *Reference { + if x != nil { + return x.AreaId + } + return nil +} + +func (x *StopArea) GetStopId() *Reference { + if x != nil { + return x.StopId + } + return nil +} + +type Network struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + NetworkId *Key `protobuf:"bytes,3,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + NetworkName *String `protobuf:"bytes,4,opt,name=network_name,json=networkName,proto3" json:"network_name,omitempty"` +} + +func (x *Network) Reset() { + *x = Network{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Network) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Network) ProtoMessage() {} + +func (x *Network) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Network.ProtoReflect.Descriptor instead. +func (*Network) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{17} +} + +func (x *Network) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Network) GetNetworkId() *Key { + if x != nil { + return x.NetworkId + } + return nil +} + +func (x *Network) GetNetworkName() *String { + if x != nil { + return x.NetworkName + } + return nil +} + +type RouteNetwork struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + NetworkId *Reference `protobuf:"bytes,3,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + RouteId *Reference `protobuf:"bytes,4,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` +} + +func (x *RouteNetwork) Reset() { + *x = RouteNetwork{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RouteNetwork) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteNetwork) ProtoMessage() {} + +func (x *RouteNetwork) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteNetwork.ProtoReflect.Descriptor instead. +func (*RouteNetwork) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{18} +} + +func (x *RouteNetwork) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *RouteNetwork) GetNetworkId() *Reference { + if x != nil { + return x.NetworkId + } + return nil +} + +func (x *RouteNetwork) GetRouteId() *Reference { + if x != nil { + return x.RouteId + } + return nil +} + +type Frequency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + TripId *Reference `protobuf:"bytes,3,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` + StartTime *Seconds `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime *Seconds `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + HeadwaySecs *Int `protobuf:"bytes,6,opt,name=headway_secs,json=headwaySecs,proto3" json:"headway_secs,omitempty"` + ExactTime *FrequencyExactTime `protobuf:"bytes,7,opt,name=exact_time,json=exactTime,proto3" json:"exact_time,omitempty"` +} + +func (x *Frequency) Reset() { + *x = Frequency{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Frequency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Frequency) ProtoMessage() {} + +func (x *Frequency) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Frequency.ProtoReflect.Descriptor instead. +func (*Frequency) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{19} +} + +func (x *Frequency) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Frequency) GetTripId() *Reference { + if x != nil { + return x.TripId + } + return nil +} + +func (x *Frequency) GetStartTime() *Seconds { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *Frequency) GetEndTime() *Seconds { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *Frequency) GetHeadwaySecs() *Int { + if x != nil { + return x.HeadwaySecs + } + return nil +} + +func (x *Frequency) GetExactTime() *FrequencyExactTime { + if x != nil { + return x.ExactTime + } + return nil +} + +type Transfer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + FromStopId *Reference `protobuf:"bytes,3,opt,name=from_stop_id,json=fromStopId,proto3" json:"from_stop_id,omitempty"` + ToStopId *Reference `protobuf:"bytes,4,opt,name=to_stop_id,json=toStopId,proto3" json:"to_stop_id,omitempty"` + FromRouteId *Reference `protobuf:"bytes,5,opt,name=from_route_id,json=fromRouteId,proto3" json:"from_route_id,omitempty"` + ToRouteId *Reference `protobuf:"bytes,6,opt,name=to_route_id,json=toRouteId,proto3" json:"to_route_id,omitempty"` + FromTripId *Reference `protobuf:"bytes,7,opt,name=from_trip_id,json=fromTripId,proto3" json:"from_trip_id,omitempty"` + ToTripId *Reference `protobuf:"bytes,8,opt,name=to_trip_id,json=toTripId,proto3" json:"to_trip_id,omitempty"` + TransferType *TransferType `protobuf:"bytes,9,opt,name=transfer_type,json=transferType,proto3" json:"transfer_type,omitempty"` + MinTransferTime *Int `protobuf:"bytes,10,opt,name=min_transfer_time,json=minTransferTime,proto3" json:"min_transfer_time,omitempty"` +} + +func (x *Transfer) Reset() { + *x = Transfer{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transfer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transfer) ProtoMessage() {} + +func (x *Transfer) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Transfer.ProtoReflect.Descriptor instead. +func (*Transfer) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{20} +} + +func (x *Transfer) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Transfer) GetFromStopId() *Reference { + if x != nil { + return x.FromStopId + } + return nil +} + +func (x *Transfer) GetToStopId() *Reference { + if x != nil { + return x.ToStopId + } + return nil +} + +func (x *Transfer) GetFromRouteId() *Reference { + if x != nil { + return x.FromRouteId + } + return nil +} + +func (x *Transfer) GetToRouteId() *Reference { + if x != nil { + return x.ToRouteId + } + return nil +} + +func (x *Transfer) GetFromTripId() *Reference { + if x != nil { + return x.FromTripId + } + return nil +} + +func (x *Transfer) GetToTripId() *Reference { + if x != nil { + return x.ToTripId + } + return nil +} + +func (x *Transfer) GetTransferType() *TransferType { + if x != nil { + return x.TransferType + } + return nil +} + +func (x *Transfer) GetMinTransferTime() *Int { + if x != nil { + return x.MinTransferTime + } + return nil +} + +type Pathway struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + PathwayId *Key `protobuf:"bytes,3,opt,name=pathway_id,json=pathwayId,proto3" json:"pathway_id,omitempty"` + FromStopId *Reference `protobuf:"bytes,4,opt,name=from_stop_id,json=fromStopId,proto3" json:"from_stop_id,omitempty"` + ToStopId *Reference `protobuf:"bytes,5,opt,name=to_stop_id,json=toStopId,proto3" json:"to_stop_id,omitempty"` + PathwayMode *PathwayMode `protobuf:"bytes,6,opt,name=pathway_mode,json=pathwayMode,proto3" json:"pathway_mode,omitempty"` + IsBidirectional *PathwayDirectionality `protobuf:"bytes,7,opt,name=is_bidirectional,json=isBidirectional,proto3" json:"is_bidirectional,omitempty"` + Length *Float `protobuf:"bytes,8,opt,name=length,proto3" json:"length,omitempty"` + TraversalTime *Int `protobuf:"bytes,9,opt,name=traversal_time,json=traversalTime,proto3" json:"traversal_time,omitempty"` + StairCount *Int `protobuf:"bytes,10,opt,name=stair_count,json=stairCount,proto3" json:"stair_count,omitempty"` + MaxSlope *Float `protobuf:"bytes,11,opt,name=max_slope,json=maxSlope,proto3" json:"max_slope,omitempty"` + MinWidth *Float `protobuf:"bytes,12,opt,name=min_width,json=minWidth,proto3" json:"min_width,omitempty"` + SignpostedAs *String `protobuf:"bytes,13,opt,name=signposted_as,json=signpostedAs,proto3" json:"signposted_as,omitempty"` + ReverseSignpostedAs *String `protobuf:"bytes,14,opt,name=reverse_signposted_as,json=reverseSignpostedAs,proto3" json:"reverse_signposted_as,omitempty"` +} + +func (x *Pathway) Reset() { + *x = Pathway{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Pathway) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Pathway) ProtoMessage() {} + +func (x *Pathway) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Pathway.ProtoReflect.Descriptor instead. +func (*Pathway) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{21} +} + +func (x *Pathway) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Pathway) GetPathwayId() *Key { + if x != nil { + return x.PathwayId + } + return nil +} + +func (x *Pathway) GetFromStopId() *Reference { + if x != nil { + return x.FromStopId + } + return nil +} + +func (x *Pathway) GetToStopId() *Reference { + if x != nil { + return x.ToStopId + } + return nil +} + +func (x *Pathway) GetPathwayMode() *PathwayMode { + if x != nil { + return x.PathwayMode + } + return nil +} + +func (x *Pathway) GetIsBidirectional() *PathwayDirectionality { + if x != nil { + return x.IsBidirectional + } + return nil +} + +func (x *Pathway) GetLength() *Float { + if x != nil { + return x.Length + } + return nil +} + +func (x *Pathway) GetTraversalTime() *Int { + if x != nil { + return x.TraversalTime + } + return nil +} + +func (x *Pathway) GetStairCount() *Int { + if x != nil { + return x.StairCount + } + return nil +} + +func (x *Pathway) GetMaxSlope() *Float { + if x != nil { + return x.MaxSlope + } + return nil +} + +func (x *Pathway) GetMinWidth() *Float { + if x != nil { + return x.MinWidth + } + return nil +} + +func (x *Pathway) GetSignpostedAs() *String { + if x != nil { + return x.SignpostedAs + } + return nil +} + +func (x *Pathway) GetReverseSignpostedAs() *String { + if x != nil { + return x.ReverseSignpostedAs + } + return nil +} + +type Level struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + LevelId *Key `protobuf:"bytes,3,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` + LevelIndex *Float `protobuf:"bytes,4,opt,name=level_index,json=levelIndex,proto3" json:"level_index,omitempty"` + LevelName *String `protobuf:"bytes,5,opt,name=level_name,json=levelName,proto3" json:"level_name,omitempty"` +} + +func (x *Level) Reset() { + *x = Level{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Level) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Level) ProtoMessage() {} + +func (x *Level) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Level.ProtoReflect.Descriptor instead. +func (*Level) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{22} +} + +func (x *Level) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Level) GetLevelId() *Key { + if x != nil { + return x.LevelId + } + return nil +} + +func (x *Level) GetLevelIndex() *Float { + if x != nil { + return x.LevelIndex + } + return nil +} + +func (x *Level) GetLevelName() *String { + if x != nil { + return x.LevelName + } + return nil +} + +type LocationGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + LocationGroupId *Key `protobuf:"bytes,3,opt,name=location_group_id,json=locationGroupId,proto3" json:"location_group_id,omitempty"` + LocationGroupName *String `protobuf:"bytes,4,opt,name=location_group_name,json=locationGroupName,proto3" json:"location_group_name,omitempty"` +} + +func (x *LocationGroup) Reset() { + *x = LocationGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LocationGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LocationGroup) ProtoMessage() {} + +func (x *LocationGroup) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LocationGroup.ProtoReflect.Descriptor instead. +func (*LocationGroup) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{23} +} + +func (x *LocationGroup) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *LocationGroup) GetLocationGroupId() *Key { + if x != nil { + return x.LocationGroupId + } + return nil +} + +func (x *LocationGroup) GetLocationGroupName() *String { + if x != nil { + return x.LocationGroupName + } + return nil +} + +type LocationGroupStop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + LocationGroupId *Reference `protobuf:"bytes,3,opt,name=location_group_id,json=locationGroupId,proto3" json:"location_group_id,omitempty"` + StopId *Reference `protobuf:"bytes,4,opt,name=stop_id,json=stopId,proto3" json:"stop_id,omitempty"` +} + +func (x *LocationGroupStop) Reset() { + *x = LocationGroupStop{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LocationGroupStop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LocationGroupStop) ProtoMessage() {} + +func (x *LocationGroupStop) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LocationGroupStop.ProtoReflect.Descriptor instead. +func (*LocationGroupStop) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{24} +} + +func (x *LocationGroupStop) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *LocationGroupStop) GetLocationGroupId() *Reference { + if x != nil { + return x.LocationGroupId + } + return nil +} + +func (x *LocationGroupStop) GetStopId() *Reference { + if x != nil { + return x.StopId + } + return nil +} + +type BookingRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + BookingRuleId *Key `protobuf:"bytes,3,opt,name=booking_rule_id,json=bookingRuleId,proto3" json:"booking_rule_id,omitempty"` + BookingType *BookingRuleType `protobuf:"bytes,4,opt,name=booking_type,json=bookingType,proto3" json:"booking_type,omitempty"` + PriorNoticeDurationMin *Int `protobuf:"bytes,5,opt,name=prior_notice_duration_min,json=priorNoticeDurationMin,proto3" json:"prior_notice_duration_min,omitempty"` + PriorNoticeDurationMax *Int `protobuf:"bytes,6,opt,name=prior_notice_duration_max,json=priorNoticeDurationMax,proto3" json:"prior_notice_duration_max,omitempty"` + PriorNoticeLastDay *Int `protobuf:"bytes,7,opt,name=prior_notice_last_day,json=priorNoticeLastDay,proto3" json:"prior_notice_last_day,omitempty"` + PriorNoticeLastTime *Seconds `protobuf:"bytes,8,opt,name=prior_notice_last_time,json=priorNoticeLastTime,proto3" json:"prior_notice_last_time,omitempty"` + PriorNoticeStartDay *Int `protobuf:"bytes,9,opt,name=prior_notice_start_day,json=priorNoticeStartDay,proto3" json:"prior_notice_start_day,omitempty"` + PriorNoticeStartTime *Seconds `protobuf:"bytes,10,opt,name=prior_notice_start_time,json=priorNoticeStartTime,proto3" json:"prior_notice_start_time,omitempty"` + PriorNoticeServiceId *Reference `protobuf:"bytes,11,opt,name=prior_notice_service_id,json=priorNoticeServiceId,proto3" json:"prior_notice_service_id,omitempty"` + Message *String `protobuf:"bytes,12,opt,name=message,proto3" json:"message,omitempty"` + PickupMessage *String `protobuf:"bytes,13,opt,name=pickup_message,json=pickupMessage,proto3" json:"pickup_message,omitempty"` + DropOffMessage *String `protobuf:"bytes,14,opt,name=drop_off_message,json=dropOffMessage,proto3" json:"drop_off_message,omitempty"` + PhoneNumber *String `protobuf:"bytes,15,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` + InfoUrl *Url `protobuf:"bytes,16,opt,name=info_url,json=infoUrl,proto3" json:"info_url,omitempty"` + BookingUrl *Url `protobuf:"bytes,17,opt,name=booking_url,json=bookingUrl,proto3" json:"booking_url,omitempty"` +} + +func (x *BookingRule) Reset() { + *x = BookingRule{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BookingRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BookingRule) ProtoMessage() {} + +func (x *BookingRule) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BookingRule.ProtoReflect.Descriptor instead. +func (*BookingRule) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{25} +} + +func (x *BookingRule) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *BookingRule) GetBookingRuleId() *Key { + if x != nil { + return x.BookingRuleId + } + return nil +} + +func (x *BookingRule) GetBookingType() *BookingRuleType { + if x != nil { + return x.BookingType + } + return nil +} + +func (x *BookingRule) GetPriorNoticeDurationMin() *Int { + if x != nil { + return x.PriorNoticeDurationMin + } + return nil +} + +func (x *BookingRule) GetPriorNoticeDurationMax() *Int { + if x != nil { + return x.PriorNoticeDurationMax + } + return nil +} + +func (x *BookingRule) GetPriorNoticeLastDay() *Int { + if x != nil { + return x.PriorNoticeLastDay + } + return nil +} + +func (x *BookingRule) GetPriorNoticeLastTime() *Seconds { + if x != nil { + return x.PriorNoticeLastTime + } + return nil +} + +func (x *BookingRule) GetPriorNoticeStartDay() *Int { + if x != nil { + return x.PriorNoticeStartDay + } + return nil +} + +func (x *BookingRule) GetPriorNoticeStartTime() *Seconds { + if x != nil { + return x.PriorNoticeStartTime + } + return nil +} + +func (x *BookingRule) GetPriorNoticeServiceId() *Reference { + if x != nil { + return x.PriorNoticeServiceId + } + return nil +} + +func (x *BookingRule) GetMessage() *String { + if x != nil { + return x.Message + } + return nil +} + +func (x *BookingRule) GetPickupMessage() *String { + if x != nil { + return x.PickupMessage + } + return nil +} + +func (x *BookingRule) GetDropOffMessage() *String { + if x != nil { + return x.DropOffMessage + } + return nil +} + +func (x *BookingRule) GetPhoneNumber() *String { + if x != nil { + return x.PhoneNumber + } + return nil +} + +func (x *BookingRule) GetInfoUrl() *Url { + if x != nil { + return x.InfoUrl + } + return nil +} + +func (x *BookingRule) GetBookingUrl() *Url { + if x != nil { + return x.BookingUrl + } + return nil +} + +type Translation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + TableName *String `protobuf:"bytes,3,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` // a String enum, not supported in protobuf + FieldName *String `protobuf:"bytes,4,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + Language *Language `protobuf:"bytes,5,opt,name=language,proto3" json:"language,omitempty"` + Translation *String `protobuf:"bytes,6,opt,name=translation,proto3" json:"translation,omitempty"` + RecordId *String `protobuf:"bytes,7,opt,name=record_id,json=recordId,proto3" json:"record_id,omitempty"` // technically a reference, but must be resolved manually + RecordSubId *String `protobuf:"bytes,8,opt,name=record_sub_id,json=recordSubId,proto3" json:"record_sub_id,omitempty"` + FieldValue *String `protobuf:"bytes,9,opt,name=field_value,json=fieldValue,proto3" json:"field_value,omitempty"` +} + +func (x *Translation) Reset() { + *x = Translation{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Translation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Translation) ProtoMessage() {} + +func (x *Translation) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Translation.ProtoReflect.Descriptor instead. +func (*Translation) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{26} +} + +func (x *Translation) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Translation) GetTableName() *String { + if x != nil { + return x.TableName + } + return nil +} + +func (x *Translation) GetFieldName() *String { + if x != nil { + return x.FieldName + } + return nil +} + +func (x *Translation) GetLanguage() *Language { + if x != nil { + return x.Language + } + return nil +} + +func (x *Translation) GetTranslation() *String { + if x != nil { + return x.Translation + } + return nil +} + +func (x *Translation) GetRecordId() *String { + if x != nil { + return x.RecordId + } + return nil +} + +func (x *Translation) GetRecordSubId() *String { + if x != nil { + return x.RecordSubId + } + return nil +} + +func (x *Translation) GetFieldValue() *String { + if x != nil { + return x.FieldValue + } + return nil +} + +type FeedInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + FeedPublisherName *String `protobuf:"bytes,3,opt,name=feed_publisher_name,json=feedPublisherName,proto3" json:"feed_publisher_name,omitempty"` + FeedPublisherUrl *Url `protobuf:"bytes,4,opt,name=feed_publisher_url,json=feedPublisherUrl,proto3" json:"feed_publisher_url,omitempty"` + FeedLang *Language `protobuf:"bytes,5,opt,name=feed_lang,json=feedLang,proto3" json:"feed_lang,omitempty"` + DefaultLang *Language `protobuf:"bytes,6,opt,name=default_lang,json=defaultLang,proto3" json:"default_lang,omitempty"` + FeedStartDate *Date `protobuf:"bytes,7,opt,name=feed_start_date,json=feedStartDate,proto3" json:"feed_start_date,omitempty"` + FeedEndDate *Date `protobuf:"bytes,8,opt,name=feed_end_date,json=feedEndDate,proto3" json:"feed_end_date,omitempty"` + FeedContactEmail *Email `protobuf:"bytes,9,opt,name=feed_contact_email,json=feedContactEmail,proto3" json:"feed_contact_email,omitempty"` + FeedContactUrl *Url `protobuf:"bytes,10,opt,name=feed_contact_url,json=feedContactUrl,proto3" json:"feed_contact_url,omitempty"` +} + +func (x *FeedInfo) Reset() { + *x = FeedInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeedInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeedInfo) ProtoMessage() {} + +func (x *FeedInfo) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeedInfo.ProtoReflect.Descriptor instead. +func (*FeedInfo) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{27} +} + +func (x *FeedInfo) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *FeedInfo) GetFeedPublisherName() *String { + if x != nil { + return x.FeedPublisherName + } + return nil +} + +func (x *FeedInfo) GetFeedPublisherUrl() *Url { + if x != nil { + return x.FeedPublisherUrl + } + return nil +} + +func (x *FeedInfo) GetFeedLang() *Language { + if x != nil { + return x.FeedLang + } + return nil +} + +func (x *FeedInfo) GetDefaultLang() *Language { + if x != nil { + return x.DefaultLang + } + return nil +} + +func (x *FeedInfo) GetFeedStartDate() *Date { + if x != nil { + return x.FeedStartDate + } + return nil +} + +func (x *FeedInfo) GetFeedEndDate() *Date { + if x != nil { + return x.FeedEndDate + } + return nil +} + +func (x *FeedInfo) GetFeedContactEmail() *Email { + if x != nil { + return x.FeedContactEmail + } + return nil +} + +func (x *FeedInfo) GetFeedContactUrl() *Url { + if x != nil { + return x.FeedContactUrl + } + return nil +} + +type Attribution struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + AttributionId *Key `protobuf:"bytes,3,opt,name=attribution_id,json=attributionId,proto3" json:"attribution_id,omitempty"` + AgencyId *Reference `protobuf:"bytes,4,opt,name=agency_id,json=agencyId,proto3" json:"agency_id,omitempty"` + RouteId *Reference `protobuf:"bytes,5,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + TripId *Reference `protobuf:"bytes,6,opt,name=trip_id,json=tripId,proto3" json:"trip_id,omitempty"` + OrganizationName *String `protobuf:"bytes,7,opt,name=organization_name,json=organizationName,proto3" json:"organization_name,omitempty"` + IsProducer *AttributionRole `protobuf:"bytes,8,opt,name=is_producer,json=isProducer,proto3" json:"is_producer,omitempty"` + IsOperator *AttributionRole `protobuf:"bytes,9,opt,name=is_operator,json=isOperator,proto3" json:"is_operator,omitempty"` + IsAuthority *AttributionRole `protobuf:"bytes,10,opt,name=is_authority,json=isAuthority,proto3" json:"is_authority,omitempty"` + AttributionUrl *Url `protobuf:"bytes,11,opt,name=attribution_url,json=attributionUrl,proto3" json:"attribution_url,omitempty"` + AttributionEmail *Email `protobuf:"bytes,12,opt,name=attribution_email,json=attributionEmail,proto3" json:"attribution_email,omitempty"` + AttributionPhone *Phone `protobuf:"bytes,13,opt,name=attribution_phone,json=attributionPhone,proto3" json:"attribution_phone,omitempty"` +} + +func (x *Attribution) Reset() { + *x = Attribution{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Attribution) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Attribution) ProtoMessage() {} + +func (x *Attribution) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Attribution.ProtoReflect.Descriptor instead. +func (*Attribution) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{28} +} + +func (x *Attribution) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Attribution) GetAttributionId() *Key { + if x != nil { + return x.AttributionId + } + return nil +} + +func (x *Attribution) GetAgencyId() *Reference { + if x != nil { + return x.AgencyId + } + return nil +} + +func (x *Attribution) GetRouteId() *Reference { + if x != nil { + return x.RouteId + } + return nil +} + +func (x *Attribution) GetTripId() *Reference { + if x != nil { + return x.TripId + } + return nil +} + +func (x *Attribution) GetOrganizationName() *String { + if x != nil { + return x.OrganizationName + } + return nil +} + +func (x *Attribution) GetIsProducer() *AttributionRole { + if x != nil { + return x.IsProducer + } + return nil +} + +func (x *Attribution) GetIsOperator() *AttributionRole { + if x != nil { + return x.IsOperator + } + return nil +} + +func (x *Attribution) GetIsAuthority() *AttributionRole { + if x != nil { + return x.IsAuthority + } + return nil +} + +func (x *Attribution) GetAttributionUrl() *Url { + if x != nil { + return x.AttributionUrl + } + return nil +} + +func (x *Attribution) GetAttributionEmail() *Email { + if x != nil { + return x.AttributionEmail + } + return nil +} + +func (x *Attribution) GetAttributionPhone() *Phone { + if x != nil { + return x.AttributionPhone + } + return nil +} + +type ShapePoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShapeId *Key `protobuf:"bytes,1,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + ShapePtLat float64 `protobuf:"fixed64,2,opt,name=shape_pt_lat,json=shapePtLat,proto3" json:"shape_pt_lat,omitempty"` + ShapePtLon float64 `protobuf:"fixed64,3,opt,name=shape_pt_lon,json=shapePtLon,proto3" json:"shape_pt_lon,omitempty"` + ShapePtSequence int32 `protobuf:"varint,4,opt,name=shape_pt_sequence,json=shapePtSequence,proto3" json:"shape_pt_sequence,omitempty"` + ShapeDistTraveled float64 `protobuf:"fixed64,5,opt,name=shape_dist_traveled,json=shapeDistTraveled,proto3" json:"shape_dist_traveled,omitempty"` +} + +func (x *ShapePoint) Reset() { + *x = ShapePoint{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShapePoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShapePoint) ProtoMessage() {} + +func (x *ShapePoint) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShapePoint.ProtoReflect.Descriptor instead. +func (*ShapePoint) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{29} +} + +func (x *ShapePoint) GetShapeId() *Key { + if x != nil { + return x.ShapeId + } + return nil +} + +func (x *ShapePoint) GetShapePtLat() float64 { + if x != nil { + return x.ShapePtLat + } + return 0 +} + +func (x *ShapePoint) GetShapePtLon() float64 { + if x != nil { + return x.ShapePtLon + } + return 0 +} + +func (x *ShapePoint) GetShapePtSequence() int32 { + if x != nil { + return x.ShapePtSequence + } + return 0 +} + +func (x *ShapePoint) GetShapeDistTraveled() float64 { + if x != nil { + return x.ShapeDistTraveled + } + return 0 +} + +type Service struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ServiceId *Key `protobuf:"bytes,3,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + StartDate *Date `protobuf:"bytes,4,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + EndDate *Date `protobuf:"bytes,5,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + Added []*Date `protobuf:"bytes,6,rep,name=added,proto3" json:"added,omitempty"` + Removed []*Date `protobuf:"bytes,7,rep,name=removed,proto3" json:"removed,omitempty"` + Monday *Bool `protobuf:"bytes,8,opt,name=monday,proto3" json:"monday,omitempty"` + Tuesday *Bool `protobuf:"bytes,9,opt,name=tuesday,proto3" json:"tuesday,omitempty"` + Wednesday *Bool `protobuf:"bytes,10,opt,name=wednesday,proto3" json:"wednesday,omitempty"` + Thursday *Bool `protobuf:"bytes,11,opt,name=thursday,proto3" json:"thursday,omitempty"` + Friday *Bool `protobuf:"bytes,12,opt,name=friday,proto3" json:"friday,omitempty"` + Saturday *Bool `protobuf:"bytes,13,opt,name=saturday,proto3" json:"saturday,omitempty"` + Sunday *Bool `protobuf:"bytes,14,opt,name=sunday,proto3" json:"sunday,omitempty"` +} + +func (x *Service) Reset() { + *x = Service{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Service) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Service) ProtoMessage() {} + +func (x *Service) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Service.ProtoReflect.Descriptor instead. +func (*Service) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{30} +} + +func (x *Service) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Service) GetServiceId() *Key { + if x != nil { + return x.ServiceId + } + return nil +} + +func (x *Service) GetStartDate() *Date { + if x != nil { + return x.StartDate + } + return nil +} + +func (x *Service) GetEndDate() *Date { + if x != nil { + return x.EndDate + } + return nil +} + +func (x *Service) GetAdded() []*Date { + if x != nil { + return x.Added + } + return nil +} + +func (x *Service) GetRemoved() []*Date { + if x != nil { + return x.Removed + } + return nil +} + +func (x *Service) GetMonday() *Bool { + if x != nil { + return x.Monday + } + return nil +} + +func (x *Service) GetTuesday() *Bool { + if x != nil { + return x.Tuesday + } + return nil +} + +func (x *Service) GetWednesday() *Bool { + if x != nil { + return x.Wednesday + } + return nil +} + +func (x *Service) GetThursday() *Bool { + if x != nil { + return x.Thursday + } + return nil +} + +func (x *Service) GetFriday() *Bool { + if x != nil { + return x.Friday + } + return nil +} + +func (x *Service) GetSaturday() *Bool { + if x != nil { + return x.Saturday + } + return nil +} + +func (x *Service) GetSunday() *Bool { + if x != nil { + return x.Sunday + } + return nil +} + +type Shape struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *DatabaseEntity `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ShapeId *Key `protobuf:"bytes,2,opt,name=shape_id,json=shapeId,proto3" json:"shape_id,omitempty"` + Geometry *LineString `protobuf:"bytes,3,opt,name=geometry,proto3" json:"geometry,omitempty"` +} + +func (x *Shape) Reset() { + *x = Shape{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Shape) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Shape) ProtoMessage() {} + +func (x *Shape) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Shape.ProtoReflect.Descriptor instead. +func (*Shape) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{31} +} + +func (x *Shape) GetId() *DatabaseEntity { + if x != nil { + return x.Id + } + return nil +} + +func (x *Shape) GetShapeId() *Key { + if x != nil { + return x.ShapeId + } + return nil +} + +func (x *Shape) GetGeometry() *LineString { + if x != nil { + return x.Geometry + } + return nil +} + +type Point struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Lon float64 `protobuf:"fixed64,1,opt,name=lon,proto3" json:"lon,omitempty"` + Lat float64 `protobuf:"fixed64,2,opt,name=lat,proto3" json:"lat,omitempty"` +} + +func (x *Point) Reset() { + *x = Point{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Point) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Point) ProtoMessage() {} + +func (x *Point) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Point.ProtoReflect.Descriptor instead. +func (*Point) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{32} +} + +func (x *Point) GetLon() float64 { + if x != nil { + return x.Lon + } + return 0 +} + +func (x *Point) GetLat() float64 { + if x != nil { + return x.Lat + } + return 0 +} + +type LineString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Stride uint32 `protobuf:"varint,1,opt,name=stride,proto3" json:"stride,omitempty"` + Coordinates []float64 `protobuf:"fixed64,2,rep,packed,name=coordinates,proto3" json:"coordinates,omitempty"` +} + +func (x *LineString) Reset() { + *x = LineString{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LineString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LineString) ProtoMessage() {} + +func (x *LineString) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LineString.ProtoReflect.Descriptor instead. +func (*LineString) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{33} +} + +func (x *LineString) GetStride() uint32 { + if x != nil { + return x.Stride + } + return 0 +} + +func (x *LineString) GetCoordinates() []float64 { + if x != nil { + return x.Coordinates + } + return nil +} + +type DatabaseEntity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + FeedVersionId int64 `protobuf:"varint,2,opt,name=feed_version_id,json=feedVersionId,proto3" json:"feed_version_id,omitempty"` +} + +func (x *DatabaseEntity) Reset() { + *x = DatabaseEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DatabaseEntity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DatabaseEntity) ProtoMessage() {} + +func (x *DatabaseEntity) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DatabaseEntity.ProtoReflect.Descriptor instead. +func (*DatabaseEntity) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{34} +} + +func (x *DatabaseEntity) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DatabaseEntity) GetFeedVersionId() int64 { + if x != nil { + return x.FeedVersionId + } + return 0 +} + +type Date struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Year int32 `protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"` + Month int32 `protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"` + Day int32 `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"` +} + +func (x *Date) Reset() { + *x = Date{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Date) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Date) ProtoMessage() {} + +func (x *Date) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Date.ProtoReflect.Descriptor instead. +func (*Date) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{35} +} + +func (x *Date) GetYear() int32 { + if x != nil { + return x.Year + } + return 0 +} + +func (x *Date) GetMonth() int32 { + if x != nil { + return x.Month + } + return 0 +} + +func (x *Date) GetDay() int32 { + if x != nil { + return x.Day + } + return 0 +} + +type Timestamp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val int64 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Timestamp) Reset() { + *x = Timestamp{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Timestamp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Timestamp) ProtoMessage() {} + +func (x *Timestamp) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Timestamp.ProtoReflect.Descriptor instead. +func (*Timestamp) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{36} +} + +func (x *Timestamp) GetVal() int64 { + if x != nil { + return x.Val + } + return 0 +} + +type Seconds struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val int64 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Seconds) Reset() { + *x = Seconds{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Seconds) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Seconds) ProtoMessage() {} + +func (x *Seconds) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Seconds.ProtoReflect.Descriptor instead. +func (*Seconds) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{37} +} + +func (x *Seconds) GetVal() int64 { + if x != nil { + return x.Val + } + return 0 +} + +type Key struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Key) Reset() { + *x = Key{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Key) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Key) ProtoMessage() {} + +func (x *Key) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Key.ProtoReflect.Descriptor instead. +func (*Key) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{38} +} + +func (x *Key) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Timezone struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Timezone) Reset() { + *x = Timezone{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Timezone) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Timezone) ProtoMessage() {} + +func (x *Timezone) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Timezone.ProtoReflect.Descriptor instead. +func (*Timezone) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{39} +} + +func (x *Timezone) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Reference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Reference) Reset() { + *x = Reference{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Reference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Reference) ProtoMessage() {} + +func (x *Reference) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Reference.ProtoReflect.Descriptor instead. +func (*Reference) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{40} +} + +func (x *Reference) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Url struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Url) Reset() { + *x = Url{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Url) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Url) ProtoMessage() {} + +func (x *Url) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Url.ProtoReflect.Descriptor instead. +func (*Url) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{41} +} + +func (x *Url) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Email struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Email) Reset() { + *x = Email{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Email) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Email) ProtoMessage() {} + +func (x *Email) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Email.ProtoReflect.Descriptor instead. +func (*Email) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{42} +} + +func (x *Email) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Color struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Color) Reset() { + *x = Color{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Color) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Color) ProtoMessage() {} + +func (x *Color) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Color.ProtoReflect.Descriptor instead. +func (*Color) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{43} +} + +func (x *Color) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Money struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Units int64 `protobuf:"varint,1,opt,name=units,proto3" json:"units,omitempty"` + Nanos int64 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"` +} + +func (x *Money) Reset() { + *x = Money{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Money) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Money) ProtoMessage() {} + +func (x *Money) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Money.ProtoReflect.Descriptor instead. +func (*Money) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{44} +} + +func (x *Money) GetUnits() int64 { + if x != nil { + return x.Units + } + return 0 +} + +func (x *Money) GetNanos() int64 { + if x != nil { + return x.Nanos + } + return 0 +} + +type Currency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Currency) Reset() { + *x = Currency{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Currency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Currency) ProtoMessage() {} + +func (x *Currency) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Currency.ProtoReflect.Descriptor instead. +func (*Currency) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{45} +} + +func (x *Currency) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Language struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Language) Reset() { + *x = Language{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Language) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Language) ProtoMessage() {} + +func (x *Language) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Language.ProtoReflect.Descriptor instead. +func (*Language) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{46} +} + +func (x *Language) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Phone struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Phone) Reset() { + *x = Phone{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Phone) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Phone) ProtoMessage() {} + +func (x *Phone) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Phone.ProtoReflect.Descriptor instead. +func (*Phone) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{47} +} + +func (x *Phone) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Float struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val float64 `protobuf:"fixed64,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Float) Reset() { + *x = Float{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Float) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Float) ProtoMessage() {} + +func (x *Float) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Float.ProtoReflect.Descriptor instead. +func (*Float) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{48} +} + +func (x *Float) GetVal() float64 { + if x != nil { + return x.Val + } + return 0 +} + +type String struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *String) Reset() { + *x = String{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *String) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*String) ProtoMessage() {} + +func (x *String) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use String.ProtoReflect.Descriptor instead. +func (*String) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{49} +} + +func (x *String) GetVal() string { + if x != nil { + return x.Val + } + return "" +} + +type Int struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val int64 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Int) Reset() { + *x = Int{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Int) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Int) ProtoMessage() {} + +func (x *Int) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Int.ProtoReflect.Descriptor instead. +func (*Int) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{50} +} + +func (x *Int) GetVal() int64 { + if x != nil { + return x.Val + } + return 0 +} + +type Bool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val bool `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` +} + +func (x *Bool) Reset() { + *x = Bool{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bool) ProtoMessage() {} + +func (x *Bool) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bool.ProtoReflect.Descriptor instead. +func (*Bool) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{51} +} + +func (x *Bool) GetVal() bool { + if x != nil { + return x.Val + } + return false +} + +type WheelchairAccess struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val WheelchairAccessEnum `protobuf:"varint,1,opt,name=val,proto3,enum=WheelchairAccessEnum" json:"val,omitempty"` +} + +func (x *WheelchairAccess) Reset() { + *x = WheelchairAccess{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WheelchairAccess) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WheelchairAccess) ProtoMessage() {} + +func (x *WheelchairAccess) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WheelchairAccess.ProtoReflect.Descriptor instead. +func (*WheelchairAccess) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{52} +} + +func (x *WheelchairAccess) GetVal() WheelchairAccessEnum { + if x != nil { + return x.Val + } + return WheelchairAccessEnum_WheelchairUnknown +} + +type BikeAccess struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val BikeAccessEnum `protobuf:"varint,1,opt,name=val,proto3,enum=BikeAccessEnum" json:"val,omitempty"` +} + +func (x *BikeAccess) Reset() { + *x = BikeAccess{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BikeAccess) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BikeAccess) ProtoMessage() {} + +func (x *BikeAccess) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BikeAccess.ProtoReflect.Descriptor instead. +func (*BikeAccess) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{53} +} + +func (x *BikeAccess) GetVal() BikeAccessEnum { + if x != nil { + return x.Val + } + return BikeAccessEnum_BikeUnknown +} + +type BoardAccess struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val BoardAccessEnum `protobuf:"varint,1,opt,name=val,proto3,enum=BoardAccessEnum" json:"val,omitempty"` +} + +func (x *BoardAccess) Reset() { + *x = BoardAccess{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BoardAccess) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BoardAccess) ProtoMessage() {} + +func (x *BoardAccess) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BoardAccess.ProtoReflect.Descriptor instead. +func (*BoardAccess) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{54} +} + +func (x *BoardAccess) GetVal() BoardAccessEnum { + if x != nil { + return x.Val + } + return BoardAccessEnum_BoardUnknown +} + +type PickupAccess struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val PickupAccessEnum `protobuf:"varint,1,opt,name=val,proto3,enum=PickupAccessEnum" json:"val,omitempty"` +} + +func (x *PickupAccess) Reset() { + *x = PickupAccess{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PickupAccess) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PickupAccess) ProtoMessage() {} + +func (x *PickupAccess) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PickupAccess.ProtoReflect.Descriptor instead. +func (*PickupAccess) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{55} +} + +func (x *PickupAccess) GetVal() PickupAccessEnum { + if x != nil { + return x.Val + } + return PickupAccessEnum_PickupContinuous +} + +type StopLocationType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val StopLocationTypeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=StopLocationTypeEnum" json:"val,omitempty"` +} + +func (x *StopLocationType) Reset() { + *x = StopLocationType{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopLocationType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopLocationType) ProtoMessage() {} + +func (x *StopLocationType) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopLocationType.ProtoReflect.Descriptor instead. +func (*StopLocationType) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{56} +} + +func (x *StopLocationType) GetVal() StopLocationTypeEnum { + if x != nil { + return x.Val + } + return StopLocationTypeEnum_LocationPlatform +} + +type RouteType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val RouteTypeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=RouteTypeEnum" json:"val,omitempty"` +} + +func (x *RouteType) Reset() { + *x = RouteType{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RouteType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteType) ProtoMessage() {} + +func (x *RouteType) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteType.ProtoReflect.Descriptor instead. +func (*RouteType) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{57} +} + +func (x *RouteType) GetVal() RouteTypeEnum { + if x != nil { + return x.Val + } + return RouteTypeEnum_VehicleTram +} + +type TripDirection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val TripDirectionEnum `protobuf:"varint,1,opt,name=val,proto3,enum=TripDirectionEnum" json:"val,omitempty"` +} + +func (x *TripDirection) Reset() { + *x = TripDirection{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TripDirection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TripDirection) ProtoMessage() {} + +func (x *TripDirection) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[58] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TripDirection.ProtoReflect.Descriptor instead. +func (*TripDirection) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{58} +} + +func (x *TripDirection) GetVal() TripDirectionEnum { + if x != nil { + return x.Val + } + return TripDirectionEnum_TripDirectionOutbound +} + +type StopTimepoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val StopTimepointEnum `protobuf:"varint,1,opt,name=val,proto3,enum=StopTimepointEnum" json:"val,omitempty"` +} + +func (x *StopTimepoint) Reset() { + *x = StopTimepoint{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopTimepoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopTimepoint) ProtoMessage() {} + +func (x *StopTimepoint) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[59] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopTimepoint.ProtoReflect.Descriptor instead. +func (*StopTimepoint) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{59} +} + +func (x *StopTimepoint) GetVal() StopTimepointEnum { + if x != nil { + return x.Val + } + return StopTimepointEnum_Approximate +} + +type CalendarExceptionType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val CalendarExceptionTypeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=CalendarExceptionTypeEnum" json:"val,omitempty"` +} + +func (x *CalendarExceptionType) Reset() { + *x = CalendarExceptionType{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CalendarExceptionType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CalendarExceptionType) ProtoMessage() {} + +func (x *CalendarExceptionType) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CalendarExceptionType.ProtoReflect.Descriptor instead. +func (*CalendarExceptionType) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{60} +} + +func (x *CalendarExceptionType) GetVal() CalendarExceptionTypeEnum { + if x != nil { + return x.Val + } + return CalendarExceptionTypeEnum_CalendarUnknown +} + +type FrequencyExactTime struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val FrequencyExactTimeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=FrequencyExactTimeEnum" json:"val,omitempty"` +} + +func (x *FrequencyExactTime) Reset() { + *x = FrequencyExactTime{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FrequencyExactTime) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrequencyExactTime) ProtoMessage() {} + +func (x *FrequencyExactTime) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrequencyExactTime.ProtoReflect.Descriptor instead. +func (*FrequencyExactTime) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{61} +} + +func (x *FrequencyExactTime) GetVal() FrequencyExactTimeEnum { + if x != nil { + return x.Val + } + return FrequencyExactTimeEnum_FrequencyExactTimeFrequency +} + +type TransferType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val TransferTypeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=TransferTypeEnum" json:"val,omitempty"` +} + +func (x *TransferType) Reset() { + *x = TransferType{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransferType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferType) ProtoMessage() {} + +func (x *TransferType) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferType.ProtoReflect.Descriptor instead. +func (*TransferType) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{62} +} + +func (x *TransferType) GetVal() TransferTypeEnum { + if x != nil { + return x.Val + } + return TransferTypeEnum_TransferTypeRecommended +} + +type PathwayDirectionality struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val PathwayDirectionalityEnum `protobuf:"varint,1,opt,name=val,proto3,enum=PathwayDirectionalityEnum" json:"val,omitempty"` +} + +func (x *PathwayDirectionality) Reset() { + *x = PathwayDirectionality{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PathwayDirectionality) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PathwayDirectionality) ProtoMessage() {} + +func (x *PathwayDirectionality) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[63] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PathwayDirectionality.ProtoReflect.Descriptor instead. +func (*PathwayDirectionality) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{63} +} + +func (x *PathwayDirectionality) GetVal() PathwayDirectionalityEnum { + if x != nil { + return x.Val + } + return PathwayDirectionalityEnum_PathwayUnidirectional +} + +type PathwayMode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val PathwayModeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=PathwayModeEnum" json:"val,omitempty"` +} + +func (x *PathwayMode) Reset() { + *x = PathwayMode{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PathwayMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PathwayMode) ProtoMessage() {} + +func (x *PathwayMode) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[64] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PathwayMode.ProtoReflect.Descriptor instead. +func (*PathwayMode) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{64} +} + +func (x *PathwayMode) GetVal() PathwayModeEnum { + if x != nil { + return x.Val + } + return PathwayModeEnum_PathwayModeUnknown +} + +type BookingRuleType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val BookingRuleTypeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=BookingRuleTypeEnum" json:"val,omitempty"` +} + +func (x *BookingRuleType) Reset() { + *x = BookingRuleType{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BookingRuleType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BookingRuleType) ProtoMessage() {} + +func (x *BookingRuleType) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[65] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BookingRuleType.ProtoReflect.Descriptor instead. +func (*BookingRuleType) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{65} +} + +func (x *BookingRuleType) GetVal() BookingRuleTypeEnum { + if x != nil { + return x.Val + } + return BookingRuleTypeEnum_BookingRuleTypeRealtime +} + +type FareMediaType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val FareMediaTypeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=FareMediaTypeEnum" json:"val,omitempty"` +} + +func (x *FareMediaType) Reset() { + *x = FareMediaType{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareMediaType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareMediaType) ProtoMessage() {} + +func (x *FareMediaType) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[66] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareMediaType.ProtoReflect.Descriptor instead. +func (*FareMediaType) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{66} +} + +func (x *FareMediaType) GetVal() FareMediaTypeEnum { + if x != nil { + return x.Val + } + return FareMediaTypeEnum_FareMediaNone +} + +type FareTransferType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val FareTransferTypeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=FareTransferTypeEnum" json:"val,omitempty"` +} + +func (x *FareTransferType) Reset() { + *x = FareTransferType{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareTransferType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareTransferType) ProtoMessage() {} + +func (x *FareTransferType) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[67] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareTransferType.ProtoReflect.Descriptor instead. +func (*FareTransferType) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{67} +} + +func (x *FareTransferType) GetVal() FareTransferTypeEnum { + if x != nil { + return x.Val + } + return FareTransferTypeEnum_FareTransfer0 +} + +type DurationLimitType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val DurationLimitTypeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=DurationLimitTypeEnum" json:"val,omitempty"` +} + +func (x *DurationLimitType) Reset() { + *x = DurationLimitType{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DurationLimitType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DurationLimitType) ProtoMessage() {} + +func (x *DurationLimitType) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DurationLimitType.ProtoReflect.Descriptor instead. +func (*DurationLimitType) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{68} +} + +func (x *DurationLimitType) GetVal() DurationLimitTypeEnum { + if x != nil { + return x.Val + } + return DurationLimitTypeEnum_DurationLimit0 +} + +type FareAttributeTransferType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val FareAttributeTransferTypeEnum `protobuf:"varint,1,opt,name=val,proto3,enum=FareAttributeTransferTypeEnum" json:"val,omitempty"` +} + +func (x *FareAttributeTransferType) Reset() { + *x = FareAttributeTransferType{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FareAttributeTransferType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FareAttributeTransferType) ProtoMessage() {} + +func (x *FareAttributeTransferType) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FareAttributeTransferType.ProtoReflect.Descriptor instead. +func (*FareAttributeTransferType) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{69} +} + +func (x *FareAttributeTransferType) GetVal() FareAttributeTransferTypeEnum { + if x != nil { + return x.Val + } + return FareAttributeTransferTypeEnum_FareAttributeTransferTypeDisallowed +} + +type PaymentMethod struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val PaymentMethodEnum `protobuf:"varint,1,opt,name=val,proto3,enum=PaymentMethodEnum" json:"val,omitempty"` +} + +func (x *PaymentMethod) Reset() { + *x = PaymentMethod{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PaymentMethod) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PaymentMethod) ProtoMessage() {} + +func (x *PaymentMethod) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PaymentMethod.ProtoReflect.Descriptor instead. +func (*PaymentMethod) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{70} +} + +func (x *PaymentMethod) GetVal() PaymentMethodEnum { + if x != nil { + return x.Val + } + return PaymentMethodEnum_PaymentMethodOnboard +} + +type AttributionRole struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val AttributionRoleEnum `protobuf:"varint,1,opt,name=val,proto3,enum=AttributionRoleEnum" json:"val,omitempty"` +} + +func (x *AttributionRole) Reset() { + *x = AttributionRole{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AttributionRole) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttributionRole) ProtoMessage() {} + +func (x *AttributionRole) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AttributionRole.ProtoReflect.Descriptor instead. +func (*AttributionRole) Descriptor() ([]byte, []int) { + return file_gtfs_proto_rawDescGZIP(), []int{71} +} + +func (x *AttributionRole) GetVal() AttributionRoleEnum { + if x != nil { + return x.Val + } + return AttributionRoleEnum_AttributionRoleNotAssigned +} + +var File_gtfs_proto protoreflect.FileDescriptor + +var file_gtfs_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x67, 0x74, 0x66, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xeb, 0x01, 0x0a, + 0x0a, 0x46, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x06, 0x61, + 0x67, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x41, 0x67, + 0x65, 0x6e, 0x63, 0x79, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x04, + 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x53, 0x74, 0x6f, + 0x70, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x05, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x72, 0x69, 0x70, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x52, 0x04, 0x74, 0x72, 0x69, 0x70, + 0x12, 0x26, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x08, + 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x53, 0x68, 0x61, 0x70, 0x65, 0x52, + 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xff, 0x02, 0x0a, 0x06, 0x41, + 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, + 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0b, 0x61, 0x67, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x09, 0x61, + 0x67, 0x65, 0x6e, 0x63, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, + 0x63, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0e, 0x61, 0x67, + 0x65, 0x6e, 0x63, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x0b, + 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x61, 0x67, + 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, + 0x63, 0x79, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, + 0x2e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, + 0x72, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, + 0x72, 0x6c, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x72, 0x65, 0x55, 0x72, + 0x6c, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, + 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xa2, 0x05, 0x0a, + 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x73, + 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x09, 0x73, + 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2b, 0x0a, 0x0d, 0x74, 0x74, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x0b, 0x74, 0x74, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, + 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, + 0x44, 0x65, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x61, 0x74, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x07, + 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x61, 0x74, 0x12, 0x21, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, + 0x6c, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x61, + 0x74, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x07, 0x7a, 0x6f, + 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x08, + 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, + 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x36, 0x0a, + 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x09, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, + 0x54, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x42, 0x0a, 0x13, 0x77, 0x68, 0x65, 0x65, + 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, + 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x12, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, + 0x68, 0x61, 0x69, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0xfa, 0x04, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x08, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, + 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, + 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x61, 0x67, + 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x53, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x4c, 0x6f, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0a, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, + 0x73, 0x63, 0x12, 0x29, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, + 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x55, 0x72, 0x6c, + 0x12, 0x27, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0a, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x10, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0e, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x10, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x11, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, + 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, + 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x26, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0xef, + 0x03, 0x0a, 0x04, 0x54, 0x72, 0x69, 0x70, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, + 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x72, + 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, + 0x79, 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0d, 0x74, 0x72, 0x69, + 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x70, 0x48, + 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x2f, 0x0a, 0x0f, 0x74, 0x72, 0x69, 0x70, 0x5f, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x70, 0x53, + 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12, + 0x25, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x73, + 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x15, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, + 0x68, 0x61, 0x69, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, + 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x14, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x63, + 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x30, + 0x0a, 0x0d, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x52, 0x0c, 0x62, 0x69, 0x6b, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x22, 0xea, 0x07, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, + 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x74, 0x72, 0x69, + 0x70, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x52, 0x0b, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x2f, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x23, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, + 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, + 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x2c, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x69, + 0x67, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x73, 0x69, 0x67, 0x6e, 0x12, + 0x3a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x69, + 0x63, 0x6b, 0x75, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, + 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x13, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, + 0x66, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, + 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, + 0x6f, 0x75, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x12, 0x36, 0x0a, 0x13, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, + 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, + 0x11, 0x73, 0x68, 0x61, 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, + 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x12, 0x2b, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x36, 0x0a, + 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x1c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, + 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x77, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x18, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x69, 0x63, 0x6b, + 0x75, 0x70, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, + 0x44, 0x0a, 0x1a, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x64, 0x72, + 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x16, 0x65, + 0x6e, 0x64, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x57, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x2e, 0x0a, 0x0b, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x50, 0x69, 0x63, + 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x0a, 0x70, 0x69, 0x63, 0x6b, 0x75, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, + 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x50, + 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x0b, 0x64, 0x72, 0x6f, + 0x70, 0x4f, 0x66, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x16, 0x70, 0x69, 0x63, 0x6b, + 0x75, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x13, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x42, 0x6f, 0x6f, 0x6b, + 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x18, 0x64, 0x72, 0x6f, + 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, + 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x81, 0x03, + 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0a, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x64, + 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, + 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, + 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, + 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, + 0x65, 0x73, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x21, 0x0a, + 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, + 0x12, 0x1d, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, + 0x21, 0x0a, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, + 0x61, 0x79, 0x12, 0x1d, 0x0a, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, + 0x79, 0x22, 0xb4, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x19, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, + 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x65, 0x78, 0x63, + 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0xea, 0x02, 0x0a, 0x0d, 0x46, 0x61, 0x72, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x07, 0x66, + 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, + 0x65, 0x79, 0x52, 0x06, 0x66, 0x61, 0x72, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, + 0x79, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x09, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, + 0x38, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, + 0x49, 0x64, 0x12, 0x31, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, + 0x49, 0x6e, 0x74, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfa, 0x01, 0x0a, 0x08, 0x46, 0x61, 0x72, 0x65, 0x52, 0x75, + 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x07, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x66, 0x61, 0x72, 0x65, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x09, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x73, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x49, 0x64, 0x22, 0xd9, 0x01, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x32, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, + 0x4b, 0x65, 0x79, 0x52, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, + 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0xbf, + 0x01, 0x0a, 0x09, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1f, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, + 0x0d, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x66, 0x61, 0x72, 0x65, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x5f, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0f, 0x66, 0x61, 0x72, 0x65, + 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, + 0x22, 0x88, 0x02, 0x0a, 0x0b, 0x46, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, + 0x52, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, + 0x33, 0x0a, 0x11, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0d, 0x66, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, + 0x69, 0x61, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0xba, 0x03, 0x0a, 0x0b, + 0x46, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0c, + 0x6c, 0x65, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x0a, 0x6c, 0x65, 0x67, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, + 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x28, 0x0a, + 0x0a, 0x74, 0x6f, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x74, + 0x6f, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x17, 0x66, 0x72, 0x6f, 0x6d, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x15, 0x74, 0x6f, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x12, 0x74, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x0f, 0x66, 0x61, 0x72, + 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, + 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x29, 0x0a, + 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x69, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x72, 0x75, 0x6c, 0x65, + 0x50, 0x72, 0x6f, 0x69, 0x72, 0x69, 0x74, 0x79, 0x22, 0x83, 0x03, 0x0a, 0x10, 0x46, 0x61, 0x72, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, + 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6c, 0x65, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x66, 0x72, 0x6f, 0x6d, 0x4c, 0x65, 0x67, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0f, 0x74, 0x6f, 0x5f, 0x6c, 0x65, 0x67, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x74, 0x6f, 0x4c, 0x65, + 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x04, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x13, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x12, 0x66, 0x61, 0x72, + 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x66, 0x61, 0x72, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x0f, 0x66, 0x61, + 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x0d, 0x66, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 0x6c, + 0x0a, 0x04, 0x41, 0x72, 0x65, 0x61, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x72, 0x65, 0x61, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x06, + 0x61, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x09, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x75, 0x0a, 0x08, + 0x53, 0x74, 0x6f, 0x70, 0x41, 0x72, 0x65, 0x61, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x07, 0x61, 0x72, 0x65, + 0x61, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, + 0x70, 0x49, 0x64, 0x22, 0x7b, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1f, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x23, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x81, 0x01, 0x0a, 0x0c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x25, 0x0a, + 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x49, 0x64, 0x22, 0xfc, 0x01, 0x0a, 0x09, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x77, 0x61, + 0x79, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x49, + 0x6e, 0x74, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x77, 0x61, 0x79, 0x53, 0x65, 0x63, 0x73, 0x12, + 0x32, 0x0a, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, + 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x09, 0x65, 0x78, 0x61, 0x63, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0x9d, 0x03, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, + 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x08, 0x74, 0x6f, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x0d, 0x66, 0x72, 0x6f, + 0x6d, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x66, 0x72, + 0x6f, 0x6d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x72, + 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x72, 0x69, + 0x70, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x08, 0x74, 0x6f, 0x54, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, + 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x30, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x49, + 0x6e, 0x74, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0xc4, 0x04, 0x0a, 0x07, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x12, + 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x23, 0x0a, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x61, 0x74, 0x68, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, + 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x6f, + 0x70, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x08, 0x74, 0x6f, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x2f, 0x0a, + 0x0c, 0x70, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, + 0x65, 0x52, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x41, + 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x62, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x77, + 0x61, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x52, 0x0f, 0x69, 0x73, 0x42, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x12, 0x1e, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x2b, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x49, 0x6e, 0x74, 0x52, + 0x0d, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, + 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x69, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x69, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6c, 0x6f, + 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, + 0x52, 0x08, 0x6d, 0x61, 0x78, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x09, 0x6d, 0x69, + 0x6e, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, + 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, + 0x2c, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x41, 0x73, 0x12, 0x3b, 0x0a, + 0x15, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x70, 0x6f, 0x73, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x53, 0x69, + 0x67, 0x6e, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x41, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x05, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0b, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, + 0x6f, 0x61, 0x74, 0x52, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x26, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x0f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x13, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x11, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x1f, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x11, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x22, 0xc4, 0x06, 0x0a, 0x0b, 0x42, 0x6f, + 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x62, 0x6f, + 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x62, 0x6f, 0x6f, 0x6b, 0x69, + 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, + 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, + 0x19, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x04, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, + 0x69, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x3f, + 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x04, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, + 0x74, 0x69, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, + 0x37, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, + 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x12, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, + 0x65, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x16, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x52, 0x13, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x4c, + 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x16, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x13, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, + 0x61, 0x79, 0x12, 0x3f, 0x0a, 0x17, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, + 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x14, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x17, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, + 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x14, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x0e, 0x70, 0x69, 0x63, + 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x70, 0x69, 0x63, 0x6b, + 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x10, 0x64, 0x72, 0x6f, + 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x64, 0x72, + 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x0c, + 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x70, 0x68, 0x6f, + 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, + 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0b, 0x62, 0x6f, 0x6f, + 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, + 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, + 0x22, 0xcd, 0x02, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x25, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x08, + 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x08, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0d, 0x72, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x53, 0x75, 0x62, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0xae, 0x03, 0x0a, 0x08, 0x46, 0x65, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, + 0x0a, 0x13, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x66, 0x65, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x65, 0x64, 0x5f, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x10, 0x66, 0x65, 0x65, 0x64, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x09, 0x66, + 0x65, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, + 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x65, 0x65, 0x64, 0x4c, + 0x61, 0x6e, 0x67, 0x12, 0x2c, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, + 0x61, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x61, 0x6e, + 0x67, 0x12, 0x2d, 0x0a, 0x0f, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, + 0x65, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x29, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0b, + 0x66, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x12, 0x66, + 0x65, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, + 0x10, 0x66, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x45, 0x6d, 0x61, 0x69, + 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x55, 0x72, + 0x6c, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x55, 0x72, + 0x6c, 0x22, 0xba, 0x04, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, 0x79, + 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x27, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, + 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x74, 0x72, + 0x69, 0x70, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x07, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0b, 0x69, 0x73, + 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x0a, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x12, 0x31, 0x0a, + 0x0b, 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0a, 0x69, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x33, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0b, 0x69, 0x73, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, + 0x2e, 0x55, 0x72, 0x6c, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x33, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x06, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x10, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x33, 0x0a, 0x11, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x52, 0x10, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x22, 0xcd, + 0x01, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x70, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, + 0x08, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x6c, 0x61, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x4c, 0x61, 0x74, + 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x6c, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x4c, + 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x70, 0x74, 0x5f, 0x73, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, + 0x68, 0x61, 0x70, 0x65, 0x50, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2e, + 0x0a, 0x13, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, + 0x76, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x44, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x64, 0x22, 0xbe, + 0x03, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0a, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x04, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, + 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x05, + 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x64, 0x61, 0x79, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x06, 0x6d, + 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x07, 0x74, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x07, 0x74, + 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, + 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x52, 0x09, 0x77, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x08, 0x74, + 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x08, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x12, 0x1d, + 0x0a, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x06, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x12, 0x21, 0x0a, + 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x08, 0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, + 0x12, 0x1d, 0x0a, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x06, 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x22, + 0x72, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x4b, 0x65, + 0x79, 0x52, 0x07, 0x73, 0x68, 0x61, 0x70, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x08, 0x67, 0x65, + 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x4c, + 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x67, 0x65, 0x6f, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x22, 0x2b, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x6c, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x6e, 0x12, 0x10, + 0x0a, 0x03, 0x6c, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x61, 0x74, + 0x22, 0x46, 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, + 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6f, + 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x22, 0x48, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x65, + 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x22, 0x42, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x65, + 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, + 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, 0x22, 0x1d, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1b, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x76, + 0x61, 0x6c, 0x22, 0x17, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1c, 0x0a, 0x08, 0x54, + 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1d, 0x0a, 0x09, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x17, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x12, + 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, + 0x6c, 0x22, 0x19, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x19, 0x0a, 0x05, + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x33, 0x0a, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x22, 0x1c, 0x0a, 0x08, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1c, 0x0a, 0x08, 0x4c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x19, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x76, 0x61, 0x6c, 0x22, 0x19, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x1a, + 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x17, 0x0a, 0x03, 0x49, 0x6e, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, + 0x76, 0x61, 0x6c, 0x22, 0x18, 0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x76, + 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x3b, 0x0a, + 0x10, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x12, 0x27, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x2f, 0x0a, 0x0a, 0x42, 0x69, + 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x31, 0x0a, 0x0b, 0x42, + 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x03, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x33, + 0x0a, 0x0c, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x23, + 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x50, 0x69, + 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, + 0x76, 0x61, 0x6c, 0x22, 0x3b, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, + 0x22, 0x2d, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, + 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, + 0x35, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x24, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, + 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x35, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, + 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x45, 0x0a, + 0x15, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x45, 0x78, + 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, + 0x03, 0x76, 0x61, 0x6c, 0x22, 0x3f, 0x0a, 0x12, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, + 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x33, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x45, 0x0a, 0x15, 0x50, 0x61, + 0x74, 0x68, 0x77, 0x61, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1a, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, + 0x6c, 0x22, 0x31, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x22, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, + 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, + 0x03, 0x76, 0x61, 0x6c, 0x22, 0x39, 0x0a, 0x0f, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, + 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, + 0x35, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x24, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, + 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x3b, 0x0a, 0x10, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, + 0x76, 0x61, 0x6c, 0x22, 0x3d, 0x0a, 0x11, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, + 0x61, 0x6c, 0x22, 0x4d, 0x0a, 0x19, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x30, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x46, + 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, + 0x6c, 0x22, 0x35, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x12, 0x24, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x12, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, + 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x39, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x03, 0x76, + 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, + 0x76, 0x61, 0x6c, 0x2a, 0x5e, 0x0a, 0x14, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, + 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x15, 0x0a, 0x11, 0x57, + 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, + 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x68, 0x65, + 0x65, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x72, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x10, 0x02, 0x2a, 0x46, 0x0a, 0x0e, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x55, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x69, 0x6b, 0x65, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x69, 0x6b, 0x65, 0x44, + 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x5f, 0x0a, 0x0f, 0x42, + 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x10, + 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, + 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x6f, 0x61, 0x72, 0x64, + 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x03, 0x2a, 0x68, 0x0a, 0x10, + 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, + 0x75, 0x6f, 0x75, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, + 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x75, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x10, + 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x73, 0x6b, 0x44, 0x72, + 0x69, 0x76, 0x65, 0x72, 0x10, 0x03, 0x2a, 0x83, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x14, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x02, + 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, + 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x65, 0x61, 0x10, 0x04, 0x2a, 0xd0, 0x01, 0x0a, + 0x0d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6d, 0x10, 0x00, 0x12, + 0x11, 0x0a, 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x75, 0x62, 0x77, 0x61, 0x79, + 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x61, 0x69, + 0x6c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x42, 0x75, + 0x73, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x65, + 0x72, 0x72, 0x79, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, + 0x43, 0x61, 0x62, 0x6c, 0x65, 0x63, 0x61, 0x72, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x65, + 0x68, 0x69, 0x63, 0x6c, 0x65, 0x47, 0x6f, 0x6e, 0x64, 0x6f, 0x6c, 0x61, 0x10, 0x06, 0x12, 0x14, + 0x0a, 0x10, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x69, 0x63, 0x75, 0x6c, + 0x61, 0x72, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x54, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x62, 0x75, 0x73, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x65, + 0x68, 0x69, 0x63, 0x6c, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x10, 0x0c, 0x2a, + 0x48, 0x0a, 0x11, 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x00, 0x12, + 0x18, 0x0a, 0x14, 0x54, 0x72, 0x69, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x01, 0x2a, 0x3c, 0x0a, 0x11, 0x53, 0x74, 0x6f, + 0x70, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x01, 0x2a, 0x58, 0x0a, 0x19, 0x43, 0x61, 0x6c, 0x65, 0x6e, + 0x64, 0x61, 0x72, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, + 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x61, 0x6c, + 0x65, 0x6e, 0x64, 0x61, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x10, + 0x02, 0x2a, 0x5a, 0x0a, 0x16, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x78, + 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x1b, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x10, 0x01, 0x2a, 0xad, 0x01, + 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x15, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x64, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x10, 0x02, 0x12, + 0x1a, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x44, + 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x53, 0x65, 0x61, + 0x74, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x4d, 0x75, 0x73, 0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0x05, 0x2a, 0x50, 0x0a, + 0x19, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x61, + 0x74, 0x68, 0x77, 0x61, 0x79, 0x55, 0x6e, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, + 0x42, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x10, 0x01, 0x2a, + 0xd9, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, + 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x57, 0x61, 0x6c, 0x6b, 0x77, 0x61, + 0x79, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x53, 0x74, 0x61, 0x69, 0x72, 0x73, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x61, + 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x61, + 0x74, 0x6f, 0x72, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, + 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x04, 0x12, + 0x17, 0x0a, 0x13, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x6c, + 0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, + 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x46, 0x61, 0x72, 0x65, 0x47, 0x61, 0x74, 0x65, + 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x61, 0x74, 0x68, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, + 0x65, 0x45, 0x78, 0x69, 0x74, 0x47, 0x61, 0x74, 0x65, 0x10, 0x07, 0x2a, 0x6b, 0x0a, 0x13, 0x42, + 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x10, 0x00, 0x12, + 0x1a, 0x0a, 0x16, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x64, 0x61, 0x79, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x42, + 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x50, 0x72, + 0x69, 0x6f, 0x72, 0x64, 0x61, 0x79, 0x10, 0x02, 0x2a, 0x76, 0x0a, 0x11, 0x46, 0x61, 0x72, 0x65, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x11, 0x0a, + 0x0d, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, + 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x50, 0x61, 0x70, + 0x65, 0x72, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x43, 0x61, 0x72, 0x64, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x61, 0x72, 0x65, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x6f, 0x6f, 0x70, 0x10, 0x03, 0x12, 0x10, + 0x0a, 0x0c, 0x46, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x70, 0x70, 0x10, 0x04, + 0x2a, 0x4f, 0x0a, 0x14, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x30, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x46, + 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x31, 0x10, 0x01, 0x12, 0x11, + 0x0a, 0x0d, 0x46, 0x61, 0x72, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x32, 0x10, + 0x02, 0x2a, 0x67, 0x0a, 0x15, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x30, 0x10, 0x00, 0x12, 0x12, + 0x0a, 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x31, + 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x32, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x33, 0x10, 0x03, 0x2a, 0x8f, 0x01, 0x0a, 0x1d, 0x46, + 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x23, + 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x61, 0x72, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x4f, 0x6e, 0x63, 0x65, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x46, 0x61, 0x72, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x54, 0x77, 0x69, 0x63, 0x65, 0x10, 0x02, 0x2a, 0x48, 0x0a, 0x11, + 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x50, + 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x66, 0x66, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x10, 0x01, 0x2a, 0x52, 0x0a, 0x13, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, + 0x1a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, + 0x4e, 0x6f, 0x74, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12, 0x1b, 0x0a, + 0x17, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, + 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x10, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_gtfs_proto_rawDescOnce sync.Once + file_gtfs_proto_rawDescData = file_gtfs_proto_rawDesc +) + +func file_gtfs_proto_rawDescGZIP() []byte { + file_gtfs_proto_rawDescOnce.Do(func() { + file_gtfs_proto_rawDescData = protoimpl.X.CompressGZIP(file_gtfs_proto_rawDescData) + }) + return file_gtfs_proto_rawDescData +} + +var file_gtfs_proto_enumTypes = make([]protoimpl.EnumInfo, 20) +var file_gtfs_proto_msgTypes = make([]protoimpl.MessageInfo, 72) +var file_gtfs_proto_goTypes = []any{ + (WheelchairAccessEnum)(0), // 0: WheelchairAccessEnum + (BikeAccessEnum)(0), // 1: BikeAccessEnum + (BoardAccessEnum)(0), // 2: BoardAccessEnum + (PickupAccessEnum)(0), // 3: PickupAccessEnum + (StopLocationTypeEnum)(0), // 4: StopLocationTypeEnum + (RouteTypeEnum)(0), // 5: RouteTypeEnum + (TripDirectionEnum)(0), // 6: TripDirectionEnum + (StopTimepointEnum)(0), // 7: StopTimepointEnum + (CalendarExceptionTypeEnum)(0), // 8: CalendarExceptionTypeEnum + (FrequencyExactTimeEnum)(0), // 9: FrequencyExactTimeEnum + (TransferTypeEnum)(0), // 10: TransferTypeEnum + (PathwayDirectionalityEnum)(0), // 11: PathwayDirectionalityEnum + (PathwayModeEnum)(0), // 12: PathwayModeEnum + (BookingRuleTypeEnum)(0), // 13: BookingRuleTypeEnum + (FareMediaTypeEnum)(0), // 14: FareMediaTypeEnum + (FareTransferTypeEnum)(0), // 15: FareTransferTypeEnum + (DurationLimitTypeEnum)(0), // 16: DurationLimitTypeEnum + (FareAttributeTransferTypeEnum)(0), // 17: FareAttributeTransferTypeEnum + (PaymentMethodEnum)(0), // 18: PaymentMethodEnum + (AttributionRoleEnum)(0), // 19: AttributionRoleEnum + (*FeedEntity)(nil), // 20: FeedEntity + (*Agency)(nil), // 21: Agency + (*Stop)(nil), // 22: Stop + (*Route)(nil), // 23: Route + (*Trip)(nil), // 24: Trip + (*StopTime)(nil), // 25: StopTime + (*Calendar)(nil), // 26: Calendar + (*CalendarDate)(nil), // 27: CalendarDate + (*FareAttribute)(nil), // 28: FareAttribute + (*FareRule)(nil), // 29: FareRule + (*Timeframe)(nil), // 30: Timeframe + (*FareMedia)(nil), // 31: FareMedia + (*FareProduct)(nil), // 32: FareProduct + (*FareLegRule)(nil), // 33: FareLegRule + (*FareTransferRule)(nil), // 34: FareTransferRule + (*Area)(nil), // 35: Area + (*StopArea)(nil), // 36: StopArea + (*Network)(nil), // 37: Network + (*RouteNetwork)(nil), // 38: RouteNetwork + (*Frequency)(nil), // 39: Frequency + (*Transfer)(nil), // 40: Transfer + (*Pathway)(nil), // 41: Pathway + (*Level)(nil), // 42: Level + (*LocationGroup)(nil), // 43: LocationGroup + (*LocationGroupStop)(nil), // 44: LocationGroupStop + (*BookingRule)(nil), // 45: BookingRule + (*Translation)(nil), // 46: Translation + (*FeedInfo)(nil), // 47: FeedInfo + (*Attribution)(nil), // 48: Attribution + (*ShapePoint)(nil), // 49: ShapePoint + (*Service)(nil), // 50: Service + (*Shape)(nil), // 51: Shape + (*Point)(nil), // 52: Point + (*LineString)(nil), // 53: LineString + (*DatabaseEntity)(nil), // 54: DatabaseEntity + (*Date)(nil), // 55: Date + (*Timestamp)(nil), // 56: Timestamp + (*Seconds)(nil), // 57: Seconds + (*Key)(nil), // 58: Key + (*Timezone)(nil), // 59: Timezone + (*Reference)(nil), // 60: Reference + (*Url)(nil), // 61: Url + (*Email)(nil), // 62: Email + (*Color)(nil), // 63: Color + (*Money)(nil), // 64: Money + (*Currency)(nil), // 65: Currency + (*Language)(nil), // 66: Language + (*Phone)(nil), // 67: Phone + (*Float)(nil), // 68: Float + (*String)(nil), // 69: String + (*Int)(nil), // 70: Int + (*Bool)(nil), // 71: Bool + (*WheelchairAccess)(nil), // 72: WheelchairAccess + (*BikeAccess)(nil), // 73: BikeAccess + (*BoardAccess)(nil), // 74: BoardAccess + (*PickupAccess)(nil), // 75: PickupAccess + (*StopLocationType)(nil), // 76: StopLocationType + (*RouteType)(nil), // 77: RouteType + (*TripDirection)(nil), // 78: TripDirection + (*StopTimepoint)(nil), // 79: StopTimepoint + (*CalendarExceptionType)(nil), // 80: CalendarExceptionType + (*FrequencyExactTime)(nil), // 81: FrequencyExactTime + (*TransferType)(nil), // 82: TransferType + (*PathwayDirectionality)(nil), // 83: PathwayDirectionality + (*PathwayMode)(nil), // 84: PathwayMode + (*BookingRuleType)(nil), // 85: BookingRuleType + (*FareMediaType)(nil), // 86: FareMediaType + (*FareTransferType)(nil), // 87: FareTransferType + (*DurationLimitType)(nil), // 88: DurationLimitType + (*FareAttributeTransferType)(nil), // 89: FareAttributeTransferType + (*PaymentMethod)(nil), // 90: PaymentMethod + (*AttributionRole)(nil), // 91: AttributionRole +} +var file_gtfs_proto_depIdxs = []int32{ + 21, // 0: FeedEntity.agency:type_name -> Agency + 22, // 1: FeedEntity.stop:type_name -> Stop + 23, // 2: FeedEntity.route:type_name -> Route + 24, // 3: FeedEntity.trip:type_name -> Trip + 25, // 4: FeedEntity.stop_time:type_name -> StopTime + 51, // 5: FeedEntity.shape:type_name -> Shape + 50, // 6: FeedEntity.service:type_name -> Service + 54, // 7: Agency.id:type_name -> DatabaseEntity + 58, // 8: Agency.agency_id:type_name -> Key + 69, // 9: Agency.agency_name:type_name -> String + 61, // 10: Agency.agency_url:type_name -> Url + 59, // 11: Agency.agency_timezone:type_name -> Timezone + 66, // 12: Agency.agency_lang:type_name -> Language + 67, // 13: Agency.agency_phone:type_name -> Phone + 61, // 14: Agency.agency_fare_url:type_name -> Url + 62, // 15: Agency.agency_email:type_name -> Email + 54, // 16: Stop.id:type_name -> DatabaseEntity + 58, // 17: Stop.stop_id:type_name -> Key + 69, // 18: Stop.stop_code:type_name -> String + 69, // 19: Stop.stop_name:type_name -> String + 69, // 20: Stop.tts_stop_name:type_name -> String + 69, // 21: Stop.stop_desc:type_name -> String + 68, // 22: Stop.stop_lat:type_name -> Float + 68, // 23: Stop.stop_lon:type_name -> Float + 69, // 24: Stop.zone_id:type_name -> String + 61, // 25: Stop.stop_url:type_name -> Url + 76, // 26: Stop.location_type:type_name -> StopLocationType + 60, // 27: Stop.parent_station:type_name -> Reference + 59, // 28: Stop.stop_timezone:type_name -> Timezone + 72, // 29: Stop.wheelchair_boarding:type_name -> WheelchairAccess + 60, // 30: Stop.level_id:type_name -> Reference + 69, // 31: Stop.platform_code:type_name -> String + 54, // 32: Route.id:type_name -> DatabaseEntity + 58, // 33: Route.route_id:type_name -> Key + 60, // 34: Route.agency_id:type_name -> Reference + 69, // 35: Route.route_short_name:type_name -> String + 69, // 36: Route.route_long_name:type_name -> String + 69, // 37: Route.route_desc:type_name -> String + 77, // 38: Route.route_type:type_name -> RouteType + 61, // 39: Route.route_url:type_name -> Url + 63, // 40: Route.route_color:type_name -> Color + 63, // 41: Route.route_text_color:type_name -> Color + 70, // 42: Route.route_sort_order:type_name -> Int + 75, // 43: Route.continuous_pickup:type_name -> PickupAccess + 75, // 44: Route.continuous_drop_off:type_name -> PickupAccess + 69, // 45: Route.network_id:type_name -> String + 54, // 46: Trip.id:type_name -> DatabaseEntity + 60, // 47: Trip.route_id:type_name -> Reference + 60, // 48: Trip.service_id:type_name -> Reference + 58, // 49: Trip.trip_id:type_name -> Key + 69, // 50: Trip.trip_headsign:type_name -> String + 69, // 51: Trip.trip_short_name:type_name -> String + 78, // 52: Trip.direction_id:type_name -> TripDirection + 69, // 53: Trip.block_id:type_name -> String + 60, // 54: Trip.shape_id:type_name -> Reference + 72, // 55: Trip.wheelchair_accessible:type_name -> WheelchairAccess + 73, // 56: Trip.bikes_allowed:type_name -> BikeAccess + 54, // 57: StopTime.id:type_name -> DatabaseEntity + 60, // 58: StopTime.trip_id:type_name -> Reference + 57, // 59: StopTime.arrival_time:type_name -> Seconds + 57, // 60: StopTime.departure_time:type_name -> Seconds + 60, // 61: StopTime.stop_id:type_name -> Reference + 70, // 62: StopTime.stop_sequence:type_name -> Int + 69, // 63: StopTime.stop_headsign:type_name -> String + 75, // 64: StopTime.continuous_pickup:type_name -> PickupAccess + 75, // 65: StopTime.continuous_drop_off:type_name -> PickupAccess + 68, // 66: StopTime.shape_dist_traveled:type_name -> Float + 79, // 67: StopTime.timepoint:type_name -> StopTimepoint + 60, // 68: StopTime.location_id:type_name -> Reference + 60, // 69: StopTime.location_group_id:type_name -> Reference + 57, // 70: StopTime.start_pickup_drop_off_window:type_name -> Seconds + 57, // 71: StopTime.end_pickup_drop_off_window:type_name -> Seconds + 75, // 72: StopTime.pickup_type:type_name -> PickupAccess + 75, // 73: StopTime.drop_off_type:type_name -> PickupAccess + 60, // 74: StopTime.pickup_booking_rule_id:type_name -> Reference + 60, // 75: StopTime.drop_off_booking_rule_id:type_name -> Reference + 54, // 76: Calendar.id:type_name -> DatabaseEntity + 58, // 77: Calendar.service_id:type_name -> Key + 55, // 78: Calendar.start_date:type_name -> Date + 55, // 79: Calendar.end_date:type_name -> Date + 71, // 80: Calendar.monday:type_name -> Bool + 71, // 81: Calendar.tuesday:type_name -> Bool + 71, // 82: Calendar.wednesday:type_name -> Bool + 71, // 83: Calendar.thursday:type_name -> Bool + 71, // 84: Calendar.friday:type_name -> Bool + 71, // 85: Calendar.saturday:type_name -> Bool + 71, // 86: Calendar.sunday:type_name -> Bool + 54, // 87: CalendarDate.id:type_name -> DatabaseEntity + 60, // 88: CalendarDate.service_id:type_name -> Reference + 55, // 89: CalendarDate.date:type_name -> Date + 80, // 90: CalendarDate.exception_type:type_name -> CalendarExceptionType + 54, // 91: FareAttribute.id:type_name -> DatabaseEntity + 58, // 92: FareAttribute.fare_id:type_name -> Key + 64, // 93: FareAttribute.price:type_name -> Money + 65, // 94: FareAttribute.currency_type:type_name -> Currency + 90, // 95: FareAttribute.payment_method:type_name -> PaymentMethod + 89, // 96: FareAttribute.transfers:type_name -> FareAttributeTransferType + 60, // 97: FareAttribute.agency_id:type_name -> Reference + 70, // 98: FareAttribute.transfer_duration:type_name -> Int + 54, // 99: FareRule.id:type_name -> DatabaseEntity + 58, // 100: FareRule.fare_id:type_name -> Key + 60, // 101: FareRule.route_id:type_name -> Reference + 60, // 102: FareRule.origin_id:type_name -> Reference + 60, // 103: FareRule.destination_id:type_name -> Reference + 60, // 104: FareRule.contains_id:type_name -> Reference + 54, // 105: Timeframe.id:type_name -> DatabaseEntity + 58, // 106: Timeframe.timeframe_group_id:type_name -> Key + 57, // 107: Timeframe.start_time:type_name -> Seconds + 57, // 108: Timeframe.end_time:type_name -> Seconds + 60, // 109: Timeframe.service_id:type_name -> Reference + 54, // 110: FareMedia.id:type_name -> DatabaseEntity + 58, // 111: FareMedia.fare_media_id:type_name -> Key + 69, // 112: FareMedia.fare_media_name:type_name -> String + 86, // 113: FareMedia.fare_media_type:type_name -> FareMediaType + 54, // 114: FareProduct.id:type_name -> DatabaseEntity + 58, // 115: FareProduct.fare_product_id:type_name -> Key + 69, // 116: FareProduct.fare_product_name:type_name -> String + 60, // 117: FareProduct.fare_media_id:type_name -> Reference + 64, // 118: FareProduct.amount:type_name -> Money + 65, // 119: FareProduct.currency:type_name -> Currency + 54, // 120: FareLegRule.id:type_name -> DatabaseEntity + 58, // 121: FareLegRule.leg_group_id:type_name -> Key + 60, // 122: FareLegRule.network_id:type_name -> Reference + 60, // 123: FareLegRule.from_area_id:type_name -> Reference + 60, // 124: FareLegRule.to_area_id:type_name -> Reference + 60, // 125: FareLegRule.from_timeframe_group_id:type_name -> Reference + 60, // 126: FareLegRule.to_timeframe_group_id:type_name -> Reference + 60, // 127: FareLegRule.fare_product_id:type_name -> Reference + 70, // 128: FareLegRule.rule_proirity:type_name -> Int + 54, // 129: FareTransferRule.id:type_name -> DatabaseEntity + 60, // 130: FareTransferRule.from_leg_group_id:type_name -> Reference + 60, // 131: FareTransferRule.to_leg_group_id:type_name -> Reference + 70, // 132: FareTransferRule.transfer_count:type_name -> Int + 88, // 133: FareTransferRule.duration_limit_type:type_name -> DurationLimitType + 87, // 134: FareTransferRule.fare_transfer_type:type_name -> FareTransferType + 60, // 135: FareTransferRule.fare_product_id:type_name -> Reference + 54, // 136: Area.id:type_name -> DatabaseEntity + 58, // 137: Area.area_id:type_name -> Key + 69, // 138: Area.area_name:type_name -> String + 54, // 139: StopArea.id:type_name -> DatabaseEntity + 60, // 140: StopArea.area_id:type_name -> Reference + 60, // 141: StopArea.stop_id:type_name -> Reference + 54, // 142: Network.id:type_name -> DatabaseEntity + 58, // 143: Network.network_id:type_name -> Key + 69, // 144: Network.network_name:type_name -> String + 54, // 145: RouteNetwork.id:type_name -> DatabaseEntity + 60, // 146: RouteNetwork.network_id:type_name -> Reference + 60, // 147: RouteNetwork.route_id:type_name -> Reference + 54, // 148: Frequency.id:type_name -> DatabaseEntity + 60, // 149: Frequency.trip_id:type_name -> Reference + 57, // 150: Frequency.start_time:type_name -> Seconds + 57, // 151: Frequency.end_time:type_name -> Seconds + 70, // 152: Frequency.headway_secs:type_name -> Int + 81, // 153: Frequency.exact_time:type_name -> FrequencyExactTime + 54, // 154: Transfer.id:type_name -> DatabaseEntity + 60, // 155: Transfer.from_stop_id:type_name -> Reference + 60, // 156: Transfer.to_stop_id:type_name -> Reference + 60, // 157: Transfer.from_route_id:type_name -> Reference + 60, // 158: Transfer.to_route_id:type_name -> Reference + 60, // 159: Transfer.from_trip_id:type_name -> Reference + 60, // 160: Transfer.to_trip_id:type_name -> Reference + 82, // 161: Transfer.transfer_type:type_name -> TransferType + 70, // 162: Transfer.min_transfer_time:type_name -> Int + 54, // 163: Pathway.id:type_name -> DatabaseEntity + 58, // 164: Pathway.pathway_id:type_name -> Key + 60, // 165: Pathway.from_stop_id:type_name -> Reference + 60, // 166: Pathway.to_stop_id:type_name -> Reference + 84, // 167: Pathway.pathway_mode:type_name -> PathwayMode + 83, // 168: Pathway.is_bidirectional:type_name -> PathwayDirectionality + 68, // 169: Pathway.length:type_name -> Float + 70, // 170: Pathway.traversal_time:type_name -> Int + 70, // 171: Pathway.stair_count:type_name -> Int + 68, // 172: Pathway.max_slope:type_name -> Float + 68, // 173: Pathway.min_width:type_name -> Float + 69, // 174: Pathway.signposted_as:type_name -> String + 69, // 175: Pathway.reverse_signposted_as:type_name -> String + 54, // 176: Level.id:type_name -> DatabaseEntity + 58, // 177: Level.level_id:type_name -> Key + 68, // 178: Level.level_index:type_name -> Float + 69, // 179: Level.level_name:type_name -> String + 54, // 180: LocationGroup.id:type_name -> DatabaseEntity + 58, // 181: LocationGroup.location_group_id:type_name -> Key + 69, // 182: LocationGroup.location_group_name:type_name -> String + 54, // 183: LocationGroupStop.id:type_name -> DatabaseEntity + 60, // 184: LocationGroupStop.location_group_id:type_name -> Reference + 60, // 185: LocationGroupStop.stop_id:type_name -> Reference + 54, // 186: BookingRule.id:type_name -> DatabaseEntity + 58, // 187: BookingRule.booking_rule_id:type_name -> Key + 85, // 188: BookingRule.booking_type:type_name -> BookingRuleType + 70, // 189: BookingRule.prior_notice_duration_min:type_name -> Int + 70, // 190: BookingRule.prior_notice_duration_max:type_name -> Int + 70, // 191: BookingRule.prior_notice_last_day:type_name -> Int + 57, // 192: BookingRule.prior_notice_last_time:type_name -> Seconds + 70, // 193: BookingRule.prior_notice_start_day:type_name -> Int + 57, // 194: BookingRule.prior_notice_start_time:type_name -> Seconds + 60, // 195: BookingRule.prior_notice_service_id:type_name -> Reference + 69, // 196: BookingRule.message:type_name -> String + 69, // 197: BookingRule.pickup_message:type_name -> String + 69, // 198: BookingRule.drop_off_message:type_name -> String + 69, // 199: BookingRule.phone_number:type_name -> String + 61, // 200: BookingRule.info_url:type_name -> Url + 61, // 201: BookingRule.booking_url:type_name -> Url + 54, // 202: Translation.id:type_name -> DatabaseEntity + 69, // 203: Translation.table_name:type_name -> String + 69, // 204: Translation.field_name:type_name -> String + 66, // 205: Translation.language:type_name -> Language + 69, // 206: Translation.translation:type_name -> String + 69, // 207: Translation.record_id:type_name -> String + 69, // 208: Translation.record_sub_id:type_name -> String + 69, // 209: Translation.field_value:type_name -> String + 54, // 210: FeedInfo.id:type_name -> DatabaseEntity + 69, // 211: FeedInfo.feed_publisher_name:type_name -> String + 61, // 212: FeedInfo.feed_publisher_url:type_name -> Url + 66, // 213: FeedInfo.feed_lang:type_name -> Language + 66, // 214: FeedInfo.default_lang:type_name -> Language + 55, // 215: FeedInfo.feed_start_date:type_name -> Date + 55, // 216: FeedInfo.feed_end_date:type_name -> Date + 62, // 217: FeedInfo.feed_contact_email:type_name -> Email + 61, // 218: FeedInfo.feed_contact_url:type_name -> Url + 54, // 219: Attribution.id:type_name -> DatabaseEntity + 58, // 220: Attribution.attribution_id:type_name -> Key + 60, // 221: Attribution.agency_id:type_name -> Reference + 60, // 222: Attribution.route_id:type_name -> Reference + 60, // 223: Attribution.trip_id:type_name -> Reference + 69, // 224: Attribution.organization_name:type_name -> String + 91, // 225: Attribution.is_producer:type_name -> AttributionRole + 91, // 226: Attribution.is_operator:type_name -> AttributionRole + 91, // 227: Attribution.is_authority:type_name -> AttributionRole + 61, // 228: Attribution.attribution_url:type_name -> Url + 62, // 229: Attribution.attribution_email:type_name -> Email + 67, // 230: Attribution.attribution_phone:type_name -> Phone + 58, // 231: ShapePoint.shape_id:type_name -> Key + 54, // 232: Service.id:type_name -> DatabaseEntity + 58, // 233: Service.service_id:type_name -> Key + 55, // 234: Service.start_date:type_name -> Date + 55, // 235: Service.end_date:type_name -> Date + 55, // 236: Service.added:type_name -> Date + 55, // 237: Service.removed:type_name -> Date + 71, // 238: Service.monday:type_name -> Bool + 71, // 239: Service.tuesday:type_name -> Bool + 71, // 240: Service.wednesday:type_name -> Bool + 71, // 241: Service.thursday:type_name -> Bool + 71, // 242: Service.friday:type_name -> Bool + 71, // 243: Service.saturday:type_name -> Bool + 71, // 244: Service.sunday:type_name -> Bool + 54, // 245: Shape.id:type_name -> DatabaseEntity + 58, // 246: Shape.shape_id:type_name -> Key + 53, // 247: Shape.geometry:type_name -> LineString + 0, // 248: WheelchairAccess.val:type_name -> WheelchairAccessEnum + 1, // 249: BikeAccess.val:type_name -> BikeAccessEnum + 2, // 250: BoardAccess.val:type_name -> BoardAccessEnum + 3, // 251: PickupAccess.val:type_name -> PickupAccessEnum + 4, // 252: StopLocationType.val:type_name -> StopLocationTypeEnum + 5, // 253: RouteType.val:type_name -> RouteTypeEnum + 6, // 254: TripDirection.val:type_name -> TripDirectionEnum + 7, // 255: StopTimepoint.val:type_name -> StopTimepointEnum + 8, // 256: CalendarExceptionType.val:type_name -> CalendarExceptionTypeEnum + 9, // 257: FrequencyExactTime.val:type_name -> FrequencyExactTimeEnum + 10, // 258: TransferType.val:type_name -> TransferTypeEnum + 11, // 259: PathwayDirectionality.val:type_name -> PathwayDirectionalityEnum + 12, // 260: PathwayMode.val:type_name -> PathwayModeEnum + 13, // 261: BookingRuleType.val:type_name -> BookingRuleTypeEnum + 14, // 262: FareMediaType.val:type_name -> FareMediaTypeEnum + 15, // 263: FareTransferType.val:type_name -> FareTransferTypeEnum + 16, // 264: DurationLimitType.val:type_name -> DurationLimitTypeEnum + 17, // 265: FareAttributeTransferType.val:type_name -> FareAttributeTransferTypeEnum + 18, // 266: PaymentMethod.val:type_name -> PaymentMethodEnum + 19, // 267: AttributionRole.val:type_name -> AttributionRoleEnum + 268, // [268:268] is the sub-list for method output_type + 268, // [268:268] is the sub-list for method input_type + 268, // [268:268] is the sub-list for extension type_name + 268, // [268:268] is the sub-list for extension extendee + 0, // [0:268] is the sub-list for field type_name +} + +func init() { file_gtfs_proto_init() } +func file_gtfs_proto_init() { + if File_gtfs_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_gtfs_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*FeedEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*Agency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*Stop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Route); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*Trip); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*StopTime); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*Calendar); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*CalendarDate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*FareAttribute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*FareRule); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*Timeframe); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*FareMedia); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*FareProduct); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*FareLegRule); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*FareTransferRule); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*Area); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*StopArea); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*Network); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*RouteNetwork); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*Frequency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*Transfer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*Pathway); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*Level); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*LocationGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[24].Exporter = func(v any, i int) any { + switch v := v.(*LocationGroupStop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[25].Exporter = func(v any, i int) any { + switch v := v.(*BookingRule); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[26].Exporter = func(v any, i int) any { + switch v := v.(*Translation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[27].Exporter = func(v any, i int) any { + switch v := v.(*FeedInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*Attribution); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*ShapePoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*Service); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*Shape); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[32].Exporter = func(v any, i int) any { + switch v := v.(*Point); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[33].Exporter = func(v any, i int) any { + switch v := v.(*LineString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[34].Exporter = func(v any, i int) any { + switch v := v.(*DatabaseEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[35].Exporter = func(v any, i int) any { + switch v := v.(*Date); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[36].Exporter = func(v any, i int) any { + switch v := v.(*Timestamp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*Seconds); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[38].Exporter = func(v any, i int) any { + switch v := v.(*Key); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[39].Exporter = func(v any, i int) any { + switch v := v.(*Timezone); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[40].Exporter = func(v any, i int) any { + switch v := v.(*Reference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[41].Exporter = func(v any, i int) any { + switch v := v.(*Url); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[42].Exporter = func(v any, i int) any { + switch v := v.(*Email); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[43].Exporter = func(v any, i int) any { + switch v := v.(*Color); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[44].Exporter = func(v any, i int) any { + switch v := v.(*Money); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[45].Exporter = func(v any, i int) any { + switch v := v.(*Currency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[46].Exporter = func(v any, i int) any { + switch v := v.(*Language); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[47].Exporter = func(v any, i int) any { + switch v := v.(*Phone); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[48].Exporter = func(v any, i int) any { + switch v := v.(*Float); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[49].Exporter = func(v any, i int) any { + switch v := v.(*String); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[50].Exporter = func(v any, i int) any { + switch v := v.(*Int); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[51].Exporter = func(v any, i int) any { + switch v := v.(*Bool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[52].Exporter = func(v any, i int) any { + switch v := v.(*WheelchairAccess); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[53].Exporter = func(v any, i int) any { + switch v := v.(*BikeAccess); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[54].Exporter = func(v any, i int) any { + switch v := v.(*BoardAccess); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[55].Exporter = func(v any, i int) any { + switch v := v.(*PickupAccess); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[56].Exporter = func(v any, i int) any { + switch v := v.(*StopLocationType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[57].Exporter = func(v any, i int) any { + switch v := v.(*RouteType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[58].Exporter = func(v any, i int) any { + switch v := v.(*TripDirection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[59].Exporter = func(v any, i int) any { + switch v := v.(*StopTimepoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[60].Exporter = func(v any, i int) any { + switch v := v.(*CalendarExceptionType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[61].Exporter = func(v any, i int) any { + switch v := v.(*FrequencyExactTime); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[62].Exporter = func(v any, i int) any { + switch v := v.(*TransferType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[63].Exporter = func(v any, i int) any { + switch v := v.(*PathwayDirectionality); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[64].Exporter = func(v any, i int) any { + switch v := v.(*PathwayMode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[65].Exporter = func(v any, i int) any { + switch v := v.(*BookingRuleType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[66].Exporter = func(v any, i int) any { + switch v := v.(*FareMediaType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[67].Exporter = func(v any, i int) any { + switch v := v.(*FareTransferType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[68].Exporter = func(v any, i int) any { + switch v := v.(*DurationLimitType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[69].Exporter = func(v any, i int) any { + switch v := v.(*FareAttributeTransferType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[70].Exporter = func(v any, i int) any { + switch v := v.(*PaymentMethod); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gtfs_proto_msgTypes[71].Exporter = func(v any, i int) any { + switch v := v.(*AttributionRole); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_gtfs_proto_rawDesc, + NumEnums: 20, + NumMessages: 72, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_gtfs_proto_goTypes, + DependencyIndexes: file_gtfs_proto_depIdxs, + EnumInfos: file_gtfs_proto_enumTypes, + MessageInfos: file_gtfs_proto_msgTypes, + }.Build() + File_gtfs_proto = out.File + file_gtfs_proto_rawDesc = nil + file_gtfs_proto_goTypes = nil + file_gtfs_proto_depIdxs = nil +} diff --git a/tlpb/pb/pb.go b/tlpb/pb/pb.go new file mode 100644 index 00000000..b3e0f17a --- /dev/null +++ b/tlpb/pb/pb.go @@ -0,0 +1,59 @@ +//go:generate protoc --go_out=. --go_opt=paths=source_relative --go_opt=Mgtfs.proto=tlpb/pb -I .. ../gtfs.proto + +package pb + +import "github.com/interline-io/transitland-lib/tl/tt" + +func (t *String) FromCsv(v string) error { + t.Val = v + return nil +} + +func (t *Int) FromCsv(v string) error { + t.Val = 123 + return nil +} + +func (t *Float) FromCsv(v string) error { + t.Val = 123.0 + return nil +} + +func (t *Url) FromCsv(v string) error { + t.Val = v + return nil +} + +func (t *Key) FromCsv(v string) error { + t.Val = v + return nil +} + +func (t *Reference) FromCsv(v string) error { + t.Val = v + return nil +} + +func (t *Seconds) FromCsv(v string) error { + wt, err := tt.NewWideTime(v) + if err != nil { + return err + } + t.Val = int64(wt.Seconds) + return nil +} + +func (t *StopLocationType) FromCsv(v string) error { + t.Val = 123 + return nil +} + +func (t *WheelchairAccess) FromCsv(v string) error { + t.Val = 123 + return nil +} + +func (t *StopTimepoint) FromCsv(v string) error { + t.Val = 123 + return nil +} diff --git a/tlpb/tlpb.go b/tlpb/tlpb.go deleted file mode 100644 index 536aa03b..00000000 --- a/tlpb/tlpb.go +++ /dev/null @@ -1,3 +0,0 @@ -//go:generate protoc --go_out=. --go_opt=paths=source_relative --go_opt=Mgtfs.proto=tlpb/tlpb gtfs.proto - -package tlpb From 7c9cfe6f3e69782da033130fd4ba19481e8eef5d Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Tue, 8 Oct 2024 00:55:57 -0700 Subject: [PATCH 06/14] Fix --- go.mod | 5 +- go.sum | 6 ++ tl/tt/convert.go | 33 +++++- tlpb/codegen_test.go | 2 +- tlpb/gtfs/gtfs.go | 70 ++++++------- tlpb/gtfs/option.go | 238 ------------------------------------------- 6 files changed, 76 insertions(+), 278 deletions(-) delete mode 100644 tlpb/gtfs/option.go diff --git a/go.mod b/go.mod index f8aa40d3..c66e79b4 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/twpayne/go-geom v1.4.1 github.com/twpayne/go-polyline v1.1.1 - google.golang.org/protobuf v1.33.0 + google.golang.org/protobuf v1.34.2 ) require ( @@ -47,6 +47,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/sso v1.11.7 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.16.6 // indirect github.com/aws/smithy-go v1.11.2 // indirect + github.com/bufbuild/protocompile v0.14.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect @@ -67,7 +68,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect golang.org/x/crypto v0.24.0 // indirect golang.org/x/net v0.26.0 // indirect - golang.org/x/sync v0.7.0 // indirect + golang.org/x/sync v0.8.0 // indirect golang.org/x/sys v0.26.0 // indirect golang.org/x/text v0.16.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 78e39325..a747fae6 100644 --- a/go.sum +++ b/go.sum @@ -54,6 +54,8 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.16.6 h1:aYToU0/iazkMY67/BYLt3r6/LT/m github.com/aws/aws-sdk-go-v2/service/sts v1.16.6/go.mod h1:rP1rEOKAGZoXp4iGDxSXFvODAtXpm34Egf0lL0eshaQ= github.com/aws/smithy-go v1.11.2 h1:eG/N+CcUMAvsdffgMvjMKwfyDzIkjM6pfxMJ8Mzc6mE= github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -196,6 +198,8 @@ golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -216,6 +220,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IV golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/tl/tt/convert.go b/tl/tt/convert.go index 06b2451f..8fb51243 100644 --- a/tl/tt/convert.go +++ b/tl/tt/convert.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "math" + "reflect" "strconv" "time" ) @@ -137,8 +138,8 @@ func TryCsv(val any) string { a, _ := ToCsv(val) return a } - func convertAssign(dest any, src any) error { + // fmt.Printf("convertAssign %T '%v' into %T\n", src, src, dest) if src == nil { return nil } @@ -191,6 +192,21 @@ func convertAssign(dest any, src any) error { default: err = cannotConvert() } + case *int32: + switch s := src.(type) { + case string: + *d, err = parseInt32(s) + case []byte: + *d, err = parseInt32(string(s)) + case int: + *d = int32(s) + case int64: + *d = int32(s) + case float64: + *d = int32(s) + default: + err = cannotConvert() + } case *float64: switch s := src.(type) { case string: @@ -233,11 +249,24 @@ func convertAssign(dest any, src any) error { err = cannotConvert() } default: - err = cannotConvert() + // Handle type aliases + k := reflect.ValueOf(dest).Elem() + if k.CanInt() { + xi := int64(0) + err = convertAssign(&xi, src) + k.SetInt(xi) + } else { + err = cannotConvert() + } } return err } +func parseInt32(s string) (int32, error) { + d, err := strconv.ParseInt(s, 10, 32) + return int32(d), err +} + func cannotConvert() error { return errors.New("cannot convert") } diff --git a/tlpb/codegen_test.go b/tlpb/codegen_test.go index c3764055..552e4db4 100644 --- a/tlpb/codegen_test.go +++ b/tlpb/codegen_test.go @@ -41,7 +41,7 @@ func TestCodegen(t *testing.T) { fields := msg.Fields() if fields.Len() == 1 && fields.Get(0).Name() == "val" { field := fields.Get(0) - outf.WriteString(fmt.Sprintf("type %s struct { Option[%s] }\n\n", msg.Name(), mapKind(field))) + outf.WriteString(fmt.Sprintf("type %s struct { tt.Option[%s] }\n\n", msg.Name(), mapKind(field))) continue } diff --git a/tlpb/gtfs/gtfs.go b/tlpb/gtfs/gtfs.go index e413e60e..15257792 100644 --- a/tlpb/gtfs/gtfs.go +++ b/tlpb/gtfs/gtfs.go @@ -411,78 +411,78 @@ type Date struct { Day int32 } -type Timestamp struct { Option[int64] } +type Timestamp struct { tt.Option[int64] } -type Seconds struct { Option[int64] } +type Seconds struct { tt.Option[int64] } -type Key struct { Option[string] } +type Key struct { tt.Option[string] } -type Timezone struct { Option[string] } +type Timezone struct { tt.Option[string] } -type Reference struct { Option[string] } +type Reference struct { tt.Option[string] } -type Url struct { Option[string] } +type Url struct { tt.Option[string] } -type Email struct { Option[string] } +type Email struct { tt.Option[string] } -type Color struct { Option[string] } +type Color struct { tt.Option[string] } type Money struct { Units int64 Nanos int64 } -type Currency struct { Option[string] } +type Currency struct { tt.Option[string] } -type Language struct { Option[string] } +type Language struct { tt.Option[string] } -type Phone struct { Option[string] } +type Phone struct { tt.Option[string] } -type Float struct { Option[float64] } +type Float struct { tt.Option[float64] } -type String struct { Option[string] } +type String struct { tt.Option[string] } -type Int struct { Option[int64] } +type Int struct { tt.Option[int64] } -type Bool struct { Option[bool] } +type Bool struct { tt.Option[bool] } -type WheelchairAccess struct { Option[WheelchairAccessEnum] } +type WheelchairAccess struct { tt.Option[WheelchairAccessEnum] } -type BikeAccess struct { Option[BikeAccessEnum] } +type BikeAccess struct { tt.Option[BikeAccessEnum] } -type BoardAccess struct { Option[BoardAccessEnum] } +type BoardAccess struct { tt.Option[BoardAccessEnum] } -type PickupAccess struct { Option[PickupAccessEnum] } +type PickupAccess struct { tt.Option[PickupAccessEnum] } -type StopLocationType struct { Option[StopLocationTypeEnum] } +type StopLocationType struct { tt.Option[StopLocationTypeEnum] } -type RouteType struct { Option[RouteTypeEnum] } +type RouteType struct { tt.Option[RouteTypeEnum] } -type TripDirection struct { Option[TripDirectionEnum] } +type TripDirection struct { tt.Option[TripDirectionEnum] } -type StopTimepoint struct { Option[StopTimepointEnum] } +type StopTimepoint struct { tt.Option[StopTimepointEnum] } -type CalendarExceptionType struct { Option[CalendarExceptionTypeEnum] } +type CalendarExceptionType struct { tt.Option[CalendarExceptionTypeEnum] } -type FrequencyExactTime struct { Option[FrequencyExactTimeEnum] } +type FrequencyExactTime struct { tt.Option[FrequencyExactTimeEnum] } -type TransferType struct { Option[TransferTypeEnum] } +type TransferType struct { tt.Option[TransferTypeEnum] } -type PathwayDirectionality struct { Option[PathwayDirectionalityEnum] } +type PathwayDirectionality struct { tt.Option[PathwayDirectionalityEnum] } -type PathwayMode struct { Option[PathwayModeEnum] } +type PathwayMode struct { tt.Option[PathwayModeEnum] } -type BookingRuleType struct { Option[BookingRuleTypeEnum] } +type BookingRuleType struct { tt.Option[BookingRuleTypeEnum] } -type FareMediaType struct { Option[FareMediaTypeEnum] } +type FareMediaType struct { tt.Option[FareMediaTypeEnum] } -type FareTransferType struct { Option[FareTransferTypeEnum] } +type FareTransferType struct { tt.Option[FareTransferTypeEnum] } -type DurationLimitType struct { Option[DurationLimitTypeEnum] } +type DurationLimitType struct { tt.Option[DurationLimitTypeEnum] } -type FareAttributeTransferType struct { Option[FareAttributeTransferTypeEnum] } +type FareAttributeTransferType struct { tt.Option[FareAttributeTransferTypeEnum] } -type PaymentMethod struct { Option[PaymentMethodEnum] } +type PaymentMethod struct { tt.Option[PaymentMethodEnum] } -type AttributionRole struct { Option[AttributionRoleEnum] } +type AttributionRole struct { tt.Option[AttributionRoleEnum] } diff --git a/tlpb/gtfs/option.go b/tlpb/gtfs/option.go deleted file mode 100644 index fe0d63af..00000000 --- a/tlpb/gtfs/option.go +++ /dev/null @@ -1,238 +0,0 @@ -package gtfs - -import ( - "database/sql/driver" - "encoding/json" - "errors" - "fmt" - "reflect" - "strconv" - "time" - - "github.com/interline-io/transitland-lib/tl/tt" -) - -func (r *EnumValue) FromCsv(v string) error { - a, err := parseInt32(v) - *r = EnumValue(a) - return err -} - -func (r *Seconds) FromCsv(v string) error { - wt, err := tt.NewWideTime(v) - r.Val = int64(wt.Seconds) - r.Valid = (err == nil) - return nil -} - -type Option[T any] struct { - Val T - Valid bool -} - -func (r *Option[T]) Present() bool { - return r.Valid -} - -func (r *Option[T]) FromCsv(v string) error { - err := convertAssign(&r.Val, v) - if err != nil { - // fmt.Printf("\tfailed string '%s' into %T: %s\n", v, r.Val, err.Error()) - return err - } - // fmt.Printf("\t\tgot: %T %v\n", r.Val, r.Val) - r.Valid = (err == nil) - return nil -} - -func (r Option[T]) String() string { - if !r.Valid { - return "" - } - out := "" - if err := convertAssign(&out, r.Val); err != nil { - b, _ := r.MarshalJSON() - return string(b) - } - return out -} - -func (r *Option[T]) Error() error { - return nil -} - -func (r *Option[T]) Scan(src interface{}) error { - err := convertAssign(&r.Val, src) - r.Valid = (src != nil && err == nil) - return err -} - -func (r Option[T]) Value() (driver.Value, error) { - if !r.Valid { - return nil, nil - } - return r.Val, nil -} - -func (r *Option[T]) UnmarshalJSON(v []byte) error { - err := json.Unmarshal(v, &r.Val) - r.Valid = (err == nil) - return err -} - -func (r Option[T]) MarshalJSON() ([]byte, error) { - if !r.Valid { - return []byte("null"), nil - } - return json.Marshal(r.Val) -} - -type canFromCsv interface { - FromCsv(string) error -} - -func convertAssign(dest any, src any) error { - // fmt.Printf("convertAssign %T '%v' into %T\n", src, src, dest) - if src == nil { - return nil - } - var err error - switch d := dest.(type) { - case *string: - switch s := src.(type) { - case string: - *d = s - case []byte: - *d = string(s) - case int: - *d = strconv.Itoa(s) - case int64: - *d = strconv.Itoa(int(s)) - case float64: - *d = fmt.Sprintf("%0.5f", s) - case time.Time: - *d = s.Format(time.RFC3339) - default: - err = cannotConvert() - } - case *int: - switch s := src.(type) { - case string: - *d, err = strconv.Atoi(s) - case []byte: - *d, err = strconv.Atoi(string(s)) - case int: - *d = int(s) - case int64: - *d = int(s) - case float64: - *d = int(s) - default: - err = cannotConvert() - } - case *int64: - switch s := src.(type) { - case string: - *d, err = strconv.ParseInt(s, 10, 64) - case []byte: - *d, err = strconv.ParseInt(string(s), 10, 64) - case int: - *d = int64(s) - case int64: - *d = int64(s) - case float64: - *d = int64(s) - default: - err = cannotConvert() - } - case *int32: - switch s := src.(type) { - case string: - *d, err = parseInt32(s) - case []byte: - *d, err = parseInt32(string(s)) - case int: - *d = int32(s) - case int64: - *d = int32(s) - case float64: - *d = int32(s) - default: - err = cannotConvert() - } - case *float64: - switch s := src.(type) { - case string: - *d, err = strconv.ParseFloat(s, 64) - case []byte: - *d, err = strconv.ParseFloat(string(s), 64) - case int: - *d = float64(s) - case int64: - *d = float64(s) - case float64: - *d = float64(s) - default: - err = cannotConvert() - } - case *bool: - switch s := src.(type) { - case string: - if s == "true" { - *d = true - } else if s == "false" { - *d = false - } else { - err = cannotConvert() - } - case bool: - *d = s - default: - err = cannotConvert() - } - case *time.Time: - switch s := src.(type) { - case []byte: - *d, err = parseTime(string(s)) - case string: - *d, err = parseTime(s) - case time.Time: - *d = s - default: - err = cannotConvert() - } - default: - // Handle type aliases - k := reflect.ValueOf(dest).Elem() - if k.CanInt() { - xi := int64(0) - err = convertAssign(&xi, src) - k.SetInt(xi) - } else { - err = cannotConvert() - } - } - return err -} - -func parseInt32(s string) (int32, error) { - d, err := strconv.ParseInt(s, 10, 64) - return int32(d), err -} - -func cannotConvert() error { - return errors.New("cannot convert") -} - -func parseTime(d string) (time.Time, error) { - var err error - var s time.Time - if len(d) == 8 { - s, err = time.Parse("20060102", d) - } else if len(d) == 10 { - s, err = time.Parse("2006-01-02", d) - } else { - s, err = time.Parse(time.RFC3339, d) - } - return s, err -} From 20c5bb65bf3fca78a0dc89039496903d8062b943 Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Tue, 8 Oct 2024 01:05:13 -0700 Subject: [PATCH 07/14] Fix --- tlpb/codegen_test.go | 5 +- tlpb/gtfs/gtfs.go | 459 ++++++++++++++++++++++--------------------- 2 files changed, 242 insertions(+), 222 deletions(-) diff --git a/tlpb/codegen_test.go b/tlpb/codegen_test.go index 552e4db4..d3691d29 100644 --- a/tlpb/codegen_test.go +++ b/tlpb/codegen_test.go @@ -25,8 +25,9 @@ func TestCodegen(t *testing.T) { } defer outf.Close() - outf.WriteString("package gtfs\n\n") - outf.WriteString("type EnumValue int32\n\n") + outf.WriteString(`package gtfs` + "\n\n") + outf.WriteString(`import ( "github.com/interline-io/transitland-lib/tl/tt" )` + "\n\n") + outf.WriteString(`type EnumValue int32` + "\n\n") for _, lf := range files { // fmt.Printf("file %#v\n", file) diff --git a/tlpb/gtfs/gtfs.go b/tlpb/gtfs/gtfs.go index 15257792..384dc31e 100644 --- a/tlpb/gtfs/gtfs.go +++ b/tlpb/gtfs/gtfs.go @@ -1,5 +1,9 @@ package gtfs +import ( + "github.com/interline-io/transitland-lib/tl/tt" +) + type EnumValue int32 type WheelchairAccessEnum int32 @@ -43,189 +47,189 @@ type PaymentMethodEnum int32 type AttributionRoleEnum int32 type FeedEntity struct { - Agency Agency - Stop Stop - Route Route - Trip Trip + Agency Agency + Stop Stop + Route Route + Trip Trip StopTime StopTime - Shape Shape - Service Service + Shape Shape + Service Service } type Agency struct { DatabaseEntity - AgencyID Key - AgencyName String - AgencyUrl Url + AgencyID Key + AgencyName String + AgencyUrl Url AgencyTimezone Timezone - AgencyLang Language - AgencyPhone Phone - AgencyFareUrl Url - AgencyEmail Email + AgencyLang Language + AgencyPhone Phone + AgencyFareUrl Url + AgencyEmail Email } type Stop struct { DatabaseEntity - StopID Key - StopCode String - StopName String - TtsStopName String - StopDesc String - StopLat Float - StopLon Float - ZoneID String - StopUrl Url - LocationType StopLocationType - ParentStation Reference - StopTimezone Timezone + StopID Key + StopCode String + StopName String + TtsStopName String + StopDesc String + StopLat Float + StopLon Float + ZoneID String + StopUrl Url + LocationType StopLocationType + ParentStation Reference + StopTimezone Timezone WheelchairBoarding WheelchairAccess - LevelID Reference - PlatformCode String + LevelID Reference + PlatformCode String } type Route struct { DatabaseEntity - RouteID Key - AgencyID Reference - RouteShortName String - RouteLongName String - RouteDesc String - RouteType RouteType - RouteUrl Url - RouteColor Color - RouteTextColor Color - RouteSortOrder Int - ContinuousPickup PickupAccess + RouteID Key + AgencyID Reference + RouteShortName String + RouteLongName String + RouteDesc String + RouteType RouteType + RouteUrl Url + RouteColor Color + RouteTextColor Color + RouteSortOrder Int + ContinuousPickup PickupAccess ContinuousDropOff PickupAccess - NetworkID String + NetworkID String } type Trip struct { DatabaseEntity - RouteID Reference - ServiceID Reference - TripID Key - TripHeadsign String - TripShortName String - DirectionID TripDirection - BlockID String - ShapeID Reference + RouteID Reference + ServiceID Reference + TripID Key + TripHeadsign String + TripShortName String + DirectionID TripDirection + BlockID String + ShapeID Reference WheelchairAccessible WheelchairAccess - BikesAllowed BikeAccess + BikesAllowed BikeAccess } type StopTime struct { DatabaseEntity - TripID Reference - ArrivalTime Seconds - DepartureTime Seconds - StopID Reference - StopSequence Int - StopHeadsign String - ContinuousPickup PickupAccess - ContinuousDropOff PickupAccess - ShapeDistTraveled Float - Timepoint StopTimepoint - LocationID Reference - LocationGroupID Reference + TripID Reference + ArrivalTime Seconds + DepartureTime Seconds + StopID Reference + StopSequence Int + StopHeadsign String + ContinuousPickup PickupAccess + ContinuousDropOff PickupAccess + ShapeDistTraveled Float + Timepoint StopTimepoint + LocationID Reference + LocationGroupID Reference StartPickupDropOffWindow Seconds - EndPickupDropOffWindow Seconds - PickupType PickupAccess - DropOffType PickupAccess - PickupBookingRuleID Reference - DropOffBookingRuleID Reference + EndPickupDropOffWindow Seconds + PickupType PickupAccess + DropOffType PickupAccess + PickupBookingRuleID Reference + DropOffBookingRuleID Reference } type Calendar struct { DatabaseEntity ServiceID Key StartDate Date - EndDate Date - Monday Bool - Tuesday Bool + EndDate Date + Monday Bool + Tuesday Bool Wednesday Bool - Thursday Bool - Friday Bool - Saturday Bool - Sunday Bool + Thursday Bool + Friday Bool + Saturday Bool + Sunday Bool } type CalendarDate struct { DatabaseEntity - ServiceID Reference - Date Date + ServiceID Reference + Date Date ExceptionType CalendarExceptionType } type FareAttribute struct { DatabaseEntity - FareID Key - Price Money - CurrencyType Currency - PaymentMethod PaymentMethod - Transfers FareAttributeTransferType - AgencyID Reference + FareID Key + Price Money + CurrencyType Currency + PaymentMethod PaymentMethod + Transfers FareAttributeTransferType + AgencyID Reference TransferDuration Int } type FareRule struct { DatabaseEntity - FareID Key - RouteID Reference - OriginID Reference + FareID Key + RouteID Reference + OriginID Reference DestinationID Reference - ContainsID Reference + ContainsID Reference } type Timeframe struct { DatabaseEntity TimeframeGroupID Key - StartTime Seconds - EndTime Seconds - ServiceID Reference + StartTime Seconds + EndTime Seconds + ServiceID Reference } type FareMedia struct { DatabaseEntity - FareMediaID Key + FareMediaID Key FareMediaName String FareMediaType FareMediaType } type FareProduct struct { DatabaseEntity - FareProductID Key + FareProductID Key FareProductName String - FareMediaID Reference - Amount Money - Currency Currency + FareMediaID Reference + Amount Money + Currency Currency } type FareLegRule struct { DatabaseEntity - LegGroupID Key - NetworkID Reference - FromAreaID Reference - ToAreaID Reference + LegGroupID Key + NetworkID Reference + FromAreaID Reference + ToAreaID Reference FromTimeframeGroupID Reference - ToTimeframeGroupID Reference - FareProductID Reference - RuleProirity Int + ToTimeframeGroupID Reference + FareProductID Reference + RuleProirity Int } type FareTransferRule struct { DatabaseEntity - FromLegGroupID Reference - ToLegGroupID Reference - TransferCount Int + FromLegGroupID Reference + ToLegGroupID Reference + TransferCount Int DurationLimitType DurationLimitType - FareTransferType FareTransferType - FareProductID Reference + FareTransferType FareTransferType + FareProductID Reference } type Area struct { DatabaseEntity - AreaID Key + AreaID Key AreaName String } @@ -237,134 +241,134 @@ type StopArea struct { type Network struct { DatabaseEntity - NetworkID Key + NetworkID Key NetworkName String } type RouteNetwork struct { DatabaseEntity NetworkID Reference - RouteID Reference + RouteID Reference } type Frequency struct { DatabaseEntity - TripID Reference - StartTime Seconds - EndTime Seconds + TripID Reference + StartTime Seconds + EndTime Seconds HeadwaySecs Int - ExactTime FrequencyExactTime + ExactTime FrequencyExactTime } type Transfer struct { DatabaseEntity - FromStopID Reference - ToStopID Reference - FromRouteID Reference - ToRouteID Reference - FromTripID Reference - ToTripID Reference - TransferType TransferType + FromStopID Reference + ToStopID Reference + FromRouteID Reference + ToRouteID Reference + FromTripID Reference + ToTripID Reference + TransferType TransferType MinTransferTime Int } type Pathway struct { DatabaseEntity - PathwayID Key - FromStopID Reference - ToStopID Reference - PathwayMode PathwayMode - IsBidirectional PathwayDirectionality - Length Float - TraversalTime Int - StairCount Int - MaxSlope Float - MinWidth Float - SignpostedAs String + PathwayID Key + FromStopID Reference + ToStopID Reference + PathwayMode PathwayMode + IsBidirectional PathwayDirectionality + Length Float + TraversalTime Int + StairCount Int + MaxSlope Float + MinWidth Float + SignpostedAs String ReverseSignpostedAs String } type Level struct { DatabaseEntity - LevelID Key + LevelID Key LevelIndex Float - LevelName String + LevelName String } type LocationGroup struct { DatabaseEntity - LocationGroupID Key + LocationGroupID Key LocationGroupName String } type LocationGroupStop struct { DatabaseEntity LocationGroupID Reference - StopID Reference + StopID Reference } type BookingRule struct { DatabaseEntity - BookingRuleID Key - BookingType BookingRuleType + BookingRuleID Key + BookingType BookingRuleType PriorNoticeDurationMin Int PriorNoticeDurationMax Int - PriorNoticeLastDay Int - PriorNoticeLastTime Seconds - PriorNoticeStartDay Int - PriorNoticeStartTime Seconds - PriorNoticeServiceID Reference - Message String - PickupMessage String - DropOffMessage String - PhoneNumber String - InfoUrl Url - BookingUrl Url + PriorNoticeLastDay Int + PriorNoticeLastTime Seconds + PriorNoticeStartDay Int + PriorNoticeStartTime Seconds + PriorNoticeServiceID Reference + Message String + PickupMessage String + DropOffMessage String + PhoneNumber String + InfoUrl Url + BookingUrl Url } type Translation struct { DatabaseEntity - TableName String - FieldName String - Language Language + TableName String + FieldName String + Language Language Translation String - RecordID String + RecordID String RecordSubID String - FieldValue String + FieldValue String } type FeedInfo struct { DatabaseEntity FeedPublisherName String - FeedPublisherUrl Url - FeedLang Language - DefaultLang Language - FeedStartDate Date - FeedEndDate Date - FeedContactEmail Email - FeedContactUrl Url + FeedPublisherUrl Url + FeedLang Language + DefaultLang Language + FeedStartDate Date + FeedEndDate Date + FeedContactEmail Email + FeedContactUrl Url } type Attribution struct { DatabaseEntity - AttributionID Key - AgencyID Reference - RouteID Reference - TripID Reference + AttributionID Key + AgencyID Reference + RouteID Reference + TripID Reference OrganizationName String - IsProducer AttributionRole - IsOperator AttributionRole - IsAuthority AttributionRole - AttributionUrl Url + IsProducer AttributionRole + IsOperator AttributionRole + IsAuthority AttributionRole + AttributionUrl Url AttributionEmail Email AttributionPhone Phone } type ShapePoint struct { - ShapeID Key - ShapePtLat float64 - ShapePtLon float64 - ShapePtSequence int32 + ShapeID Key + ShapePtLat float64 + ShapePtLon float64 + ShapePtSequence int32 ShapeDistTraveled float64 } @@ -372,21 +376,21 @@ type Service struct { DatabaseEntity ServiceID Key StartDate Date - EndDate Date - Added Date - Removed Date - Monday Bool - Tuesday Bool + EndDate Date + Added Date + Removed Date + Monday Bool + Tuesday Bool Wednesday Bool - Thursday Bool - Friday Bool - Saturday Bool - Sunday Bool + Thursday Bool + Friday Bool + Saturday Bool + Sunday Bool } type Shape struct { DatabaseEntity - ShapeID Key + ShapeID Key Geometry LineString } @@ -396,93 +400,108 @@ type Point struct { } type LineString struct { - Stride uint32 + Stride uint32 Coordinates float64 } type DatabaseEntity struct { - ID int64 + ID int64 FeedVersionID int64 } type Date struct { - Year int32 + Year int32 Month int32 - Day int32 + Day int32 } -type Timestamp struct { tt.Option[int64] } +type Timestamp struct{ tt.Option[int64] } -type Seconds struct { tt.Option[int64] } +type Seconds struct{ tt.Option[int64] } -type Key struct { tt.Option[string] } +type Key struct{ tt.Option[string] } -type Timezone struct { tt.Option[string] } +type Timezone struct{ tt.Option[string] } -type Reference struct { tt.Option[string] } +type Reference struct{ tt.Option[string] } -type Url struct { tt.Option[string] } +type Url struct{ tt.Option[string] } -type Email struct { tt.Option[string] } +type Email struct{ tt.Option[string] } -type Color struct { tt.Option[string] } +type Color struct{ tt.Option[string] } type Money struct { Units int64 Nanos int64 } -type Currency struct { tt.Option[string] } +type Currency struct{ tt.Option[string] } -type Language struct { tt.Option[string] } +type Language struct{ tt.Option[string] } -type Phone struct { tt.Option[string] } +type Phone struct{ tt.Option[string] } -type Float struct { tt.Option[float64] } +type Float struct{ tt.Option[float64] } -type String struct { tt.Option[string] } +type String struct{ tt.Option[string] } -type Int struct { tt.Option[int64] } +type Int struct{ tt.Option[int64] } -type Bool struct { tt.Option[bool] } +type Bool struct{ tt.Option[bool] } -type WheelchairAccess struct { tt.Option[WheelchairAccessEnum] } - -type BikeAccess struct { tt.Option[BikeAccessEnum] } +type WheelchairAccess struct { + tt.Option[WheelchairAccessEnum] +} -type BoardAccess struct { tt.Option[BoardAccessEnum] } +type BikeAccess struct{ tt.Option[BikeAccessEnum] } -type PickupAccess struct { tt.Option[PickupAccessEnum] } +type BoardAccess struct{ tt.Option[BoardAccessEnum] } -type StopLocationType struct { tt.Option[StopLocationTypeEnum] } +type PickupAccess struct{ tt.Option[PickupAccessEnum] } -type RouteType struct { tt.Option[RouteTypeEnum] } +type StopLocationType struct { + tt.Option[StopLocationTypeEnum] +} -type TripDirection struct { tt.Option[TripDirectionEnum] } +type RouteType struct{ tt.Option[RouteTypeEnum] } -type StopTimepoint struct { tt.Option[StopTimepointEnum] } +type TripDirection struct{ tt.Option[TripDirectionEnum] } -type CalendarExceptionType struct { tt.Option[CalendarExceptionTypeEnum] } +type StopTimepoint struct{ tt.Option[StopTimepointEnum] } -type FrequencyExactTime struct { tt.Option[FrequencyExactTimeEnum] } +type CalendarExceptionType struct { + tt.Option[CalendarExceptionTypeEnum] +} -type TransferType struct { tt.Option[TransferTypeEnum] } +type FrequencyExactTime struct { + tt.Option[FrequencyExactTimeEnum] +} -type PathwayDirectionality struct { tt.Option[PathwayDirectionalityEnum] } +type TransferType struct{ tt.Option[TransferTypeEnum] } -type PathwayMode struct { tt.Option[PathwayModeEnum] } +type PathwayDirectionality struct { + tt.Option[PathwayDirectionalityEnum] +} -type BookingRuleType struct { tt.Option[BookingRuleTypeEnum] } +type PathwayMode struct{ tt.Option[PathwayModeEnum] } -type FareMediaType struct { tt.Option[FareMediaTypeEnum] } +type BookingRuleType struct{ tt.Option[BookingRuleTypeEnum] } -type FareTransferType struct { tt.Option[FareTransferTypeEnum] } +type FareMediaType struct{ tt.Option[FareMediaTypeEnum] } -type DurationLimitType struct { tt.Option[DurationLimitTypeEnum] } +type FareTransferType struct { + tt.Option[FareTransferTypeEnum] +} -type FareAttributeTransferType struct { tt.Option[FareAttributeTransferTypeEnum] } +type DurationLimitType struct { + tt.Option[DurationLimitTypeEnum] +} -type PaymentMethod struct { tt.Option[PaymentMethodEnum] } +type FareAttributeTransferType struct { + tt.Option[FareAttributeTransferTypeEnum] +} -type AttributionRole struct { tt.Option[AttributionRoleEnum] } +type PaymentMethod struct{ tt.Option[PaymentMethodEnum] } +type AttributionRole struct{ tt.Option[AttributionRoleEnum] } From bda8f0ead0bac1e2c3e5f9846c42586b7ad4885f Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Tue, 8 Oct 2024 01:18:54 -0700 Subject: [PATCH 08/14] Fix alloc --- tl/tt/option.go | 7 +++++++ tlpb/csv_test.go | 16 +++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/tl/tt/option.go b/tl/tt/option.go index d3b0b5bc..4ba0d38c 100644 --- a/tl/tt/option.go +++ b/tl/tt/option.go @@ -30,6 +30,13 @@ func (r *Option[T]) Error() error { return nil } +func (r *Option[T]) FromCsv(src string) error { + // Empty string considered valid + err := convertAssign(&r.Val, src) + r.Valid = (err == nil) + return err +} + func (r *Option[T]) Scan(src interface{}) error { err := convertAssign(&r.Val, src) r.Valid = (src != nil && err == nil) diff --git a/tlpb/csv_test.go b/tlpb/csv_test.go index 3a870234..e104e034 100644 --- a/tlpb/csv_test.go +++ b/tlpb/csv_test.go @@ -58,11 +58,11 @@ func TestReadPB(t *testing.T) { // } } -func BenchmarkReadPB(b *testing.B) { - for n := 0; n < b.N; n++ { - ReadPB(TESTFILE) - } -} +// func BenchmarkReadPB(b *testing.B) { +// for n := 0; n < b.N; n++ { +// ReadPB(TESTFILE) +// } +// } func ReadPB(fn string) ([]any, error) { a := tlcsv.NewZipAdapter(fn) @@ -93,7 +93,8 @@ func TestReadTT(t *testing.T) { func BenchmarkReadTT(b *testing.B) { for n := 0; n < b.N; n++ { a, _ := ReadTT(TESTFILE) - printFirst(a) + _ = a + // printFirst(a) } } @@ -126,7 +127,8 @@ func TestReadG(t *testing.T) { func BenchmarkReadG(b *testing.B) { for n := 0; n < b.N; n++ { a, _ := ReadG(TESTFILE) - printFirst(a) + _ = a + // printFirst(a) } } From ad9cbfaf71cf299f43bb7516b95588a8556682eb Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Tue, 8 Oct 2024 01:30:09 -0700 Subject: [PATCH 09/14] Move this experiment to internal for now --- {tlpb => internal/tlpb}/codegen_test.go | 0 {tlpb => internal/tlpb}/csv_test.go | 4 +- {tlpb => internal/tlpb}/gtfs.proto | 0 {tlpb => internal/tlpb}/gtfs/gtfs.go | 0 {tlpb => internal/tlpb}/pb/gtfs.pb.go | 0 internal/tlpb/pb/pb.go | 3 ++ tlpb/pb/pb.go | 59 ------------------------- 7 files changed, 5 insertions(+), 61 deletions(-) rename {tlpb => internal/tlpb}/codegen_test.go (100%) rename {tlpb => internal/tlpb}/csv_test.go (95%) rename {tlpb => internal/tlpb}/gtfs.proto (100%) rename {tlpb => internal/tlpb}/gtfs/gtfs.go (100%) rename {tlpb => internal/tlpb}/pb/gtfs.pb.go (100%) create mode 100644 internal/tlpb/pb/pb.go delete mode 100644 tlpb/pb/pb.go diff --git a/tlpb/codegen_test.go b/internal/tlpb/codegen_test.go similarity index 100% rename from tlpb/codegen_test.go rename to internal/tlpb/codegen_test.go diff --git a/tlpb/csv_test.go b/internal/tlpb/csv_test.go similarity index 95% rename from tlpb/csv_test.go rename to internal/tlpb/csv_test.go index e104e034..0e850dad 100644 --- a/tlpb/csv_test.go +++ b/internal/tlpb/csv_test.go @@ -8,10 +8,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/interline-io/transitland-lib/internal/testutil" + "github.com/interline-io/transitland-lib/internal/tlpb/gtfs" + "github.com/interline-io/transitland-lib/internal/tlpb/pb" "github.com/interline-io/transitland-lib/tl" "github.com/interline-io/transitland-lib/tlcsv" - "github.com/interline-io/transitland-lib/tlpb/gtfs" - "github.com/interline-io/transitland-lib/tlpb/pb" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/reflect/protoreflect" ) diff --git a/tlpb/gtfs.proto b/internal/tlpb/gtfs.proto similarity index 100% rename from tlpb/gtfs.proto rename to internal/tlpb/gtfs.proto diff --git a/tlpb/gtfs/gtfs.go b/internal/tlpb/gtfs/gtfs.go similarity index 100% rename from tlpb/gtfs/gtfs.go rename to internal/tlpb/gtfs/gtfs.go diff --git a/tlpb/pb/gtfs.pb.go b/internal/tlpb/pb/gtfs.pb.go similarity index 100% rename from tlpb/pb/gtfs.pb.go rename to internal/tlpb/pb/gtfs.pb.go diff --git a/internal/tlpb/pb/pb.go b/internal/tlpb/pb/pb.go new file mode 100644 index 00000000..47a24155 --- /dev/null +++ b/internal/tlpb/pb/pb.go @@ -0,0 +1,3 @@ +//go:generate protoc --go_out=. --go_opt=paths=source_relative --go_opt=Mgtfs.proto=tlpb/pb -I .. ../gtfs.proto + +package pb diff --git a/tlpb/pb/pb.go b/tlpb/pb/pb.go deleted file mode 100644 index b3e0f17a..00000000 --- a/tlpb/pb/pb.go +++ /dev/null @@ -1,59 +0,0 @@ -//go:generate protoc --go_out=. --go_opt=paths=source_relative --go_opt=Mgtfs.proto=tlpb/pb -I .. ../gtfs.proto - -package pb - -import "github.com/interline-io/transitland-lib/tl/tt" - -func (t *String) FromCsv(v string) error { - t.Val = v - return nil -} - -func (t *Int) FromCsv(v string) error { - t.Val = 123 - return nil -} - -func (t *Float) FromCsv(v string) error { - t.Val = 123.0 - return nil -} - -func (t *Url) FromCsv(v string) error { - t.Val = v - return nil -} - -func (t *Key) FromCsv(v string) error { - t.Val = v - return nil -} - -func (t *Reference) FromCsv(v string) error { - t.Val = v - return nil -} - -func (t *Seconds) FromCsv(v string) error { - wt, err := tt.NewWideTime(v) - if err != nil { - return err - } - t.Val = int64(wt.Seconds) - return nil -} - -func (t *StopLocationType) FromCsv(v string) error { - t.Val = 123 - return nil -} - -func (t *WheelchairAccess) FromCsv(v string) error { - t.Val = 123 - return nil -} - -func (t *StopTimepoint) FromCsv(v string) error { - t.Val = 123 - return nil -} From e217b3f4ee2c12bc3a9156f8b39ef11065b7bc4b Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Thu, 31 Oct 2024 14:02:23 -0400 Subject: [PATCH 10/14] Fix --- tt/option_convert.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tt/option_convert.go b/tt/option_convert.go index 0786c11f..df4e3ad7 100644 --- a/tt/option_convert.go +++ b/tt/option_convert.go @@ -239,6 +239,20 @@ func convertAssign(dest any, src any) (bool, error) { default: err = cannotConvert(dest, src) } + case *int32: + switch s := src.(type) { + case string: + *d, err = parseInt32(s) + case []byte: + *d, err = parseInt32(string(s)) + case int: + *d = int32(s) + case int64: + *d = int32(s) + case float64: + *d = int32(s) + default: + err = cannotConvert() default: switch s := src.(type) { case []byte: From 546cc3bf1aa74616376e0cb192667a3fe2326149 Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Thu, 31 Oct 2024 14:03:26 -0400 Subject: [PATCH 11/14] Fix --- internal/tlpb/csv_test.go | 7 +++---- internal/tlpb/gtfs/gtfs.go | 2 +- tt/option_convert.go | 14 -------------- 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/internal/tlpb/csv_test.go b/internal/tlpb/csv_test.go index 0e850dad..d53b06a3 100644 --- a/internal/tlpb/csv_test.go +++ b/internal/tlpb/csv_test.go @@ -7,10 +7,9 @@ import ( "github.com/stretchr/testify/assert" - "github.com/interline-io/transitland-lib/internal/testutil" + "github.com/interline-io/transitland-lib/internal/testpath" "github.com/interline-io/transitland-lib/internal/tlpb/gtfs" "github.com/interline-io/transitland-lib/internal/tlpb/pb" - "github.com/interline-io/transitland-lib/tl" "github.com/interline-io/transitland-lib/tlcsv" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/reflect/protoreflect" @@ -42,7 +41,7 @@ var TESTFILE = "" var TESTTABLE = "" func init() { - TESTFILE = testutil.RelPath("test/data/external/bart.zip") + TESTFILE = testpath.RelPath("test/data/external/bart.zip") TESTTABLE = "stops.txt" } @@ -105,7 +104,7 @@ func ReadTT(fn string) ([]any, error) { } var ret []any err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { - ent := tl.Stop{} + ent := gtfs.Stop{} if errs := tlcsv.LoadRow(&ent, row); errs != nil { for _, err := range errs { panic(err) diff --git a/internal/tlpb/gtfs/gtfs.go b/internal/tlpb/gtfs/gtfs.go index 384dc31e..ccb73259 100644 --- a/internal/tlpb/gtfs/gtfs.go +++ b/internal/tlpb/gtfs/gtfs.go @@ -1,7 +1,7 @@ package gtfs import ( - "github.com/interline-io/transitland-lib/tl/tt" + "github.com/interline-io/transitland-lib/tt" ) type EnumValue int32 diff --git a/tt/option_convert.go b/tt/option_convert.go index df4e3ad7..0786c11f 100644 --- a/tt/option_convert.go +++ b/tt/option_convert.go @@ -239,20 +239,6 @@ func convertAssign(dest any, src any) (bool, error) { default: err = cannotConvert(dest, src) } - case *int32: - switch s := src.(type) { - case string: - *d, err = parseInt32(s) - case []byte: - *d, err = parseInt32(string(s)) - case int: - *d = int32(s) - case int64: - *d = int32(s) - case float64: - *d = int32(s) - default: - err = cannotConvert() default: switch s := src.(type) { case []byte: From e1507f10db5af446a3365caab2026f37495ba801 Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Thu, 31 Oct 2024 14:05:17 -0400 Subject: [PATCH 12/14] Fix --- internal/tlpb/codegen_test.go | 2 +- internal/tlpb/csv_test.go | 10 +- internal/tlpb/gtfs/gtfs.go | 459 ++++++++++++++++------------------ 3 files changed, 227 insertions(+), 244 deletions(-) diff --git a/internal/tlpb/codegen_test.go b/internal/tlpb/codegen_test.go index d3691d29..724caecb 100644 --- a/internal/tlpb/codegen_test.go +++ b/internal/tlpb/codegen_test.go @@ -26,7 +26,7 @@ func TestCodegen(t *testing.T) { defer outf.Close() outf.WriteString(`package gtfs` + "\n\n") - outf.WriteString(`import ( "github.com/interline-io/transitland-lib/tl/tt" )` + "\n\n") + outf.WriteString(`import ( "github.com/interline-io/transitland-lib/tt" )` + "\n\n") outf.WriteString(`type EnumValue int32` + "\n\n") for _, lf := range files { diff --git a/internal/tlpb/csv_test.go b/internal/tlpb/csv_test.go index d53b06a3..402548e4 100644 --- a/internal/tlpb/csv_test.go +++ b/internal/tlpb/csv_test.go @@ -83,11 +83,11 @@ func ReadPB(fn string) ([]any, error) { ////////////////// -func TestReadTT(t *testing.T) { - ents, err := ReadTT(TESTFILE) - assert.NoError(t, err) - printAll(ents) -} +// func TestReadTT(t *testing.T) { +// ents, err := ReadTT(TESTFILE) +// assert.NoError(t, err) +// printAll(ents) +// } func BenchmarkReadTT(b *testing.B) { for n := 0; n < b.N; n++ { diff --git a/internal/tlpb/gtfs/gtfs.go b/internal/tlpb/gtfs/gtfs.go index ccb73259..808039ec 100644 --- a/internal/tlpb/gtfs/gtfs.go +++ b/internal/tlpb/gtfs/gtfs.go @@ -1,8 +1,6 @@ package gtfs -import ( - "github.com/interline-io/transitland-lib/tt" -) +import ( "github.com/interline-io/transitland-lib/tt" ) type EnumValue int32 @@ -47,189 +45,189 @@ type PaymentMethodEnum int32 type AttributionRoleEnum int32 type FeedEntity struct { - Agency Agency - Stop Stop - Route Route - Trip Trip + Agency Agency + Stop Stop + Route Route + Trip Trip StopTime StopTime - Shape Shape - Service Service + Shape Shape + Service Service } type Agency struct { DatabaseEntity - AgencyID Key - AgencyName String - AgencyUrl Url + AgencyID Key + AgencyName String + AgencyUrl Url AgencyTimezone Timezone - AgencyLang Language - AgencyPhone Phone - AgencyFareUrl Url - AgencyEmail Email + AgencyLang Language + AgencyPhone Phone + AgencyFareUrl Url + AgencyEmail Email } type Stop struct { DatabaseEntity - StopID Key - StopCode String - StopName String - TtsStopName String - StopDesc String - StopLat Float - StopLon Float - ZoneID String - StopUrl Url - LocationType StopLocationType - ParentStation Reference - StopTimezone Timezone + StopID Key + StopCode String + StopName String + TtsStopName String + StopDesc String + StopLat Float + StopLon Float + ZoneID String + StopUrl Url + LocationType StopLocationType + ParentStation Reference + StopTimezone Timezone WheelchairBoarding WheelchairAccess - LevelID Reference - PlatformCode String + LevelID Reference + PlatformCode String } type Route struct { DatabaseEntity - RouteID Key - AgencyID Reference - RouteShortName String - RouteLongName String - RouteDesc String - RouteType RouteType - RouteUrl Url - RouteColor Color - RouteTextColor Color - RouteSortOrder Int - ContinuousPickup PickupAccess + RouteID Key + AgencyID Reference + RouteShortName String + RouteLongName String + RouteDesc String + RouteType RouteType + RouteUrl Url + RouteColor Color + RouteTextColor Color + RouteSortOrder Int + ContinuousPickup PickupAccess ContinuousDropOff PickupAccess - NetworkID String + NetworkID String } type Trip struct { DatabaseEntity - RouteID Reference - ServiceID Reference - TripID Key - TripHeadsign String - TripShortName String - DirectionID TripDirection - BlockID String - ShapeID Reference + RouteID Reference + ServiceID Reference + TripID Key + TripHeadsign String + TripShortName String + DirectionID TripDirection + BlockID String + ShapeID Reference WheelchairAccessible WheelchairAccess - BikesAllowed BikeAccess + BikesAllowed BikeAccess } type StopTime struct { DatabaseEntity - TripID Reference - ArrivalTime Seconds - DepartureTime Seconds - StopID Reference - StopSequence Int - StopHeadsign String - ContinuousPickup PickupAccess - ContinuousDropOff PickupAccess - ShapeDistTraveled Float - Timepoint StopTimepoint - LocationID Reference - LocationGroupID Reference + TripID Reference + ArrivalTime Seconds + DepartureTime Seconds + StopID Reference + StopSequence Int + StopHeadsign String + ContinuousPickup PickupAccess + ContinuousDropOff PickupAccess + ShapeDistTraveled Float + Timepoint StopTimepoint + LocationID Reference + LocationGroupID Reference StartPickupDropOffWindow Seconds - EndPickupDropOffWindow Seconds - PickupType PickupAccess - DropOffType PickupAccess - PickupBookingRuleID Reference - DropOffBookingRuleID Reference + EndPickupDropOffWindow Seconds + PickupType PickupAccess + DropOffType PickupAccess + PickupBookingRuleID Reference + DropOffBookingRuleID Reference } type Calendar struct { DatabaseEntity ServiceID Key StartDate Date - EndDate Date - Monday Bool - Tuesday Bool + EndDate Date + Monday Bool + Tuesday Bool Wednesday Bool - Thursday Bool - Friday Bool - Saturday Bool - Sunday Bool + Thursday Bool + Friday Bool + Saturday Bool + Sunday Bool } type CalendarDate struct { DatabaseEntity - ServiceID Reference - Date Date + ServiceID Reference + Date Date ExceptionType CalendarExceptionType } type FareAttribute struct { DatabaseEntity - FareID Key - Price Money - CurrencyType Currency - PaymentMethod PaymentMethod - Transfers FareAttributeTransferType - AgencyID Reference + FareID Key + Price Money + CurrencyType Currency + PaymentMethod PaymentMethod + Transfers FareAttributeTransferType + AgencyID Reference TransferDuration Int } type FareRule struct { DatabaseEntity - FareID Key - RouteID Reference - OriginID Reference + FareID Key + RouteID Reference + OriginID Reference DestinationID Reference - ContainsID Reference + ContainsID Reference } type Timeframe struct { DatabaseEntity TimeframeGroupID Key - StartTime Seconds - EndTime Seconds - ServiceID Reference + StartTime Seconds + EndTime Seconds + ServiceID Reference } type FareMedia struct { DatabaseEntity - FareMediaID Key + FareMediaID Key FareMediaName String FareMediaType FareMediaType } type FareProduct struct { DatabaseEntity - FareProductID Key + FareProductID Key FareProductName String - FareMediaID Reference - Amount Money - Currency Currency + FareMediaID Reference + Amount Money + Currency Currency } type FareLegRule struct { DatabaseEntity - LegGroupID Key - NetworkID Reference - FromAreaID Reference - ToAreaID Reference + LegGroupID Key + NetworkID Reference + FromAreaID Reference + ToAreaID Reference FromTimeframeGroupID Reference - ToTimeframeGroupID Reference - FareProductID Reference - RuleProirity Int + ToTimeframeGroupID Reference + FareProductID Reference + RuleProirity Int } type FareTransferRule struct { DatabaseEntity - FromLegGroupID Reference - ToLegGroupID Reference - TransferCount Int + FromLegGroupID Reference + ToLegGroupID Reference + TransferCount Int DurationLimitType DurationLimitType - FareTransferType FareTransferType - FareProductID Reference + FareTransferType FareTransferType + FareProductID Reference } type Area struct { DatabaseEntity - AreaID Key + AreaID Key AreaName String } @@ -241,134 +239,134 @@ type StopArea struct { type Network struct { DatabaseEntity - NetworkID Key + NetworkID Key NetworkName String } type RouteNetwork struct { DatabaseEntity NetworkID Reference - RouteID Reference + RouteID Reference } type Frequency struct { DatabaseEntity - TripID Reference - StartTime Seconds - EndTime Seconds + TripID Reference + StartTime Seconds + EndTime Seconds HeadwaySecs Int - ExactTime FrequencyExactTime + ExactTime FrequencyExactTime } type Transfer struct { DatabaseEntity - FromStopID Reference - ToStopID Reference - FromRouteID Reference - ToRouteID Reference - FromTripID Reference - ToTripID Reference - TransferType TransferType + FromStopID Reference + ToStopID Reference + FromRouteID Reference + ToRouteID Reference + FromTripID Reference + ToTripID Reference + TransferType TransferType MinTransferTime Int } type Pathway struct { DatabaseEntity - PathwayID Key - FromStopID Reference - ToStopID Reference - PathwayMode PathwayMode - IsBidirectional PathwayDirectionality - Length Float - TraversalTime Int - StairCount Int - MaxSlope Float - MinWidth Float - SignpostedAs String + PathwayID Key + FromStopID Reference + ToStopID Reference + PathwayMode PathwayMode + IsBidirectional PathwayDirectionality + Length Float + TraversalTime Int + StairCount Int + MaxSlope Float + MinWidth Float + SignpostedAs String ReverseSignpostedAs String } type Level struct { DatabaseEntity - LevelID Key + LevelID Key LevelIndex Float - LevelName String + LevelName String } type LocationGroup struct { DatabaseEntity - LocationGroupID Key + LocationGroupID Key LocationGroupName String } type LocationGroupStop struct { DatabaseEntity LocationGroupID Reference - StopID Reference + StopID Reference } type BookingRule struct { DatabaseEntity - BookingRuleID Key - BookingType BookingRuleType + BookingRuleID Key + BookingType BookingRuleType PriorNoticeDurationMin Int PriorNoticeDurationMax Int - PriorNoticeLastDay Int - PriorNoticeLastTime Seconds - PriorNoticeStartDay Int - PriorNoticeStartTime Seconds - PriorNoticeServiceID Reference - Message String - PickupMessage String - DropOffMessage String - PhoneNumber String - InfoUrl Url - BookingUrl Url + PriorNoticeLastDay Int + PriorNoticeLastTime Seconds + PriorNoticeStartDay Int + PriorNoticeStartTime Seconds + PriorNoticeServiceID Reference + Message String + PickupMessage String + DropOffMessage String + PhoneNumber String + InfoUrl Url + BookingUrl Url } type Translation struct { DatabaseEntity - TableName String - FieldName String - Language Language + TableName String + FieldName String + Language Language Translation String - RecordID String + RecordID String RecordSubID String - FieldValue String + FieldValue String } type FeedInfo struct { DatabaseEntity FeedPublisherName String - FeedPublisherUrl Url - FeedLang Language - DefaultLang Language - FeedStartDate Date - FeedEndDate Date - FeedContactEmail Email - FeedContactUrl Url + FeedPublisherUrl Url + FeedLang Language + DefaultLang Language + FeedStartDate Date + FeedEndDate Date + FeedContactEmail Email + FeedContactUrl Url } type Attribution struct { DatabaseEntity - AttributionID Key - AgencyID Reference - RouteID Reference - TripID Reference + AttributionID Key + AgencyID Reference + RouteID Reference + TripID Reference OrganizationName String - IsProducer AttributionRole - IsOperator AttributionRole - IsAuthority AttributionRole - AttributionUrl Url + IsProducer AttributionRole + IsOperator AttributionRole + IsAuthority AttributionRole + AttributionUrl Url AttributionEmail Email AttributionPhone Phone } type ShapePoint struct { - ShapeID Key - ShapePtLat float64 - ShapePtLon float64 - ShapePtSequence int32 + ShapeID Key + ShapePtLat float64 + ShapePtLon float64 + ShapePtSequence int32 ShapeDistTraveled float64 } @@ -376,21 +374,21 @@ type Service struct { DatabaseEntity ServiceID Key StartDate Date - EndDate Date - Added Date - Removed Date - Monday Bool - Tuesday Bool + EndDate Date + Added Date + Removed Date + Monday Bool + Tuesday Bool Wednesday Bool - Thursday Bool - Friday Bool - Saturday Bool - Sunday Bool + Thursday Bool + Friday Bool + Saturday Bool + Sunday Bool } type Shape struct { DatabaseEntity - ShapeID Key + ShapeID Key Geometry LineString } @@ -400,108 +398,93 @@ type Point struct { } type LineString struct { - Stride uint32 + Stride uint32 Coordinates float64 } type DatabaseEntity struct { - ID int64 + ID int64 FeedVersionID int64 } type Date struct { - Year int32 + Year int32 Month int32 - Day int32 + Day int32 } -type Timestamp struct{ tt.Option[int64] } +type Timestamp struct { tt.Option[int64] } -type Seconds struct{ tt.Option[int64] } +type Seconds struct { tt.Option[int64] } -type Key struct{ tt.Option[string] } +type Key struct { tt.Option[string] } -type Timezone struct{ tt.Option[string] } +type Timezone struct { tt.Option[string] } -type Reference struct{ tt.Option[string] } +type Reference struct { tt.Option[string] } -type Url struct{ tt.Option[string] } +type Url struct { tt.Option[string] } -type Email struct{ tt.Option[string] } +type Email struct { tt.Option[string] } -type Color struct{ tt.Option[string] } +type Color struct { tt.Option[string] } type Money struct { Units int64 Nanos int64 } -type Currency struct{ tt.Option[string] } +type Currency struct { tt.Option[string] } -type Language struct{ tt.Option[string] } +type Language struct { tt.Option[string] } -type Phone struct{ tt.Option[string] } +type Phone struct { tt.Option[string] } -type Float struct{ tt.Option[float64] } +type Float struct { tt.Option[float64] } -type String struct{ tt.Option[string] } +type String struct { tt.Option[string] } -type Int struct{ tt.Option[int64] } +type Int struct { tt.Option[int64] } -type Bool struct{ tt.Option[bool] } +type Bool struct { tt.Option[bool] } -type WheelchairAccess struct { - tt.Option[WheelchairAccessEnum] -} +type WheelchairAccess struct { tt.Option[WheelchairAccessEnum] } -type BikeAccess struct{ tt.Option[BikeAccessEnum] } +type BikeAccess struct { tt.Option[BikeAccessEnum] } -type BoardAccess struct{ tt.Option[BoardAccessEnum] } +type BoardAccess struct { tt.Option[BoardAccessEnum] } -type PickupAccess struct{ tt.Option[PickupAccessEnum] } +type PickupAccess struct { tt.Option[PickupAccessEnum] } -type StopLocationType struct { - tt.Option[StopLocationTypeEnum] -} +type StopLocationType struct { tt.Option[StopLocationTypeEnum] } -type RouteType struct{ tt.Option[RouteTypeEnum] } +type RouteType struct { tt.Option[RouteTypeEnum] } -type TripDirection struct{ tt.Option[TripDirectionEnum] } +type TripDirection struct { tt.Option[TripDirectionEnum] } -type StopTimepoint struct{ tt.Option[StopTimepointEnum] } +type StopTimepoint struct { tt.Option[StopTimepointEnum] } -type CalendarExceptionType struct { - tt.Option[CalendarExceptionTypeEnum] -} +type CalendarExceptionType struct { tt.Option[CalendarExceptionTypeEnum] } -type FrequencyExactTime struct { - tt.Option[FrequencyExactTimeEnum] -} +type FrequencyExactTime struct { tt.Option[FrequencyExactTimeEnum] } -type TransferType struct{ tt.Option[TransferTypeEnum] } +type TransferType struct { tt.Option[TransferTypeEnum] } -type PathwayDirectionality struct { - tt.Option[PathwayDirectionalityEnum] -} +type PathwayDirectionality struct { tt.Option[PathwayDirectionalityEnum] } -type PathwayMode struct{ tt.Option[PathwayModeEnum] } +type PathwayMode struct { tt.Option[PathwayModeEnum] } -type BookingRuleType struct{ tt.Option[BookingRuleTypeEnum] } +type BookingRuleType struct { tt.Option[BookingRuleTypeEnum] } -type FareMediaType struct{ tt.Option[FareMediaTypeEnum] } +type FareMediaType struct { tt.Option[FareMediaTypeEnum] } -type FareTransferType struct { - tt.Option[FareTransferTypeEnum] -} +type FareTransferType struct { tt.Option[FareTransferTypeEnum] } -type DurationLimitType struct { - tt.Option[DurationLimitTypeEnum] -} +type DurationLimitType struct { tt.Option[DurationLimitTypeEnum] } -type FareAttributeTransferType struct { - tt.Option[FareAttributeTransferTypeEnum] -} +type FareAttributeTransferType struct { tt.Option[FareAttributeTransferTypeEnum] } + +type PaymentMethod struct { tt.Option[PaymentMethodEnum] } -type PaymentMethod struct{ tt.Option[PaymentMethodEnum] } +type AttributionRole struct { tt.Option[AttributionRoleEnum] } -type AttributionRole struct{ tt.Option[AttributionRoleEnum] } From bc055dc5b5d248f5e4d0b4fc9ee225c69c9aa359 Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Thu, 31 Oct 2024 14:09:00 -0400 Subject: [PATCH 13/14] Fix --- internal/tlpb/csv_test.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/internal/tlpb/csv_test.go b/internal/tlpb/csv_test.go index 402548e4..93534a8b 100644 --- a/internal/tlpb/csv_test.go +++ b/internal/tlpb/csv_test.go @@ -5,8 +5,6 @@ import ( "fmt" "testing" - "github.com/stretchr/testify/assert" - "github.com/interline-io/transitland-lib/internal/testpath" "github.com/interline-io/transitland-lib/internal/tlpb/gtfs" "github.com/interline-io/transitland-lib/internal/tlpb/pb" @@ -117,11 +115,11 @@ func ReadTT(fn string) ([]any, error) { ////////////////// -func TestReadG(t *testing.T) { - ents, err := ReadG(TESTFILE) - assert.NoError(t, err) - printAll(ents) -} +// func TestReadG(t *testing.T) { +// ents, err := ReadG(TESTFILE) +// assert.NoError(t, err) +// printAll(ents) +// } func BenchmarkReadG(b *testing.B) { for n := 0; n < b.N; n++ { From a22e1c0cbe5b937c681c8635c0a44e9765ab3bfa Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Sat, 23 Nov 2024 01:15:05 -0800 Subject: [PATCH 14/14] WIP --- internal/tlpb/csv_test.go | 148 ------ internal/tlpb/{codegen_test.go => gen.go} | 83 +++- internal/tlpb/gen_test.go | 135 ++++++ internal/tlpb/gtfs.proto | 4 +- internal/tlpb/gtfs/gen.go | 2 + internal/tlpb/gtfs/gtfs.go | 541 +++++++++++----------- internal/tlpb/pb/{pb.go => gen.go} | 0 tt/key.go | 2 + tt/phone.go | 13 + 9 files changed, 486 insertions(+), 442 deletions(-) delete mode 100644 internal/tlpb/csv_test.go rename internal/tlpb/{codegen_test.go => gen.go} (51%) create mode 100644 internal/tlpb/gen_test.go create mode 100644 internal/tlpb/gtfs/gen.go rename internal/tlpb/pb/{pb.go => gen.go} (100%) create mode 100644 tt/phone.go diff --git a/internal/tlpb/csv_test.go b/internal/tlpb/csv_test.go deleted file mode 100644 index 93534a8b..00000000 --- a/internal/tlpb/csv_test.go +++ /dev/null @@ -1,148 +0,0 @@ -package tlpb - -import ( - "encoding/json" - "fmt" - "testing" - - "github.com/interline-io/transitland-lib/internal/testpath" - "github.com/interline-io/transitland-lib/internal/tlpb/gtfs" - "github.com/interline-io/transitland-lib/internal/tlpb/pb" - "github.com/interline-io/transitland-lib/tlcsv" - "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/reflect/protoreflect" -) - -func printFirst(v []any) { - if len(v) == 0 { - return - } - fmt.Println(toJson(v[0])) -} -func printAll(v []any) { - for _, ent := range v { - fmt.Println(toJson(ent)) - } -} - -func pbJson(v protoreflect.ProtoMessage) string { - jj, _ := protojson.Marshal(v) - return string(jj) -} - -func toJson(v any) string { - jj, _ := json.Marshal(v) - return string(jj) -} - -var TESTFILE = "" -var TESTTABLE = "" - -func init() { - TESTFILE = testpath.RelPath("test/data/external/bart.zip") - TESTTABLE = "stops.txt" -} - -////////////////// - -func TestReadPB(t *testing.T) { - // ents, err := ReadPB(TESTFILE) - // if err != nil { - // t.Fatal(err) - // } - // for _, ent := range ents { - // fmt.Println(ent) - // } -} - -// func BenchmarkReadPB(b *testing.B) { -// for n := 0; n < b.N; n++ { -// ReadPB(TESTFILE) -// } -// } - -func ReadPB(fn string) ([]any, error) { - a := tlcsv.NewZipAdapter(fn) - if err := a.Open(); err != nil { - panic(err) - } - var ret []any - err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { - ent := &pb.Stop{} - if errs := tlcsv.LoadRow(ent, row); errs != nil { - for _, err := range errs { - panic(err) - } - } - ret = append(ret, ent) - }) - return ret, err -} - -////////////////// - -// func TestReadTT(t *testing.T) { -// ents, err := ReadTT(TESTFILE) -// assert.NoError(t, err) -// printAll(ents) -// } - -func BenchmarkReadTT(b *testing.B) { - for n := 0; n < b.N; n++ { - a, _ := ReadTT(TESTFILE) - _ = a - // printFirst(a) - } -} - -func ReadTT(fn string) ([]any, error) { - a := tlcsv.NewZipAdapter(fn) - if err := a.Open(); err != nil { - panic(err) - } - var ret []any - err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { - ent := gtfs.Stop{} - if errs := tlcsv.LoadRow(&ent, row); errs != nil { - for _, err := range errs { - panic(err) - } - } - ret = append(ret, ent) - }) - return ret, err -} - -////////////////// - -// func TestReadG(t *testing.T) { -// ents, err := ReadG(TESTFILE) -// assert.NoError(t, err) -// printAll(ents) -// } - -func BenchmarkReadG(b *testing.B) { - for n := 0; n < b.N; n++ { - a, _ := ReadG(TESTFILE) - _ = a - // printFirst(a) - } -} - -func ReadG(fn string) ([]any, error) { - a := tlcsv.NewZipAdapter(fn) - if err := a.Open(); err != nil { - panic(err) - } - var ret []any - err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { - ent := gtfs.Stop{} - if errs := tlcsv.LoadRow(&ent, row); errs != nil { - for _, err := range errs { - panic(err) - } - } - ret = append(ret, ent) - }) - return ret, err -} diff --git a/internal/tlpb/codegen_test.go b/internal/tlpb/gen.go similarity index 51% rename from internal/tlpb/codegen_test.go rename to internal/tlpb/gen.go index 724caecb..5df6d27c 100644 --- a/internal/tlpb/codegen_test.go +++ b/internal/tlpb/gen.go @@ -1,36 +1,86 @@ -package tlpb +package main import ( "context" + "errors" "fmt" "os" "strings" - "testing" "github.com/bufbuild/protocompile" + "github.com/interline-io/transitland-lib/tlcli" + "github.com/spf13/cobra" + "github.com/spf13/pflag" "google.golang.org/protobuf/reflect/protoreflect" ) -func TestCodegen(t *testing.T) { +func main() { + cmd := tlcli.CobraHelper(&GenGtfsCommand{}, "", "") + cmd.Execute() +} + +type GenGtfsCommand struct { + Protopath string + Outpath string + Command *cobra.Command +} + +func (cmd *GenGtfsCommand) AddFlags(fl *pflag.FlagSet) { +} + +func (cmd *GenGtfsCommand) HelpDesc() (string, string) { + return "Generate GTFS entities", "" +} + +func (cmd *GenGtfsCommand) Parse(args []string) error { + fl := tlcli.NewNArgs(args) + if fl.NArg() < 2 { + return errors.New(" ") + } + cmd.Protopath = fl.Arg(0) + cmd.Outpath = fl.Arg(1) + return nil +} + +func (cmd *GenGtfsCommand) Run() error { compiler := protocompile.Compiler{ Resolver: &protocompile.SourceResolver{}, } - files, err := compiler.Compile(context.Background(), "gtfs.proto") + files, err := compiler.Compile(context.Background(), cmd.Protopath) if err != nil { - t.Fatal(err) + return err } - outf, err := os.Create("gtfs/gtfs.go") + outf, err := os.Create(cmd.Outpath) if err != nil { - t.Fatal(err) + return err } defer outf.Close() + // Go outf.WriteString(`package gtfs` + "\n\n") outf.WriteString(`import ( "github.com/interline-io/transitland-lib/tt" )` + "\n\n") - outf.WriteString(`type EnumValue int32` + "\n\n") + + ttKinds := map[string]string{ + "Url": "tt.Url", + "Date": "tt.Date", + "Time": "tt.Time", + "Color": "tt.Color", + "Key": "tt.Key", + "Phone": "tt.Phone", + "Email": "tt.Email", + "Reference": "tt.Reference", + "Currency": "tt.Currency", + "Language": "tt.Language", + "Int": "tt.Int", + "Bool": "tt.Bool", + "Float": "tt.Float", + "String": "tt.String", + "Timezone": "tt.Timezone", + "Timestamp": "tt.Timestamp", + "Seconds": "tt.Seconds", + } for _, lf := range files { - // fmt.Printf("file %#v\n", file) enums := lf.Enums() for i := 0; i < enums.Len(); i++ { en := enums.Get(i) @@ -40,9 +90,16 @@ func TestCodegen(t *testing.T) { for i := 0; i < msgs.Len(); i++ { msg := msgs.Get(i) fields := msg.Fields() + if _, ok := ttKinds[string(msg.Name())]; ok { + continue + } if fields.Len() == 1 && fields.Get(0).Name() == "val" { field := fields.Get(0) - outf.WriteString(fmt.Sprintf("type %s struct { tt.Option[%s] }\n\n", msg.Name(), mapKind(field))) + outf.WriteString(fmt.Sprintf( + "type %s struct { tt.Option[%s] }\n\n", + msg.Name(), + mapKind(field)), + ) continue } @@ -51,17 +108,21 @@ func TestCodegen(t *testing.T) { field := fields.Get(j) fieldName := toCamelCase(string(field.Name())) fieldKind := mapKind(field) + if ttKind, ok := ttKinds[fieldKind]; ok { + outf.WriteString(fmt.Sprintf("\t%s %s\n", fieldName, ttKind)) + continue + } switch fieldKind { case "DatabaseEntity": outf.WriteString("\tDatabaseEntity\n") default: outf.WriteString(fmt.Sprintf("\t%s %s\n", fieldName, fieldKind)) } - } outf.WriteString("}\n\n") } } + return nil } func mapKind(field protoreflect.FieldDescriptor) string { diff --git a/internal/tlpb/gen_test.go b/internal/tlpb/gen_test.go new file mode 100644 index 00000000..481919ae --- /dev/null +++ b/internal/tlpb/gen_test.go @@ -0,0 +1,135 @@ +package main + +// func printFirst(v []any) { +// if len(v) == 0 { +// return +// } +// fmt.Println(toJson(v[0])) +// } +// func printAll(v []any) { +// for _, ent := range v { +// fmt.Println(toJson(ent)) +// } +// } + +// func pbJson(v protoreflect.ProtoMessage) string { +// jj, _ := protojson.Marshal(v) +// return string(jj) +// } + +// func toJson(v any) string { +// jj, _ := json.Marshal(v) +// return string(jj) +// } + +// var TESTFILE = "" +// var TESTTABLE = "" + +// func init() { +// TESTFILE = testpath.RelPath("test/data/external/bart.zip") +// TESTTABLE = "stops.txt" +// } + +////////////////// + +// func TestReadPB(t *testing.T) { +// ents, err := ReadPB(TESTFILE) +// if err != nil { +// t.Fatal(err) +// } +// for _, ent := range ents { +// fmt.Println(ent) +// } +// } + +// func BenchmarkReadPB(b *testing.B) { +// for n := 0; n < b.N; n++ { +// ReadPB(TESTFILE) +// } +// } + +// func ReadPB(fn string) ([]any, error) { +// a := tlcsv.NewZipAdapter(fn) +// if err := a.Open(); err != nil { +// panic(err) +// } +// var ret []any +// err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { +// ent := &pb.Stop{} +// if errs := tlcsv.LoadRow(ent, row); errs != nil { +// for _, err := range errs { +// panic(err) +// } +// } +// ret = append(ret, ent) +// }) +// return ret, err +// } + +////////////////// + +// func TestReadTT(t *testing.T) { +// ents, err := ReadTT(TESTFILE) +// assert.NoError(t, err) +// printAll(ents) +// } + +// func BenchmarkReadTT(b *testing.B) { +// for n := 0; n < b.N; n++ { +// a, _ := ReadTT(TESTFILE) +// _ = a +// // printFirst(a) +// } +// } + +// func ReadTT(fn string) ([]any, error) { +// a := tlcsv.NewZipAdapter(fn) +// if err := a.Open(); err != nil { +// panic(err) +// } +// var ret []any +// err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { +// ent := gtfs.Stop{} +// if errs := tlcsv.LoadRow(&ent, row); errs != nil { +// for _, err := range errs { +// panic(err) +// } +// } +// ret = append(ret, ent) +// }) +// return ret, err +// } + +////////////////// + +// func TestReadG(t *testing.T) { +// ents, err := ReadG(TESTFILE) +// assert.NoError(t, err) +// printAll(ents) +// } + +// func BenchmarkReadG(b *testing.B) { +// for n := 0; n < b.N; n++ { +// a, _ := ReadG(TESTFILE) +// _ = a +// // printFirst(a) +// } +// } + +// func ReadG(fn string) ([]any, error) { +// a := tlcsv.NewZipAdapter(fn) +// if err := a.Open(); err != nil { +// panic(err) +// } +// var ret []any +// err := a.ReadRows(TESTTABLE, func(row tlcsv.Row) { +// ent := gtfs.Stop{} +// if errs := tlcsv.LoadRow(&ent, row); errs != nil { +// for _, err := range errs { +// panic(err) +// } +// } +// ret = append(ret, ent) +// }) +// return ret, err +// } diff --git a/internal/tlpb/gtfs.proto b/internal/tlpb/gtfs.proto index 6498a874..8ab4b8b9 100644 --- a/internal/tlpb/gtfs.proto +++ b/internal/tlpb/gtfs.proto @@ -321,7 +321,7 @@ message Attribution { Phone attribution_phone = 13; } -message ShapePoint { +message Shape { Key shape_id = 1; double shape_pt_lat = 2; double shape_pt_lon = 3; @@ -348,7 +348,7 @@ message Service { Bool sunday = 14; } -message Shape { +message ShapeLine { DatabaseEntity id = 1; Key shape_id = 2; LineString geometry = 3; diff --git a/internal/tlpb/gtfs/gen.go b/internal/tlpb/gtfs/gen.go new file mode 100644 index 00000000..15dce255 --- /dev/null +++ b/internal/tlpb/gtfs/gen.go @@ -0,0 +1,2 @@ +//go:generate go run ../gen.go ../gtfs.proto gtfs.go +package gtfs diff --git a/internal/tlpb/gtfs/gtfs.go b/internal/tlpb/gtfs/gtfs.go index 808039ec..b1a060a3 100644 --- a/internal/tlpb/gtfs/gtfs.go +++ b/internal/tlpb/gtfs/gtfs.go @@ -1,8 +1,8 @@ package gtfs -import ( "github.com/interline-io/transitland-lib/tt" ) - -type EnumValue int32 +import ( + "github.com/interline-io/transitland-lib/tt" +) type WheelchairAccessEnum int32 @@ -45,350 +45,350 @@ type PaymentMethodEnum int32 type AttributionRoleEnum int32 type FeedEntity struct { - Agency Agency - Stop Stop - Route Route - Trip Trip + Agency Agency + Stop Stop + Route Route + Trip Trip StopTime StopTime - Shape Shape - Service Service + Shape Shape + Service Service } type Agency struct { DatabaseEntity - AgencyID Key - AgencyName String - AgencyUrl Url - AgencyTimezone Timezone - AgencyLang Language - AgencyPhone Phone - AgencyFareUrl Url - AgencyEmail Email + AgencyID tt.Key + AgencyName tt.String + AgencyUrl tt.Url + AgencyTimezone tt.Timezone + AgencyLang tt.Language + AgencyPhone tt.Phone + AgencyFareUrl tt.Url + AgencyEmail tt.Email } type Stop struct { DatabaseEntity - StopID Key - StopCode String - StopName String - TtsStopName String - StopDesc String - StopLat Float - StopLon Float - ZoneID String - StopUrl Url - LocationType StopLocationType - ParentStation Reference - StopTimezone Timezone + StopID tt.Key + StopCode tt.String + StopName tt.String + TtsStopName tt.String + StopDesc tt.String + StopLat tt.Float + StopLon tt.Float + ZoneID tt.String + StopUrl tt.Url + LocationType StopLocationType + ParentStation tt.Reference + StopTimezone tt.Timezone WheelchairBoarding WheelchairAccess - LevelID Reference - PlatformCode String + LevelID tt.Reference + PlatformCode tt.String } type Route struct { DatabaseEntity - RouteID Key - AgencyID Reference - RouteShortName String - RouteLongName String - RouteDesc String - RouteType RouteType - RouteUrl Url - RouteColor Color - RouteTextColor Color - RouteSortOrder Int - ContinuousPickup PickupAccess + RouteID tt.Key + AgencyID tt.Reference + RouteShortName tt.String + RouteLongName tt.String + RouteDesc tt.String + RouteType RouteType + RouteUrl tt.Url + RouteColor tt.Color + RouteTextColor tt.Color + RouteSortOrder tt.Int + ContinuousPickup PickupAccess ContinuousDropOff PickupAccess - NetworkID String + NetworkID tt.String } type Trip struct { DatabaseEntity - RouteID Reference - ServiceID Reference - TripID Key - TripHeadsign String - TripShortName String - DirectionID TripDirection - BlockID String - ShapeID Reference + RouteID tt.Reference + ServiceID tt.Reference + TripID tt.Key + TripHeadsign tt.String + TripShortName tt.String + DirectionID TripDirection + BlockID tt.String + ShapeID tt.Reference WheelchairAccessible WheelchairAccess - BikesAllowed BikeAccess + BikesAllowed BikeAccess } type StopTime struct { DatabaseEntity - TripID Reference - ArrivalTime Seconds - DepartureTime Seconds - StopID Reference - StopSequence Int - StopHeadsign String - ContinuousPickup PickupAccess - ContinuousDropOff PickupAccess - ShapeDistTraveled Float - Timepoint StopTimepoint - LocationID Reference - LocationGroupID Reference - StartPickupDropOffWindow Seconds - EndPickupDropOffWindow Seconds - PickupType PickupAccess - DropOffType PickupAccess - PickupBookingRuleID Reference - DropOffBookingRuleID Reference + TripID tt.Reference + ArrivalTime tt.Seconds + DepartureTime tt.Seconds + StopID tt.Reference + StopSequence tt.Int + StopHeadsign tt.String + ContinuousPickup PickupAccess + ContinuousDropOff PickupAccess + ShapeDistTraveled tt.Float + Timepoint StopTimepoint + LocationID tt.Reference + LocationGroupID tt.Reference + StartPickupDropOffWindow tt.Seconds + EndPickupDropOffWindow tt.Seconds + PickupType PickupAccess + DropOffType PickupAccess + PickupBookingRuleID tt.Reference + DropOffBookingRuleID tt.Reference } type Calendar struct { DatabaseEntity - ServiceID Key - StartDate Date - EndDate Date - Monday Bool - Tuesday Bool - Wednesday Bool - Thursday Bool - Friday Bool - Saturday Bool - Sunday Bool + ServiceID tt.Key + StartDate tt.Date + EndDate tt.Date + Monday tt.Bool + Tuesday tt.Bool + Wednesday tt.Bool + Thursday tt.Bool + Friday tt.Bool + Saturday tt.Bool + Sunday tt.Bool } type CalendarDate struct { DatabaseEntity - ServiceID Reference - Date Date + ServiceID tt.Reference + Date tt.Date ExceptionType CalendarExceptionType } type FareAttribute struct { DatabaseEntity - FareID Key - Price Money - CurrencyType Currency - PaymentMethod PaymentMethod - Transfers FareAttributeTransferType - AgencyID Reference - TransferDuration Int + FareID tt.Key + Price Money + CurrencyType tt.Currency + PaymentMethod PaymentMethod + Transfers FareAttributeTransferType + AgencyID tt.Reference + TransferDuration tt.Int } type FareRule struct { DatabaseEntity - FareID Key - RouteID Reference - OriginID Reference - DestinationID Reference - ContainsID Reference + FareID tt.Key + RouteID tt.Reference + OriginID tt.Reference + DestinationID tt.Reference + ContainsID tt.Reference } type Timeframe struct { DatabaseEntity - TimeframeGroupID Key - StartTime Seconds - EndTime Seconds - ServiceID Reference + TimeframeGroupID tt.Key + StartTime tt.Seconds + EndTime tt.Seconds + ServiceID tt.Reference } type FareMedia struct { DatabaseEntity - FareMediaID Key - FareMediaName String + FareMediaID tt.Key + FareMediaName tt.String FareMediaType FareMediaType } type FareProduct struct { DatabaseEntity - FareProductID Key - FareProductName String - FareMediaID Reference - Amount Money - Currency Currency + FareProductID tt.Key + FareProductName tt.String + FareMediaID tt.Reference + Amount Money + Currency tt.Currency } type FareLegRule struct { DatabaseEntity - LegGroupID Key - NetworkID Reference - FromAreaID Reference - ToAreaID Reference - FromTimeframeGroupID Reference - ToTimeframeGroupID Reference - FareProductID Reference - RuleProirity Int + LegGroupID tt.Key + NetworkID tt.Reference + FromAreaID tt.Reference + ToAreaID tt.Reference + FromTimeframeGroupID tt.Reference + ToTimeframeGroupID tt.Reference + FareProductID tt.Reference + RuleProirity tt.Int } type FareTransferRule struct { DatabaseEntity - FromLegGroupID Reference - ToLegGroupID Reference - TransferCount Int + FromLegGroupID tt.Reference + ToLegGroupID tt.Reference + TransferCount tt.Int DurationLimitType DurationLimitType - FareTransferType FareTransferType - FareProductID Reference + FareTransferType FareTransferType + FareProductID tt.Reference } type Area struct { DatabaseEntity - AreaID Key - AreaName String + AreaID tt.Key + AreaName tt.String } type StopArea struct { DatabaseEntity - AreaID Reference - StopID Reference + AreaID tt.Reference + StopID tt.Reference } type Network struct { DatabaseEntity - NetworkID Key - NetworkName String + NetworkID tt.Key + NetworkName tt.String } type RouteNetwork struct { DatabaseEntity - NetworkID Reference - RouteID Reference + NetworkID tt.Reference + RouteID tt.Reference } type Frequency struct { DatabaseEntity - TripID Reference - StartTime Seconds - EndTime Seconds - HeadwaySecs Int - ExactTime FrequencyExactTime + TripID tt.Reference + StartTime tt.Seconds + EndTime tt.Seconds + HeadwaySecs tt.Int + ExactTime FrequencyExactTime } type Transfer struct { DatabaseEntity - FromStopID Reference - ToStopID Reference - FromRouteID Reference - ToRouteID Reference - FromTripID Reference - ToTripID Reference - TransferType TransferType - MinTransferTime Int + FromStopID tt.Reference + ToStopID tt.Reference + FromRouteID tt.Reference + ToRouteID tt.Reference + FromTripID tt.Reference + ToTripID tt.Reference + TransferType TransferType + MinTransferTime tt.Int } type Pathway struct { DatabaseEntity - PathwayID Key - FromStopID Reference - ToStopID Reference - PathwayMode PathwayMode - IsBidirectional PathwayDirectionality - Length Float - TraversalTime Int - StairCount Int - MaxSlope Float - MinWidth Float - SignpostedAs String - ReverseSignpostedAs String + PathwayID tt.Key + FromStopID tt.Reference + ToStopID tt.Reference + PathwayMode PathwayMode + IsBidirectional PathwayDirectionality + Length tt.Float + TraversalTime tt.Int + StairCount tt.Int + MaxSlope tt.Float + MinWidth tt.Float + SignpostedAs tt.String + ReverseSignpostedAs tt.String } type Level struct { DatabaseEntity - LevelID Key - LevelIndex Float - LevelName String + LevelID tt.Key + LevelIndex tt.Float + LevelName tt.String } type LocationGroup struct { DatabaseEntity - LocationGroupID Key - LocationGroupName String + LocationGroupID tt.Key + LocationGroupName tt.String } type LocationGroupStop struct { DatabaseEntity - LocationGroupID Reference - StopID Reference + LocationGroupID tt.Reference + StopID tt.Reference } type BookingRule struct { DatabaseEntity - BookingRuleID Key - BookingType BookingRuleType - PriorNoticeDurationMin Int - PriorNoticeDurationMax Int - PriorNoticeLastDay Int - PriorNoticeLastTime Seconds - PriorNoticeStartDay Int - PriorNoticeStartTime Seconds - PriorNoticeServiceID Reference - Message String - PickupMessage String - DropOffMessage String - PhoneNumber String - InfoUrl Url - BookingUrl Url + BookingRuleID tt.Key + BookingType BookingRuleType + PriorNoticeDurationMin tt.Int + PriorNoticeDurationMax tt.Int + PriorNoticeLastDay tt.Int + PriorNoticeLastTime tt.Seconds + PriorNoticeStartDay tt.Int + PriorNoticeStartTime tt.Seconds + PriorNoticeServiceID tt.Reference + Message tt.String + PickupMessage tt.String + DropOffMessage tt.String + PhoneNumber tt.String + InfoUrl tt.Url + BookingUrl tt.Url } type Translation struct { DatabaseEntity - TableName String - FieldName String - Language Language - Translation String - RecordID String - RecordSubID String - FieldValue String + TableName tt.String + FieldName tt.String + Language tt.Language + Translation tt.String + RecordID tt.String + RecordSubID tt.String + FieldValue tt.String } type FeedInfo struct { DatabaseEntity - FeedPublisherName String - FeedPublisherUrl Url - FeedLang Language - DefaultLang Language - FeedStartDate Date - FeedEndDate Date - FeedContactEmail Email - FeedContactUrl Url + FeedPublisherName tt.String + FeedPublisherUrl tt.Url + FeedLang tt.Language + DefaultLang tt.Language + FeedStartDate tt.Date + FeedEndDate tt.Date + FeedContactEmail tt.Email + FeedContactUrl tt.Url } type Attribution struct { DatabaseEntity - AttributionID Key - AgencyID Reference - RouteID Reference - TripID Reference - OrganizationName String - IsProducer AttributionRole - IsOperator AttributionRole - IsAuthority AttributionRole - AttributionUrl Url - AttributionEmail Email - AttributionPhone Phone -} - -type ShapePoint struct { - ShapeID Key - ShapePtLat float64 - ShapePtLon float64 - ShapePtSequence int32 + AttributionID tt.Key + AgencyID tt.Reference + RouteID tt.Reference + TripID tt.Reference + OrganizationName tt.String + IsProducer AttributionRole + IsOperator AttributionRole + IsAuthority AttributionRole + AttributionUrl tt.Url + AttributionEmail tt.Email + AttributionPhone tt.Phone +} + +type Shape struct { + ShapeID tt.Key + ShapePtLat float64 + ShapePtLon float64 + ShapePtSequence int32 ShapeDistTraveled float64 } type Service struct { DatabaseEntity - ServiceID Key - StartDate Date - EndDate Date - Added Date - Removed Date - Monday Bool - Tuesday Bool - Wednesday Bool - Thursday Bool - Friday Bool - Saturday Bool - Sunday Bool -} - -type Shape struct { + ServiceID tt.Key + StartDate tt.Date + EndDate tt.Date + Added tt.Date + Removed tt.Date + Monday tt.Bool + Tuesday tt.Bool + Wednesday tt.Bool + Thursday tt.Bool + Friday tt.Bool + Saturday tt.Bool + Sunday tt.Bool +} + +type ShapeLine struct { DatabaseEntity - ShapeID Key + ShapeID tt.Key Geometry LineString } @@ -398,93 +398,72 @@ type Point struct { } type LineString struct { - Stride uint32 + Stride uint32 Coordinates float64 } type DatabaseEntity struct { - ID int64 + ID int64 FeedVersionID int64 } -type Date struct { - Year int32 - Month int32 - Day int32 -} - -type Timestamp struct { tt.Option[int64] } - -type Seconds struct { tt.Option[int64] } - -type Key struct { tt.Option[string] } - -type Timezone struct { tt.Option[string] } - -type Reference struct { tt.Option[string] } - -type Url struct { tt.Option[string] } - -type Email struct { tt.Option[string] } - -type Color struct { tt.Option[string] } - type Money struct { Units int64 Nanos int64 } -type Currency struct { tt.Option[string] } - -type Language struct { tt.Option[string] } - -type Phone struct { tt.Option[string] } - -type Float struct { tt.Option[float64] } - -type String struct { tt.Option[string] } - -type Int struct { tt.Option[int64] } - -type Bool struct { tt.Option[bool] } - -type WheelchairAccess struct { tt.Option[WheelchairAccessEnum] } - -type BikeAccess struct { tt.Option[BikeAccessEnum] } +type WheelchairAccess struct { + tt.Option[WheelchairAccessEnum] +} -type BoardAccess struct { tt.Option[BoardAccessEnum] } +type BikeAccess struct{ tt.Option[BikeAccessEnum] } -type PickupAccess struct { tt.Option[PickupAccessEnum] } +type BoardAccess struct{ tt.Option[BoardAccessEnum] } -type StopLocationType struct { tt.Option[StopLocationTypeEnum] } +type PickupAccess struct{ tt.Option[PickupAccessEnum] } -type RouteType struct { tt.Option[RouteTypeEnum] } +type StopLocationType struct { + tt.Option[StopLocationTypeEnum] +} -type TripDirection struct { tt.Option[TripDirectionEnum] } +type RouteType struct{ tt.Option[RouteTypeEnum] } -type StopTimepoint struct { tt.Option[StopTimepointEnum] } +type TripDirection struct{ tt.Option[TripDirectionEnum] } -type CalendarExceptionType struct { tt.Option[CalendarExceptionTypeEnum] } +type StopTimepoint struct{ tt.Option[StopTimepointEnum] } -type FrequencyExactTime struct { tt.Option[FrequencyExactTimeEnum] } +type CalendarExceptionType struct { + tt.Option[CalendarExceptionTypeEnum] +} -type TransferType struct { tt.Option[TransferTypeEnum] } +type FrequencyExactTime struct { + tt.Option[FrequencyExactTimeEnum] +} -type PathwayDirectionality struct { tt.Option[PathwayDirectionalityEnum] } +type TransferType struct{ tt.Option[TransferTypeEnum] } -type PathwayMode struct { tt.Option[PathwayModeEnum] } +type PathwayDirectionality struct { + tt.Option[PathwayDirectionalityEnum] +} -type BookingRuleType struct { tt.Option[BookingRuleTypeEnum] } +type PathwayMode struct{ tt.Option[PathwayModeEnum] } -type FareMediaType struct { tt.Option[FareMediaTypeEnum] } +type BookingRuleType struct{ tt.Option[BookingRuleTypeEnum] } -type FareTransferType struct { tt.Option[FareTransferTypeEnum] } +type FareMediaType struct{ tt.Option[FareMediaTypeEnum] } -type DurationLimitType struct { tt.Option[DurationLimitTypeEnum] } +type FareTransferType struct { + tt.Option[FareTransferTypeEnum] +} -type FareAttributeTransferType struct { tt.Option[FareAttributeTransferTypeEnum] } +type DurationLimitType struct { + tt.Option[DurationLimitTypeEnum] +} -type PaymentMethod struct { tt.Option[PaymentMethodEnum] } +type FareAttributeTransferType struct { + tt.Option[FareAttributeTransferTypeEnum] +} -type AttributionRole struct { tt.Option[AttributionRoleEnum] } +type PaymentMethod struct{ tt.Option[PaymentMethodEnum] } +type AttributionRole struct{ tt.Option[AttributionRoleEnum] } diff --git a/internal/tlpb/pb/pb.go b/internal/tlpb/pb/gen.go similarity index 100% rename from internal/tlpb/pb/pb.go rename to internal/tlpb/pb/gen.go diff --git a/tt/key.go b/tt/key.go index b0d0e74e..c22a663d 100644 --- a/tt/key.go +++ b/tt/key.go @@ -24,3 +24,5 @@ func (r Key) Int() int { a, _ := strconv.Atoi(r.Val) return a } + +type Reference = Key diff --git a/tt/phone.go b/tt/phone.go new file mode 100644 index 00000000..c641c82b --- /dev/null +++ b/tt/phone.go @@ -0,0 +1,13 @@ +package tt + +type Phone struct { + Option[string] +} + +func NewPhone(v string) Phone { + return Phone{Option: NewOption(v)} +} + +func (r Phone) Check() error { + return nil +}