diff --git a/go.mod b/go.mod index 24860216..562ff86e 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/aws/aws-sdk-go-v2/credentials v1.17.67 github.com/aws/aws-sdk-go-v2/service/location v1.44.2 github.com/aws/aws-sdk-go-v2/service/s3 v1.79.3 + github.com/bufbuild/protocompile v0.14.1 github.com/deckarep/golang-set/v2 v2.6.0 github.com/dimchansky/utfbom v1.1.1 github.com/flopp/go-staticmaps v0.0.0-20220221183018-c226716bec53 diff --git a/go.sum b/go.sum index 583d94e9..cb6215a1 100644 --- a/go.sum +++ b/go.sum @@ -76,6 +76,8 @@ github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0 h1:0NmehRCgyk5r github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0/go.mod h1:6L7zgvqo0idzI7IO8de6ZC051AfXb5ipkIJ7bIA2tGA= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +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/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= diff --git a/internal/tlpb/gen.go b/internal/tlpb/gen.go new file mode 100644 index 00000000..c06090e7 --- /dev/null +++ b/internal/tlpb/gen.go @@ -0,0 +1,156 @@ +package main + +import ( + "context" + "errors" + "fmt" + "os" + "strings" + + "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 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(ctx context.Context) error { + compiler := protocompile.Compiler{ + Resolver: &protocompile.SourceResolver{}, + } + files, err := compiler.Compile(ctx, cmd.Protopath) + if err != nil { + return err + } + outf, err := os.Create(cmd.Outpath) + if err != nil { + return err + } + defer outf.Close() + + // Go + outf.WriteString(`package gtfs` + "\n\n") + outf.WriteString(`import ( "github.com/interline-io/transitland-lib/tt" )` + "\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 { + 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 _, 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)), + ) + 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) + 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 { + 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/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 new file mode 100644 index 00000000..8ab4b8b9 --- /dev/null +++ b/internal/tlpb/gtfs.proto @@ -0,0 +1,667 @@ +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 { + DatabaseEntity id = 1; + Key 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 { + 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; +} + +message Route { + 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; + RouteType route_type = 8; + Url route_url = 9; + Color route_color = 10; + Color route_text_color = 11; + Int route_sort_order = 12; + PickupAccess continuous_pickup = 13; + PickupAccess continuous_drop_off = 14; + String network_id = 15; +} + +message Trip { + DatabaseEntity id = 1; + Reference route_id = 3; + Reference service_id = 4; + Key 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 { + DatabaseEntity id = 1; + Reference trip_id = 3; + Seconds arrival_time = 4; + Seconds departure_time = 5; + Reference stop_id = 6; + Int stop_sequence = 7; + String stop_headsign = 8; + PickupAccess continuous_pickup = 9; + PickupAccess continuous_drop_off = 10; + Float 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 { + 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; +} + +message CalendarDate { + DatabaseEntity id = 1; + Reference service_id = 3; + Date date = 4; + CalendarExceptionType exception_type = 5; +} + +message FareAttribute { + 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; + Int transfer_duration = 9; +} + +message FareRule { + DatabaseEntity id = 1; + Key fare_id = 3; + Reference route_id = 4; + Reference origin_id = 5; + Reference destination_id = 6; + Reference contains_id = 8; +} + +message Timeframe { + DatabaseEntity id = 1; + Key timeframe_group_id = 3; + Seconds start_time = 4; + Seconds end_time = 5; + Reference service_id = 6; +} + +message FareMedia { + DatabaseEntity id = 1; + Key fare_media_id = 3; + String fare_media_name = 4; + FareMediaType fare_media_type = 5; +} + +message FareProduct { + 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 { + 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; + Int rule_proirity = 10; +} + +message FareTransferRule { + DatabaseEntity id = 1; + Reference from_leg_group_id = 3; + Reference to_leg_group_id = 4; + Int transfer_count = 5; + DurationLimitType duration_limit_type = 6; + FareTransferType fare_transfer_type = 7; + Reference fare_product_id = 8; +} + +message Area { + DatabaseEntity id = 1; + Key area_id = 3; + String area_name = 4; +} + +message StopArea { + DatabaseEntity id = 1; + Reference area_id = 3; + Reference stop_id = 4; +} + +message Network { + DatabaseEntity id = 1; + Key network_id = 3; + String network_name = 4; +} + +message RouteNetwork { + DatabaseEntity id = 1; + Reference network_id = 3; + Reference route_id = 4; +} + +message Frequency { + DatabaseEntity id = 1; + Reference trip_id = 3; + Seconds start_time = 4; + Seconds end_time = 5; + Int headway_secs = 6; + FrequencyExactTime exact_time = 7; +} + +message Transfer { + DatabaseEntity id = 1; + 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; + Int min_transfer_time = 10; +} + +message Pathway { + 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; + 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 { + DatabaseEntity id = 1; + Key level_id = 3; + Float level_index = 4; + String level_name = 5; +} + +message LocationGroup { + DatabaseEntity id = 1; + Key location_group_id = 3; + String location_group_name = 4; +} + +message LocationGroupStop { + DatabaseEntity id = 1; + Reference location_group_id = 3; + Reference stop_id = 4; +} + +message BookingRule { + DatabaseEntity id = 1; + Key booking_rule_id = 3; + BookingRuleType booking_type = 4; + Int prior_notice_duration_min = 5; + Int prior_notice_duration_max = 6; + Int prior_notice_last_day = 7; + Seconds prior_notice_last_time = 8; + 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; + Url info_url = 16; + Url booking_url = 17; +} + +message Translation { + 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; +} + +message FeedInfo { + DatabaseEntity id = 1; + 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 { + DatabaseEntity id = 1; + Key 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; +} + +message Shape { + 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 { + 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; +} + +message ShapeLine { + DatabaseEntity id = 1; + Key shape_id = 2; + LineString geometry = 3; +} + +/////////// +// Shapes and geometries + +message Point { + double lon = 1; + double lat = 2; +} + +message LineString { + uint32 stride = 1; + repeated double coordinates = 2; +} + +///////////// +// Base messages + +message DatabaseEntity { + int64 id = 1; + int64 feed_version_id = 2; +} + +message Date { + int32 year = 1; + int32 month = 2; + int32 day = 3; +} + +message Timestamp { + int64 val = 1; +} + +message Seconds { + int64 val = 1; +} + +message Key { + 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; +} + +message Float { + double val = 1; +} + +message String { + string val = 1; +} + +message Int { + int64 val = 1; +} + +message Bool { + bool val = 1; +} + +///////////// +// Base enums + +message WheelchairAccess { + WheelchairAccessEnum val = 1; +} + +enum WheelchairAccessEnum { + WheelchairUnknown = 0; + WheelchairAllowed = 1; + WheelchairDisallowed = 2; +} + +message BikeAccess { + BikeAccessEnum val = 1; +} + +enum BikeAccessEnum { + BikeUnknown = 0; + BikeAllowed = 1; + BikeDisallowed = 2; +} + +message BoardAccess { + BoardAccessEnum val = 1; +} + +enum BoardAccessEnum { + BoardUnknown = 0; + BoardDisallowed = 1; + BoardAllowed = 2; + BoardCoordinate = 3; +} + +message PickupAccess { + PickupAccessEnum val = 1; +} + +enum PickupAccessEnum { + PickupContinuous = 0; + PickupDisallowed = 1; + PickupMustPhone = 2; + PickupAskDriver = 3; +} + +message StopLocationType { + StopLocationTypeEnum val = 1; +} + +enum StopLocationTypeEnum { + LocationPlatform = 0; + LocationStation = 1; + LocationEntrance = 2; + LocationNode = 3; + LocationBoardingArea = 4; +} + +message RouteType { + RouteTypeEnum val = 1; +} + +enum RouteTypeEnum { + VehicleTram = 0; + VehicleSubway = 1; + VehicleRail = 2; + VehicleBus = 3; + VehicleFerry = 4; + VehicleCablecar = 5; + VehicleGondola = 6; + VehicleFunicular = 7; + VehicleTrollebus = 11; + VehicleMonorail = 12; +} + +message TripDirection { + TripDirectionEnum val = 1; +} + +enum TripDirectionEnum { + TripDirectionOutbound = 0; + TripDirectionInbound = 1; +} + +message StopTimepoint { + StopTimepointEnum val = 1; +} + +enum StopTimepointEnum { + Approximate = 0; + StopTimepointExact = 1; +} + +message CalendarExceptionType { + CalendarExceptionTypeEnum val = 1; +} + +enum CalendarExceptionTypeEnum { + CalendarUnknown = 0; + CalendarAdded = 1; + CalendarRemoved = 2; +} + +message FrequencyExactTime { + FrequencyExactTimeEnum val = 1; +} + +enum FrequencyExactTimeEnum { + FrequencyExactTimeFrequency = 0; + FrequencyExactTimeScheduled = 1; +} + +message TransferType { + TransferTypeEnum val = 1; +} + +enum TransferTypeEnum { + TransferTypeRecommended = 0; + TransferTypeTimed = 1; + TransferTypeMinTime = 2; + TransferTypeDisallowed = 3; + TransferTypeInSeat = 4; + TransferTypeMustExit = 5; +} + +message PathwayDirectionality { + PathwayDirectionalityEnum val = 1; +} + +enum PathwayDirectionalityEnum { + PathwayUnidirectional = 0; + PathwayBidirectional = 1; +} + +message PathwayMode { + PathwayModeEnum val = 1; +} + +enum PathwayModeEnum { + PathwayModeUnknown = 0; + PathwayModeWalkway = 1; + PathwayModeStairs = 2; + PathwayModeTravelator = 3; + PathwayModeEscalator = 4; + PathwayModeElevator = 5; + PatthwayModeFareGate = 6; + PathwayModeExitGate = 7; +} + +message BookingRuleType { + BookingRuleTypeEnum val = 1; +} + +enum BookingRuleTypeEnum { + BookingRuleTypeRealtime = 0; + BookingRuleTypeSameday = 1; + BookingRuleTypePriorday = 2; +} + +message FareMediaType { + FareMediaTypeEnum val = 1; +} + +enum FareMediaTypeEnum { + FareMediaNone = 0; + FareMediaPaper = 1; + FareMediaCard = 2; + FareMediaOpenLoop = 3; + FareMediaApp = 4; +} + +message FareTransferType { + FareTransferTypeEnum val = 1; +} + +enum FareTransferTypeEnum { + FareTransfer0 = 0; + FareTransfer1 = 1; + FareTransfer2 = 2; +} + +message DurationLimitType { + DurationLimitTypeEnum val = 1; +} + +enum DurationLimitTypeEnum { + DurationLimit0 = 0; + DurationLimit1 = 1; + DurationLimit2 = 2; + DurationLimit3 = 3; +} + +message FareAttributeTransferType { + FareAttributeTransferTypeEnum val = 1; +} + +enum FareAttributeTransferTypeEnum { + FareAttributeTransferTypeDisallowed = 0; + FareAttributeTransferTypeOnce = 1; + FareAttributeTransferTypeTwice = 2; +} + +message PaymentMethod { + PaymentMethodEnum val = 1; +} + +enum PaymentMethodEnum { + PaymentMethodOnboard = 0; + PaymentMethodOffboard = 1; +} + +message AttributionRole { + AttributionRoleEnum val = 1; +} + +enum AttributionRoleEnum { + AttributionRoleNotAssigned = 0; + AttributionRoleAssigned = 1; +} + 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 new file mode 100644 index 00000000..b1a060a3 --- /dev/null +++ b/internal/tlpb/gtfs/gtfs.go @@ -0,0 +1,469 @@ +package gtfs + +import ( + "github.com/interline-io/transitland-lib/tt" +) + +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 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 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 tt.Reference + PlatformCode tt.String +} + +type Route struct { + DatabaseEntity + 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 tt.String +} + +type Trip struct { + DatabaseEntity + 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 +} + +type StopTime struct { + DatabaseEntity + 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 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 tt.Reference + Date tt.Date + ExceptionType CalendarExceptionType +} + +type FareAttribute struct { + DatabaseEntity + FareID tt.Key + Price Money + CurrencyType tt.Currency + PaymentMethod PaymentMethod + Transfers FareAttributeTransferType + AgencyID tt.Reference + TransferDuration tt.Int +} + +type FareRule struct { + DatabaseEntity + FareID tt.Key + RouteID tt.Reference + OriginID tt.Reference + DestinationID tt.Reference + ContainsID tt.Reference +} + +type Timeframe struct { + DatabaseEntity + TimeframeGroupID tt.Key + StartTime tt.Seconds + EndTime tt.Seconds + ServiceID tt.Reference +} + +type FareMedia struct { + DatabaseEntity + FareMediaID tt.Key + FareMediaName tt.String + FareMediaType FareMediaType +} + +type FareProduct struct { + DatabaseEntity + FareProductID tt.Key + FareProductName tt.String + FareMediaID tt.Reference + Amount Money + Currency tt.Currency +} + +type FareLegRule struct { + DatabaseEntity + 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 tt.Reference + ToLegGroupID tt.Reference + TransferCount tt.Int + DurationLimitType DurationLimitType + FareTransferType FareTransferType + FareProductID tt.Reference +} + +type Area struct { + DatabaseEntity + AreaID tt.Key + AreaName tt.String +} + +type StopArea struct { + DatabaseEntity + AreaID tt.Reference + StopID tt.Reference +} + +type Network struct { + DatabaseEntity + NetworkID tt.Key + NetworkName tt.String +} + +type RouteNetwork struct { + DatabaseEntity + NetworkID tt.Reference + RouteID tt.Reference +} + +type Frequency struct { + DatabaseEntity + TripID tt.Reference + StartTime tt.Seconds + EndTime tt.Seconds + HeadwaySecs tt.Int + ExactTime FrequencyExactTime +} + +type Transfer struct { + DatabaseEntity + 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 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 tt.Key + LevelIndex tt.Float + LevelName tt.String +} + +type LocationGroup struct { + DatabaseEntity + LocationGroupID tt.Key + LocationGroupName tt.String +} + +type LocationGroupStop struct { + DatabaseEntity + LocationGroupID tt.Reference + StopID tt.Reference +} + +type BookingRule struct { + DatabaseEntity + 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 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 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 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 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 tt.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 Money struct { + Units int64 + Nanos int64 +} + +type WheelchairAccess struct { + tt.Option[WheelchairAccessEnum] +} + +type BikeAccess struct{ tt.Option[BikeAccessEnum] } + +type BoardAccess struct{ tt.Option[BoardAccessEnum] } + +type PickupAccess struct{ tt.Option[PickupAccessEnum] } + +type StopLocationType struct { + tt.Option[StopLocationTypeEnum] +} + +type RouteType struct{ tt.Option[RouteTypeEnum] } + +type TripDirection struct{ tt.Option[TripDirectionEnum] } + +type StopTimepoint struct{ tt.Option[StopTimepointEnum] } + +type CalendarExceptionType struct { + tt.Option[CalendarExceptionTypeEnum] +} + +type FrequencyExactTime struct { + tt.Option[FrequencyExactTimeEnum] +} + +type TransferType struct{ tt.Option[TransferTypeEnum] } + +type PathwayDirectionality struct { + tt.Option[PathwayDirectionalityEnum] +} + +type PathwayMode struct{ tt.Option[PathwayModeEnum] } + +type BookingRuleType struct{ tt.Option[BookingRuleTypeEnum] } + +type FareMediaType struct{ tt.Option[FareMediaTypeEnum] } + +type FareTransferType struct { + tt.Option[FareTransferTypeEnum] +} + +type DurationLimitType struct { + tt.Option[DurationLimitTypeEnum] +} + +type FareAttributeTransferType struct { + tt.Option[FareAttributeTransferTypeEnum] +} + +type PaymentMethod struct{ tt.Option[PaymentMethodEnum] } + +type AttributionRole struct{ tt.Option[AttributionRoleEnum] } diff --git a/internal/tlpb/pb/gen.go b/internal/tlpb/pb/gen.go new file mode 100644 index 00000000..47a24155 --- /dev/null +++ b/internal/tlpb/pb/gen.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/internal/tlpb/pb/gtfs.pb.go b/internal/tlpb/pb/gtfs.pb.go new file mode 100644 index 00000000..3b1fdfcf --- /dev/null +++ b/internal/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/tlcsv/reflect.go b/tlcsv/reflect.go index 613f7fef..59eb8c5e 100644 --- a/tlcsv/reflect.go +++ b/tlcsv/reflect.go @@ -70,6 +70,9 @@ func GetString(ent tt.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 { @@ -125,6 +128,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.(tt.EntityWithExtra); ok2 { @@ -163,6 +168,7 @@ func loadRowReflect(ent interface{}, row Row) []error { } } } + // fmt.Printf("ENT DONE: %T %#v\n", ent, ent) return errs } 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 +}