Add waitlist api and update the service intake form fields
diff --git a/README.md b/README.md index d35cf2e..e348a0a 100644 --- a/README.md +++ b/README.md
@@ -5,9 +5,9 @@ ## Testing Client -Before using either the order based or booking based test utilites, the Go -programming language must be installed on your workstation. A precompiled Go -binary for your operating system can be [found here](https://golang.org/dl/) +Before using the test utilites, the Go programming language must be installed on +your workstation. A precompiled Go binary for your operating system can be +[found here](https://golang.org/dl/) This guide will assume you're using the default GOPATH and subsequent GOBIN. For a comprehensive explanation of the GOPATH env variable please see @@ -52,6 +52,10 @@ go install $HOME/go/src/github.com/maps-booking-v3/testclient/bookingClient.go +Or the waitlist based test client, run + + go install $HOME/go/src/github.com/maps-booking-v3/testclient/waitlistClient.go + ### Installing the utilities with Windows Powershell First, build your Go directory structure. A comprehensive guide on the intended @@ -90,6 +94,10 @@ go install $env:HOME\go\src\github.com\maps-booking-v3\testclient\bookingClient.go +Or the waitlist based test client, run + + go install $env:HOME\go\src\github.com\maps-booking-v3\testclient\waitlistClient.go + ### Using the utilities After following the install steps above an executable should now live under the @@ -175,6 +183,36 @@ -output_to_terminal bool Output to terminal rather than a file. + waitlistClient.go + -server_addr string + Your http server's address in the format of host:port (default "example.com:80") + -service_feed string + Absolute path to service feed required for all tests except health. Feeds can be in either json or pb3 format. + -all_tests + Whether to test all endpoints syncronously. + -health_check_test + Whether to test the Health endpoint. + -batch_get_wait_estimates_test + Whether to test the BatchGetWaitEstimates endpoint. + -create_waitlist_entry_test + Whether to test the CreateWaitlistEntry endpoint. + -get_waitlist_entry_test + Whether to test the GetWaitlistEntry endpoint. + -delete_waitlist_entry_test + Whether to test the DeleteWaitlistEntry endpoint. + -ca_file string + Absolute path to your server's Certificate Authority root cert. Downloading all roots currently recommended by the Google Internet Authority is a suitable alternative https://pki.google.com/roots.pem. Leave blank to connect using http rather than https. + -credentials_file string + File containing credentials for your server. Leave blank to bypass authentication. File should have exactly one line of the form 'username:password'. + -full_server_name string + Fully qualified domain name. Same name used to sign CN. Only necessary if ca_file is specified and the base URL differs from the server address. + -num_test_services int + Maximum number of services to test from service_feed. Services will be selected randomly (default 10) + -output_dir string + Absolute path of dir to dump log file. + -output_to_terminal bool + Output to terminal rather than a file. + Plese note that this testing tool makes reservations as a test user with **user_id = 0**. Therefore, if you are running the tool many times, or before final tests, you might want cancel all previous bookings for that user to make @@ -188,18 +226,20 @@ bin/orderClient -server_addr="external-dns:443" -all_tests=true -output_dir="/tmp" -availability_feed="/tmp/test.json" -service_feed="/tmp/service.json" + bin/waitlistClient -server_addr="external-dns:443" -all_tests=true -output_dir="/tmp" service_feed="/tmp/service.json" + ### Testing -It is important that as part of testing you verify all aspects of booking server +It is important that as part of testing you verify all aspects of the server invocation - authentication, availability, cancellation, and rescheduling tests. As the final step, you must be able to execute the designated utility with the flag -all_tests=true and it should successfully pass the entire series of tests. ### Parsing the output -Both test utilities will output a file with the prefix 'http_test_client_log_' -followed by a timestamp in RFC3339 format. The output file contains a -complete log of all Requests and Responses sent/received by the testing tool as -well as diffs of the expected response in the event of errors. -Similar to a compiler, an overview of the entire run can be found at the end -of the file for user friendly digestion. +The test utilities will output a file with the prefix 'http_test_client_log_' +followed by a timestamp in RFC3339 format. The output file contains a complete +log of all Requests and Responses sent/received by the testing tool as well as +diffs of the expected response in the event of errors. Similar to a compiler, an +overview of the entire run can be found at the end of the file for user friendly +digestion.
diff --git a/api/api.go b/api/api.go index 7b0a202..3d487fa 100644 --- a/api/api.go +++ b/api/api.go
@@ -40,6 +40,7 @@ fpb "github.com/maps-booking-v3/feeds" mpb "github.com/maps-booking-v3/v3" + wpb "github.com/maps-booking-v3/waitlist" ) const ( @@ -589,3 +590,160 @@ return nil } + +// BatchGetWaitEstimates calls the partners API and verifies the returned WaitEstimates. +func BatchGetWaitEstimates(s *fpb.Service, conn *HTTPConnection) error { + rules := s.GetWaitlistRules() + + ps := make([]int32, rules.GetMaxPartySize()-rules.GetMinPartySize()) + for i := range ps { + ps[i] = rules.GetMinPartySize() + int32(i) + } + reqPB := &wpb.BatchGetWaitEstimatesRequest{ + MerchantId: s.GetMerchantId(), + ServiceId: s.GetServiceId(), + PartySize: ps, + } + req, err := conn.marshaler.MarshalToString(reqPB) + if err != nil { + return fmt.Errorf("Could not convert pb3 to json: %v", reqPB) + } + httpResp, err := sendRequest("BatchGetWaitEstimates", req, conn) + if err != nil { + return fmt.Errorf("invalid response. BatchGetWaitEstimates yielded error: %v", err) + } + var resp wpb.BatchGetWaitEstimatesResponse + if err := jsonpb.UnmarshalString(httpResp, &resp); err != nil { + return fmt.Errorf("BatchGetWaitEstimates: Could not parse HTTP response to pb3: %v", err) + } + + if resp.GetWaitlistStatus() == wpb.WaitlistStatus_WAITLIST_STATUS_UNSPECIFIED { + return errors.New("BatchGetWaitEstimates: waitlist status was not specified in response") + } else if resp.GetWaitlistStatus() != wpb.WaitlistStatus_OPEN { + // Waitlist is closed. No further validation necessary. + return nil + } + + // Waitlist status is OPEN + for _, we := range resp.GetWaitEstimate() { + if err := utils.ValidateWaitEstimate(we); err != nil { + return fmt.Errorf("BatchGetWaitEstimates invalid, %s, service id: %s", + err.Error(), s.GetServiceId()) + } else if we.GetPartySize() > rules.GetMaxPartySize() || + we.GetPartySize() < rules.GetMinPartySize() { + return fmt.Errorf("batchGetWaitEstimates: Party size outside of min/max for service id: %s."+ + "returned party size: %d, min party size: %d, max party size: %d", + s.GetServiceId(), we.GetPartySize(), rules.GetMinPartySize(), rules.GetMaxPartySize()) + } + } + return nil +} + +// CreateWaitlistEntry attempts to create waitlist entries from a service. +// The max party size listed for the service's waitlist rules is used for +// the waitlist entry's party size. +func CreateWaitlistEntry(s *fpb.Service, conn *HTTPConnection) (string, error) { + gen := rand.New(rand.NewSource(time.Now().UnixNano())) + + reqPB := &wpb.CreateWaitlistEntryRequest{ + MerchantId: s.GetMerchantId(), + ServiceId: s.GetServiceId(), + PartySize: s.GetWaitlistRules().GetMaxPartySize(), + UserInformation: &wpb.UserInformation{ + UserId: userID, + GivenName: firstName, + FamilyName: lastName, + Telephone: telephone, + Email: email, + }, + IdempotencyToken: strconv.Itoa(gen.Intn(1000000)), + } + if s.GetWaitlistRules().GetSupportsAdditionalRequest() { + reqPB.AdditionalRequest = "test additional request" + } + req, err := conn.marshaler.MarshalToString(reqPB) + if err != nil { + return "", fmt.Errorf("Could not convert pb3 to json: %v", reqPB) + } + + httpResp, err := sendRequest("CreateWaitlistEntry", req, conn) + if err != nil { + return "", fmt.Errorf("invalid response. CreateWaitlistEntry yielded error: %v", err) + } + var resp wpb.CreateWaitlistEntryResponse + if err := jsonpb.UnmarshalString(httpResp, &resp); err != nil { + return "", fmt.Errorf("CreateWaitlistEntry: Could not parse HTTP response to pb3: %v", err) + } + + if resp.GetWaitlistBusinessLogicFailure() != nil { + return "", fmt.Errorf("invalid response. CreateWaitlistEntry failed with business logic failure %v", + resp.GetWaitlistBusinessLogicFailure()) + } + + if resp.GetWaitlistEntryId() == "" { + return "", fmt.Errorf("invalid response. CreateWaitlistEntry missing waitlist entry id for service: %s", + s.GetServiceId()) + } + + // Perform idempotency test. + log.Printf("Idempotency check -- CreateWaitlistEntry Request. Sent(unix): %s, Request %s", time.Now().UTC().Format(time.RFC850), reqPB.String()) + idemHTTPResp, err := sendRequest("CreateWaitlistEntry", req, conn) + if err != nil { + return "", fmt.Errorf("invalid response. Idempotency check yielded error: %v", err) + } + var idemResp wpb.CreateWaitlistEntryResponse + if err := jsonpb.UnmarshalString(idemHTTPResp, &idemResp); err != nil { + return "", fmt.Errorf("CreateWaitlistEntry idem: Could not parse HTTP response to pb3: %v", err) + } + + if diff := cmp.Diff(idemResp, resp); diff != "" { + return "", fmt.Errorf("Idempotency check invalid (-got +want)\n%s for service: %s", diff, s.GetServiceId()) + } + + return resp.GetWaitlistEntryId(), nil +} + +// GetWaitlistEntry retrieves and validates the booking for the specified +// waitlist entry id. +func GetWaitlistEntry(id string, conn *HTTPConnection) (*wpb.WaitlistEntry, error) { + reqPB := &wpb.GetWaitlistEntryRequest{ + WaitlistEntryId: id, + } + + req, err := conn.marshaler.MarshalToString(reqPB) + if err != nil { + return nil, fmt.Errorf("Could not convert pb3 to json: %v", reqPB) + } + httpResp, err := sendRequest("GetWaitlistEntry", req, conn) + if err != nil { + return nil, fmt.Errorf("invalid response. GetWaitlistEntry yielded error: %v", err) + } + var resp wpb.GetWaitlistEntryResponse + if err := jsonpb.UnmarshalString(httpResp, &resp); err != nil { + return nil, fmt.Errorf("GetWaitlistEntry: Could not parse HTTP response to pb3: %v", err) + } + + if iE := utils.ValidateWaitlistEntry(resp.GetWaitlistEntry()); iE != nil { + return nil, fmt.Errorf("invalid response. GetWaitlistEntry: %s", iE.Error()) + } + + return resp.GetWaitlistEntry(), nil +} + +// DeleteWaitlistEntry makes a request to delete the waitlist entry. +func DeleteWaitlistEntry(id string, conn *HTTPConnection) error { + reqPB := &wpb.DeleteWaitlistEntryRequest{ + WaitlistEntryId: id, + } + + req, err := conn.marshaler.MarshalToString(reqPB) + if err != nil { + return fmt.Errorf("Could not convert pb3 to json: %v", reqPB) + } + + if _, err = sendRequest("DeleteWaitlistEntry", req, conn); err != nil { + return fmt.Errorf("invalid response. DeleteWaitlistEntry yielded error: %v", err) + } + + return nil +}
diff --git a/feeds/feeds.pb.go b/feeds/feeds.pb.go index e9fa181..3766f8b 100644 --- a/feeds/feeds.pb.go +++ b/feeds/feeds.pb.go
@@ -1,42 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: feeds.proto -/* -Package maps_booking_feeds is a generated protocol buffer package. - -It is generated from these files: - feeds.proto - -It has these top-level messages: - FeedMetadata - AvailabilityFeed - ServiceAvailability - Availability - Resources - TimeRange - ServiceFeed - Service - Price - SchedulingRules - TaxRate - ServiceIntakeFormField - ServiceIntakeForm - Deposit - NoShowFee - PriceType - RequireCreditCard - ActionLink - ActionPlatform - TicketType - RelatedMedia - ServiceAttributeValueId -*/ - package maps_booking_feeds -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -68,6 +39,7 @@ 0: "FIXED_RATE_DEFAULT", 1: "PER_PERSON", } + var PriceType_value = map[string]int32{ "FIXED_RATE_DEFAULT": 0, "PER_PERSON": 1, @@ -76,8 +48,9 @@ func (x PriceType) String() string { return proto.EnumName(PriceType_name, int32(x)) } + func (PriceType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{0} + return fileDescriptor_7aa923a38d4cd9d3, []int{0} } // Defines whether a credit card is required in order to book an appointment. @@ -103,6 +76,7 @@ 1: "REQUIRE_CREDIT_CARD_CONDITIONAL", 2: "REQUIRE_CREDIT_CARD_ALWAYS", } + var RequireCreditCard_value = map[string]int32{ "REQUIRE_CREDIT_CARD_UNSPECIFIED": 0, "REQUIRE_CREDIT_CARD_CONDITIONAL": 1, @@ -112,8 +86,9 @@ func (x RequireCreditCard) String() string { return proto.EnumName(RequireCreditCard_name, int32(x)) } + func (RequireCreditCard) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{1} + return fileDescriptor_7aa923a38d4cd9d3, []int{1} } // The platform that the action is performed on. Web application is the general @@ -142,6 +117,7 @@ 3: "ACTION_PLATFORM_ANDROID", 4: "ACTION_PLATFORM_IOS", } + var ActionPlatform_value = map[string]int32{ "ACTION_PLATFORM_UNSPECIFIED": 0, "ACTION_PLATFORM_WEB_APPLICATION": 1, @@ -153,8 +129,9 @@ func (x ActionPlatform) String() string { return proto.EnumName(ActionPlatform_name, int32(x)) } + func (ActionPlatform) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{2} + return fileDescriptor_7aa923a38d4cd9d3, []int{2} } type FeedMetadata_ProcessingInstruction int32 @@ -176,6 +153,7 @@ 1: "PROCESS_AS_COMPLETE", 2: "PROCESS_AS_INCREMENTAL", } + var FeedMetadata_ProcessingInstruction_value = map[string]int32{ "PROCESS_UNKNOWN": 0, "PROCESS_AS_COMPLETE": 1, @@ -185,8 +163,9 @@ func (x FeedMetadata_ProcessingInstruction) String() string { return proto.EnumName(FeedMetadata_ProcessingInstruction_name, int32(x)) } + func (FeedMetadata_ProcessingInstruction) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{0, 0} + return fileDescriptor_7aa923a38d4cd9d3, []int{0, 0} } // Enum to indicate the prepayment type. @@ -210,6 +189,7 @@ 2: "OPTIONAL", 3: "NOT_SUPPORTED", } + var Service_PrepaymentType_value = map[string]int32{ "PREPAYMENT_TYPE_UNSPECIFIED": 0, "REQUIRED": 1, @@ -220,8 +200,9 @@ func (x Service_PrepaymentType) String() string { return proto.EnumName(Service_PrepaymentType_name, int32(x)) } + func (Service_PrepaymentType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{7, 0} + return fileDescriptor_7aa923a38d4cd9d3, []int{7, 0} } type Service_ServiceType int32 @@ -241,6 +222,7 @@ 3: "SERVICE_TYPE_EVENT_TICKET", 4: "SERVICE_TYPE_TRIP_TOUR", } + var Service_ServiceType_value = map[string]int32{ "SERVICE_TYPE_UNSPECIFIED": 0, "SERVICE_TYPE_DINING_RESERVATION": 1, @@ -252,8 +234,9 @@ func (x Service_ServiceType) String() string { return proto.EnumName(Service_ServiceType_name, int32(x)) } + func (Service_ServiceType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{7, 1} + return fileDescriptor_7aa923a38d4cd9d3, []int{7, 1} } // Enum to indicate the type of field. @@ -285,6 +268,7 @@ 5: "DROPDOWN", 6: "BOOLEAN", } + var ServiceIntakeFormField_FieldType_value = map[string]int32{ "FIELD_TYPE_UNSPECIFIED": 0, "SHORT_ANSWER": 1, @@ -298,8 +282,9 @@ func (x ServiceIntakeFormField_FieldType) String() string { return proto.EnumName(ServiceIntakeFormField_FieldType_name, int32(x)) } + func (ServiceIntakeFormField_FieldType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{11, 0} + return fileDescriptor_7aa923a38d4cd9d3, []int{11, 0} } // Enum to indicate the type of this media source. Only photos are supported. @@ -318,6 +303,7 @@ 0: "TYPE_UNSPECIFIED", 1: "PHOTO", } + var RelatedMedia_MediaType_value = map[string]int32{ "TYPE_UNSPECIFIED": 0, "PHOTO": 1, @@ -326,8 +312,9 @@ func (x RelatedMedia_MediaType) String() string { return proto.EnumName(RelatedMedia_MediaType_name, int32(x)) } + func (RelatedMedia_MediaType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{17, 0} + return fileDescriptor_7aa923a38d4cd9d3, []int{17, 0} } type FeedMetadata struct { @@ -369,16 +356,17 @@ func (m *FeedMetadata) String() string { return proto.CompactTextString(m) } func (*FeedMetadata) ProtoMessage() {} func (*FeedMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{0} + return fileDescriptor_7aa923a38d4cd9d3, []int{0} } + func (m *FeedMetadata) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FeedMetadata.Unmarshal(m, b) } func (m *FeedMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FeedMetadata.Marshal(b, m, deterministic) } -func (dst *FeedMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_FeedMetadata.Merge(dst, src) +func (m *FeedMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_FeedMetadata.Merge(m, src) } func (m *FeedMetadata) XXX_Size() int { return xxx_messageInfo_FeedMetadata.Size(m) @@ -436,16 +424,17 @@ func (m *AvailabilityFeed) String() string { return proto.CompactTextString(m) } func (*AvailabilityFeed) ProtoMessage() {} func (*AvailabilityFeed) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{1} + return fileDescriptor_7aa923a38d4cd9d3, []int{1} } + func (m *AvailabilityFeed) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AvailabilityFeed.Unmarshal(m, b) } func (m *AvailabilityFeed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_AvailabilityFeed.Marshal(b, m, deterministic) } -func (dst *AvailabilityFeed) XXX_Merge(src proto.Message) { - xxx_messageInfo_AvailabilityFeed.Merge(dst, src) +func (m *AvailabilityFeed) XXX_Merge(src proto.Message) { + xxx_messageInfo_AvailabilityFeed.Merge(m, src) } func (m *AvailabilityFeed) XXX_Size() int { return xxx_messageInfo_AvailabilityFeed.Size(m) @@ -521,16 +510,17 @@ func (m *ServiceAvailability) String() string { return proto.CompactTextString(m) } func (*ServiceAvailability) ProtoMessage() {} func (*ServiceAvailability) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{2} + return fileDescriptor_7aa923a38d4cd9d3, []int{2} } + func (m *ServiceAvailability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServiceAvailability.Unmarshal(m, b) } func (m *ServiceAvailability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ServiceAvailability.Marshal(b, m, deterministic) } -func (dst *ServiceAvailability) XXX_Merge(src proto.Message) { - xxx_messageInfo_ServiceAvailability.Merge(dst, src) +func (m *ServiceAvailability) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceAvailability.Merge(m, src) } func (m *ServiceAvailability) XXX_Size() int { return xxx_messageInfo_ServiceAvailability.Size(m) @@ -709,16 +699,17 @@ func (m *Availability) String() string { return proto.CompactTextString(m) } func (*Availability) ProtoMessage() {} func (*Availability) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{3} + return fileDescriptor_7aa923a38d4cd9d3, []int{3} } + func (m *Availability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Availability.Unmarshal(m, b) } func (m *Availability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Availability.Marshal(b, m, deterministic) } -func (dst *Availability) XXX_Merge(src proto.Message) { - xxx_messageInfo_Availability.Merge(dst, src) +func (m *Availability) XXX_Merge(src proto.Message) { + xxx_messageInfo_Availability.Merge(m, src) } func (m *Availability) XXX_Size() int { return xxx_messageInfo_Availability.Size(m) @@ -868,16 +859,17 @@ func (m *Availability_Recurrence) String() string { return proto.CompactTextString(m) } func (*Availability_Recurrence) ProtoMessage() {} func (*Availability_Recurrence) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{3, 0} + return fileDescriptor_7aa923a38d4cd9d3, []int{3, 0} } + func (m *Availability_Recurrence) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Availability_Recurrence.Unmarshal(m, b) } func (m *Availability_Recurrence) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Availability_Recurrence.Marshal(b, m, deterministic) } -func (dst *Availability_Recurrence) XXX_Merge(src proto.Message) { - xxx_messageInfo_Availability_Recurrence.Merge(dst, src) +func (m *Availability_Recurrence) XXX_Merge(src proto.Message) { + xxx_messageInfo_Availability_Recurrence.Merge(m, src) } func (m *Availability_Recurrence) XXX_Size() int { return xxx_messageInfo_Availability_Recurrence.Size(m) @@ -929,16 +921,17 @@ func (m *Availability_ScheduleException) String() string { return proto.CompactTextString(m) } func (*Availability_ScheduleException) ProtoMessage() {} func (*Availability_ScheduleException) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{3, 1} + return fileDescriptor_7aa923a38d4cd9d3, []int{3, 1} } + func (m *Availability_ScheduleException) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Availability_ScheduleException.Unmarshal(m, b) } func (m *Availability_ScheduleException) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Availability_ScheduleException.Marshal(b, m, deterministic) } -func (dst *Availability_ScheduleException) XXX_Merge(src proto.Message) { - xxx_messageInfo_Availability_ScheduleException.Merge(dst, src) +func (m *Availability_ScheduleException) XXX_Merge(src proto.Message) { + xxx_messageInfo_Availability_ScheduleException.Merge(m, src) } func (m *Availability_ScheduleException) XXX_Size() int { return xxx_messageInfo_Availability_ScheduleException.Size(m) @@ -997,16 +990,17 @@ func (m *Resources) String() string { return proto.CompactTextString(m) } func (*Resources) ProtoMessage() {} func (*Resources) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{4} + return fileDescriptor_7aa923a38d4cd9d3, []int{4} } + func (m *Resources) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Resources.Unmarshal(m, b) } func (m *Resources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Resources.Marshal(b, m, deterministic) } -func (dst *Resources) XXX_Merge(src proto.Message) { - xxx_messageInfo_Resources.Merge(dst, src) +func (m *Resources) XXX_Merge(src proto.Message) { + xxx_messageInfo_Resources.Merge(m, src) } func (m *Resources) XXX_Size() int { return xxx_messageInfo_Resources.Size(m) @@ -1064,16 +1058,17 @@ func (m *TimeRange) String() string { return proto.CompactTextString(m) } func (*TimeRange) ProtoMessage() {} func (*TimeRange) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{5} + return fileDescriptor_7aa923a38d4cd9d3, []int{5} } + func (m *TimeRange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TimeRange.Unmarshal(m, b) } func (m *TimeRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_TimeRange.Marshal(b, m, deterministic) } -func (dst *TimeRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_TimeRange.Merge(dst, src) +func (m *TimeRange) XXX_Merge(src proto.Message) { + xxx_messageInfo_TimeRange.Merge(m, src) } func (m *TimeRange) XXX_Size() int { return xxx_messageInfo_TimeRange.Size(m) @@ -1110,16 +1105,17 @@ func (m *ServiceFeed) String() string { return proto.CompactTextString(m) } func (*ServiceFeed) ProtoMessage() {} func (*ServiceFeed) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{6} + return fileDescriptor_7aa923a38d4cd9d3, []int{6} } + func (m *ServiceFeed) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServiceFeed.Unmarshal(m, b) } func (m *ServiceFeed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ServiceFeed.Marshal(b, m, deterministic) } -func (dst *ServiceFeed) XXX_Merge(src proto.Message) { - xxx_messageInfo_ServiceFeed.Merge(dst, src) +func (m *ServiceFeed) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceFeed.Merge(m, src) } func (m *ServiceFeed) XXX_Size() int { return xxx_messageInfo_ServiceFeed.Size(m) @@ -1230,7 +1226,16 @@ // Rules to book/cancel an appointment. (optional) Rules *SchedulingRules `protobuf:"bytes,6,opt,name=rules,proto3" json:"rules,omitempty"` // Intake forms to customize the service. (optional) - Form []*ServiceIntakeForm `protobuf:"bytes,7,rep,name=form,proto3" json:"form,omitempty"` + // + // Deprecated. Please see intake_form and per_ticket_intake_form. + Form []*ServiceIntakeForm `protobuf:"bytes,7,rep,name=form,proto3" json:"form,omitempty"` // Deprecated: Do not use. + // A form requesting additional information from the user when they book this + // service. (optional) + IntakeForm *ServiceIntakeForm `protobuf:"bytes,20,opt,name=intake_form,json=intakeForm,proto3" json:"intake_form,omitempty"` + // A form requesting additional information from the user when they book this + // service. This form must be filled out once for each ticket the user is + // booking. (optional) + PerTicketIntakeForm *ServiceIntakeForm `protobuf:"bytes,21,opt,name=per_ticket_intake_form,json=perTicketIntakeForm,proto3" json:"per_ticket_intake_form,omitempty"` // Whether a prepayment is required, optional or not supported. (optional) PrepaymentType Service_PrepaymentType `protobuf:"varint,8,opt,name=prepayment_type,json=prepaymentType,proto3,enum=maps.booking.feeds.Service_PrepaymentType" json:"prepayment_type,omitempty"` // The service's tax rate. If present this field overrides any tax_rate set at @@ -1266,25 +1271,30 @@ // Each Service may have zero or more values for each service attribute // defined in the corresponding Merchant. ServiceAttributeValueId []*ServiceAttributeValueId `protobuf:"bytes,18,rep,name=service_attribute_value_id,json=serviceAttributeValueId,proto3" json:"service_attribute_value_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // Rules related to joining the waitlist. Should be populated if the service + // and merchant support waitlist functionality. Should not be populated + // otherwise. + WaitlistRules *WaitlistRules `protobuf:"bytes,19,opt,name=waitlist_rules,json=waitlistRules,proto3" json:"waitlist_rules,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Service) Reset() { *m = Service{} } func (m *Service) String() string { return proto.CompactTextString(m) } func (*Service) ProtoMessage() {} func (*Service) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{7} + return fileDescriptor_7aa923a38d4cd9d3, []int{7} } + func (m *Service) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Service.Unmarshal(m, b) } func (m *Service) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Service.Marshal(b, m, deterministic) } -func (dst *Service) XXX_Merge(src proto.Message) { - xxx_messageInfo_Service.Merge(dst, src) +func (m *Service) XXX_Merge(src proto.Message) { + xxx_messageInfo_Service.Merge(m, src) } func (m *Service) XXX_Size() int { return xxx_messageInfo_Service.Size(m) @@ -1337,6 +1347,7 @@ return nil } +// Deprecated: Do not use. func (m *Service) GetForm() []*ServiceIntakeForm { if m != nil { return m.Form @@ -1344,6 +1355,20 @@ return nil } +func (m *Service) GetIntakeForm() *ServiceIntakeForm { + if m != nil { + return m.IntakeForm + } + return nil +} + +func (m *Service) GetPerTicketIntakeForm() *ServiceIntakeForm { + if m != nil { + return m.PerTicketIntakeForm + } + return nil +} + func (m *Service) GetPrepaymentType() Service_PrepaymentType { if m != nil { return m.PrepaymentType @@ -1421,6 +1446,13 @@ return nil } +func (m *Service) GetWaitlistRules() *WaitlistRules { + if m != nil { + return m.WaitlistRules + } + return nil +} + // The price of a service or a fee. type Price struct { // The price in micro-units of the currency. @@ -1443,16 +1475,17 @@ func (m *Price) String() string { return proto.CompactTextString(m) } func (*Price) ProtoMessage() {} func (*Price) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{8} + return fileDescriptor_7aa923a38d4cd9d3, []int{8} } + func (m *Price) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Price.Unmarshal(m, b) } func (m *Price) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Price.Marshal(b, m, deterministic) } -func (dst *Price) XXX_Merge(src proto.Message) { - xxx_messageInfo_Price.Merge(dst, src) +func (m *Price) XXX_Merge(src proto.Message) { + xxx_messageInfo_Price.Merge(m, src) } func (m *Price) XXX_Size() int { return xxx_messageInfo_Price.Size(m) @@ -1505,16 +1538,17 @@ func (m *SchedulingRules) String() string { return proto.CompactTextString(m) } func (*SchedulingRules) ProtoMessage() {} func (*SchedulingRules) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{9} + return fileDescriptor_7aa923a38d4cd9d3, []int{9} } + func (m *SchedulingRules) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SchedulingRules.Unmarshal(m, b) } func (m *SchedulingRules) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_SchedulingRules.Marshal(b, m, deterministic) } -func (dst *SchedulingRules) XXX_Merge(src proto.Message) { - xxx_messageInfo_SchedulingRules.Merge(dst, src) +func (m *SchedulingRules) XXX_Merge(src proto.Message) { + xxx_messageInfo_SchedulingRules.Merge(m, src) } func (m *SchedulingRules) XXX_Size() int { return xxx_messageInfo_SchedulingRules.Size(m) @@ -1584,16 +1618,17 @@ func (m *TaxRate) String() string { return proto.CompactTextString(m) } func (*TaxRate) ProtoMessage() {} func (*TaxRate) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{10} + return fileDescriptor_7aa923a38d4cd9d3, []int{10} } + func (m *TaxRate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaxRate.Unmarshal(m, b) } func (m *TaxRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_TaxRate.Marshal(b, m, deterministic) } -func (dst *TaxRate) XXX_Merge(src proto.Message) { - xxx_messageInfo_TaxRate.Merge(dst, src) +func (m *TaxRate) XXX_Merge(src proto.Message) { + xxx_messageInfo_TaxRate.Merge(m, src) } func (m *TaxRate) XXX_Size() int { return xxx_messageInfo_TaxRate.Size(m) @@ -1613,6 +1648,10 @@ // Defines a field that is included in a ServiceIntakeForm. type ServiceIntakeFormField struct { + // A string from an aggregator partner which uniquely identifies a form field. + // This id should be the same as the id in the corresponding form field + // answer. (required) + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` // The type of this field. (required) Type ServiceIntakeFormField_FieldType `protobuf:"varint,1,opt,name=type,proto3,enum=maps.booking.feeds.ServiceIntakeFormField_FieldType" json:"type,omitempty"` // The text shown to the user for this field. (required) @@ -1631,16 +1670,17 @@ func (m *ServiceIntakeFormField) String() string { return proto.CompactTextString(m) } func (*ServiceIntakeFormField) ProtoMessage() {} func (*ServiceIntakeFormField) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{11} + return fileDescriptor_7aa923a38d4cd9d3, []int{11} } + func (m *ServiceIntakeFormField) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServiceIntakeFormField.Unmarshal(m, b) } func (m *ServiceIntakeFormField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ServiceIntakeFormField.Marshal(b, m, deterministic) } -func (dst *ServiceIntakeFormField) XXX_Merge(src proto.Message) { - xxx_messageInfo_ServiceIntakeFormField.Merge(dst, src) +func (m *ServiceIntakeFormField) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceIntakeFormField.Merge(m, src) } func (m *ServiceIntakeFormField) XXX_Size() int { return xxx_messageInfo_ServiceIntakeFormField.Size(m) @@ -1651,6 +1691,13 @@ var xxx_messageInfo_ServiceIntakeFormField proto.InternalMessageInfo +func (m *ServiceIntakeFormField) GetId() string { + if m != nil { + return m.Id + } + return "" +} + func (m *ServiceIntakeFormField) GetType() ServiceIntakeFormField_FieldType { if m != nil { return m.Type @@ -1684,11 +1731,11 @@ // Fields that will be displayed to the user. (required) Field []*ServiceIntakeFormField `protobuf:"bytes,1,rep,name=field,proto3" json:"field,omitempty"` // If true, this form will be shown to first time customers. - // (one of first_time_customers or returning_customers required) - FirstTimeCustomers bool `protobuf:"varint,2,opt,name=first_time_customers,json=firstTimeCustomers,proto3" json:"first_time_customers,omitempty"` + // Deprecated. This functionality is not supported for intake forms. + FirstTimeCustomers bool `protobuf:"varint,2,opt,name=first_time_customers,json=firstTimeCustomers,proto3" json:"first_time_customers,omitempty"` // Deprecated: Do not use. // If true, this form will be shown to repeat customers. - // (one of first_time_customers or returning_customers required) - ReturningCustomers bool `protobuf:"varint,3,opt,name=returning_customers,json=returningCustomers,proto3" json:"returning_customers,omitempty"` + // Deprecated. This functionality is not supported for intake forms. + ReturningCustomers bool `protobuf:"varint,3,opt,name=returning_customers,json=returningCustomers,proto3" json:"returning_customers,omitempty"` // Deprecated: Do not use. XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1698,16 +1745,17 @@ func (m *ServiceIntakeForm) String() string { return proto.CompactTextString(m) } func (*ServiceIntakeForm) ProtoMessage() {} func (*ServiceIntakeForm) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{12} + return fileDescriptor_7aa923a38d4cd9d3, []int{12} } + func (m *ServiceIntakeForm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServiceIntakeForm.Unmarshal(m, b) } func (m *ServiceIntakeForm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ServiceIntakeForm.Marshal(b, m, deterministic) } -func (dst *ServiceIntakeForm) XXX_Merge(src proto.Message) { - xxx_messageInfo_ServiceIntakeForm.Merge(dst, src) +func (m *ServiceIntakeForm) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceIntakeForm.Merge(m, src) } func (m *ServiceIntakeForm) XXX_Size() int { return xxx_messageInfo_ServiceIntakeForm.Size(m) @@ -1725,6 +1773,7 @@ return nil } +// Deprecated: Do not use. func (m *ServiceIntakeForm) GetFirstTimeCustomers() bool { if m != nil { return m.FirstTimeCustomers @@ -1732,6 +1781,7 @@ return false } +// Deprecated: Do not use. func (m *ServiceIntakeForm) GetReturningCustomers() bool { if m != nil { return m.ReturningCustomers @@ -1757,16 +1807,17 @@ func (m *Deposit) String() string { return proto.CompactTextString(m) } func (*Deposit) ProtoMessage() {} func (*Deposit) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{13} + return fileDescriptor_7aa923a38d4cd9d3, []int{13} } + func (m *Deposit) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Deposit.Unmarshal(m, b) } func (m *Deposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Deposit.Marshal(b, m, deterministic) } -func (dst *Deposit) XXX_Merge(src proto.Message) { - xxx_messageInfo_Deposit.Merge(dst, src) +func (m *Deposit) XXX_Merge(src proto.Message) { + xxx_messageInfo_Deposit.Merge(m, src) } func (m *Deposit) XXX_Size() int { return xxx_messageInfo_Deposit.Size(m) @@ -1815,16 +1866,17 @@ func (m *NoShowFee) String() string { return proto.CompactTextString(m) } func (*NoShowFee) ProtoMessage() {} func (*NoShowFee) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{14} + return fileDescriptor_7aa923a38d4cd9d3, []int{14} } + func (m *NoShowFee) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NoShowFee.Unmarshal(m, b) } func (m *NoShowFee) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_NoShowFee.Marshal(b, m, deterministic) } -func (dst *NoShowFee) XXX_Merge(src proto.Message) { - xxx_messageInfo_NoShowFee.Merge(dst, src) +func (m *NoShowFee) XXX_Merge(src proto.Message) { + xxx_messageInfo_NoShowFee.Merge(m, src) } func (m *NoShowFee) XXX_Size() int { return xxx_messageInfo_NoShowFee.Size(m) @@ -1872,16 +1924,17 @@ func (m *ActionLink) String() string { return proto.CompactTextString(m) } func (*ActionLink) ProtoMessage() {} func (*ActionLink) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{15} + return fileDescriptor_7aa923a38d4cd9d3, []int{15} } + func (m *ActionLink) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ActionLink.Unmarshal(m, b) } func (m *ActionLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ActionLink.Marshal(b, m, deterministic) } -func (dst *ActionLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_ActionLink.Merge(dst, src) +func (m *ActionLink) XXX_Merge(src proto.Message) { + xxx_messageInfo_ActionLink.Merge(m, src) } func (m *ActionLink) XXX_Size() int { return xxx_messageInfo_ActionLink.Size(m) @@ -1942,16 +1995,17 @@ func (m *TicketType) String() string { return proto.CompactTextString(m) } func (*TicketType) ProtoMessage() {} func (*TicketType) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{16} + return fileDescriptor_7aa923a38d4cd9d3, []int{16} } + func (m *TicketType) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TicketType.Unmarshal(m, b) } func (m *TicketType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_TicketType.Marshal(b, m, deterministic) } -func (dst *TicketType) XXX_Merge(src proto.Message) { - xxx_messageInfo_TicketType.Merge(dst, src) +func (m *TicketType) XXX_Merge(src proto.Message) { + xxx_messageInfo_TicketType.Merge(m, src) } func (m *TicketType) XXX_Size() int { return xxx_messageInfo_TicketType.Size(m) @@ -2002,16 +2056,17 @@ func (m *RelatedMedia) String() string { return proto.CompactTextString(m) } func (*RelatedMedia) ProtoMessage() {} func (*RelatedMedia) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{17} + return fileDescriptor_7aa923a38d4cd9d3, []int{17} } + func (m *RelatedMedia) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RelatedMedia.Unmarshal(m, b) } func (m *RelatedMedia) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_RelatedMedia.Marshal(b, m, deterministic) } -func (dst *RelatedMedia) XXX_Merge(src proto.Message) { - xxx_messageInfo_RelatedMedia.Merge(dst, src) +func (m *RelatedMedia) XXX_Merge(src proto.Message) { + xxx_messageInfo_RelatedMedia.Merge(m, src) } func (m *RelatedMedia) XXX_Size() int { return xxx_messageInfo_RelatedMedia.Size(m) @@ -2061,16 +2116,17 @@ func (m *ServiceAttributeValueId) String() string { return proto.CompactTextString(m) } func (*ServiceAttributeValueId) ProtoMessage() {} func (*ServiceAttributeValueId) Descriptor() ([]byte, []int) { - return fileDescriptor_feeds_fc30b4ddff65807e, []int{18} + return fileDescriptor_7aa923a38d4cd9d3, []int{18} } + func (m *ServiceAttributeValueId) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServiceAttributeValueId.Unmarshal(m, b) } func (m *ServiceAttributeValueId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ServiceAttributeValueId.Marshal(b, m, deterministic) } -func (dst *ServiceAttributeValueId) XXX_Merge(src proto.Message) { - xxx_messageInfo_ServiceAttributeValueId.Merge(dst, src) +func (m *ServiceAttributeValueId) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceAttributeValueId.Merge(m, src) } func (m *ServiceAttributeValueId) XXX_Size() int { return xxx_messageInfo_ServiceAttributeValueId.Size(m) @@ -2095,6 +2151,70 @@ return "" } +// Rules related to joining the waitlist. +type WaitlistRules struct { + // Required. Must be a positive integer for services providing waitlist + // functionality. If the service or merchant does not provide waitlist + // functionality, this must not be populated. + MinPartySize int32 `protobuf:"varint,1,opt,name=min_party_size,json=minPartySize,proto3" json:"min_party_size,omitempty"` + // Required. Must be a positive integer for services providing waitlist + // functionality. If the service or merchant does not provide waitlist + // functionality, this must not be populated. + MaxPartySize int32 `protobuf:"varint,2,opt,name=max_party_size,json=maxPartySize,proto3" json:"max_party_size,omitempty"` + // If true, the user will be able to send a free-form additional text request + // when joining the waitlist for this service. + SupportsAdditionalRequest bool `protobuf:"varint,3,opt,name=supports_additional_request,json=supportsAdditionalRequest,proto3" json:"supports_additional_request,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WaitlistRules) Reset() { *m = WaitlistRules{} } +func (m *WaitlistRules) String() string { return proto.CompactTextString(m) } +func (*WaitlistRules) ProtoMessage() {} +func (*WaitlistRules) Descriptor() ([]byte, []int) { + return fileDescriptor_7aa923a38d4cd9d3, []int{19} +} + +func (m *WaitlistRules) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WaitlistRules.Unmarshal(m, b) +} +func (m *WaitlistRules) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WaitlistRules.Marshal(b, m, deterministic) +} +func (m *WaitlistRules) XXX_Merge(src proto.Message) { + xxx_messageInfo_WaitlistRules.Merge(m, src) +} +func (m *WaitlistRules) XXX_Size() int { + return xxx_messageInfo_WaitlistRules.Size(m) +} +func (m *WaitlistRules) XXX_DiscardUnknown() { + xxx_messageInfo_WaitlistRules.DiscardUnknown(m) +} + +var xxx_messageInfo_WaitlistRules proto.InternalMessageInfo + +func (m *WaitlistRules) GetMinPartySize() int32 { + if m != nil { + return m.MinPartySize + } + return 0 +} + +func (m *WaitlistRules) GetMaxPartySize() int32 { + if m != nil { + return m.MaxPartySize + } + return 0 +} + +func (m *WaitlistRules) GetSupportsAdditionalRequest() bool { + if m != nil { + return m.SupportsAdditionalRequest + } + return false +} + func init() { proto.RegisterType((*FeedMetadata)(nil), "maps.booking.feeds.FeedMetadata") proto.RegisterType((*AvailabilityFeed)(nil), "maps.booking.feeds.AvailabilityFeed") @@ -2117,6 +2237,7 @@ proto.RegisterType((*TicketType)(nil), "maps.booking.feeds.TicketType") proto.RegisterType((*RelatedMedia)(nil), "maps.booking.feeds.RelatedMedia") proto.RegisterType((*ServiceAttributeValueId)(nil), "maps.booking.feeds.ServiceAttributeValueId") + proto.RegisterType((*WaitlistRules)(nil), "maps.booking.feeds.WaitlistRules") proto.RegisterEnum("maps.booking.feeds.PriceType", PriceType_name, PriceType_value) proto.RegisterEnum("maps.booking.feeds.RequireCreditCard", RequireCreditCard_name, RequireCreditCard_value) proto.RegisterEnum("maps.booking.feeds.ActionPlatform", ActionPlatform_name, ActionPlatform_value) @@ -2127,151 +2248,161 @@ proto.RegisterEnum("maps.booking.feeds.RelatedMedia_MediaType", RelatedMedia_MediaType_name, RelatedMedia_MediaType_value) } -func init() { proto.RegisterFile("feeds.proto", fileDescriptor_feeds_fc30b4ddff65807e) } +func init() { proto.RegisterFile("feeds.proto", fileDescriptor_7aa923a38d4cd9d3) } -var fileDescriptor_feeds_fc30b4ddff65807e = []byte{ - // 2281 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdf, 0x72, 0xdb, 0xc6, - 0xd5, 0x0f, 0x48, 0xd1, 0x24, 0x0f, 0x29, 0x09, 0x5c, 0x29, 0x12, 0x2c, 0xc7, 0xb1, 0x3e, 0xf8, - 0xcb, 0x54, 0x95, 0x53, 0xa6, 0x95, 0x93, 0x4c, 0x32, 0x71, 0x93, 0x50, 0x20, 0x64, 0x61, 0x4c, - 0x11, 0xf0, 0x12, 0xb2, 0xe3, 0xde, 0x6c, 0x20, 0x60, 0x45, 0x61, 0x4c, 0x02, 0xec, 0x02, 0x54, - 0xac, 0xcc, 0xe4, 0xa6, 0x57, 0xbd, 0xec, 0x4c, 0xef, 0xfa, 0x04, 0xed, 0xd4, 0x0f, 0xd0, 0xc9, - 0x5d, 0x9f, 0xa8, 0x0f, 0xd0, 0x9b, 0xce, 0x2e, 0x40, 0x10, 0x94, 0x20, 0xcb, 0x6d, 0x72, 0x23, - 0x61, 0xcf, 0x39, 0xbf, 0xfd, 0x73, 0xce, 0x9e, 0xdf, 0x39, 0x4b, 0x68, 0x9c, 0x52, 0xea, 0x45, - 0xed, 0x09, 0x0b, 0xe3, 0x10, 0xa1, 0xb1, 0x33, 0x89, 0xda, 0x27, 0x61, 0xf8, 0xd2, 0x0f, 0x86, - 0x6d, 0xa1, 0x51, 0xff, 0x55, 0x82, 0xe6, 0x01, 0xa5, 0xde, 0x11, 0x8d, 0x1d, 0xcf, 0x89, 0x1d, - 0x34, 0x86, 0x8d, 0x09, 0x0b, 0x5d, 0x1a, 0x45, 0x7e, 0x30, 0x24, 0x7e, 0x10, 0xc5, 0x6c, 0xea, - 0xc6, 0x7e, 0x18, 0x28, 0xd2, 0xb6, 0xb4, 0xb3, 0xb2, 0xf7, 0x69, 0xfb, 0xea, 0x2c, 0xed, 0xfc, - 0x0c, 0x6d, 0x2b, 0x83, 0x1b, 0x73, 0x34, 0x7e, 0x77, 0x52, 0x24, 0x46, 0xff, 0x07, 0xcd, 0xe8, - 0xcc, 0x61, 0x1e, 0x09, 0xa6, 0xe3, 0x13, 0xca, 0x94, 0xd2, 0xb6, 0xb4, 0x53, 0xc1, 0x0d, 0x21, - 0xeb, 0x0b, 0x11, 0x37, 0x89, 0xc3, 0xd8, 0x19, 0x11, 0x21, 0x8c, 0x94, 0x72, 0x62, 0x22, 0x64, - 0x03, 0x21, 0x42, 0xeb, 0x50, 0x09, 0xc2, 0xc0, 0xa5, 0x4a, 0x65, 0x5b, 0xda, 0x59, 0xc2, 0xc9, - 0x00, 0xfd, 0x06, 0xd6, 0x87, 0x34, 0xa0, 0xcc, 0xe1, 0x2b, 0x91, 0xd8, 0x1f, 0xd3, 0x28, 0x76, - 0xc6, 0x13, 0x65, 0x69, 0x5b, 0xda, 0x29, 0xe3, 0xb5, 0xb9, 0xce, 0x9e, 0xa9, 0x54, 0x07, 0xde, - 0x2d, 0xdc, 0x3e, 0x5a, 0x83, 0x55, 0x0b, 0x9b, 0x9a, 0x3e, 0x18, 0x90, 0xe3, 0xfe, 0x93, 0xbe, - 0xf9, 0xbc, 0x2f, 0xbf, 0x83, 0x36, 0x61, 0x6d, 0x26, 0xec, 0x0c, 0x88, 0x66, 0x1e, 0x59, 0x3d, - 0xdd, 0xd6, 0x65, 0x09, 0x6d, 0xc1, 0x46, 0x4e, 0x61, 0xf4, 0x35, 0xac, 0x1f, 0xe9, 0x7d, 0xbb, - 0xd3, 0x93, 0x4b, 0xea, 0x6b, 0x09, 0xe4, 0xce, 0xb9, 0xe3, 0x8f, 0x9c, 0x13, 0x7f, 0xe4, 0xc7, - 0x17, 0xdc, 0x77, 0xe8, 0x11, 0xd4, 0xc6, 0xa9, 0xff, 0x84, 0x9f, 0x1b, 0x7b, 0xdb, 0x37, 0xf9, - 0x19, 0x67, 0x08, 0xf4, 0x3b, 0x58, 0x8f, 0x28, 0x3b, 0xf7, 0x5d, 0x4a, 0x9c, 0xdc, 0xcc, 0x4a, - 0x69, 0xbb, 0xbc, 0xd3, 0xd8, 0xfb, 0x45, 0xd1, 0x4c, 0x83, 0xc4, 0x3e, 0xbf, 0x11, 0xbc, 0x16, - 0x5d, 0x15, 0xaa, 0xff, 0x2e, 0xc1, 0x5a, 0x81, 0x31, 0xfa, 0x0c, 0x94, 0x28, 0x76, 0x58, 0x3c, - 0xf7, 0x2b, 0x61, 0x34, 0x8a, 0x99, 0xef, 0xc6, 0xe2, 0x04, 0x65, 0xbc, 0x21, 0xf4, 0x99, 0x6f, - 0x71, 0xaa, 0x45, 0x1f, 0xc3, 0x06, 0x0d, 0xbc, 0x22, 0x5c, 0x49, 0xe0, 0xd6, 0x69, 0xe0, 0x5d, - 0x45, 0xfd, 0x1a, 0xd6, 0xc7, 0x94, 0xb9, 0x67, 0x4e, 0x10, 0x13, 0xdf, 0x9b, 0x63, 0xf8, 0x6d, - 0xa8, 0x63, 0x34, 0xd3, 0x19, 0x5e, 0x86, 0x68, 0xc3, 0xec, 0x40, 0x0b, 0x80, 0x25, 0x01, 0x68, - 0xa5, 0xaa, 0x9c, 0x7d, 0x0f, 0x10, 0xa3, 0x51, 0x38, 0x65, 0x2e, 0x8d, 0xe6, 0xe6, 0xb7, 0x44, - 0x34, 0xee, 0x16, 0xf9, 0x10, 0xcf, 0xac, 0x71, 0x2b, 0x03, 0x66, 0xb3, 0x75, 0xa1, 0xb9, 0x10, - 0x8b, 0x8a, 0x88, 0x45, 0x61, 0x54, 0x17, 0x82, 0xb0, 0x80, 0x52, 0x7f, 0xac, 0x42, 0x73, 0xc1, - 0xed, 0xf7, 0xa0, 0x91, 0x73, 0x83, 0xf0, 0x74, 0x1d, 0xc3, 0xfc, 0xf4, 0xe8, 0x2e, 0xc0, 0xfc, - 0xd4, 0xc2, 0xa3, 0x75, 0x5c, 0xcf, 0x0e, 0x8b, 0xee, 0x40, 0x3d, 0x09, 0x5b, 0x44, 0x5d, 0xe1, - 0xbb, 0x32, 0xae, 0x09, 0xc1, 0x80, 0xba, 0x3c, 0xd3, 0xbc, 0x69, 0x9a, 0x2e, 0x5c, 0x9f, 0x24, - 0x4a, 0x63, 0x26, 0xe3, 0x26, 0xf7, 0xa0, 0x11, 0x4d, 0xc2, 0x38, 0x22, 0x22, 0xfd, 0x44, 0xbe, - 0x95, 0x31, 0x08, 0x91, 0xcd, 0x25, 0x62, 0x7d, 0x61, 0x10, 0x4e, 0x68, 0x20, 0xbc, 0x57, 0xc6, - 0x75, 0x21, 0x31, 0x27, 0x34, 0x40, 0xbf, 0x04, 0x39, 0x7f, 0x40, 0x12, 0x3b, 0x43, 0xa5, 0x2a, - 0x36, 0xb9, 0x9a, 0x97, 0xdb, 0xce, 0x10, 0x7d, 0x01, 0xf5, 0xcc, 0xad, 0x4a, 0xed, 0x6d, 0xc2, - 0x30, 0xb7, 0x47, 0xbb, 0xd0, 0x9a, 0x38, 0x17, 0x63, 0x1a, 0xc4, 0x24, 0x9c, 0x88, 0x03, 0xf9, - 0x9e, 0x52, 0xdf, 0x2e, 0xf3, 0x85, 0x52, 0x85, 0x29, 0xe4, 0x86, 0x87, 0x9e, 0x00, 0x30, 0xea, - 0x4e, 0x19, 0xa3, 0x9c, 0x42, 0x40, 0xac, 0xf4, 0xe0, 0xa6, 0x40, 0xb5, 0x71, 0x06, 0xc1, 0x39, - 0x38, 0x72, 0x00, 0x45, 0xee, 0x19, 0xf5, 0xa6, 0x23, 0x4a, 0xe8, 0x2b, 0x97, 0x8a, 0x45, 0x94, - 0x86, 0x88, 0xfe, 0xde, 0x8d, 0x93, 0x0e, 0x52, 0xa8, 0x3e, 0x43, 0xe2, 0x56, 0x74, 0x59, 0x84, - 0x3e, 0x81, 0xaa, 0x47, 0x27, 0x61, 0xe4, 0xc7, 0x4a, 0x53, 0x6c, 0xf6, 0x4e, 0xd1, 0xbc, 0xdd, - 0xc4, 0x04, 0xcf, 0x6c, 0xd1, 0x6f, 0xa1, 0x11, 0x84, 0x24, 0x3a, 0x0b, 0xbf, 0x23, 0xa7, 0x94, - 0x2a, 0xcb, 0xd7, 0x7b, 0xb4, 0x1f, 0x0e, 0xce, 0xc2, 0xef, 0x0e, 0x28, 0xc5, 0xf5, 0x60, 0xf6, - 0x89, 0x8e, 0x61, 0x8d, 0xd1, 0xdf, 0x4f, 0x7d, 0x46, 0x89, 0xcb, 0xa8, 0xe7, 0xc7, 0xc4, 0x75, - 0x98, 0xa7, 0xac, 0x88, 0xaa, 0xf0, 0x41, 0x71, 0x60, 0x84, 0xb9, 0x26, 0xac, 0x35, 0x87, 0x79, - 0x3c, 0x4f, 0x2e, 0x89, 0xd0, 0xff, 0xc3, 0x4a, 0xec, 0xbb, 0x2f, 0x69, 0x4c, 0xe2, 0x8b, 0x89, - 0xb8, 0xb3, 0xab, 0x22, 0x4a, 0xcd, 0x44, 0x6a, 0x5f, 0x4c, 0xa8, 0xe1, 0x6d, 0x7d, 0x0b, 0x30, - 0xf7, 0x37, 0xda, 0x01, 0x99, 0xd1, 0x09, 0x75, 0x62, 0x32, 0x0d, 0x62, 0x7f, 0x24, 0xee, 0x6a, - 0xc2, 0x39, 0x2b, 0x89, 0xfc, 0x98, 0x8b, 0xf9, 0x75, 0x9d, 0x5b, 0xd2, 0x73, 0xca, 0x2e, 0x84, - 0x65, 0x52, 0x62, 0x52, 0x4b, 0x9d, 0x8b, 0x07, 0xd4, 0xdd, 0x7a, 0x0a, 0xad, 0x2b, 0xce, 0x47, - 0x8f, 0x00, 0x38, 0x4d, 0x11, 0xe6, 0x04, 0x43, 0x9a, 0x12, 0x73, 0xa1, 0xc7, 0x38, 0x5f, 0x61, - 0x6e, 0x84, 0xeb, 0xf1, 0xec, 0x53, 0xfd, 0x8b, 0x04, 0xf5, 0xec, 0x72, 0xa2, 0xdb, 0xc0, 0x13, - 0xed, 0xf4, 0x74, 0x9e, 0xb6, 0x55, 0x31, 0x4e, 0x73, 0x56, 0xa8, 0x02, 0x67, 0x4c, 0xb3, 0x9c, - 0xe5, 0x92, 0xbe, 0x33, 0xa6, 0x68, 0x13, 0xaa, 0x2c, 0x0c, 0xc7, 0x1c, 0x98, 0xb0, 0xdd, 0x2d, - 0x3e, 0x4c, 0x92, 0x59, 0x28, 0x04, 0x2c, 0xe1, 0xb5, 0x1a, 0x17, 0x08, 0xd4, 0x5d, 0x80, 0x89, - 0xc3, 0xe2, 0x0b, 0x12, 0xf9, 0xdf, 0x27, 0x85, 0xb1, 0x82, 0xeb, 0x42, 0x32, 0xf0, 0xbf, 0xa7, - 0x6a, 0x07, 0xea, 0xd9, 0xa6, 0xf9, 0x44, 0x27, 0x74, 0xe8, 0x07, 0x39, 0x4f, 0xd6, 0x84, 0x80, - 0xfb, 0x70, 0x13, 0xaa, 0x9c, 0xaf, 0x67, 0xae, 0x2b, 0xe3, 0x5b, 0x34, 0xf0, 0x06, 0xd4, 0x55, - 0xff, 0x20, 0x41, 0x23, 0x2d, 0x0d, 0x3f, 0x43, 0x11, 0xfb, 0x04, 0xaa, 0x29, 0x4d, 0xa5, 0x75, - 0xeb, 0xce, 0x1b, 0xea, 0x16, 0x9e, 0xd9, 0xaa, 0xaf, 0x01, 0xaa, 0xa9, 0xf0, 0x27, 0x93, 0x23, - 0x82, 0x25, 0xe1, 0xca, 0xc4, 0xcb, 0xe2, 0x1b, 0x6d, 0x43, 0xc3, 0xa3, 0x91, 0xcb, 0xfc, 0x24, - 0x91, 0x13, 0x2f, 0xe7, 0x45, 0xe8, 0x23, 0xa8, 0x4c, 0x98, 0x9f, 0x36, 0x1f, 0x8d, 0xbd, 0xdb, - 0x45, 0xdb, 0xb6, 0xb8, 0x01, 0x4e, 0xec, 0xd0, 0xe7, 0x50, 0x61, 0xd3, 0x11, 0x8d, 0xd2, 0xda, - 0x72, 0xbf, 0xf0, 0x9c, 0xc9, 0x5d, 0xf4, 0x83, 0x21, 0xe6, 0xa6, 0x38, 0x41, 0xa0, 0xcf, 0x61, - 0xe9, 0x34, 0x64, 0x63, 0xa5, 0x2a, 0x3c, 0xf4, 0xc1, 0x1b, 0x3c, 0x64, 0x04, 0xb1, 0xf3, 0x92, - 0x1e, 0x84, 0x6c, 0x8c, 0x05, 0x04, 0x0d, 0x60, 0x75, 0xc2, 0xe8, 0x8c, 0x14, 0x79, 0xb2, 0x09, - 0x52, 0x5d, 0xd9, 0xdb, 0x7d, 0xc3, 0x2c, 0x6d, 0x2b, 0x83, 0xf0, 0x4c, 0xc4, 0x2b, 0x93, 0x85, - 0x31, 0xfa, 0x14, 0x6a, 0xb1, 0xf3, 0x8a, 0x30, 0x27, 0xa6, 0x4a, 0xfd, 0x7a, 0x2e, 0xb2, 0x9d, - 0x57, 0xd8, 0x89, 0x29, 0xae, 0xc6, 0xc9, 0x47, 0x31, 0x3d, 0x43, 0x31, 0x3d, 0xe7, 0xe8, 0xae, - 0xf1, 0xbf, 0xd3, 0x5d, 0xf3, 0xe7, 0xa1, 0xbb, 0xe5, 0x9f, 0x48, 0x77, 0x5f, 0x41, 0xc3, 0x11, - 0x1d, 0x25, 0x19, 0xf9, 0xc1, 0x4b, 0x65, 0x45, 0xc4, 0xf1, 0xfd, 0xc2, 0xba, 0x20, 0xcc, 0x7a, - 0x7e, 0xf0, 0x12, 0x83, 0x93, 0x7d, 0xa3, 0x2f, 0x60, 0x49, 0xc4, 0x6e, 0x55, 0x6c, 0xe4, 0x4d, - 0xbd, 0xdd, 0xec, 0xbf, 0x08, 0x9c, 0x00, 0xf1, 0xd5, 0x73, 0x64, 0xab, 0xc8, 0xd7, 0xaf, 0x6e, - 0x67, 0xec, 0x8b, 0x61, 0xce, 0xc4, 0x48, 0x87, 0x65, 0x46, 0x47, 0x4e, 0x4c, 0x3d, 0x32, 0xa6, - 0x9e, 0xef, 0x28, 0xad, 0xeb, 0xdb, 0x1a, 0x9c, 0x18, 0x1e, 0x71, 0x3b, 0xdc, 0x64, 0xb9, 0x11, - 0x3a, 0x83, 0xad, 0xac, 0x61, 0x8d, 0x63, 0xe6, 0x9f, 0x4c, 0x63, 0x4a, 0xce, 0x9d, 0xd1, 0x54, - 0xe4, 0x25, 0x12, 0x73, 0x3e, 0x78, 0x53, 0xdb, 0x3a, 0x03, 0x3d, 0xe3, 0x18, 0xc3, 0xc3, 0x9b, - 0x51, 0xb1, 0x42, 0xfd, 0x16, 0x56, 0x16, 0xaf, 0x30, 0xba, 0x07, 0x77, 0x2c, 0xac, 0x5b, 0x9d, - 0x17, 0xbc, 0x23, 0x27, 0xf6, 0x0b, 0x4b, 0x27, 0xc7, 0xfd, 0x81, 0xa5, 0x6b, 0xc6, 0x81, 0xa1, - 0x77, 0xe5, 0x77, 0x50, 0x13, 0x6a, 0x58, 0x7f, 0x7a, 0x6c, 0x60, 0xbd, 0x2b, 0x4b, 0x7c, 0x64, - 0x5a, 0xb6, 0x61, 0xf6, 0x79, 0xf3, 0x8e, 0x5a, 0xb0, 0xdc, 0x37, 0x6d, 0x32, 0x38, 0xb6, 0x2c, - 0x13, 0xdb, 0x7a, 0x57, 0x2e, 0xab, 0x7f, 0x9f, 0xb3, 0xa0, 0x98, 0xff, 0x3d, 0x50, 0x06, 0x3a, - 0x7e, 0x66, 0x68, 0x7a, 0xd1, 0xe4, 0xf7, 0xe1, 0xde, 0x82, 0xb6, 0x6b, 0xf4, 0x8d, 0xfe, 0x63, - 0x82, 0x75, 0x2e, 0xed, 0xf0, 0x75, 0x64, 0x09, 0xbd, 0x0f, 0x5b, 0x0b, 0x46, 0x07, 0xa6, 0xd9, - 0x25, 0x26, 0xee, 0xea, 0xd8, 0xe8, 0x3f, 0x96, 0x4b, 0xe8, 0x2e, 0xdc, 0x5e, 0xd0, 0xeb, 0xcf, - 0xc4, 0x51, 0x0c, 0xed, 0x89, 0x6e, 0xcb, 0x65, 0xfe, 0xfa, 0x58, 0x50, 0xdb, 0xd8, 0xb0, 0x88, - 0x6d, 0x1e, 0x63, 0x79, 0x49, 0xfd, 0x01, 0x2a, 0x82, 0x8b, 0x78, 0xaf, 0x27, 0xd8, 0x88, 0x8c, - 0x7d, 0x97, 0x85, 0x51, 0xca, 0xfa, 0x0d, 0x21, 0x3b, 0x12, 0x22, 0x74, 0x1f, 0x96, 0xd3, 0x92, - 0x7b, 0x41, 0xdc, 0xd0, 0x9b, 0x55, 0xa6, 0xe6, 0x4c, 0xa8, 0x85, 0x1e, 0x45, 0x1f, 0x02, 0xe2, - 0x18, 0xfe, 0x58, 0x4c, 0x33, 0x99, 0xb7, 0x74, 0x09, 0x83, 0xca, 0xa9, 0x26, 0x49, 0x65, 0xdb, - 0x19, 0xaa, 0x7f, 0x2e, 0xc1, 0xea, 0x25, 0x6a, 0xe3, 0x7d, 0xfa, 0xd8, 0x0f, 0x88, 0xe3, 0x9d, - 0x3b, 0x81, 0x4b, 0x49, 0x1a, 0xf0, 0x74, 0x43, 0xad, 0xb1, 0x1f, 0x74, 0x12, 0xcd, 0x7e, 0xa2, - 0x40, 0x5f, 0xc1, 0x7b, 0x79, 0xfb, 0x30, 0x18, 0xf9, 0x01, 0x25, 0x2e, 0x1f, 0xf0, 0x49, 0xd3, - 0x22, 0x75, 0x7b, 0x0e, 0x34, 0x85, 0x85, 0x36, 0x33, 0x40, 0x4f, 0xe1, 0x5d, 0x7e, 0x17, 0x53, - 0xc8, 0x28, 0xe9, 0x77, 0x39, 0x47, 0x94, 0x6f, 0x20, 0xf0, 0xfd, 0x92, 0x22, 0xe1, 0x35, 0x8e, - 0xd5, 0x72, 0x50, 0xce, 0x16, 0x8f, 0x00, 0x82, 0x30, 0xe3, 0x9a, 0xa5, 0xb7, 0x99, 0xa7, 0x9e, - 0x00, 0x0e, 0x28, 0x55, 0xdb, 0x50, 0x4d, 0x19, 0x92, 0xfb, 0x5c, 0x04, 0x84, 0x4c, 0x28, 0x73, - 0x69, 0x90, 0xbc, 0xa5, 0x2a, 0xb8, 0x29, 0x84, 0x56, 0x22, 0x53, 0x7f, 0x2c, 0xc1, 0xc6, 0x15, - 0x9a, 0x3f, 0xf0, 0xe9, 0xc8, 0x43, 0x87, 0x29, 0x3d, 0x24, 0x8f, 0xf5, 0x8f, 0xdf, 0xaa, 0x40, - 0x08, 0x64, 0x5b, 0xfc, 0xcd, 0x71, 0xc5, 0x3a, 0x54, 0x46, 0xce, 0x09, 0x1d, 0xa5, 0x51, 0x4f, - 0x06, 0x5c, 0x2a, 0xf2, 0x54, 0x29, 0x0b, 0xb2, 0x4e, 0x06, 0xbc, 0xf0, 0xfa, 0xfc, 0xcd, 0x24, - 0xd8, 0xce, 0x13, 0xe7, 0xaf, 0x61, 0xf0, 0xa3, 0x94, 0x12, 0x3d, 0xf5, 0x8f, 0x12, 0xd4, 0xb3, - 0x05, 0xf8, 0x05, 0x3d, 0x30, 0xf4, 0x5e, 0xb7, 0x28, 0x41, 0x64, 0x68, 0x0e, 0x0e, 0x4d, 0x6c, - 0x93, 0x4e, 0x7f, 0xf0, 0x5c, 0xc7, 0xb2, 0x84, 0x96, 0xa1, 0x6e, 0x75, 0x70, 0xe7, 0x31, 0xee, - 0x58, 0x87, 0x72, 0x89, 0xbf, 0xc4, 0x8f, 0x8e, 0x7b, 0xb6, 0x61, 0xf5, 0x74, 0xa2, 0x1d, 0x9a, - 0x86, 0xa6, 0xcb, 0x65, 0xb4, 0x02, 0xa0, 0x1d, 0xea, 0xda, 0x93, 0x7d, 0xf3, 0x1b, 0x7d, 0x20, - 0x2f, 0xf1, 0xac, 0xed, 0x62, 0xd3, 0xea, 0xf2, 0x77, 0x7a, 0x05, 0x35, 0xa0, 0xba, 0x6f, 0x9a, - 0x3d, 0xbd, 0xd3, 0x97, 0x6f, 0xa9, 0xff, 0x90, 0xa0, 0x75, 0xc5, 0x05, 0xe8, 0x6b, 0xa8, 0x9c, - 0xf2, 0xfd, 0x29, 0x92, 0x20, 0x9f, 0xdd, 0xb7, 0x77, 0x1c, 0x4e, 0x80, 0xfc, 0x81, 0x7a, 0xea, - 0xb3, 0x28, 0x79, 0x10, 0x13, 0x77, 0x1a, 0xc5, 0xe1, 0x98, 0xb2, 0x48, 0xb8, 0xaf, 0x86, 0x91, - 0xd0, 0xf1, 0x8e, 0x4b, 0x9b, 0x69, 0xd0, 0x47, 0xbc, 0xc4, 0xc4, 0x53, 0x16, 0xf0, 0xe4, 0x99, - 0x03, 0xca, 0x09, 0x20, 0x53, 0x65, 0x00, 0xf5, 0x9f, 0x12, 0x54, 0xd3, 0x3a, 0x87, 0x1e, 0xce, - 0xab, 0xa2, 0x74, 0x53, 0xdf, 0x91, 0xd5, 0xc4, 0x4b, 0xa9, 0xb3, 0x90, 0x00, 0xf3, 0xfe, 0x2e, - 0x97, 0x3a, 0xf9, 0x7b, 0xce, 0x7b, 0xc1, 0xaf, 0xa1, 0x99, 0xce, 0x95, 0x54, 0x90, 0xb2, 0xb8, - 0x66, 0x77, 0xaf, 0x5d, 0x5a, 0xdc, 0xa7, 0x46, 0x0a, 0xe1, 0x03, 0x95, 0x41, 0x3d, 0xab, 0xb7, - 0xe8, 0x01, 0x94, 0x79, 0xbe, 0xdc, 0x78, 0x00, 0x6e, 0x85, 0x3e, 0x83, 0xda, 0x29, 0xa5, 0xff, - 0xc5, 0xba, 0xd5, 0x53, 0x2a, 0x3e, 0xd4, 0xbf, 0x49, 0x00, 0xf3, 0x72, 0x8a, 0x64, 0x28, 0x4f, - 0xd9, 0x28, 0x6d, 0x0f, 0xf9, 0x27, 0xda, 0x82, 0xda, 0xc8, 0x09, 0x86, 0x53, 0x67, 0x38, 0x23, - 0xb9, 0x6c, 0x8c, 0x7e, 0x25, 0x7e, 0x16, 0x10, 0x8f, 0x7a, 0xea, 0x11, 0x37, 0x9c, 0x06, 0x31, - 0xbb, 0x48, 0xaf, 0x7f, 0x6b, 0xae, 0xd1, 0x12, 0x05, 0xfa, 0x12, 0x6a, 0x93, 0x91, 0x13, 0x8b, - 0x2e, 0x6d, 0x49, 0xec, 0x52, 0xbd, 0xbe, 0xba, 0x5b, 0xa9, 0x25, 0xce, 0x30, 0xea, 0x9f, 0x24, - 0x80, 0x79, 0xf1, 0x2d, 0x78, 0x1e, 0x25, 0xdb, 0x5e, 0x78, 0x1e, 0xa1, 0x07, 0xd0, 0x8a, 0xce, - 0x42, 0x16, 0x93, 0x7c, 0xab, 0x9a, 0x1c, 0x44, 0x16, 0x8a, 0x6e, 0x51, 0xbf, 0x5a, 0x7e, 0xbb, - 0x7e, 0x55, 0xfd, 0xab, 0x04, 0xcd, 0x7c, 0x31, 0x2f, 0x70, 0xe0, 0x97, 0x29, 0xed, 0x94, 0xae, - 0xef, 0x28, 0xf3, 0x33, 0xb4, 0xc5, 0xdf, 0x1c, 0xd9, 0x28, 0x50, 0x75, 0x9d, 0x64, 0xdb, 0x49, - 0xe9, 0x98, 0x0d, 0xd5, 0x0f, 0xa1, 0x9e, 0x19, 0xa3, 0x75, 0x90, 0x0b, 0x28, 0xa3, 0x0e, 0x15, - 0xeb, 0xd0, 0xb4, 0x4d, 0x59, 0x52, 0x9f, 0xc3, 0xe6, 0x35, 0x2d, 0x02, 0x2f, 0x78, 0xf3, 0x5e, - 0x23, 0xf3, 0x63, 0x23, 0x93, 0x19, 0x1e, 0x7f, 0xa2, 0x65, 0x4d, 0x48, 0xe2, 0xbd, 0xea, 0x79, - 0x82, 0xde, 0x7d, 0x08, 0xf5, 0xec, 0x62, 0xa1, 0x0d, 0x40, 0x07, 0xc6, 0x37, 0x7a, 0x97, 0xe0, - 0x8e, 0xad, 0x93, 0xae, 0x7e, 0xd0, 0x39, 0xee, 0xd9, 0xf2, 0x3b, 0x9c, 0x85, 0x2c, 0x1d, 0x13, - 0x4b, 0xc7, 0x03, 0x5e, 0xc7, 0x77, 0x7f, 0x80, 0xd6, 0x95, 0xa6, 0x90, 0x77, 0x00, 0x69, 0x7b, - 0x41, 0x34, 0xac, 0x77, 0x0d, 0x9b, 0x68, 0x1d, 0xdc, 0xbd, 0xda, 0x26, 0x14, 0x19, 0x69, 0x66, - 0xbf, 0x6b, 0xa4, 0xcd, 0x88, 0x68, 0x13, 0x8a, 0x8c, 0x3a, 0xbd, 0xe7, 0x9d, 0x17, 0x03, 0xb9, - 0xb4, 0xfb, 0x5a, 0x82, 0x95, 0xc5, 0x7b, 0xc6, 0x9b, 0x9f, 0x8e, 0xc6, 0x27, 0x20, 0x56, 0xaf, - 0x63, 0x1f, 0x98, 0xf8, 0xe8, 0xea, 0xc2, 0x97, 0x0d, 0x9e, 0xeb, 0xfb, 0xa4, 0x63, 0x59, 0x3d, - 0x43, 0xcb, 0xf5, 0x27, 0x97, 0x8d, 0x8e, 0xcc, 0x7d, 0xa3, 0xa7, 0x73, 0x5b, 0xb9, 0x84, 0xee, - 0xc0, 0xe6, 0x65, 0x7d, 0xa7, 0xdf, 0xc5, 0xa6, 0xd1, 0x95, 0xcb, 0x68, 0x13, 0xd6, 0x2e, 0x2b, - 0x0d, 0x73, 0x20, 0x2f, 0x9d, 0xdc, 0x12, 0xbf, 0x52, 0x3f, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x1b, 0x9f, 0x88, 0x50, 0xb4, 0x16, 0x00, 0x00, +var fileDescriptor_7aa923a38d4cd9d3 = []byte{ + // 2434 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0xcf, 0x73, 0xdb, 0xc6, + 0xf5, 0x0f, 0x49, 0xd1, 0x24, 0x1f, 0x29, 0x09, 0x5a, 0xc9, 0x12, 0x6d, 0xc7, 0xb1, 0x82, 0x7c, + 0x33, 0x5f, 0xd7, 0x4e, 0xd5, 0xd6, 0x4e, 0x32, 0xe9, 0xe4, 0x27, 0x4d, 0x82, 0x31, 0xc6, 0x14, + 0x81, 0x2c, 0xa9, 0x28, 0xce, 0x65, 0x03, 0x01, 0x2b, 0x09, 0x63, 0x12, 0x60, 0x17, 0xa0, 0x6d, + 0x65, 0x26, 0x97, 0x9e, 0x7a, 0xec, 0x4c, 0x6f, 0xed, 0x4c, 0xcf, 0xed, 0x34, 0x7f, 0x41, 0x4f, + 0xed, 0xb5, 0xff, 0x4c, 0xff, 0x80, 0x5e, 0x3a, 0xfb, 0x16, 0x04, 0x40, 0x09, 0xb2, 0x9d, 0x26, + 0x17, 0x19, 0xfb, 0xde, 0xe7, 0xbd, 0xdd, 0x7d, 0xbb, 0xef, 0xf3, 0xde, 0xd2, 0xd0, 0x3c, 0xe6, + 0xdc, 0x8b, 0xf6, 0x66, 0x22, 0x8c, 0x43, 0x42, 0xa6, 0xce, 0x2c, 0xda, 0x3b, 0x0a, 0xc3, 0x27, + 0x7e, 0x70, 0xb2, 0x87, 0x1a, 0xfd, 0xdf, 0x65, 0x68, 0xf5, 0x39, 0xf7, 0xf6, 0x79, 0xec, 0x78, + 0x4e, 0xec, 0x90, 0x29, 0x6c, 0xcf, 0x44, 0xe8, 0xf2, 0x28, 0xf2, 0x83, 0x13, 0xe6, 0x07, 0x51, + 0x2c, 0xe6, 0x6e, 0xec, 0x87, 0x41, 0xbb, 0xb4, 0x5b, 0xba, 0xbd, 0x76, 0xef, 0xfd, 0xbd, 0x8b, + 0x5e, 0xf6, 0xf2, 0x1e, 0xf6, 0xec, 0xd4, 0xdc, 0xcc, 0xac, 0xe9, 0xd5, 0x59, 0x91, 0x98, 0xbc, + 0x09, 0xad, 0xe8, 0xd4, 0x11, 0x1e, 0x0b, 0xe6, 0xd3, 0x23, 0x2e, 0xda, 0xe5, 0xdd, 0xd2, 0xed, + 0x2a, 0x6d, 0xa2, 0x6c, 0x88, 0x22, 0x09, 0x89, 0xc3, 0xd8, 0x99, 0x30, 0x14, 0x46, 0xed, 0x8a, + 0x82, 0xa0, 0x6c, 0x84, 0x22, 0xb2, 0x05, 0xd5, 0x20, 0x0c, 0x5c, 0xde, 0xae, 0xee, 0x96, 0x6e, + 0xaf, 0x50, 0x35, 0x20, 0xbf, 0x82, 0xad, 0x13, 0x1e, 0x70, 0xe1, 0xc8, 0x99, 0x58, 0xec, 0x4f, + 0x79, 0x14, 0x3b, 0xd3, 0x59, 0x7b, 0x65, 0xb7, 0x74, 0xbb, 0x42, 0x37, 0x33, 0xdd, 0x78, 0xa1, + 0xd2, 0x1d, 0xb8, 0x5a, 0xb8, 0x7c, 0xb2, 0x09, 0xeb, 0x36, 0xb5, 0xba, 0xc6, 0x68, 0xc4, 0x0e, + 0x86, 0x8f, 0x86, 0xd6, 0xe1, 0x50, 0x7b, 0x8d, 0xec, 0xc0, 0xe6, 0x42, 0xd8, 0x19, 0xb1, 0xae, + 0xb5, 0x6f, 0x0f, 0x8c, 0xb1, 0xa1, 0x95, 0xc8, 0x75, 0xd8, 0xce, 0x29, 0xcc, 0x61, 0x97, 0x1a, + 0xfb, 0xc6, 0x70, 0xdc, 0x19, 0x68, 0x65, 0xfd, 0xfb, 0x12, 0x68, 0x9d, 0xa7, 0x8e, 0x3f, 0x71, + 0x8e, 0xfc, 0x89, 0x1f, 0x9f, 0xc9, 0xd8, 0x91, 0x8f, 0xa0, 0x3e, 0x4d, 0xe2, 0x87, 0x71, 0x6e, + 0xde, 0xdb, 0x7d, 0x59, 0x9c, 0x69, 0x6a, 0x41, 0xbe, 0x86, 0xad, 0x88, 0x8b, 0xa7, 0xbe, 0xcb, + 0x99, 0x93, 0xf3, 0xdc, 0x2e, 0xef, 0x56, 0x6e, 0x37, 0xef, 0xfd, 0x7f, 0x91, 0xa7, 0x91, 0xc2, + 0xe7, 0x17, 0x42, 0x37, 0xa3, 0x8b, 0x42, 0xfd, 0x3f, 0x65, 0xd8, 0x2c, 0x00, 0x93, 0x0f, 0xa0, + 0x1d, 0xc5, 0x8e, 0x88, 0xb3, 0xb8, 0x32, 0xc1, 0xa3, 0x58, 0xf8, 0x6e, 0x8c, 0x3b, 0xa8, 0xd0, + 0x6d, 0xd4, 0xa7, 0xb1, 0xa5, 0x89, 0x96, 0xbc, 0x0b, 0xdb, 0x3c, 0xf0, 0x8a, 0xec, 0xca, 0x68, + 0xb7, 0xc5, 0x03, 0xef, 0xa2, 0xd5, 0x2f, 0x61, 0x6b, 0xca, 0x85, 0x7b, 0xea, 0x04, 0x31, 0xf3, + 0xbd, 0xcc, 0x46, 0xde, 0x86, 0x06, 0x25, 0x0b, 0x9d, 0xe9, 0xa5, 0x16, 0x7b, 0xb0, 0xd8, 0xd0, + 0x92, 0xc1, 0x0a, 0x1a, 0x6c, 0x24, 0xaa, 0x1c, 0x7e, 0x00, 0x44, 0xf0, 0x28, 0x9c, 0x0b, 0x97, + 0x47, 0x19, 0xfc, 0x0a, 0x9e, 0xc6, 0xcd, 0xa2, 0x18, 0xd2, 0x05, 0x9a, 0x6e, 0xa4, 0x86, 0xa9, + 0xb7, 0x1e, 0xb4, 0x96, 0xce, 0xa2, 0x8a, 0x67, 0x51, 0x78, 0xaa, 0x4b, 0x87, 0xb0, 0x64, 0xa5, + 0xff, 0xbd, 0x06, 0xad, 0xa5, 0xb0, 0xdf, 0x82, 0x66, 0x2e, 0x0c, 0x18, 0xe9, 0x06, 0x85, 0x6c, + 0xf7, 0xe4, 0x26, 0x40, 0xb6, 0x6b, 0x8c, 0x68, 0x83, 0x36, 0xd2, 0xcd, 0x92, 0x1b, 0xd0, 0x50, + 0xc7, 0x16, 0x71, 0x17, 0x63, 0x57, 0xa1, 0x75, 0x14, 0x8c, 0xb8, 0x2b, 0x33, 0xcd, 0x9b, 0x27, + 0xe9, 0x22, 0xf5, 0x2a, 0x51, 0x9a, 0x0b, 0x99, 0x84, 0xdc, 0x82, 0x66, 0x34, 0x0b, 0xe3, 0x88, + 0x61, 0xfa, 0x61, 0xbe, 0x55, 0x28, 0xa0, 0x68, 0x2c, 0x25, 0x38, 0x3f, 0x02, 0xc2, 0x19, 0x0f, + 0x30, 0x7a, 0x15, 0xda, 0x40, 0x89, 0x35, 0xe3, 0x01, 0xf9, 0x19, 0x68, 0xf9, 0x0d, 0xb2, 0xd8, + 0x39, 0x69, 0xd7, 0x70, 0x91, 0xeb, 0x79, 0xf9, 0xd8, 0x39, 0x21, 0x1f, 0x42, 0x23, 0x0d, 0x6b, + 0xbb, 0xfe, 0x2a, 0xc7, 0x90, 0xe1, 0xc9, 0x1d, 0xd8, 0x98, 0x39, 0x67, 0x53, 0x1e, 0xc4, 0x2c, + 0x9c, 0xe1, 0x86, 0x7c, 0xaf, 0xdd, 0xd8, 0xad, 0xc8, 0x89, 0x12, 0x85, 0x85, 0x72, 0xd3, 0x23, + 0x8f, 0x00, 0x04, 0x77, 0xe7, 0x42, 0x70, 0x49, 0x21, 0x80, 0x33, 0xdd, 0x7d, 0xd9, 0x41, 0xed, + 0xd1, 0xd4, 0x84, 0xe6, 0xcc, 0x89, 0x03, 0x24, 0x72, 0x4f, 0xb9, 0x37, 0x9f, 0x70, 0xc6, 0x9f, + 0xbb, 0x1c, 0x27, 0x69, 0x37, 0xf1, 0xf4, 0xef, 0xbd, 0xd4, 0xe9, 0x28, 0x31, 0x35, 0x16, 0x96, + 0x74, 0x23, 0x3a, 0x2f, 0x22, 0xef, 0x41, 0xcd, 0xe3, 0xb3, 0x30, 0xf2, 0xe3, 0x76, 0x0b, 0x17, + 0x7b, 0xa3, 0xc8, 0x6f, 0x4f, 0x41, 0xe8, 0x02, 0x4b, 0x3e, 0x86, 0x66, 0x10, 0xb2, 0xe8, 0x34, + 0x7c, 0xc6, 0x8e, 0x39, 0x6f, 0xaf, 0x5e, 0x1e, 0xd1, 0x61, 0x38, 0x3a, 0x0d, 0x9f, 0xf5, 0x39, + 0xa7, 0x8d, 0x60, 0xf1, 0x49, 0x0e, 0x60, 0x53, 0xf0, 0xdf, 0xcc, 0x7d, 0xc1, 0x99, 0x2b, 0xb8, + 0xe7, 0xc7, 0xcc, 0x75, 0x84, 0xd7, 0x5e, 0xc3, 0xaa, 0xf0, 0x76, 0xf1, 0xc1, 0x20, 0xbc, 0x8b, + 0xe8, 0xae, 0x23, 0x3c, 0x99, 0x27, 0xe7, 0x44, 0xe4, 0xff, 0x60, 0x2d, 0xf6, 0xdd, 0x27, 0x3c, + 0x66, 0xf1, 0xd9, 0x0c, 0xef, 0xec, 0x3a, 0x9e, 0x52, 0x4b, 0x49, 0xc7, 0x67, 0x33, 0x6e, 0x7a, + 0xd7, 0xbf, 0x01, 0xc8, 0xe2, 0x4d, 0x6e, 0x83, 0x26, 0xf8, 0x8c, 0x3b, 0x31, 0x9b, 0x07, 0xb1, + 0x3f, 0xc1, 0xbb, 0xaa, 0x38, 0x67, 0x4d, 0xc9, 0x0f, 0xa4, 0x58, 0x5e, 0xd7, 0x0c, 0xc9, 0x9f, + 0x72, 0x71, 0x86, 0x48, 0x55, 0x62, 0x12, 0xa4, 0x21, 0xc5, 0x23, 0xee, 0x5e, 0xff, 0x02, 0x36, + 0x2e, 0x04, 0x9f, 0x7c, 0x04, 0x20, 0x69, 0x8a, 0x09, 0x27, 0x38, 0xe1, 0x09, 0x31, 0x17, 0x46, + 0x4c, 0xf2, 0x15, 0x95, 0x20, 0xda, 0x88, 0x17, 0x9f, 0xfa, 0x1f, 0x4b, 0xd0, 0x48, 0x2f, 0x27, + 0xb9, 0x06, 0x32, 0xd1, 0x8e, 0x8f, 0xb3, 0xb4, 0xad, 0xe1, 0x38, 0xc9, 0x59, 0x54, 0x05, 0xce, + 0x94, 0xa7, 0x39, 0x2b, 0x25, 0x43, 0x67, 0xca, 0xc9, 0x0e, 0xd4, 0x44, 0x18, 0x4e, 0xa5, 0xa1, + 0x62, 0xbb, 0x2b, 0x72, 0xa8, 0x92, 0x19, 0x15, 0x68, 0xa6, 0x78, 0xad, 0x2e, 0x05, 0x68, 0x75, + 0x13, 0x60, 0xe6, 0x88, 0xf8, 0x8c, 0x45, 0xfe, 0xb7, 0xaa, 0x30, 0x56, 0x69, 0x03, 0x25, 0x23, + 0xff, 0x5b, 0xae, 0x77, 0xa0, 0x91, 0x2e, 0x5a, 0x3a, 0x3a, 0xe2, 0x27, 0x7e, 0x90, 0x8b, 0x64, + 0x1d, 0x05, 0x32, 0x86, 0x3b, 0x50, 0x93, 0x7c, 0xbd, 0x08, 0x5d, 0x85, 0x5e, 0xe1, 0x81, 0x37, + 0xe2, 0xae, 0xfe, 0xdb, 0x12, 0x34, 0x93, 0xd2, 0xf0, 0x13, 0x14, 0xb1, 0xf7, 0xa0, 0x96, 0xd0, + 0x54, 0x52, 0xb7, 0x6e, 0xbc, 0xa0, 0x6e, 0xd1, 0x05, 0x56, 0xff, 0x73, 0x0b, 0x6a, 0x89, 0xf0, + 0x47, 0x93, 0x23, 0x81, 0x15, 0x0c, 0xa5, 0x8a, 0x32, 0x7e, 0x93, 0x5d, 0x68, 0x7a, 0x3c, 0x72, + 0x85, 0xaf, 0x12, 0x59, 0x45, 0x39, 0x2f, 0x22, 0xbf, 0x80, 0xea, 0x4c, 0xf8, 0x49, 0xf3, 0xd1, + 0xbc, 0x77, 0xad, 0x68, 0xd9, 0xb6, 0x04, 0x50, 0x85, 0x23, 0xbf, 0x86, 0xaa, 0x98, 0x4f, 0x78, + 0x94, 0xd4, 0x96, 0xb7, 0x0a, 0xf7, 0xa9, 0xee, 0xa2, 0x1f, 0x9c, 0x50, 0x09, 0xa5, 0xca, 0x82, + 0x7c, 0x0c, 0x2b, 0xc7, 0xa1, 0x98, 0xb6, 0x6b, 0x18, 0xa1, 0xb7, 0x5f, 0x10, 0x21, 0x33, 0x88, + 0x9d, 0x27, 0xbc, 0x1f, 0x8a, 0xe9, 0x83, 0x72, 0xbb, 0x44, 0xd1, 0x8c, 0xf4, 0xa1, 0xe9, 0xa3, + 0x9c, 0xa1, 0x97, 0x2d, 0x9c, 0xff, 0xd5, 0xbc, 0x50, 0xf0, 0xd3, 0x6f, 0xf2, 0x35, 0x6c, 0xcf, + 0xb8, 0x60, 0x49, 0xe2, 0xe6, 0x5d, 0x5e, 0xfd, 0x21, 0x2e, 0x37, 0x67, 0x5c, 0x8c, 0xd1, 0x47, + 0x26, 0x24, 0x23, 0x58, 0x9f, 0x09, 0xbe, 0x20, 0x6f, 0x49, 0x0a, 0x48, 0xfe, 0x6b, 0xf7, 0xee, + 0xbc, 0xc0, 0xe9, 0x9e, 0x9d, 0x9a, 0x48, 0xc6, 0xa0, 0x6b, 0xb3, 0xa5, 0x31, 0x79, 0x1f, 0xea, + 0xb1, 0xf3, 0x9c, 0x09, 0x27, 0xe6, 0xed, 0xc6, 0xe5, 0x9c, 0x39, 0x76, 0x9e, 0x53, 0x27, 0xe6, + 0xb4, 0x16, 0xab, 0x8f, 0xe2, 0x32, 0x02, 0xc5, 0x65, 0x24, 0x47, 0xcb, 0xcd, 0xff, 0x9d, 0x96, + 0x5b, 0x3f, 0x0d, 0x2d, 0xaf, 0xfe, 0x48, 0x5a, 0xfe, 0x14, 0x9a, 0x0e, 0x76, 0xbe, 0x6c, 0xe2, + 0x07, 0x4f, 0xda, 0x6b, 0x78, 0xdf, 0xde, 0x28, 0xac, 0x5f, 0x08, 0x1b, 0xf8, 0xc1, 0x13, 0x0a, + 0x4e, 0xfa, 0x4d, 0x3e, 0x84, 0x15, 0x3c, 0xbb, 0x75, 0x5c, 0xc8, 0x8b, 0x7a, 0xd0, 0xc5, 0xbf, + 0x78, 0x70, 0x68, 0x24, 0x67, 0xcf, 0x15, 0x85, 0xb6, 0x76, 0xf9, 0xec, 0xe3, 0xb4, 0x4a, 0x50, + 0xc8, 0x2a, 0x06, 0x31, 0x60, 0x55, 0xf0, 0x89, 0x13, 0x73, 0x8f, 0x4d, 0xb9, 0xe7, 0x3b, 0xed, + 0x8d, 0xcb, 0xdb, 0x2f, 0xaa, 0x80, 0xfb, 0x12, 0x47, 0x5b, 0x22, 0x37, 0x22, 0xa7, 0x70, 0x3d, + 0x6d, 0xac, 0xe3, 0x58, 0xf8, 0x47, 0xf3, 0x98, 0xb3, 0xa7, 0xce, 0x64, 0x8e, 0xfc, 0x41, 0xd0, + 0xe7, 0xdd, 0x17, 0xb5, 0xd7, 0x0b, 0xa3, 0x2f, 0xa5, 0x8d, 0xe9, 0xd1, 0x9d, 0xa8, 0x58, 0x41, + 0x1e, 0xc2, 0xda, 0x33, 0xc7, 0x8f, 0x27, 0x7e, 0x14, 0x33, 0x45, 0x0e, 0x9b, 0x78, 0x11, 0xde, + 0x2c, 0xf2, 0x7e, 0x98, 0x20, 0x15, 0x35, 0xac, 0x3e, 0xcb, 0x0f, 0xf5, 0x6f, 0x60, 0x6d, 0x39, + 0x19, 0xc8, 0x2d, 0xb8, 0x61, 0x53, 0xc3, 0xee, 0x3c, 0x96, 0x6f, 0x10, 0x36, 0x7e, 0x6c, 0x1b, + 0xec, 0x60, 0x38, 0xb2, 0x8d, 0xae, 0xd9, 0x37, 0x8d, 0x9e, 0xf6, 0x1a, 0x69, 0x41, 0x9d, 0x1a, + 0x5f, 0x1c, 0x98, 0xd4, 0xe8, 0x69, 0x25, 0x39, 0xb2, 0xec, 0xb1, 0x69, 0x0d, 0xe5, 0x73, 0x85, + 0x6c, 0xc0, 0xea, 0xd0, 0x1a, 0xb3, 0xd1, 0x81, 0x6d, 0x5b, 0x74, 0x6c, 0xf4, 0xb4, 0x8a, 0xfe, + 0xb7, 0x8c, 0xf7, 0xd1, 0xff, 0xeb, 0xd0, 0x1e, 0x19, 0xf4, 0x4b, 0xb3, 0x6b, 0x14, 0x39, 0x7f, + 0x0b, 0x6e, 0x2d, 0x69, 0x7b, 0xe6, 0xd0, 0x1c, 0x7e, 0xce, 0xa8, 0x21, 0xa5, 0x1d, 0x39, 0x8f, + 0x56, 0x22, 0x6f, 0xc0, 0xf5, 0x25, 0x50, 0xdf, 0xb2, 0x7a, 0xcc, 0xa2, 0x3d, 0x83, 0x9a, 0xc3, + 0xcf, 0xb5, 0x32, 0xb9, 0x09, 0xd7, 0x96, 0xf4, 0xc6, 0x97, 0xb8, 0x15, 0xb3, 0xfb, 0xc8, 0x18, + 0x6b, 0x15, 0xf9, 0xde, 0x5a, 0x52, 0x8f, 0xa9, 0x69, 0xb3, 0xb1, 0x75, 0x40, 0xb5, 0x15, 0xfd, + 0x3b, 0xa8, 0x22, 0xfb, 0xca, 0xee, 0x16, 0xf9, 0x97, 0x4d, 0x7d, 0x57, 0x84, 0x51, 0x52, 0xe7, + 0x9a, 0x28, 0xdb, 0x47, 0x11, 0x79, 0x0b, 0x56, 0x93, 0x26, 0xe3, 0x8c, 0xb9, 0xa1, 0xb7, 0xa8, + 0xc5, 0xad, 0x85, 0xb0, 0x1b, 0x7a, 0x9c, 0xbc, 0x03, 0x44, 0xda, 0xc8, 0xe7, 0x71, 0xc2, 0x09, + 0xb2, 0x89, 0x55, 0x35, 0x43, 0x4b, 0x34, 0x8a, 0x14, 0xc6, 0xce, 0x89, 0xfe, 0x87, 0x32, 0xac, + 0x9f, 0x23, 0x73, 0xf9, 0x32, 0x99, 0xfa, 0x01, 0x73, 0xbc, 0xa7, 0x4e, 0xe0, 0x72, 0x96, 0x1c, + 0x6e, 0xb2, 0xa0, 0x8d, 0xa9, 0x1f, 0x74, 0x94, 0xe6, 0x81, 0x52, 0x90, 0x4f, 0xe1, 0xf5, 0x3c, + 0x3e, 0x0c, 0x26, 0x7e, 0xc0, 0x99, 0x2b, 0x07, 0xd2, 0x69, 0x52, 0x96, 0xaf, 0x65, 0x86, 0x16, + 0x22, 0xba, 0x0b, 0x00, 0xf9, 0x02, 0xae, 0xca, 0x5b, 0x9d, 0x98, 0x4c, 0x54, 0x87, 0x2f, 0xd9, + 0xa6, 0xf2, 0x92, 0x92, 0x85, 0xb5, 0x63, 0x53, 0xda, 0x76, 0x73, 0xa6, 0x92, 0x77, 0x3e, 0x02, + 0x08, 0xc2, 0x94, 0xb5, 0x56, 0x5e, 0xc5, 0x4f, 0x43, 0x19, 0xf4, 0x39, 0xd7, 0xf7, 0xa0, 0x96, + 0x70, 0xad, 0x8c, 0x39, 0x1e, 0x08, 0x9b, 0x71, 0xe1, 0xf2, 0x40, 0xbd, 0x1e, 0xab, 0xb4, 0x85, + 0x42, 0x5b, 0xc9, 0xf4, 0x7f, 0x95, 0x61, 0xfb, 0x42, 0xfd, 0xe8, 0xfb, 0x7c, 0xe2, 0x91, 0x35, + 0x28, 0xfb, 0x1e, 0xd6, 0xde, 0x06, 0x2d, 0xfb, 0x32, 0x93, 0x14, 0xf1, 0xa8, 0x9f, 0x2b, 0xde, + 0x7d, 0xa5, 0x4a, 0x84, 0x9e, 0xf6, 0xf0, 0x6f, 0x8e, 0x85, 0xb6, 0xa0, 0x3a, 0x71, 0x8e, 0xf8, + 0x24, 0xb9, 0x05, 0x6a, 0x20, 0xa5, 0xc8, 0x00, 0xed, 0x0a, 0x96, 0x01, 0x35, 0x90, 0xad, 0x87, + 0x2f, 0x5f, 0x8d, 0xc8, 0xa3, 0x1e, 0xc6, 0xa3, 0x4e, 0xc1, 0x8f, 0x12, 0xb2, 0xf5, 0xf4, 0xdf, + 0x95, 0xa0, 0x91, 0x4e, 0x20, 0x2f, 0x6c, 0xdf, 0x34, 0x06, 0xbd, 0xa2, 0x84, 0xd1, 0xa0, 0x35, + 0x7a, 0x68, 0xd1, 0x31, 0xeb, 0x0c, 0x47, 0x87, 0x06, 0xd5, 0x4a, 0x64, 0x15, 0x1a, 0x76, 0x87, + 0x76, 0x3e, 0xa7, 0x1d, 0xfb, 0xa1, 0x56, 0x26, 0x9b, 0xb0, 0xbe, 0x7f, 0x30, 0x18, 0x9b, 0xf6, + 0xc0, 0x60, 0xdd, 0x87, 0x96, 0xd9, 0x35, 0xb4, 0x0a, 0x59, 0x03, 0xe8, 0x3e, 0x34, 0xba, 0x8f, + 0x1e, 0x58, 0x5f, 0x19, 0x23, 0x6d, 0x45, 0x66, 0x71, 0x8f, 0x5a, 0x76, 0xcf, 0x3a, 0x1c, 0x6a, + 0x55, 0xd2, 0x84, 0xda, 0x03, 0xcb, 0x1a, 0x18, 0x9d, 0xa1, 0x76, 0x45, 0xff, 0x47, 0x09, 0x36, + 0x2e, 0x84, 0x80, 0x7c, 0x06, 0xd5, 0x63, 0xb9, 0xbe, 0x76, 0x09, 0x69, 0xed, 0xce, 0xab, 0x07, + 0x8e, 0x2a, 0x43, 0xf2, 0x2e, 0x6c, 0x1d, 0xfb, 0x22, 0x52, 0x3f, 0x09, 0x30, 0x77, 0x1e, 0xc5, + 0xe1, 0x94, 0x8b, 0x08, 0xc3, 0x57, 0xc7, 0x1b, 0x40, 0x50, 0x2f, 0xfb, 0xce, 0xee, 0x42, 0x4b, + 0xee, 0xcb, 0x02, 0x16, 0xcf, 0x45, 0x20, 0x13, 0x2a, 0x33, 0xaa, 0x64, 0x46, 0xa9, 0x3a, 0x35, + 0xd2, 0xff, 0x59, 0x82, 0x5a, 0x52, 0x49, 0xc9, 0xfd, 0xac, 0xee, 0x96, 0x5e, 0xd6, 0x81, 0xa5, + 0x55, 0xf7, 0x5c, 0x4a, 0x2d, 0x25, 0x46, 0xd6, 0xe9, 0xe6, 0x52, 0x2a, 0x7f, 0xff, 0x65, 0x57, + 0xfc, 0x19, 0xb4, 0x12, 0x5f, 0xaa, 0x46, 0x55, 0xf0, 0xba, 0xdd, 0xbc, 0x74, 0x6a, 0xbc, 0x57, + 0xcd, 0xc4, 0x44, 0x0e, 0x74, 0x01, 0x8d, 0xb4, 0xa2, 0x93, 0xbb, 0x50, 0x91, 0x79, 0xf4, 0xd2, + 0x0d, 0x48, 0x14, 0xf9, 0x00, 0xea, 0xc7, 0x9c, 0xff, 0x80, 0x79, 0x6b, 0xc7, 0x1c, 0x3f, 0xf4, + 0xbf, 0x96, 0x00, 0xb2, 0x82, 0x4d, 0x34, 0xa8, 0xcc, 0xc5, 0x24, 0x69, 0x94, 0xe5, 0x27, 0xb9, + 0x0e, 0xf5, 0x89, 0x13, 0x9c, 0xcc, 0x9d, 0x93, 0x05, 0xf9, 0xa5, 0x63, 0xf2, 0x73, 0xfc, 0x81, + 0x04, 0x7f, 0xde, 0xe0, 0x1e, 0x73, 0xc3, 0x79, 0x10, 0x8b, 0xb3, 0x24, 0x0d, 0x36, 0x32, 0x4d, + 0x57, 0x29, 0xc8, 0x27, 0x50, 0x9f, 0x4d, 0x9c, 0x18, 0xdb, 0xc2, 0x15, 0x5c, 0xa5, 0x7e, 0x79, + 0xff, 0x60, 0x27, 0x48, 0x9a, 0xda, 0xe8, 0xbf, 0x2f, 0x01, 0x64, 0xe5, 0xbd, 0xe0, 0xa1, 0xa8, + 0x96, 0xbd, 0xf4, 0x50, 0x24, 0x77, 0x61, 0x23, 0x3a, 0x0d, 0x45, 0xcc, 0xf2, 0x4d, 0xbb, 0xda, + 0x88, 0x86, 0x8a, 0x5e, 0x51, 0xe7, 0x5e, 0x79, 0xb5, 0xce, 0x5d, 0xff, 0x4b, 0x09, 0x5a, 0xf9, + 0x76, 0xa1, 0x20, 0x80, 0x9f, 0x24, 0xf4, 0x53, 0xbe, 0xbc, 0x67, 0xcd, 0x7b, 0xd8, 0xc3, 0xbf, + 0x39, 0xd2, 0x69, 0x43, 0xcd, 0x75, 0xd4, 0xb2, 0x55, 0x49, 0x59, 0x0c, 0xf5, 0x77, 0xa0, 0x91, + 0x82, 0xc9, 0x16, 0x68, 0x05, 0xd4, 0xd1, 0x80, 0xaa, 0xfd, 0xd0, 0x1a, 0x5b, 0x5a, 0x49, 0x3f, + 0x84, 0x9d, 0x4b, 0x9a, 0x10, 0x59, 0x08, 0xb3, 0x6e, 0x26, 0x8d, 0x63, 0x33, 0x95, 0x99, 0x9e, + 0x7c, 0xac, 0xa6, 0x6d, 0x8e, 0x8a, 0x5e, 0xed, 0xa9, 0xb2, 0xd6, 0xff, 0x54, 0x82, 0xd5, 0xa5, + 0x06, 0x44, 0x9e, 0x8c, 0xcc, 0xa5, 0xdc, 0x6b, 0x33, 0xa5, 0xf0, 0xc0, 0x5e, 0x3c, 0x38, 0x11, + 0xe5, 0x3c, 0xcf, 0xa3, 0xca, 0x09, 0xca, 0x79, 0x9e, 0xa1, 0x3e, 0x81, 0x1b, 0xd1, 0x7c, 0x36, + 0x0b, 0x45, 0x1c, 0x31, 0xc7, 0xf3, 0x7c, 0xb9, 0x73, 0x67, 0x82, 0xc4, 0xca, 0x23, 0xf5, 0x6b, + 0x5f, 0x9d, 0x5e, 0x5b, 0x40, 0x3a, 0x29, 0x82, 0x2a, 0xc0, 0x9d, 0xfb, 0xd0, 0x48, 0xaf, 0x3d, + 0xd9, 0x06, 0xd2, 0x37, 0xbf, 0x32, 0x7a, 0x8c, 0x76, 0xc6, 0x06, 0xeb, 0x19, 0xfd, 0xce, 0xc1, + 0x60, 0xac, 0xbd, 0x26, 0xb9, 0xd2, 0x36, 0x28, 0xb3, 0x0d, 0x3a, 0x92, 0xdd, 0xc7, 0x9d, 0xef, + 0x60, 0xe3, 0x42, 0x53, 0x2c, 0xfb, 0x96, 0xa4, 0x29, 0x62, 0x5d, 0x6a, 0xf4, 0xcc, 0x31, 0xeb, + 0x76, 0x68, 0xef, 0x62, 0x73, 0x53, 0x04, 0xea, 0x5a, 0xc3, 0x9e, 0x99, 0xb4, 0x50, 0xd8, 0xdc, + 0x14, 0x81, 0x3a, 0x83, 0xc3, 0xce, 0xe3, 0x91, 0x56, 0xbe, 0xf3, 0x7d, 0x09, 0xd6, 0x96, 0xb3, + 0x40, 0xb6, 0x6c, 0x9d, 0xae, 0x74, 0xc0, 0xec, 0x41, 0x67, 0xdc, 0xb7, 0xe8, 0xfe, 0xc5, 0x89, + 0xcf, 0x03, 0x0e, 0x8d, 0x07, 0xac, 0x63, 0xdb, 0x03, 0xb3, 0x9b, 0xeb, 0xaa, 0xce, 0x83, 0xf6, + 0xad, 0x07, 0xe6, 0xc0, 0x90, 0x58, 0xad, 0x4c, 0x6e, 0xc0, 0xce, 0x79, 0x7d, 0x67, 0xd8, 0xa3, + 0x96, 0xd9, 0xd3, 0x2a, 0x64, 0x07, 0x36, 0xcf, 0x2b, 0x4d, 0x6b, 0xa4, 0xad, 0x1c, 0x5d, 0xc1, + 0xff, 0x4d, 0xb8, 0xff, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x3f, 0x56, 0x84, 0x5c, 0x18, + 0x00, 0x00, }
diff --git a/feeds/feeds.proto b/feeds/feeds.proto index d714f46..f3c863d 100644 --- a/feeds/feeds.proto +++ b/feeds/feeds.proto
@@ -409,7 +409,18 @@ // Rules to book/cancel an appointment. (optional) SchedulingRules rules = 6; // Intake forms to customize the service. (optional) - repeated ServiceIntakeForm form = 7; + // + // Deprecated. Please see intake_form and per_ticket_intake_form. + repeated ServiceIntakeForm form = 7 [deprecated = true]; + + // A form requesting additional information from the user when they book this + // service. (optional) + ServiceIntakeForm intake_form = 20; + + // A form requesting additional information from the user when they book this + // service. This form must be filled out once for each ticket the user is + // booking. (optional) + ServiceIntakeForm per_ticket_intake_form = 21; // Enum to indicate the prepayment type. enum PrepaymentType { @@ -476,6 +487,11 @@ // Each Service may have zero or more values for each service attribute // defined in the corresponding Merchant. repeated ServiceAttributeValueId service_attribute_value_id = 18; + + // Rules related to joining the waitlist. Should be populated if the service + // and merchant support waitlist functionality. Should not be populated + // otherwise. + WaitlistRules waitlist_rules = 19; } // The price of a service or a fee. @@ -533,6 +549,11 @@ // Defines a field that is included in a ServiceIntakeForm. message ServiceIntakeFormField { + // A string from an aggregator partner which uniquely identifies a form field. + // This id should be the same as the id in the corresponding form field + // answer. (required) + string id = 5; + // Enum to indicate the type of field. enum FieldType { // Fields of unspecified or unknown type will be ignored. @@ -571,12 +592,12 @@ repeated ServiceIntakeFormField field = 1; // If true, this form will be shown to first time customers. - // (one of first_time_customers or returning_customers required) - bool first_time_customers = 2; + // Deprecated. This functionality is not supported for intake forms. + bool first_time_customers = 2 [deprecated = true]; // If true, this form will be shown to repeat customers. - // (one of first_time_customers or returning_customers required) - bool returning_customers = 3; + // Deprecated. This functionality is not supported for intake forms. + bool returning_customers = 3 [deprecated = true]; } // A deposit that the user may be charged or have a hold on their credit card @@ -726,3 +747,18 @@ // in the service attribute definition. string value_id = 2; } + +// Rules related to joining the waitlist. +message WaitlistRules { + // Required. Must be a positive integer for services providing waitlist + // functionality. If the service or merchant does not provide waitlist + // functionality, this must not be populated. + int32 min_party_size = 1; + // Required. Must be a positive integer for services providing waitlist + // functionality. If the service or merchant does not provide waitlist + // functionality, this must not be populated. + int32 max_party_size = 2; + // If true, the user will be able to send a free-form additional text request + // when joining the waitlist for this service. + bool supports_additional_request = 3; +}
diff --git a/proto/v3.proto b/proto/v3.proto index c443878..7775478 100644 --- a/proto/v3.proto +++ b/proto/v3.proto
@@ -161,8 +161,7 @@ // The parameters to be used if the payment is processed by the partner // (i.e. payment_information.payment_processed_by is equal to // PROCESSED_BY_PARTNER). (optional) - PaymentProcessingParameters payment_processing_parameters = - 5; + PaymentProcessingParameters payment_processing_parameters = 5; // Idempotency token for CreateBooking requests. (required) string idempotency_token = 6; @@ -577,6 +576,8 @@ CAN_FULFILL = 1; // No adequate availability for the slot requested. SLOT_UNAVAILABLE = 2; + // Child tickets cannot be booked without an adult ticket. + CHILD_TICKETS_WITHOUT_ADULT = 6; // The combination of ticket types requested cannot be fulfilled. UNFULFILLABLE_TICKET_COMBINATION = 3; // The total price of this line item is not correct.
diff --git a/proto/waitlist.proto b/proto/waitlist.proto new file mode 100644 index 0000000..5784284 --- /dev/null +++ b/proto/waitlist.proto
@@ -0,0 +1,323 @@ +// API v3 waitlist public interface declaration +syntax = "proto3"; + +// Waitlist partner API protos +package ext.maps.booking.partner.v3.waitlist; + +// +------+------------------------------+----------------------------------+ +// | Verb | HTTP Path | Request/Response Body | +// +------+------------------------------+----------------------------------+ +// | GET | /v3/HealthCheck | - | +// | | | - | +// +------+------------------------------+----------------------------------+ +// | POST | /v3/BatchGetWaitlistEstimates| BatchGetWaitlistEstimatesRequest | +// | | | BatchGetWaitlistEstimatesResponse| +// +------+------------------------------+----------------------------------+ +// | POST | /v3/CreateWaitlistEntry | CreateWaitlistEntryRequest | +// | | | CreateWaitlistEntryResponse | +// +------+------------------------------+----------------------------------+ +// | POST | /v3/GetWaitlistEntry | GetWaitlistEntryRequest | +// | | | GetWaitlistEntryResponse | +// +------+------------------------------+----------------------------------+ +// | POST | /v3/DeleteWaitlistEntry | DeleteWaitlistEntryRequest | +// | | | google.protobuf.Empty | +// +------+------------------------------+----------------------------------+ + +// BatchGetWaitEstimates method + +// Batch request for the wait estimates for the specified merchant, service and +// party sizes. +message BatchGetWaitEstimatesRequest { + // Required. Partner-provided ID for the merchant. + string merchant_id = 1; + + // Required. Partner-provided ID for the service. + string service_id = 2; + + // Required. The different party sizes WaitEstimates are requested for. + // WaitEstimates may differ with the number of people in the party. + repeated int32 party_size = 3; +} + +// Response for the BatchGetWaitEstimates RPC with the wait estimates of the +// specified merchant, service and party sizes. +message BatchGetWaitEstimatesResponse { + // Required. A status for the waitlist that indicates whether new users can + // join and what the reason is if they can’t join. If the waitlist is not + // open, all other fields in the BatchGetWaitEstimatesResponse are expected to + // be unset. + WaitlistStatus waitlist_status = 1; + + // The wait estimates for each party size requested. The response should + // contain exactly one wait estimate for each party size sent in the request. + // If a party size is not available for some reason, prefer ommitting it + // instead of returning an error so that the user will have some options to + // choose from. + repeated WaitEstimate wait_estimate = 2; +} + +// A status for the waitlist that determines if new users can join and what +// the reason is if they can’t join. +enum WaitlistStatus { + WAITLIST_STATUS_UNSPECIFIED = 0; + // The waitlist is open and is accepting new users. + OPEN = 1; + // There is currently no wait and users should arrive at the merchant + // without joining the waitlist. + CLOSED_NO_WAIT = 2; + // The waitlist is not currently accepting new users because it is full + // or closed for other reasons. + CLOSED_OTHER = 3; +} + +// The range of time for the current estimated seat time for the user. Estimated +// seat time range must change over time when the merchant or partner updates +// their estimates. +message EstimatedSeatTimeRange { + // Required. The lower bound for the range. Expressed as the number of seconds + // since the Unix epoch. + int64 start_seconds = 1; + + // Required. The upper bound for the range. Expressed as the number of seconds + // since the Unix epoch. + int64 end_seconds = 2; +} + +// Contains fields measuring how long (in time or # of people) until the +// user is ready to leave the waitlist and be seated. +message WaitLength { + // The count of how many other parties are ahead of the user in the waitlist. + // parties_ahead_count must change over time as parties ahead + // in the waitlist are seated or leave the waitlist. Either + // parties_ahead_count or estimated_seat_time_range must be populated. Both + // should be populated. + int32 parties_ahead_count = 1; + + // The range of time that the user is estimated to be seated in. Either + // parties_ahead_count or estimated_seat_time_range must be populated. Both + // should be populated. + EstimatedSeatTimeRange estimated_seat_time_range = 2; +} + +// The wait estimate for a particular party size, merchant and service. +message WaitEstimate { + // Required. The party size this wait estimate applies to. + int32 party_size = 1; + + // Required. Contains fields measuring how long (in time or # of people) until + // the user is ready to leave the waitlist and be seated. + WaitLength wait_length = 2; +} + +// CreateWaitlistEntry method + +// Request for a user to join the waitlist. +// +// Reserve with Google may retry REST HTTP requests if no response is +// received. If the exact same CreateWaitlistEntry is received a second time, +// then the same CreateWaitlistResponse must be returned. A second waitlist +// entry must not be created. +message CreateWaitlistEntryRequest { + // Required. Partner-provided ID for the merchant. + string merchant_id = 1; + + // Required. Partner-provided ID for the service. + string service_id = 2; + + // Required. The party size requested for the waitlist entry. + int32 party_size = 3; + + // Required. Personal information of the user joining the waitlist. + UserInformation user_information = 4; + + // A string from the user which contains any special requests or additional + // information that they would like to notify the merchant about. + // This will be populated when the user submits an additional request to + // Reserve with Google. The partner can disable this functionality at the + // service level by setting supports_additional_request to false in the + // service feed. + string additional_request = 5; + + // Required. Used to differentiate retries from separate requests. If the + // exact same CreateWaitlistEntry is received a second time, (including + // idempotency_token) then the same CreateWaitlistResponse must be returned. + string idempotency_token = 6; +} + +// Response for the CreateWaitlistEntry RPC with the waitlist entry ID or any +// failing business logic information. +message CreateWaitlistEntryResponse { + // Unique partner-provided ID for the newly created entry in the waitlist. + // Required if the waitlist entry was created successfully. Unique for all + // time. + string waitlist_entry_id = 1; + + WaitlistBusinessLogicFailure waitlist_business_logic_failure = 2; +} + +// GetWaitlistEntry method + +// Get the waitlist entry corresponding to the provided waitlist entry ID. +message GetWaitlistEntryRequest { + // Required. The partner-provided waitlist entry ID to request info for. + string waitlist_entry_id = 1; +} + +// Response with the waitlist entry corresponding to the provided +// waitlist entry ID. +message GetWaitlistEntryResponse { + // Required. The partner-provided information about a user’s waitlist entry. + WaitlistEntry waitlist_entry = 1; +} + +// DeleteWaitlistEntry method + +// Cancel the user's entry in the waitlist. +message DeleteWaitlistEntryRequest { + // Required. The partner-provided ID for the waitlist entry to be deleted. + string waitlist_entry_id = 1; +} + +// WaitlistEntry specification + +enum WaitlistEntryState { + WAITLIST_ENTRY_STATE_UNSPECIFIED = 0; + // The waitlist entry was created and the user is currently waiting in the + // waitlist. + WAITING = 1; + // The waitlist entry has been canceled. Cancellation for no-shows should use + // the NO_SHOW state. + CANCELED = 2; + // The merchant is ready to serve the user. + SERVICE_READY = 3; + // The user has checked in with the host and is waiting to be seated. + CHECKED_IN = 4; + // The user has arrived and been seated by the merchant. + SEATED = 5; + // The user did not arrive at the merchant in time and lost their space. + NO_SHOW = 6; +} + +// The times at which the waitlist entry changed state. +message WaitlistEntryStateTimes { + // Required. The time at which the waitlist entry was created. + // In seconds since Unix epoch. + int64 created_time_seconds = 1; + + // The time that the waitlist entry was cancelled. Must be populated + // when the waitlist entry has been canceled but not before. + // In seconds since Unix epoch. + int64 canceled_time_seconds = 2; + + // The time the merchant was ready to serve the user. + // service_readied_time_seconds must be populated after the merchant is + // ready to serve the user but not before. + // In seconds since Unix epoch. + int64 service_readied_time_seconds = 3; + + // The actual time the user checked in with the host. checked_in_time must be + // populated after the user has checked in with the merchant but not before. + // In seconds since Unix epoch. + int64 checked_in_time_seconds = 4; + + // The seated time for the user. seated_time_seconds must be populated + // when the user has been seated but not before. + // In seconds since Unix epoch. + int64 seated_time_seconds = 5; + + // The time that the user was marked as a no-show. marked_no_show_time_seconds + // must be populated when the user has been marked a no-show but not before. + // In seconds since Unix epoch. + int64 marked_no_show_time_seconds = 6; +} + +// An entry in the waitlist. +message WaitlistEntry { + // Required. + WaitlistEntryState waitlist_entry_state = 1; + + // Required. The times at which the waitlist entry changed state. + WaitlistEntryStateTimes waitlist_entry_state_times = 2; + + // Required. Contains fields measuring how long (in time or # of people) until + // the user is ready to leave the waitlist and be seated. + WaitEstimate wait_estimate = 3; +} + +// WaitlistBusinessLogicFailure specification + +// Status data that conveys why creating a waitlist entry fails. +// If there is a business logic error that is not captured here, please +// reach out to the Reserve with Google team to add it to this list. Other +// errors should be returned using standard HTTP error codes. +message WaitlistBusinessLogicFailure { + enum Cause { + // Default value: Don't use; amounts to an "unknown error" + // Unexpected errors must be returned using standard HTTP error codes. + CAUSE_UNSPECIFIED = 0; + + // The user has already booked a waitlist entry with the partner. + EXISTING_WAITLIST_ENTRY = 1; + + // The requested party size is below the merchant’s minimum. + BELOW_MIN_PARTY_SIZE = 2; + + // The requested party size is above the merchant’s maximum. + ABOVE_MAX_PARTY_SIZE = 3; + + // The requested merchant is currently closed. + MERCHANT_CLOSED = 4; + + // There is currently no wait and the user should walk in without joining + // the waitlist. + NO_WAIT = 5; + + // The waitlist is at capacity and new users are not being accepted at this + // time. + WAITLIST_FULL = 6; + } + // Required. The reason why the booking failed. + Cause cause = 1; + + // This optional field is used for the partner to include additional + // information for debugging purposes only. + string description = 2; +} + +// User specification + +// Personal information about the person making a booking +message UserInformation { + // Unique ID of the user to the partner, chosen by Reserve with Google. + // (required) + string user_id = 1; + + // Given name of the user (maximum 40 characters) (required) + string given_name = 2; + + // Family name of the user (maximum 40 characters) (required) + string family_name = 3; + + // Address of the user (optional) + PostalAddress address = 4; + + // Phone number of the user (required) + string telephone = 5; + + // Email address of the user (required) + string email = 6; +} + +// The postal address for a merchant. +message PostalAddress { + // The country, e.g. "USA". (required) + string country = 1; + // The locality/city, e.g. "Mountain View". (required) + string locality = 2; + // The region/state/province, e.g. "CA". (required) + string region = 3; + // The postal code, e.g. "94043". (required) + string postal_code = 4; + // The street address, e.g. "1600 Amphitheatre Pkwy". (required) + string street_address = 5; +}
diff --git a/testclient/waitlistClient.go b/testclient/waitlistClient.go new file mode 100644 index 0000000..92098bf --- /dev/null +++ b/testclient/waitlistClient.go
@@ -0,0 +1,253 @@ +/* +Copyright 2017 Google Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package main + +import ( + "flag" + "fmt" + "log" + "os" + "path/filepath" + "time" + + "github.com/maps-booking-v3/api" + "github.com/maps-booking-v3/utils" + + fpb "github.com/maps-booking-v3/feeds" +) + +const logFile = "http_test_client_log_" + +var ( + serverAddr = flag.String("server_addr", "example.com:80", "Your http server's address in the format of host:port") + credentialsFile = flag.String("credentials_file", "", "File containing credentials for your server. Leave blank to bypass authentication. File should have exactly one line of the form 'username:password'.") + numTestServices = flag.Int("num_test_services", 10, "Maximum number of services to test from service_feed. Services will be selected randomly") + allFlows = flag.Bool("all_tests", false, "Whether to test all endpoints.") + healthFlow = flag.Bool("health_check_test", false, "Whether to test the Health endpoint.") + batchGetWaitEstimatesFlow = flag.Bool("batch_get_wait_estimates_test", false, "Whether to test the BatchGetWaitEstimates endpoint.") + createWaitlistEntryFlow = flag.Bool("create_waitlist_entry_test", false, "Whether to test the CreateWaitlistEntry endpoint.") + getWaitlistEntryFlow = flag.Bool("get_waitlist_entry_test", false, "Whether to test the GetWaitlistEntry endpoint. CreateWaitlistEntry will also be called to create the entries.") + deleteWaitlistEntryFlow = flag.Bool("delete_waitlist_entry_test", false, "Whether to test the DeleteWaitlistEntry endpoint. CreateWaitlistEntry will also be called to create the entries.") + serviceFeed = flag.String("service_feed", "", "Absolute path to service feed required for all tests except health. Feeds can be in either json or pb3 format.") + outputDir = flag.String("output_dir", "", "Absolute path of dir to dump log file.") + caFile = flag.String("ca_file", "", "Absolute path to your server's Certificate Authority root cert. Downloading all roots currently recommended by the Google Internet Authority is a suitable alternative https://pki.google.com/roots.pem. Leave blank to connect using http rather than https.") + fullServerName = flag.String("full_server_name", "", "Fully qualified domain name. Same name used to sign CN. Only necessary if ca_file is specified and the base URL differs from the server address.") + outputToTerminal = flag.Bool("output_to_terminal", false, "Output to terminal rather than a file.") +) + +type counters struct { + TotalServicesProcessed int + HealthCheckSuccess bool + BatchGetWaitEstimatesSuccess int + BatchGetWaitEstimatesErrors int + CreateWaitlistEntrySuccess int + CreateWaitlistEntryErrors int + GetWaitlistEntrySuccess int + GetWaitlistEntryErrors int + DeleteWaitlistEntrySuccess int + DeleteWaitlistEntryErrors int +} + +// GenerateWaitlistEntries creates a waitlist entry for each provided service. +func GenerateWaitlistEntries(services []*fpb.Service, stats *counters, conn *api.HTTPConnection) []string { + log.Println("no previous waitlist entries to use, acquiring new inventory") + utils.LogFlow("Generate Fresh Entries", "Start") + defer utils.LogFlow("Generate Fresh Entries", "End") + + var out []string + totalServices := len(services) + for i, s := range services { + id, err := api.CreateWaitlistEntry(s, conn) + if err != nil { + log.Printf("%s. skipping waitlistEntry %d/%d, serviceID: %s", + err.Error(), i, totalServices, s.GetServiceId()) + stats.CreateWaitlistEntryErrors++ + continue + } + out = append(out, id) + stats.CreateWaitlistEntrySuccess++ + } + return out +} + +func createLogFile() (*os.File, error) { + var err error + outPath := *outputDir + if outPath == "" { + outPath, err = os.Getwd() + if err != nil { + return nil, err + } + } + + now := time.Now().UTC() + nowString := fmt.Sprintf("%d-%02d-%02d_%02d-%02d-%02d", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second()) + outFile := filepath.Join(outPath, fmt.Sprintf("%s%s", logFile, nowString)) + + return os.Create(outFile) +} + +func logStats(stats counters) { + log.Println("\n************* Begin Stats *************\n") + var totalErrors int + if *healthFlow || *allFlows { + if stats.HealthCheckSuccess { + log.Println("HealthCheck Succeeded") + } else { + totalErrors++ + log.Println("HealthCheck Failed") + } + } + if *batchGetWaitEstimatesFlow || *allFlows { + totalErrors += stats.BatchGetWaitEstimatesErrors + log.Printf("BatchGetWaitEstimates Errors: %d/%d", stats.BatchGetWaitEstimatesErrors, stats.BatchGetWaitEstimatesErrors+stats.BatchGetWaitEstimatesSuccess) + } + if *createWaitlistEntryFlow || *allFlows { + totalErrors += stats.CreateWaitlistEntryErrors + log.Printf("CreateWaitlistEntry Errors: %d/%d", stats.CreateWaitlistEntryErrors, stats.CreateWaitlistEntryErrors+stats.CreateWaitlistEntrySuccess) + } + if *getWaitlistEntryFlow || *allFlows { + totalErrors += stats.GetWaitlistEntryErrors + log.Printf("GetWaitlistEntry Errors: %d/%d", stats.GetWaitlistEntryErrors, stats.GetWaitlistEntryErrors+stats.GetWaitlistEntrySuccess) + } + if *deleteWaitlistEntryFlow || *allFlows { + totalErrors += stats.DeleteWaitlistEntryErrors + log.Printf("DeleteWaitlistEntry Errors: %d/%d", stats.DeleteWaitlistEntryErrors, stats.DeleteWaitlistEntryErrors+stats.DeleteWaitlistEntrySuccess) + } + + log.Println("\n\n\n") + if totalErrors == 0 { + log.Println("All Tests Pass!") + } else { + log.Printf("Found %d Errors", totalErrors) + } + + log.Println("\n************* End Stats *************\n") + os.Exit(totalErrors) +} + +func main() { + flag.Parse() + var stats counters + + if !*outputToTerminal { + // Set up logging before continuing with flows + f, err := createLogFile() + if err != nil { + log.Fatalf("Failed to create log file %v", err) + } + defer f.Close() + log.SetOutput(f) + } + + conn, err := api.InitHTTPConnection(*serverAddr, *credentialsFile, *caFile, *fullServerName) + if err != nil { + log.Fatalf("Failed to init http connection %v", err) + } + + // HealthCheck Flow + if *healthFlow || *allFlows { + stats.HealthCheckSuccess = true + if err := api.HealthCheck(conn); err != nil { + stats.HealthCheckSuccess = false + log.Println(err.Error()) + } + if !*allFlows && !*batchGetWaitEstimatesFlow && !*createWaitlistEntryFlow && + !*getWaitlistEntryFlow && !*deleteWaitlistEntryFlow { + logStats(stats) + } + } + + // Build services. + if *serviceFeed == "" { + log.Fatal("please set service_feed flag if you wish to test additional flows") + } + + var services []*fpb.Service + services, err = utils.ParseServiceFeed(*serviceFeed) + if err != nil { + log.Fatalf("Failed to get services: %v", err.Error()) + } + // Remove services without waitlist rules. + waitlistServices := services[:0] + for _, s := range services { + if s.GetWaitlistRules() != nil { + waitlistServices = append(waitlistServices, s) + } + } + + if len(services) == 0 { + log.Fatal("no services have waitlist rules") + } + reducedServices := utils.ReduceServices(waitlistServices, *numTestServices) + stats.TotalServicesProcessed += len(reducedServices) + + // BatchGetWaitEstimates Flow + if *batchGetWaitEstimatesFlow || *allFlows { + utils.LogFlow("BatchGetWaitEstimates", "Start") + + for i, s := range reducedServices { + if err = api.BatchGetWaitEstimates(s, conn); err != nil { + log.Printf("%s. BatchGerWaitEstimates failed for service %d/%d. Service_id:", + err.Error(), i, stats.TotalServicesProcessed, s.GetServiceId()) + stats.BatchGetWaitEstimatesErrors++ + continue + } + stats.BatchGetWaitEstimatesSuccess++ + } + utils.LogFlow("BatchGetWaitEstimates", "End") + } + // CreateWaitlistEntry Flow. + var ids []string + if *createWaitlistEntryFlow || *getWaitlistEntryFlow || + *deleteWaitlistEntryFlow || *allFlows { + utils.LogFlow("CreateWaitlistEntry", "Start") + ids = GenerateWaitlistEntries(reducedServices, &stats, conn) + utils.LogFlow("CreateWaitlistEntry", "End") + } + // GetWaitlistEntry Flow + if *getWaitlistEntryFlow || *allFlows { + utils.LogFlow("GetWaitlistEntry", "Start") + for _, id := range ids { + if _, err = api.GetWaitlistEntry(id, conn); err != nil { + log.Printf("%s. get waitlist entry failed for waitlist entry id: %s", + err.Error(), id) + stats.GetWaitlistEntryErrors++ + continue + } + stats.GetWaitlistEntrySuccess++ + } + utils.LogFlow("GetWaitlistEntry", "End") + } + + // DeleteWaitlistentry Flow + if *deleteWaitlistEntryFlow || *allFlows { + utils.LogFlow("DeleteWaitlistEntry", "Start") + + for _, id := range ids { + if err = api.DeleteWaitlistEntry(id, conn); err != nil { + log.Printf("%s. Delete waitlist entry failed for waitlist entry id: %s", + err.Error(), id) + stats.DeleteWaitlistEntryErrors++ + continue + } + stats.DeleteWaitlistEntrySuccess++ + } + utils.LogFlow("DeleteWaitlistEntry", "End") + } + + logStats(stats) +}
diff --git a/utils/utils.go b/utils/utils.go index fa87aa6..f23c4a8 100644 --- a/utils/utils.go +++ b/utils/utils.go
@@ -34,6 +34,7 @@ fpb "github.com/maps-booking-v3/feeds" mpb "github.com/maps-booking-v3/v3" + wpb "github.com/maps-booking-v3/waitlist" ) // SlotKey is a struct representing a unique service. @@ -49,7 +50,23 @@ log.Println(strings.Join([]string{"\n##########\n", status, f, "Flow", "\n##########"}, " ")) } -func parseServiceFeed(serviceFeed string) ([]*fpb.Service, error) { +// ReduceServices randomly selects and returns numTestServices from the provided services. +func ReduceServices(allServices []*fpb.Service, numTestServices int) []*fpb.Service { + reducedServices := make([]*fpb.Service, 0, numTestServices) + + if len(allServices) <= numTestServices { + reducedServices = allServices + } else { + for _, n := range rand.Perm(len(allServices))[0:numTestServices] { + reducedServices = append(reducedServices, allServices[n]) + } + } + log.Printf("Selected %d services out of a possible %d", len(reducedServices), len(allServices)) + return reducedServices +} + +// ParseServiceFeed returns a slice of services for each service in the feed. +func ParseServiceFeed(serviceFeed string) ([]*fpb.Service, error) { var feed fpb.ServiceFeed content, err := ioutil.ReadFile(serviceFeed) if err != nil { @@ -137,7 +154,7 @@ // MerchantLineItemMapFrom attempts to build a collection of LineItems from a service and availability feed. func MerchantLineItemMapFrom(serviceFeed, availabilityFeed string, testSlots int) (map[string][]*mpb.LineItem, error) { - services, err := parseServiceFeed(serviceFeed) + services, err := ParseServiceFeed(serviceFeed) if err != nil { return nil, err } @@ -422,3 +439,47 @@ } return m } + +// ValidateWaitEstimate validates all the fields are populated for the wait estimate. +func ValidateWaitEstimate(waitEstimate *wpb.WaitEstimate) error { + if waitEstimate.GetPartySize() <= 0 { + return errors.New("party size <= 0") + } + waitLength := waitEstimate.GetWaitLength() + if waitLength == nil { + return errors.New("wait estimate not specified") + } + if waitLength.GetPartiesAheadCount() < 0 { + return errors.New("parties ahead count < 0") + } + estimatedSeatTimeRange := waitLength.GetEstimatedSeatTimeRange() + if estimatedSeatTimeRange == nil { + return errors.New("estimated seat time range not specified") + } + if estimatedSeatTimeRange.GetStartSeconds() <= 0 { + return errors.New("start seconds <= 0") + } + if estimatedSeatTimeRange.GetEndSeconds() <= 0 { + return errors.New("end seconds <= 0") + } + return nil +} + +// ValidateWaitlistEntry validates all the fields are populated for the waitlist entry. +func ValidateWaitlistEntry(waitlistEntry *wpb.WaitlistEntry) error { + if waitlistEntry.GetWaitlistEntryState() == wpb.WaitlistEntryState_WAITLIST_ENTRY_STATE_UNSPECIFIED { + return errors.New("waitlist entry state not specified") + } + stateTimes := waitlistEntry.GetWaitlistEntryStateTimes() + if stateTimes == nil { + return errors.New("WaitlistEntryStateTimes not specified") + } + if stateTimes.GetCreatedTimeSeconds() <= 0 { + return errors.New("created time seconds <= 0") + } + waitEstimate := waitlistEntry.GetWaitEstimate() + if waitEstimate == nil { + return errors.New("wait estimate not specified") + } + return ValidateWaitEstimate(waitEstimate) +}
diff --git a/v3/v3.pb.go b/v3/v3.pb.go index 3db0270..20c140b 100644 --- a/v3/v3.pb.go +++ b/v3/v3.pb.go
@@ -1,11 +1,15 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: v3.proto +// Booking partner API protos package ext_maps_booking_partner_v3 -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" +import ( + fmt "fmt" + math "math" + + proto "github.com/golang/protobuf/proto" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -52,6 +56,7 @@ 4: "NO_SHOW", 5: "NO_SHOW_PENALIZED", } + var BookingStatus_value = map[string]int32{ "BOOKING_STATUS_UNSPECIFIED": 0, "CONFIRMED": 1, @@ -64,8 +69,9 @@ func (x BookingStatus) String() string { return proto.EnumName(BookingStatus_name, int32(x)) } + func (BookingStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{0} + return fileDescriptor_1820d8e1a9fad753, []int{0} } // Used when booking/order failure cause is PAYMENT_ERROR_CARD_TYPE_REJECTED to @@ -88,19 +94,21 @@ 3: "AMERICAN_EXPRESS", 4: "DISCOVER", } + var CreditCardType_value = map[string]int32{ "CREDIT_CARD_TYPE_UNSPECIFIED": 0, - "VISA": 1, - "MASTERCARD": 2, - "AMERICAN_EXPRESS": 3, - "DISCOVER": 4, + "VISA": 1, + "MASTERCARD": 2, + "AMERICAN_EXPRESS": 3, + "DISCOVER": 4, } func (x CreditCardType) String() string { return proto.EnumName(CreditCardType_name, int32(x)) } + func (CreditCardType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{1} + return fileDescriptor_1820d8e1a9fad753, []int{1} } type PaymentOptionType int32 @@ -118,6 +126,7 @@ 2: "PAYMENT_OPTION_MULTI_USE", 3: "PAYMENT_OPTION_UNLIMITED_USE", } + var PaymentOptionType_value = map[string]int32{ "PAYMENT_OPTION_TYPE_UNSPECIFIED": 0, "PAYMENT_OPTION_SINGLE_USE": 1, @@ -128,8 +137,9 @@ func (x PaymentOptionType) String() string { return proto.EnumName(PaymentOptionType_name, int32(x)) } + func (PaymentOptionType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{2} + return fileDescriptor_1820d8e1a9fad753, []int{2} } // Prepayment status of a booking. @@ -163,6 +173,7 @@ 3: "PREPAYMENT_REFUNDED", 4: "PREPAYMENT_CREDITED", } + var PrepaymentStatus_value = map[string]int32{ "PREPAYMENT_STATUS_UNSPECIFIED": 0, "PREPAYMENT_PROVIDED": 1, @@ -174,8 +185,9 @@ func (x PrepaymentStatus) String() string { return proto.EnumName(PrepaymentStatus_name, int32(x)) } + func (PrepaymentStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{3} + return fileDescriptor_1820d8e1a9fad753, []int{3} } // Defines how a total price is determined from an availability. @@ -197,6 +209,7 @@ 0: "FIXED_RATE_DEFAULT", 1: "PER_PERSON", } + var PriceType_value = map[string]int32{ "FIXED_RATE_DEFAULT": 0, "PER_PERSON": 1, @@ -205,8 +218,9 @@ func (x PriceType) String() string { return proto.EnumName(PriceType_name, int32(x)) } + func (PriceType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{4} + return fileDescriptor_1820d8e1a9fad753, []int{4} } // This enum indicates what requirements exist for the user to acknowledge or @@ -228,6 +242,7 @@ 1: "DO_NOT_SHOW_DURATION", 2: "MUST_SHOW_DURATION", } + var CheckAvailabilityResponse_DurationRequirement_value = map[string]int32{ "DURATION_REQUIREMENT_UNSPECIFIED": 0, "DO_NOT_SHOW_DURATION": 1, @@ -237,8 +252,9 @@ func (x CheckAvailabilityResponse_DurationRequirement) String() string { return proto.EnumName(CheckAvailabilityResponse_DurationRequirement_name, int32(x)) } + func (CheckAvailabilityResponse_DurationRequirement) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{1, 0} + return fileDescriptor_1820d8e1a9fad753, []int{1, 0} } type BookingFailure_Cause int32 @@ -297,6 +313,7 @@ 11: "BOOKING_NOT_CANCELLABLE", 12: "OVERLAPPING_RESERVATION", } + var BookingFailure_Cause_value = map[string]int32{ "CAUSE_UNSPECIFIED": 0, "SLOT_UNAVAILABLE": 1, @@ -316,8 +333,9 @@ func (x BookingFailure_Cause) String() string { return proto.EnumName(BookingFailure_Cause_name, int32(x)) } + func (BookingFailure_Cause) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{23, 0} + return fileDescriptor_1820d8e1a9fad753, []int{23, 0} } type OrderFailure_Cause int32 @@ -347,6 +365,7 @@ 3: "PAYMENT_ERROR_CARD_DECLINED", 4: "PAYMENT_ERROR", } + var OrderFailure_Cause_value = map[string]int32{ "CAUSE_UNSPECIFIED": 0, "ORDER_UNFULFILLABLE": 1, @@ -358,8 +377,9 @@ func (x OrderFailure_Cause) String() string { return proto.EnumName(OrderFailure_Cause_name, int32(x)) } + func (OrderFailure_Cause) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{26, 0} + return fileDescriptor_1820d8e1a9fad753, []int{26, 0} } // The result of an order fulfillability check. @@ -387,19 +407,21 @@ 3: "UNFULFILLABLE_SERVICE_COMBINATION", 4: "ORDER_UNFULFILLABLE_OTHER_REASON", } + var OrderFulfillability_OrderFulfillabilityResult_value = map[string]int32{ "ORDER_FULFILLABILITY_RESULT_UNSPECIFIED": 0, - "CAN_FULFILL": 1, - "UNFULFILLABLE_LINE_ITEM": 2, - "UNFULFILLABLE_SERVICE_COMBINATION": 3, - "ORDER_UNFULFILLABLE_OTHER_REASON": 4, + "CAN_FULFILL": 1, + "UNFULFILLABLE_LINE_ITEM": 2, + "UNFULFILLABLE_SERVICE_COMBINATION": 3, + "ORDER_UNFULFILLABLE_OTHER_REASON": 4, } func (x OrderFulfillability_OrderFulfillabilityResult) String() string { return proto.EnumName(OrderFulfillability_OrderFulfillabilityResult_name, int32(x)) } + func (OrderFulfillability_OrderFulfillabilityResult) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{27, 0} + return fileDescriptor_1820d8e1a9fad753, []int{27, 0} } // The result of a line item fulfillability check. @@ -412,6 +434,8 @@ LineItemFulfillability_CAN_FULFILL LineItemFulfillability_ItemFulfillabilityResult = 1 // No adequate availability for the slot requested. LineItemFulfillability_SLOT_UNAVAILABLE LineItemFulfillability_ItemFulfillabilityResult = 2 + // Child tickets cannot be booked without an adult ticket. + LineItemFulfillability_CHILD_TICKETS_WITHOUT_ADULT LineItemFulfillability_ItemFulfillabilityResult = 6 // The combination of ticket types requested cannot be fulfilled. LineItemFulfillability_UNFULFILLABLE_TICKET_COMBINATION LineItemFulfillability_ItemFulfillabilityResult = 3 // The total price of this line item is not correct. @@ -425,14 +449,17 @@ 0: "ITEM_FULFILLABILITY_RESULT_UNSPECIFIED", 1: "CAN_FULFILL", 2: "SLOT_UNAVAILABLE", + 6: "CHILD_TICKETS_WITHOUT_ADULT", 3: "UNFULFILLABLE_TICKET_COMBINATION", 4: "INCORRECT_PRICE", 5: "ITEM_UNFULFILLABLE_OTHER_REASON", } + var LineItemFulfillability_ItemFulfillabilityResult_value = map[string]int32{ "ITEM_FULFILLABILITY_RESULT_UNSPECIFIED": 0, "CAN_FULFILL": 1, "SLOT_UNAVAILABLE": 2, + "CHILD_TICKETS_WITHOUT_ADULT": 6, "UNFULFILLABLE_TICKET_COMBINATION": 3, "INCORRECT_PRICE": 4, "ITEM_UNFULFILLABLE_OTHER_REASON": 5, @@ -441,8 +468,9 @@ func (x LineItemFulfillability_ItemFulfillabilityResult) String() string { return proto.EnumName(LineItemFulfillability_ItemFulfillabilityResult_name, int32(x)) } + func (LineItemFulfillability_ItemFulfillabilityResult) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{28, 0} + return fileDescriptor_1820d8e1a9fad753, []int{28, 0} } type PaymentProcessingParameters_PaymentProcessor int32 @@ -458,6 +486,7 @@ 1: "PROCESSOR_STRIPE", 2: "PROCESSOR_BRAINTREE", } + var PaymentProcessingParameters_PaymentProcessor_value = map[string]int32{ "PAYMENT_PROCESSOR_UNSPECIFIED": 0, "PROCESSOR_STRIPE": 1, @@ -467,8 +496,9 @@ func (x PaymentProcessingParameters_PaymentProcessor) String() string { return proto.EnumName(PaymentProcessingParameters_PaymentProcessor_name, int32(x)) } + func (PaymentProcessingParameters_PaymentProcessor) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{31, 0} + return fileDescriptor_1820d8e1a9fad753, []int{31, 0} } // Who handles payment processing? @@ -488,6 +518,7 @@ 1: "PROCESSED_BY_GOOGLE", 2: "PROCESSED_BY_PARTNER", } + var PaymentInformation_PaymentProcessedBy_value = map[string]int32{ "PAYMENT_PROCESSED_BY_UNSPECIFIED": 0, "PROCESSED_BY_GOOGLE": 1, @@ -497,8 +528,9 @@ func (x PaymentInformation_PaymentProcessedBy) String() string { return proto.EnumName(PaymentInformation_PaymentProcessedBy_name, int32(x)) } + func (PaymentInformation_PaymentProcessedBy) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{33, 0} + return fileDescriptor_1820d8e1a9fad753, []int{33, 0} } // Request to check availability for a Slot. @@ -514,16 +546,17 @@ func (m *CheckAvailabilityRequest) String() string { return proto.CompactTextString(m) } func (*CheckAvailabilityRequest) ProtoMessage() {} func (*CheckAvailabilityRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{0} + return fileDescriptor_1820d8e1a9fad753, []int{0} } + func (m *CheckAvailabilityRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CheckAvailabilityRequest.Unmarshal(m, b) } func (m *CheckAvailabilityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CheckAvailabilityRequest.Marshal(b, m, deterministic) } -func (dst *CheckAvailabilityRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CheckAvailabilityRequest.Merge(dst, src) +func (m *CheckAvailabilityRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckAvailabilityRequest.Merge(m, src) } func (m *CheckAvailabilityRequest) XXX_Size() int { return xxx_messageInfo_CheckAvailabilityRequest.Size(m) @@ -568,16 +601,17 @@ func (m *CheckAvailabilityResponse) String() string { return proto.CompactTextString(m) } func (*CheckAvailabilityResponse) ProtoMessage() {} func (*CheckAvailabilityResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{1} + return fileDescriptor_1820d8e1a9fad753, []int{1} } + func (m *CheckAvailabilityResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CheckAvailabilityResponse.Unmarshal(m, b) } func (m *CheckAvailabilityResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CheckAvailabilityResponse.Marshal(b, m, deterministic) } -func (dst *CheckAvailabilityResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CheckAvailabilityResponse.Merge(dst, src) +func (m *CheckAvailabilityResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckAvailabilityResponse.Merge(m, src) } func (m *CheckAvailabilityResponse) XXX_Size() int { return xxx_messageInfo_CheckAvailabilityResponse.Size(m) @@ -629,16 +663,17 @@ func (m *AvailabilityUpdate) String() string { return proto.CompactTextString(m) } func (*AvailabilityUpdate) ProtoMessage() {} func (*AvailabilityUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{2} + return fileDescriptor_1820d8e1a9fad753, []int{2} } + func (m *AvailabilityUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AvailabilityUpdate.Unmarshal(m, b) } func (m *AvailabilityUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_AvailabilityUpdate.Marshal(b, m, deterministic) } -func (dst *AvailabilityUpdate) XXX_Merge(src proto.Message) { - xxx_messageInfo_AvailabilityUpdate.Merge(dst, src) +func (m *AvailabilityUpdate) XXX_Merge(src proto.Message) { + xxx_messageInfo_AvailabilityUpdate.Merge(m, src) } func (m *AvailabilityUpdate) XXX_Size() int { return xxx_messageInfo_AvailabilityUpdate.Size(m) @@ -671,16 +706,17 @@ func (m *SlotAvailability) String() string { return proto.CompactTextString(m) } func (*SlotAvailability) ProtoMessage() {} func (*SlotAvailability) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{3} + return fileDescriptor_1820d8e1a9fad753, []int{3} } + func (m *SlotAvailability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SlotAvailability.Unmarshal(m, b) } func (m *SlotAvailability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_SlotAvailability.Marshal(b, m, deterministic) } -func (dst *SlotAvailability) XXX_Merge(src proto.Message) { - xxx_messageInfo_SlotAvailability.Merge(dst, src) +func (m *SlotAvailability) XXX_Merge(src proto.Message) { + xxx_messageInfo_SlotAvailability.Merge(m, src) } func (m *SlotAvailability) XXX_Size() int { return xxx_messageInfo_SlotAvailability.Size(m) @@ -721,16 +757,17 @@ func (m *CheckOrderFulfillabilityRequest) String() string { return proto.CompactTextString(m) } func (*CheckOrderFulfillabilityRequest) ProtoMessage() {} func (*CheckOrderFulfillabilityRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{4} + return fileDescriptor_1820d8e1a9fad753, []int{4} } + func (m *CheckOrderFulfillabilityRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CheckOrderFulfillabilityRequest.Unmarshal(m, b) } func (m *CheckOrderFulfillabilityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CheckOrderFulfillabilityRequest.Marshal(b, m, deterministic) } -func (dst *CheckOrderFulfillabilityRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CheckOrderFulfillabilityRequest.Merge(dst, src) +func (m *CheckOrderFulfillabilityRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckOrderFulfillabilityRequest.Merge(m, src) } func (m *CheckOrderFulfillabilityRequest) XXX_Size() int { return xxx_messageInfo_CheckOrderFulfillabilityRequest.Size(m) @@ -772,16 +809,17 @@ func (m *CheckOrderFulfillabilityResponse) String() string { return proto.CompactTextString(m) } func (*CheckOrderFulfillabilityResponse) ProtoMessage() {} func (*CheckOrderFulfillabilityResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{5} + return fileDescriptor_1820d8e1a9fad753, []int{5} } + func (m *CheckOrderFulfillabilityResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CheckOrderFulfillabilityResponse.Unmarshal(m, b) } func (m *CheckOrderFulfillabilityResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CheckOrderFulfillabilityResponse.Marshal(b, m, deterministic) } -func (dst *CheckOrderFulfillabilityResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CheckOrderFulfillabilityResponse.Merge(dst, src) +func (m *CheckOrderFulfillabilityResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckOrderFulfillabilityResponse.Merge(m, src) } func (m *CheckOrderFulfillabilityResponse) XXX_Size() int { return xxx_messageInfo_CheckOrderFulfillabilityResponse.Size(m) @@ -819,16 +857,17 @@ func (m *GetBookingStatusRequest) String() string { return proto.CompactTextString(m) } func (*GetBookingStatusRequest) ProtoMessage() {} func (*GetBookingStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{6} + return fileDescriptor_1820d8e1a9fad753, []int{6} } + func (m *GetBookingStatusRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetBookingStatusRequest.Unmarshal(m, b) } func (m *GetBookingStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_GetBookingStatusRequest.Marshal(b, m, deterministic) } -func (dst *GetBookingStatusRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetBookingStatusRequest.Merge(dst, src) +func (m *GetBookingStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBookingStatusRequest.Merge(m, src) } func (m *GetBookingStatusRequest) XXX_Size() int { return xxx_messageInfo_GetBookingStatusRequest.Size(m) @@ -864,16 +903,17 @@ func (m *GetBookingStatusResponse) String() string { return proto.CompactTextString(m) } func (*GetBookingStatusResponse) ProtoMessage() {} func (*GetBookingStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{7} + return fileDescriptor_1820d8e1a9fad753, []int{7} } + func (m *GetBookingStatusResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetBookingStatusResponse.Unmarshal(m, b) } func (m *GetBookingStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_GetBookingStatusResponse.Marshal(b, m, deterministic) } -func (dst *GetBookingStatusResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetBookingStatusResponse.Merge(dst, src) +func (m *GetBookingStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBookingStatusResponse.Merge(m, src) } func (m *GetBookingStatusResponse) XXX_Size() int { return xxx_messageInfo_GetBookingStatusResponse.Size(m) @@ -941,16 +981,17 @@ func (m *CreateBookingRequest) String() string { return proto.CompactTextString(m) } func (*CreateBookingRequest) ProtoMessage() {} func (*CreateBookingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{8} + return fileDescriptor_1820d8e1a9fad753, []int{8} } + func (m *CreateBookingRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateBookingRequest.Unmarshal(m, b) } func (m *CreateBookingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CreateBookingRequest.Marshal(b, m, deterministic) } -func (dst *CreateBookingRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateBookingRequest.Merge(dst, src) +func (m *CreateBookingRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateBookingRequest.Merge(m, src) } func (m *CreateBookingRequest) XXX_Size() int { return xxx_messageInfo_CreateBookingRequest.Size(m) @@ -1035,16 +1076,17 @@ func (m *CreateBookingResponse) String() string { return proto.CompactTextString(m) } func (*CreateBookingResponse) ProtoMessage() {} func (*CreateBookingResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{9} + return fileDescriptor_1820d8e1a9fad753, []int{9} } + func (m *CreateBookingResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateBookingResponse.Unmarshal(m, b) } func (m *CreateBookingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CreateBookingResponse.Marshal(b, m, deterministic) } -func (dst *CreateBookingResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateBookingResponse.Merge(dst, src) +func (m *CreateBookingResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateBookingResponse.Merge(m, src) } func (m *CreateBookingResponse) XXX_Size() int { return xxx_messageInfo_CreateBookingResponse.Size(m) @@ -1092,16 +1134,17 @@ func (m *CreateLeaseRequest) String() string { return proto.CompactTextString(m) } func (*CreateLeaseRequest) ProtoMessage() {} func (*CreateLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{10} + return fileDescriptor_1820d8e1a9fad753, []int{10} } + func (m *CreateLeaseRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateLeaseRequest.Unmarshal(m, b) } func (m *CreateLeaseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CreateLeaseRequest.Marshal(b, m, deterministic) } -func (dst *CreateLeaseRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateLeaseRequest.Merge(dst, src) +func (m *CreateLeaseRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateLeaseRequest.Merge(m, src) } func (m *CreateLeaseRequest) XXX_Size() int { return xxx_messageInfo_CreateLeaseRequest.Size(m) @@ -1136,16 +1179,17 @@ func (m *CreateLeaseResponse) String() string { return proto.CompactTextString(m) } func (*CreateLeaseResponse) ProtoMessage() {} func (*CreateLeaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{11} + return fileDescriptor_1820d8e1a9fad753, []int{11} } + func (m *CreateLeaseResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateLeaseResponse.Unmarshal(m, b) } func (m *CreateLeaseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CreateLeaseResponse.Marshal(b, m, deterministic) } -func (dst *CreateLeaseResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateLeaseResponse.Merge(dst, src) +func (m *CreateLeaseResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateLeaseResponse.Merge(m, src) } func (m *CreateLeaseResponse) XXX_Size() int { return xxx_messageInfo_CreateLeaseResponse.Size(m) @@ -1192,16 +1236,17 @@ func (m *Lease) String() string { return proto.CompactTextString(m) } func (*Lease) ProtoMessage() {} func (*Lease) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{12} + return fileDescriptor_1820d8e1a9fad753, []int{12} } + func (m *Lease) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Lease.Unmarshal(m, b) } func (m *Lease) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Lease.Marshal(b, m, deterministic) } -func (dst *Lease) XXX_Merge(src proto.Message) { - xxx_messageInfo_Lease.Merge(dst, src) +func (m *Lease) XXX_Merge(src proto.Message) { + xxx_messageInfo_Lease.Merge(m, src) } func (m *Lease) XXX_Size() int { return xxx_messageInfo_Lease.Size(m) @@ -1253,16 +1298,17 @@ func (m *LeaseReference) String() string { return proto.CompactTextString(m) } func (*LeaseReference) ProtoMessage() {} func (*LeaseReference) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{13} + return fileDescriptor_1820d8e1a9fad753, []int{13} } + func (m *LeaseReference) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LeaseReference.Unmarshal(m, b) } func (m *LeaseReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_LeaseReference.Marshal(b, m, deterministic) } -func (dst *LeaseReference) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseReference.Merge(dst, src) +func (m *LeaseReference) XXX_Merge(src proto.Message) { + xxx_messageInfo_LeaseReference.Merge(m, src) } func (m *LeaseReference) XXX_Size() int { return xxx_messageInfo_LeaseReference.Size(m) @@ -1299,16 +1345,17 @@ func (m *CreateOrderRequest) String() string { return proto.CompactTextString(m) } func (*CreateOrderRequest) ProtoMessage() {} func (*CreateOrderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{14} + return fileDescriptor_1820d8e1a9fad753, []int{14} } + func (m *CreateOrderRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOrderRequest.Unmarshal(m, b) } func (m *CreateOrderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CreateOrderRequest.Marshal(b, m, deterministic) } -func (dst *CreateOrderRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateOrderRequest.Merge(dst, src) +func (m *CreateOrderRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOrderRequest.Merge(m, src) } func (m *CreateOrderRequest) XXX_Size() int { return xxx_messageInfo_CreateOrderRequest.Size(m) @@ -1360,16 +1407,17 @@ func (m *CreateOrderResponse) String() string { return proto.CompactTextString(m) } func (*CreateOrderResponse) ProtoMessage() {} func (*CreateOrderResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{15} + return fileDescriptor_1820d8e1a9fad753, []int{15} } + func (m *CreateOrderResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOrderResponse.Unmarshal(m, b) } func (m *CreateOrderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CreateOrderResponse.Marshal(b, m, deterministic) } -func (dst *CreateOrderResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateOrderResponse.Merge(dst, src) +func (m *CreateOrderResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOrderResponse.Merge(m, src) } func (m *CreateOrderResponse) XXX_Size() int { return xxx_messageInfo_CreateOrderResponse.Size(m) @@ -1387,11 +1435,13 @@ type CreateOrderResponse_Order struct { Order *Order `protobuf:"bytes,1,opt,name=order,proto3,oneof"` } + type CreateOrderResponse_OrderFailure struct { OrderFailure *OrderFailure `protobuf:"bytes,2,opt,name=order_failure,json=orderFailure,proto3,oneof"` } -func (*CreateOrderResponse_Order) isCreateOrderResponse_Result() {} +func (*CreateOrderResponse_Order) isCreateOrderResponse_Result() {} + func (*CreateOrderResponse_OrderFailure) isCreateOrderResponse_Result() {} func (m *CreateOrderResponse) GetResult() isCreateOrderResponse_Result { @@ -1502,16 +1552,17 @@ func (m *ListBookingsRequest) String() string { return proto.CompactTextString(m) } func (*ListBookingsRequest) ProtoMessage() {} func (*ListBookingsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{16} + return fileDescriptor_1820d8e1a9fad753, []int{16} } + func (m *ListBookingsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListBookingsRequest.Unmarshal(m, b) } func (m *ListBookingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ListBookingsRequest.Marshal(b, m, deterministic) } -func (dst *ListBookingsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListBookingsRequest.Merge(dst, src) +func (m *ListBookingsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListBookingsRequest.Merge(m, src) } func (m *ListBookingsRequest) XXX_Size() int { return xxx_messageInfo_ListBookingsRequest.Size(m) @@ -1542,16 +1593,17 @@ func (m *ListBookingsResponse) String() string { return proto.CompactTextString(m) } func (*ListBookingsResponse) ProtoMessage() {} func (*ListBookingsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{17} + return fileDescriptor_1820d8e1a9fad753, []int{17} } + func (m *ListBookingsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListBookingsResponse.Unmarshal(m, b) } func (m *ListBookingsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ListBookingsResponse.Marshal(b, m, deterministic) } -func (dst *ListBookingsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListBookingsResponse.Merge(dst, src) +func (m *ListBookingsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListBookingsResponse.Merge(m, src) } func (m *ListBookingsResponse) XXX_Size() int { return xxx_messageInfo_ListBookingsResponse.Size(m) @@ -1586,16 +1638,17 @@ func (m *ListOrdersRequest) String() string { return proto.CompactTextString(m) } func (*ListOrdersRequest) ProtoMessage() {} func (*ListOrdersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{18} + return fileDescriptor_1820d8e1a9fad753, []int{18} } + func (m *ListOrdersRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListOrdersRequest.Unmarshal(m, b) } func (m *ListOrdersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ListOrdersRequest.Marshal(b, m, deterministic) } -func (dst *ListOrdersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListOrdersRequest.Merge(dst, src) +func (m *ListOrdersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListOrdersRequest.Merge(m, src) } func (m *ListOrdersRequest) XXX_Size() int { return xxx_messageInfo_ListOrdersRequest.Size(m) @@ -1613,11 +1666,13 @@ type ListOrdersRequest_UserId struct { UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3,oneof"` } + type ListOrdersRequest_OrderIds_ struct { OrderIds *ListOrdersRequest_OrderIds `protobuf:"bytes,2,opt,name=order_ids,json=orderIds,proto3,oneof"` } -func (*ListOrdersRequest_UserId) isListOrdersRequest_Ids() {} +func (*ListOrdersRequest_UserId) isListOrdersRequest_Ids() {} + func (*ListOrdersRequest_OrderIds_) isListOrdersRequest_Ids() {} func (m *ListOrdersRequest) GetIds() isListOrdersRequest_Ids { @@ -1722,16 +1777,17 @@ func (m *ListOrdersRequest_OrderIds) String() string { return proto.CompactTextString(m) } func (*ListOrdersRequest_OrderIds) ProtoMessage() {} func (*ListOrdersRequest_OrderIds) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{18, 0} + return fileDescriptor_1820d8e1a9fad753, []int{18, 0} } + func (m *ListOrdersRequest_OrderIds) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListOrdersRequest_OrderIds.Unmarshal(m, b) } func (m *ListOrdersRequest_OrderIds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ListOrdersRequest_OrderIds.Marshal(b, m, deterministic) } -func (dst *ListOrdersRequest_OrderIds) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListOrdersRequest_OrderIds.Merge(dst, src) +func (m *ListOrdersRequest_OrderIds) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListOrdersRequest_OrderIds.Merge(m, src) } func (m *ListOrdersRequest_OrderIds) XXX_Size() int { return xxx_messageInfo_ListOrdersRequest_OrderIds.Size(m) @@ -1762,16 +1818,17 @@ func (m *ListOrdersResponse) String() string { return proto.CompactTextString(m) } func (*ListOrdersResponse) ProtoMessage() {} func (*ListOrdersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{19} + return fileDescriptor_1820d8e1a9fad753, []int{19} } + func (m *ListOrdersResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListOrdersResponse.Unmarshal(m, b) } func (m *ListOrdersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ListOrdersResponse.Marshal(b, m, deterministic) } -func (dst *ListOrdersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListOrdersResponse.Merge(dst, src) +func (m *ListOrdersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListOrdersResponse.Merge(m, src) } func (m *ListOrdersResponse) XXX_Size() int { return xxx_messageInfo_ListOrdersResponse.Size(m) @@ -1805,16 +1862,17 @@ func (m *UpdateBookingRequest) String() string { return proto.CompactTextString(m) } func (*UpdateBookingRequest) ProtoMessage() {} func (*UpdateBookingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{20} + return fileDescriptor_1820d8e1a9fad753, []int{20} } + func (m *UpdateBookingRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateBookingRequest.Unmarshal(m, b) } func (m *UpdateBookingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_UpdateBookingRequest.Marshal(b, m, deterministic) } -func (dst *UpdateBookingRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateBookingRequest.Merge(dst, src) +func (m *UpdateBookingRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateBookingRequest.Merge(m, src) } func (m *UpdateBookingRequest) XXX_Size() int { return xxx_messageInfo_UpdateBookingRequest.Size(m) @@ -1858,16 +1916,17 @@ func (m *UpdateBookingResponse) String() string { return proto.CompactTextString(m) } func (*UpdateBookingResponse) ProtoMessage() {} func (*UpdateBookingResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{21} + return fileDescriptor_1820d8e1a9fad753, []int{21} } + func (m *UpdateBookingResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateBookingResponse.Unmarshal(m, b) } func (m *UpdateBookingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_UpdateBookingResponse.Marshal(b, m, deterministic) } -func (dst *UpdateBookingResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateBookingResponse.Merge(dst, src) +func (m *UpdateBookingResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateBookingResponse.Merge(m, src) } func (m *UpdateBookingResponse) XXX_Size() int { return xxx_messageInfo_UpdateBookingResponse.Size(m) @@ -1921,16 +1980,17 @@ func (m *Booking) String() string { return proto.CompactTextString(m) } func (*Booking) ProtoMessage() {} func (*Booking) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{22} + return fileDescriptor_1820d8e1a9fad753, []int{22} } + func (m *Booking) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Booking.Unmarshal(m, b) } func (m *Booking) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Booking.Marshal(b, m, deterministic) } -func (dst *Booking) XXX_Merge(src proto.Message) { - xxx_messageInfo_Booking.Merge(dst, src) +func (m *Booking) XXX_Merge(src proto.Message) { + xxx_messageInfo_Booking.Merge(m, src) } func (m *Booking) XXX_Size() int { return xxx_messageInfo_Booking.Size(m) @@ -1996,16 +2056,17 @@ func (m *BookingFailure) String() string { return proto.CompactTextString(m) } func (*BookingFailure) ProtoMessage() {} func (*BookingFailure) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{23} + return fileDescriptor_1820d8e1a9fad753, []int{23} } + func (m *BookingFailure) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BookingFailure.Unmarshal(m, b) } func (m *BookingFailure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_BookingFailure.Marshal(b, m, deterministic) } -func (dst *BookingFailure) XXX_Merge(src proto.Message) { - xxx_messageInfo_BookingFailure.Merge(dst, src) +func (m *BookingFailure) XXX_Merge(src proto.Message) { + xxx_messageInfo_BookingFailure.Merge(m, src) } func (m *BookingFailure) XXX_Size() int { return xxx_messageInfo_BookingFailure.Size(m) @@ -2061,16 +2122,17 @@ func (m *Order) String() string { return proto.CompactTextString(m) } func (*Order) ProtoMessage() {} func (*Order) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{24} + return fileDescriptor_1820d8e1a9fad753, []int{24} } + func (m *Order) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Order.Unmarshal(m, b) } func (m *Order) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Order.Marshal(b, m, deterministic) } -func (dst *Order) XXX_Merge(src proto.Message) { - xxx_messageInfo_Order.Merge(dst, src) +func (m *Order) XXX_Merge(src proto.Message) { + xxx_messageInfo_Order.Merge(m, src) } func (m *Order) XXX_Size() int { return xxx_messageInfo_Order.Size(m) @@ -2147,16 +2209,17 @@ func (m *LineItem) String() string { return proto.CompactTextString(m) } func (*LineItem) ProtoMessage() {} func (*LineItem) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{25} + return fileDescriptor_1820d8e1a9fad753, []int{25} } + func (m *LineItem) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LineItem.Unmarshal(m, b) } func (m *LineItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_LineItem.Marshal(b, m, deterministic) } -func (dst *LineItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_LineItem.Merge(dst, src) +func (m *LineItem) XXX_Merge(src proto.Message) { + xxx_messageInfo_LineItem.Merge(m, src) } func (m *LineItem) XXX_Size() int { return xxx_messageInfo_LineItem.Size(m) @@ -2221,16 +2284,17 @@ func (m *LineItem_OrderedTickets) String() string { return proto.CompactTextString(m) } func (*LineItem_OrderedTickets) ProtoMessage() {} func (*LineItem_OrderedTickets) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{25, 0} + return fileDescriptor_1820d8e1a9fad753, []int{25, 0} } + func (m *LineItem_OrderedTickets) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LineItem_OrderedTickets.Unmarshal(m, b) } func (m *LineItem_OrderedTickets) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_LineItem_OrderedTickets.Marshal(b, m, deterministic) } -func (dst *LineItem_OrderedTickets) XXX_Merge(src proto.Message) { - xxx_messageInfo_LineItem_OrderedTickets.Merge(dst, src) +func (m *LineItem_OrderedTickets) XXX_Merge(src proto.Message) { + xxx_messageInfo_LineItem_OrderedTickets.Merge(m, src) } func (m *LineItem_OrderedTickets) XXX_Size() int { return xxx_messageInfo_LineItem_OrderedTickets.Size(m) @@ -2276,16 +2340,17 @@ func (m *OrderFailure) String() string { return proto.CompactTextString(m) } func (*OrderFailure) ProtoMessage() {} func (*OrderFailure) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{26} + return fileDescriptor_1820d8e1a9fad753, []int{26} } + func (m *OrderFailure) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrderFailure.Unmarshal(m, b) } func (m *OrderFailure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_OrderFailure.Marshal(b, m, deterministic) } -func (dst *OrderFailure) XXX_Merge(src proto.Message) { - xxx_messageInfo_OrderFailure.Merge(dst, src) +func (m *OrderFailure) XXX_Merge(src proto.Message) { + xxx_messageInfo_OrderFailure.Merge(m, src) } func (m *OrderFailure) XXX_Size() int { return xxx_messageInfo_OrderFailure.Size(m) @@ -2340,16 +2405,17 @@ func (m *OrderFulfillability) String() string { return proto.CompactTextString(m) } func (*OrderFulfillability) ProtoMessage() {} func (*OrderFulfillability) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{27} + return fileDescriptor_1820d8e1a9fad753, []int{27} } + func (m *OrderFulfillability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrderFulfillability.Unmarshal(m, b) } func (m *OrderFulfillability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_OrderFulfillability.Marshal(b, m, deterministic) } -func (dst *OrderFulfillability) XXX_Merge(src proto.Message) { - xxx_messageInfo_OrderFulfillability.Merge(dst, src) +func (m *OrderFulfillability) XXX_Merge(src proto.Message) { + xxx_messageInfo_OrderFulfillability.Merge(m, src) } func (m *OrderFulfillability) XXX_Size() int { return xxx_messageInfo_OrderFulfillability.Size(m) @@ -2406,16 +2472,17 @@ func (m *LineItemFulfillability) String() string { return proto.CompactTextString(m) } func (*LineItemFulfillability) ProtoMessage() {} func (*LineItemFulfillability) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{28} + return fileDescriptor_1820d8e1a9fad753, []int{28} } + func (m *LineItemFulfillability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LineItemFulfillability.Unmarshal(m, b) } func (m *LineItemFulfillability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_LineItemFulfillability.Marshal(b, m, deterministic) } -func (dst *LineItemFulfillability) XXX_Merge(src proto.Message) { - xxx_messageInfo_LineItemFulfillability.Merge(dst, src) +func (m *LineItemFulfillability) XXX_Merge(src proto.Message) { + xxx_messageInfo_LineItemFulfillability.Merge(m, src) } func (m *LineItemFulfillability) XXX_Size() int { return xxx_messageInfo_LineItemFulfillability.Size(m) @@ -2480,16 +2547,17 @@ } func (*LineItemFulfillability_UpdatedAvailability) ProtoMessage() {} func (*LineItemFulfillability_UpdatedAvailability) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{28, 0} + return fileDescriptor_1820d8e1a9fad753, []int{28, 0} } + func (m *LineItemFulfillability_UpdatedAvailability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Unmarshal(m, b) } func (m *LineItemFulfillability_UpdatedAvailability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Marshal(b, m, deterministic) } -func (dst *LineItemFulfillability_UpdatedAvailability) XXX_Merge(src proto.Message) { - xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Merge(dst, src) +func (m *LineItemFulfillability_UpdatedAvailability) XXX_Merge(src proto.Message) { + xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Merge(m, src) } func (m *LineItemFulfillability_UpdatedAvailability) XXX_Size() int { return xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Size(m) @@ -2529,16 +2597,17 @@ func (m *TicketType) String() string { return proto.CompactTextString(m) } func (*TicketType) ProtoMessage() {} func (*TicketType) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{29} + return fileDescriptor_1820d8e1a9fad753, []int{29} } + func (m *TicketType) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TicketType.Unmarshal(m, b) } func (m *TicketType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_TicketType.Marshal(b, m, deterministic) } -func (dst *TicketType) XXX_Merge(src proto.Message) { - xxx_messageInfo_TicketType.Merge(dst, src) +func (m *TicketType) XXX_Merge(src proto.Message) { + xxx_messageInfo_TicketType.Merge(m, src) } func (m *TicketType) XXX_Size() int { return xxx_messageInfo_TicketType.Size(m) @@ -2590,16 +2659,17 @@ func (m *ResourceIds) String() string { return proto.CompactTextString(m) } func (*ResourceIds) ProtoMessage() {} func (*ResourceIds) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{30} + return fileDescriptor_1820d8e1a9fad753, []int{30} } + func (m *ResourceIds) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResourceIds.Unmarshal(m, b) } func (m *ResourceIds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ResourceIds.Marshal(b, m, deterministic) } -func (dst *ResourceIds) XXX_Merge(src proto.Message) { - xxx_messageInfo_ResourceIds.Merge(dst, src) +func (m *ResourceIds) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResourceIds.Merge(m, src) } func (m *ResourceIds) XXX_Size() int { return xxx_messageInfo_ResourceIds.Size(m) @@ -2676,16 +2746,17 @@ func (m *PaymentProcessingParameters) String() string { return proto.CompactTextString(m) } func (*PaymentProcessingParameters) ProtoMessage() {} func (*PaymentProcessingParameters) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{31} + return fileDescriptor_1820d8e1a9fad753, []int{31} } + func (m *PaymentProcessingParameters) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PaymentProcessingParameters.Unmarshal(m, b) } func (m *PaymentProcessingParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_PaymentProcessingParameters.Marshal(b, m, deterministic) } -func (dst *PaymentProcessingParameters) XXX_Merge(src proto.Message) { - xxx_messageInfo_PaymentProcessingParameters.Merge(dst, src) +func (m *PaymentProcessingParameters) XXX_Merge(src proto.Message) { + xxx_messageInfo_PaymentProcessingParameters.Merge(m, src) } func (m *PaymentProcessingParameters) XXX_Size() int { return xxx_messageInfo_PaymentProcessingParameters.Size(m) @@ -2769,16 +2840,17 @@ func (m *UserPaymentOption) String() string { return proto.CompactTextString(m) } func (*UserPaymentOption) ProtoMessage() {} func (*UserPaymentOption) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{32} + return fileDescriptor_1820d8e1a9fad753, []int{32} } + func (m *UserPaymentOption) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserPaymentOption.Unmarshal(m, b) } func (m *UserPaymentOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_UserPaymentOption.Marshal(b, m, deterministic) } -func (dst *UserPaymentOption) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserPaymentOption.Merge(dst, src) +func (m *UserPaymentOption) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserPaymentOption.Merge(m, src) } func (m *UserPaymentOption) XXX_Size() int { return xxx_messageInfo_UserPaymentOption.Size(m) @@ -2907,16 +2979,17 @@ func (m *PaymentInformation) String() string { return proto.CompactTextString(m) } func (*PaymentInformation) ProtoMessage() {} func (*PaymentInformation) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{33} + return fileDescriptor_1820d8e1a9fad753, []int{33} } + func (m *PaymentInformation) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PaymentInformation.Unmarshal(m, b) } func (m *PaymentInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_PaymentInformation.Marshal(b, m, deterministic) } -func (dst *PaymentInformation) XXX_Merge(src proto.Message) { - xxx_messageInfo_PaymentInformation.Merge(dst, src) +func (m *PaymentInformation) XXX_Merge(src proto.Message) { + xxx_messageInfo_PaymentInformation.Merge(m, src) } func (m *PaymentInformation) XXX_Size() int { return xxx_messageInfo_PaymentInformation.Size(m) @@ -2927,27 +3000,6 @@ var xxx_messageInfo_PaymentInformation proto.InternalMessageInfo -type isPaymentInformation_PaymentId interface { - isPaymentInformation_PaymentId() -} - -type PaymentInformation_PaymentOptionId struct { - PaymentOptionId string `protobuf:"bytes,6,opt,name=payment_option_id,json=paymentOptionId,proto3,oneof"` -} -type PaymentInformation_UserPaymentOptionId struct { - UserPaymentOptionId string `protobuf:"bytes,7,opt,name=user_payment_option_id,json=userPaymentOptionId,proto3,oneof"` -} - -func (*PaymentInformation_PaymentOptionId) isPaymentInformation_PaymentId() {} -func (*PaymentInformation_UserPaymentOptionId) isPaymentInformation_PaymentId() {} - -func (m *PaymentInformation) GetPaymentId() isPaymentInformation_PaymentId { - if m != nil { - return m.PaymentId - } - return nil -} - func (m *PaymentInformation) GetPrepaymentStatus() PrepaymentStatus { if m != nil { return m.PrepaymentStatus @@ -2983,6 +3035,29 @@ return PaymentInformation_PAYMENT_PROCESSED_BY_UNSPECIFIED } +type isPaymentInformation_PaymentId interface { + isPaymentInformation_PaymentId() +} + +type PaymentInformation_PaymentOptionId struct { + PaymentOptionId string `protobuf:"bytes,6,opt,name=payment_option_id,json=paymentOptionId,proto3,oneof"` +} + +type PaymentInformation_UserPaymentOptionId struct { + UserPaymentOptionId string `protobuf:"bytes,7,opt,name=user_payment_option_id,json=userPaymentOptionId,proto3,oneof"` +} + +func (*PaymentInformation_PaymentOptionId) isPaymentInformation_PaymentId() {} + +func (*PaymentInformation_UserPaymentOptionId) isPaymentInformation_PaymentId() {} + +func (m *PaymentInformation) GetPaymentId() isPaymentInformation_PaymentId { + if m != nil { + return m.PaymentId + } + return nil +} + func (m *PaymentInformation) GetPaymentOptionId() string { if x, ok := m.GetPaymentId().(*PaymentInformation_PaymentOptionId); ok { return x.PaymentOptionId @@ -3106,16 +3181,17 @@ func (m *Price) String() string { return proto.CompactTextString(m) } func (*Price) ProtoMessage() {} func (*Price) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{34} + return fileDescriptor_1820d8e1a9fad753, []int{34} } + func (m *Price) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Price.Unmarshal(m, b) } func (m *Price) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Price.Marshal(b, m, deterministic) } -func (dst *Price) XXX_Merge(src proto.Message) { - xxx_messageInfo_Price.Merge(dst, src) +func (m *Price) XXX_Merge(src proto.Message) { + xxx_messageInfo_Price.Merge(m, src) } func (m *Price) XXX_Size() int { return xxx_messageInfo_Price.Size(m) @@ -3164,16 +3240,17 @@ func (m *NoShowFee) String() string { return proto.CompactTextString(m) } func (*NoShowFee) ProtoMessage() {} func (*NoShowFee) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{35} + return fileDescriptor_1820d8e1a9fad753, []int{35} } + func (m *NoShowFee) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NoShowFee.Unmarshal(m, b) } func (m *NoShowFee) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_NoShowFee.Marshal(b, m, deterministic) } -func (dst *NoShowFee) XXX_Merge(src proto.Message) { - xxx_messageInfo_NoShowFee.Merge(dst, src) +func (m *NoShowFee) XXX_Merge(src proto.Message) { + xxx_messageInfo_NoShowFee.Merge(m, src) } func (m *NoShowFee) XXX_Size() int { return xxx_messageInfo_NoShowFee.Size(m) @@ -3216,16 +3293,17 @@ func (m *Deposit) String() string { return proto.CompactTextString(m) } func (*Deposit) ProtoMessage() {} func (*Deposit) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{36} + return fileDescriptor_1820d8e1a9fad753, []int{36} } + func (m *Deposit) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Deposit.Unmarshal(m, b) } func (m *Deposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Deposit.Marshal(b, m, deterministic) } -func (dst *Deposit) XXX_Merge(src proto.Message) { - xxx_messageInfo_Deposit.Merge(dst, src) +func (m *Deposit) XXX_Merge(src proto.Message) { + xxx_messageInfo_Deposit.Merge(m, src) } func (m *Deposit) XXX_Size() int { return xxx_messageInfo_Deposit.Size(m) @@ -3283,16 +3361,17 @@ func (m *Slot) String() string { return proto.CompactTextString(m) } func (*Slot) ProtoMessage() {} func (*Slot) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{37} + return fileDescriptor_1820d8e1a9fad753, []int{37} } + func (m *Slot) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Slot.Unmarshal(m, b) } func (m *Slot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Slot.Marshal(b, m, deterministic) } -func (dst *Slot) XXX_Merge(src proto.Message) { - xxx_messageInfo_Slot.Merge(dst, src) +func (m *Slot) XXX_Merge(src proto.Message) { + xxx_messageInfo_Slot.Merge(m, src) } func (m *Slot) XXX_Size() int { return xxx_messageInfo_Slot.Size(m) @@ -3369,16 +3448,17 @@ func (m *UserInformation) String() string { return proto.CompactTextString(m) } func (*UserInformation) ProtoMessage() {} func (*UserInformation) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{38} + return fileDescriptor_1820d8e1a9fad753, []int{38} } + func (m *UserInformation) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInformation.Unmarshal(m, b) } func (m *UserInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_UserInformation.Marshal(b, m, deterministic) } -func (dst *UserInformation) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserInformation.Merge(dst, src) +func (m *UserInformation) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserInformation.Merge(m, src) } func (m *UserInformation) XXX_Size() int { return xxx_messageInfo_UserInformation.Size(m) @@ -3452,16 +3532,17 @@ func (m *PostalAddress) String() string { return proto.CompactTextString(m) } func (*PostalAddress) ProtoMessage() {} func (*PostalAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_v3_e164fdd8b81531d4, []int{39} + return fileDescriptor_1820d8e1a9fad753, []int{39} } + func (m *PostalAddress) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PostalAddress.Unmarshal(m, b) } func (m *PostalAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_PostalAddress.Marshal(b, m, deterministic) } -func (dst *PostalAddress) XXX_Merge(src proto.Message) { - xxx_messageInfo_PostalAddress.Merge(dst, src) +func (m *PostalAddress) XXX_Merge(src proto.Message) { + xxx_messageInfo_PostalAddress.Merge(m, src) } func (m *PostalAddress) XXX_Size() int { return xxx_messageInfo_PostalAddress.Size(m) @@ -3565,213 +3646,215 @@ proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentInformation_PaymentProcessedBy", PaymentInformation_PaymentProcessedBy_name, PaymentInformation_PaymentProcessedBy_value) } -func init() { proto.RegisterFile("v3.proto", fileDescriptor_v3_e164fdd8b81531d4) } +func init() { proto.RegisterFile("v3.proto", fileDescriptor_1820d8e1a9fad753) } -var fileDescriptor_v3_e164fdd8b81531d4 = []byte{ - // 3278 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3a, 0xcd, 0x6f, 0x1b, 0xc7, - 0xf5, 0x5e, 0x7e, 0x88, 0xe2, 0xa3, 0x44, 0xad, 0x46, 0x8a, 0x4d, 0xf9, 0x23, 0x96, 0x37, 0x76, - 0xe2, 0xc8, 0x89, 0xf2, 0x8b, 0xec, 0xe0, 0x97, 0x14, 0x45, 0xda, 0x15, 0x39, 0xb2, 0x36, 0xa1, - 0x48, 0x66, 0xb8, 0x94, 0xed, 0x1c, 0xba, 0x59, 0x73, 0x47, 0xf2, 0xd6, 0x24, 0x97, 0xd9, 0x5d, - 0x2a, 0x56, 0xd0, 0xdc, 0x7a, 0xed, 0xa1, 0xe8, 0xa1, 0xe8, 0xa1, 0xc7, 0x1c, 0x0a, 0xb4, 0x40, - 0x0f, 0xbd, 0x14, 0xbd, 0x14, 0x28, 0xd0, 0x4b, 0x91, 0x53, 0x0f, 0xed, 0xa9, 0x87, 0xa2, 0x87, - 0xfe, 0x0b, 0x01, 0x8a, 0xa2, 0x98, 0x8f, 0xe5, 0xc7, 0x92, 0xa2, 0x28, 0xc5, 0xee, 0xa5, 0x17, - 0x41, 0xf3, 0xbe, 0xe6, 0xcd, 0x7b, 0x6f, 0xde, 0x7b, 0xf3, 0x96, 0x30, 0x7f, 0x74, 0x77, 0xb3, - 0xeb, 0x7b, 0xa1, 0x87, 0xae, 0xd0, 0x67, 0xe1, 0x66, 0xdb, 0xee, 0x06, 0x9b, 0x8f, 0x3d, 0xef, - 0xa9, 0xdb, 0x39, 0xdc, 0xec, 0xda, 0x7e, 0xd8, 0xa1, 0xfe, 0xe6, 0xd1, 0x5d, 0xed, 0x23, 0x28, - 0x14, 0x9f, 0xd0, 0xe6, 0x53, 0xfd, 0xc8, 0x76, 0x5b, 0xf6, 0x63, 0xb7, 0xe5, 0x86, 0xc7, 0x84, - 0x7e, 0xda, 0xa3, 0x41, 0x88, 0xde, 0x81, 0x54, 0xd0, 0xf2, 0xc2, 0x82, 0xb2, 0xae, 0xdc, 0xce, - 0x6d, 0xdd, 0xd8, 0x9c, 0x22, 0x67, 0xb3, 0xde, 0xf2, 0x42, 0xc2, 0xc9, 0xb5, 0x3f, 0x25, 0x61, - 0x6d, 0x82, 0xcc, 0xa0, 0xeb, 0x75, 0x02, 0x7a, 0x4e, 0xa1, 0xe8, 0x35, 0x58, 0x6a, 0x7a, 0xbd, - 0x4e, 0x68, 0xd9, 0x42, 0x68, 0x8b, 0x16, 0x12, 0xeb, 0xca, 0xed, 0x34, 0xc9, 0x73, 0xb0, 0x1e, - 0x41, 0xd1, 0x17, 0xb0, 0xea, 0xf4, 0x7c, 0x3b, 0x74, 0xbd, 0x8e, 0xe5, 0xd3, 0x4f, 0x7b, 0xae, - 0x4f, 0xdb, 0xb4, 0x13, 0x16, 0x92, 0xeb, 0xca, 0xed, 0xfc, 0xd6, 0x07, 0x53, 0xf7, 0x3b, 0x51, - 0xeb, 0xcd, 0x92, 0x14, 0x49, 0x06, 0x12, 0xc9, 0x8a, 0x33, 0x0e, 0x44, 0x9f, 0xc0, 0x8a, 0x3d, - 0x24, 0xc0, 0xea, 0x75, 0x1d, 0x3b, 0xa4, 0x85, 0x14, 0x3f, 0xed, 0x5b, 0x53, 0x77, 0x1f, 0xde, - 0xb8, 0xc1, 0xd9, 0x08, 0xb2, 0xc7, 0x60, 0x5a, 0x1b, 0x56, 0x26, 0x68, 0x83, 0x6e, 0xc2, 0x7a, - 0xa9, 0x41, 0x74, 0xd3, 0xa8, 0x56, 0x2c, 0x82, 0x3f, 0x6a, 0x18, 0x04, 0xef, 0xe1, 0x8a, 0x69, - 0x35, 0x2a, 0xf5, 0x1a, 0x2e, 0x1a, 0x3b, 0x06, 0x2e, 0xa9, 0x17, 0x50, 0x01, 0x56, 0x4b, 0x55, - 0xab, 0x52, 0x35, 0xad, 0xfa, 0x6e, 0xf5, 0x81, 0x15, 0x71, 0xa8, 0x0a, 0xba, 0x08, 0x68, 0xaf, - 0x51, 0x8f, 0xc3, 0x13, 0x5a, 0x17, 0xd0, 0xb8, 0x62, 0xe8, 0x63, 0x58, 0x66, 0x6e, 0xb1, 0x86, - 0xf5, 0x2b, 0x28, 0xeb, 0xc9, 0xdb, 0xb9, 0xad, 0x37, 0x4f, 0x75, 0xe9, 0x88, 0x85, 0xd5, 0x20, - 0x06, 0xd1, 0x7c, 0x50, 0xe3, 0x54, 0x2f, 0x3a, 0x6a, 0xb4, 0x2f, 0xe0, 0x3a, 0x77, 0x7e, 0xd5, - 0x77, 0xa8, 0xbf, 0xd3, 0x6b, 0x1d, 0xb8, 0xad, 0xf8, 0x6d, 0xb8, 0x0e, 0xb9, 0x36, 0xf5, 0x9b, - 0x4f, 0xec, 0x4e, 0x68, 0xb9, 0x0e, 0xd7, 0x24, 0x4b, 0x20, 0x02, 0x19, 0x0e, 0x7a, 0x0f, 0x52, - 0x6e, 0x48, 0xdb, 0x85, 0x04, 0x37, 0xc3, 0xad, 0xa9, 0x3a, 0x96, 0xdd, 0x0e, 0x35, 0x42, 0xda, - 0x26, 0x9c, 0x45, 0xfb, 0xa3, 0x02, 0xeb, 0x27, 0xef, 0x2f, 0x6f, 0xce, 0x43, 0xc8, 0x1f, 0x8c, - 0x60, 0xa4, 0x35, 0xfe, 0x6f, 0xea, 0x4e, 0x93, 0x24, 0xc6, 0xe4, 0xa0, 0x5d, 0xc8, 0x1f, 0x50, - 0x1a, 0x58, 0x76, 0xc7, 0xb1, 0x42, 0xfb, 0x19, 0x0d, 0xb8, 0x95, 0x72, 0x5b, 0xda, 0x54, 0xc9, - 0x35, 0xdf, 0x6d, 0x52, 0xb2, 0xc0, 0x38, 0xf5, 0x8e, 0x63, 0x32, 0x3e, 0xed, 0x5d, 0xb8, 0x74, - 0x9f, 0x86, 0xdb, 0x82, 0xb8, 0x1e, 0xda, 0x61, 0x2f, 0x88, 0xec, 0x77, 0x0d, 0x40, 0x0a, 0x19, - 0x98, 0x2f, 0x2b, 0x21, 0x86, 0xa3, 0xfd, 0x53, 0x81, 0xc2, 0x38, 0xab, 0x3c, 0xfa, 0x74, 0x5e, - 0xf4, 0x11, 0xe4, 0x23, 0x74, 0xc0, 0x19, 0xb9, 0xfe, 0xf9, 0xad, 0x8d, 0xa9, 0xfa, 0x8f, 0x6e, - 0xb5, 0xf8, 0x78, 0x78, 0xc9, 0x02, 0xbc, 0xeb, 0xd3, 0xae, 0x7d, 0xcc, 0x2e, 0x57, 0x24, 0x55, - 0xe4, 0x90, 0x37, 0x4f, 0xb1, 0x4a, 0xc4, 0x25, 0x05, 0xab, 0xdd, 0x18, 0x44, 0xfb, 0x65, 0x0a, - 0x56, 0x8b, 0x3e, 0xb5, 0x43, 0x2a, 0x55, 0xf8, 0x66, 0x09, 0x17, 0xed, 0x42, 0xb6, 0x45, 0xed, - 0x80, 0x5a, 0x3e, 0x3d, 0x90, 0x9e, 0xbb, 0x33, 0x3d, 0xfa, 0x18, 0x35, 0xa1, 0x07, 0xd4, 0xa7, - 0x9d, 0x26, 0x25, 0xf3, 0x2d, 0xb9, 0x46, 0x0f, 0x40, 0xed, 0x05, 0xd4, 0xb7, 0xdc, 0xce, 0x81, - 0xe7, 0xb7, 0x79, 0x8e, 0xe1, 0x87, 0xce, 0x6d, 0xbd, 0x31, 0x55, 0x60, 0x23, 0xa0, 0xbe, 0x31, - 0xe0, 0x21, 0x4b, 0xbd, 0x51, 0x00, 0x4b, 0x8b, 0x91, 0x2d, 0x87, 0x65, 0xcf, 0x92, 0x16, 0x6b, - 0x82, 0x6f, 0x58, 0x3c, 0xea, 0x8e, 0xc1, 0xd0, 0x0f, 0xe0, 0x5a, 0xb4, 0x43, 0xd7, 0xf7, 0x9a, - 0x34, 0x08, 0x58, 0x38, 0x74, 0x6d, 0xdf, 0x6e, 0xd3, 0x90, 0xfa, 0x41, 0x21, 0xcd, 0xf7, 0x7a, - 0x77, 0x96, 0xbd, 0x6a, 0x7d, 0x01, 0xb5, 0x3e, 0x3f, 0xb9, 0xd2, 0x3d, 0x19, 0x89, 0xee, 0xc0, - 0xb2, 0xeb, 0xd0, 0x76, 0xd7, 0x0b, 0x69, 0xa7, 0x79, 0x6c, 0x85, 0xde, 0x53, 0xda, 0x29, 0xcc, - 0xf1, 0x38, 0x55, 0x87, 0x10, 0x26, 0x83, 0xa3, 0x37, 0x01, 0xd9, 0x8e, 0xe3, 0x32, 0xb5, 0xed, - 0x16, 0x2f, 0x52, 0x34, 0x08, 0x0b, 0x19, 0x4e, 0xbd, 0x3c, 0xc0, 0xc8, 0xa8, 0xd0, 0x7e, 0x94, - 0x80, 0x97, 0x62, 0xe1, 0x22, 0xaf, 0xc5, 0xfb, 0x90, 0x91, 0x87, 0x90, 0x21, 0x73, 0x73, 0x96, - 0x80, 0x27, 0x11, 0x13, 0xfa, 0x1e, 0xac, 0x70, 0x77, 0x47, 0x86, 0xf3, 0xba, 0xdc, 0x2b, 0x22, - 0x84, 0x36, 0x4f, 0xf5, 0xb8, 0xb4, 0x56, 0x95, 0x73, 0x91, 0xe5, 0x5e, 0x1c, 0x84, 0x4c, 0x58, - 0x8a, 0xee, 0xe5, 0x81, 0xed, 0xb6, 0x7a, 0x3e, 0x95, 0xd1, 0x74, 0x67, 0x16, 0x3d, 0x77, 0x04, - 0x0b, 0x89, 0xee, 0xb6, 0x5c, 0x6b, 0x15, 0x40, 0xc2, 0x1c, 0x32, 0x8c, 0xc5, 0xdd, 0x79, 0x17, - 0xd2, 0x3c, 0x8c, 0xa5, 0x25, 0xb4, 0x19, 0x2e, 0x80, 0x60, 0xd0, 0xbe, 0x54, 0x60, 0x65, 0x44, - 0xa0, 0xb4, 0xee, 0xb9, 0x25, 0x4e, 0x3a, 0x77, 0xe2, 0x9b, 0x9f, 0xfb, 0x77, 0x0a, 0xa4, 0xf9, - 0x36, 0x68, 0x0d, 0xc4, 0x95, 0x1d, 0x24, 0xc3, 0x0c, 0x5f, 0x1b, 0x4e, 0x3f, 0x85, 0x24, 0xce, - 0x96, 0x42, 0x6e, 0x41, 0x9e, 0x47, 0x82, 0x1f, 0x25, 0x05, 0xee, 0xa8, 0x2c, 0x59, 0x64, 0xd0, - 0x7e, 0xa6, 0x40, 0xef, 0xc1, 0x9a, 0xd8, 0x98, 0x3e, 0xeb, 0xba, 0xb2, 0xc9, 0x0a, 0xdd, 0x36, - 0xb5, 0x02, 0xda, 0xe4, 0x97, 0x39, 0x49, 0x2e, 0x72, 0x02, 0xdc, 0xc7, 0x9b, 0x6e, 0x9b, 0xd6, - 0x69, 0x53, 0xbb, 0x03, 0xf9, 0xd1, 0xb4, 0x33, 0xe5, 0x14, 0xda, 0xd7, 0x4a, 0xe4, 0x63, 0x5e, - 0xbe, 0x86, 0x7c, 0xec, 0xb1, 0xf5, 0x4c, 0x1e, 0x11, 0x9c, 0x82, 0xe1, 0xf4, 0xec, 0x90, 0xf8, - 0xaf, 0x67, 0x87, 0xe4, 0xe4, 0xec, 0xa0, 0xfd, 0xaa, 0x1f, 0x8e, 0xf2, 0xec, 0x32, 0x1c, 0xbf, - 0x75, 0xe6, 0xc3, 0xef, 0x5e, 0x88, 0x8e, 0x5f, 0x83, 0x45, 0xfe, 0x4f, 0x2c, 0x1c, 0x5f, 0x9f, - 0xa1, 0x73, 0x10, 0x0c, 0xbb, 0x17, 0xc8, 0x82, 0x37, 0xb4, 0xde, 0x9e, 0x87, 0x39, 0x9f, 0x06, - 0xbd, 0x56, 0xa8, 0x6d, 0xc2, 0x4a, 0xd9, 0x0d, 0xa2, 0xc2, 0xdd, 0x2f, 0xf7, 0x97, 0x20, 0x23, - 0x4a, 0x49, 0xe4, 0xdc, 0x39, 0x5e, 0x13, 0x1c, 0xed, 0x21, 0xac, 0x8e, 0xd2, 0xcb, 0xf3, 0x7d, - 0x17, 0xe6, 0xa5, 0x12, 0x81, 0xec, 0x24, 0x67, 0xcb, 0x66, 0x7d, 0x2e, 0xed, 0x37, 0x0a, 0x2c, - 0x33, 0xd1, 0x5c, 0xf1, 0xbe, 0x22, 0x6b, 0x31, 0x45, 0x76, 0x2f, 0x44, 0xaa, 0xa0, 0x7d, 0xc8, - 0x0a, 0xb3, 0xb8, 0x4e, 0x14, 0x01, 0xff, 0x7f, 0x4a, 0xdb, 0x16, 0x93, 0x2e, 0x8c, 0x64, 0x38, - 0xc1, 0xee, 0x05, 0x32, 0xef, 0xc9, 0xff, 0x2f, 0xdf, 0x82, 0xf9, 0x08, 0xce, 0xa2, 0x3c, 0xda, - 0x83, 0x1f, 0x2b, 0x4b, 0x32, 0x92, 0x6e, 0x3b, 0x0d, 0x49, 0xd7, 0x09, 0x58, 0x3e, 0x1b, 0x96, - 0x3b, 0xc8, 0x3e, 0x91, 0xbb, 0x93, 0x67, 0x8a, 0x75, 0x6d, 0x1f, 0x56, 0x45, 0x97, 0x1e, 0xeb, - 0x2e, 0xbe, 0x61, 0xb5, 0xe0, 0x75, 0x28, 0x26, 0xf8, 0x7f, 0xba, 0x0e, 0xfd, 0x2d, 0x01, 0x19, - 0x49, 0x72, 0x5a, 0x83, 0x7a, 0xce, 0xac, 0xfc, 0xc2, 0xda, 0xb1, 0x6d, 0x98, 0x93, 0x2d, 0x6d, - 0xea, 0xcc, 0x8d, 0xb2, 0xe4, 0x3c, 0xa9, 0xa5, 0x4b, 0x3f, 0xb7, 0x96, 0x4e, 0xfb, 0x4b, 0x0a, - 0xf2, 0xa3, 0x3e, 0x40, 0xf7, 0x21, 0xdd, 0xb4, 0x7b, 0xb2, 0x26, 0xe7, 0xb7, 0xde, 0x3e, 0x83, - 0xff, 0x36, 0x8b, 0x8c, 0x91, 0x08, 0x7e, 0xf4, 0x08, 0x90, 0x4f, 0xbf, 0x4f, 0x9b, 0x21, 0x75, - 0xac, 0xa6, 0xed, 0x3b, 0x56, 0x78, 0xdc, 0xa5, 0xf2, 0xd9, 0x30, 0x3d, 0x2a, 0x8a, 0x3e, 0x75, - 0xdc, 0xb0, 0x68, 0xfb, 0x8e, 0x79, 0xdc, 0xa5, 0x44, 0x8d, 0xc4, 0x44, 0x10, 0xb4, 0x0e, 0x39, - 0x87, 0x06, 0x4d, 0xdf, 0xed, 0xf6, 0x1d, 0x96, 0x25, 0xc3, 0x20, 0xed, 0xdf, 0x09, 0x48, 0x73, - 0x6d, 0xd0, 0x4b, 0xb0, 0x5c, 0xd4, 0x1b, 0x75, 0x1c, 0x7b, 0xa6, 0xaf, 0x82, 0x5a, 0x2f, 0x57, - 0xd9, 0xe3, 0x5d, 0xdf, 0xd7, 0x8d, 0xb2, 0xbe, 0x5d, 0xc6, 0xaa, 0x82, 0xae, 0xc3, 0x15, 0x0e, - 0xd5, 0xcb, 0x04, 0xeb, 0xa5, 0x47, 0xd6, 0x76, 0xb5, 0xfa, 0x21, 0x2e, 0x59, 0xdb, 0x8f, 0xac, - 0x46, 0x1d, 0x13, 0x35, 0x81, 0x96, 0x61, 0xb1, 0x8c, 0xf5, 0x3a, 0xb6, 0xf0, 0xc3, 0x9a, 0x41, - 0x70, 0x49, 0x4d, 0x32, 0x9e, 0x6a, 0xc3, 0xac, 0x1b, 0x25, 0x6c, 0x15, 0xf5, 0x4a, 0x11, 0x97, - 0xcb, 0x62, 0x44, 0xf0, 0xc0, 0xa8, 0x94, 0xaa, 0x0f, 0xd4, 0x14, 0xba, 0x09, 0xeb, 0x35, 0xfd, - 0x11, 0x1f, 0x15, 0x60, 0x42, 0xaa, 0xc4, 0x2a, 0xea, 0xa4, 0x64, 0x99, 0x8f, 0x6a, 0xd8, 0x22, - 0xf8, 0x03, 0x5c, 0x34, 0x71, 0x49, 0x4d, 0x33, 0x31, 0x13, 0xa8, 0x4a, 0xb8, 0x58, 0x36, 0x2a, - 0xb8, 0xa4, 0xce, 0xa1, 0xab, 0x50, 0x88, 0x08, 0xaa, 0x35, 0xbe, 0x43, 0xa5, 0x6a, 0x5a, 0xfb, - 0x7a, 0xd9, 0x28, 0xa9, 0x19, 0xa6, 0xd8, 0x08, 0xbb, 0x3a, 0x8f, 0x34, 0x78, 0x99, 0x69, 0xcd, - 0xb4, 0x62, 0x94, 0xcc, 0x06, 0xa3, 0x02, 0xd4, 0x2c, 0xba, 0x06, 0x6b, 0xec, 0x8c, 0x46, 0xe5, - 0x7e, 0xff, 0xcc, 0xf2, 0x10, 0xb8, 0xa4, 0x02, 0xba, 0x02, 0x97, 0x22, 0x34, 0x13, 0x11, 0x9d, - 0x8f, 0x19, 0x2b, 0xc7, 0x90, 0xd5, 0x7d, 0x4c, 0xca, 0x7a, 0xad, 0xc6, 0x08, 0x08, 0xae, 0x63, - 0xb2, 0x2f, 0x86, 0x1a, 0x0b, 0xda, 0x6f, 0x13, 0x90, 0xe6, 0x39, 0x33, 0x96, 0x9e, 0x95, 0xa1, - 0xf4, 0x3c, 0xf1, 0xf6, 0x25, 0x5e, 0xe0, 0x63, 0x28, 0xf9, 0xfc, 0x1e, 0x43, 0xb1, 0x59, 0x45, - 0xea, 0xc4, 0x59, 0x45, 0xfa, 0xec, 0xb3, 0x8a, 0x7f, 0x25, 0x60, 0x3e, 0x02, 0xb1, 0xbc, 0x17, - 0x50, 0xff, 0xc8, 0x6d, 0x0e, 0x75, 0x71, 0x59, 0x09, 0x31, 0x1c, 0x74, 0x05, 0xb2, 0x41, 0x68, - 0xfb, 0x21, 0xef, 0x0f, 0x13, 0xbc, 0x3f, 0x9c, 0xe7, 0x80, 0x3a, 0x6d, 0xa2, 0x1b, 0xb0, 0xd0, - 0x9f, 0xd4, 0x31, 0x7c, 0x92, 0xe3, 0x73, 0x11, 0x8c, 0x91, 0x54, 0x20, 0x13, 0xba, 0xcd, 0xa7, - 0x34, 0x64, 0x89, 0x8a, 0x69, 0x7a, 0x6f, 0x26, 0x4d, 0x45, 0x3d, 0xa4, 0x8e, 0x29, 0x78, 0x49, - 0x24, 0x84, 0x15, 0xd5, 0xae, 0xef, 0x36, 0xa9, 0xcc, 0x52, 0xb3, 0xcc, 0x37, 0x04, 0xc3, 0x50, - 0xc6, 0x9c, 0x3b, 0x6f, 0xc6, 0xbc, 0x5c, 0x84, 0xfc, 0xa8, 0x62, 0xcc, 0x3e, 0x42, 0xb5, 0x81, - 0xf5, 0xe6, 0x05, 0xc0, 0x70, 0xd0, 0x2a, 0xa4, 0xf9, 0x94, 0x4a, 0x8e, 0xac, 0xc4, 0x42, 0xfb, - 0x7d, 0x12, 0x16, 0x86, 0x3b, 0x33, 0x84, 0x47, 0x53, 0xe2, 0x5b, 0x33, 0xf7, 0x74, 0xa3, 0x09, - 0x71, 0x7c, 0xba, 0x94, 0x78, 0x4e, 0xd3, 0xa5, 0xc9, 0xa9, 0x36, 0xf9, 0x02, 0x52, 0x6d, 0x6a, - 0x3c, 0xd5, 0xfe, 0x58, 0x39, 0x25, 0xd5, 0x5e, 0x82, 0x95, 0x2a, 0x29, 0x61, 0x62, 0x35, 0x2a, - 0x3b, 0x8d, 0xf2, 0x8e, 0x51, 0x8e, 0xb2, 0xed, 0x2c, 0x89, 0x31, 0x71, 0x5a, 0x62, 0x4c, 0x8e, - 0xa7, 0xbe, 0x94, 0xf6, 0xd7, 0x24, 0xac, 0x4c, 0x30, 0x1c, 0x7a, 0x1c, 0xf5, 0xd4, 0xd2, 0x95, - 0x1f, 0x9c, 0xd5, 0xf4, 0x9b, 0x93, 0xc7, 0x87, 0xbd, 0x56, 0x48, 0xa4, 0x64, 0xe4, 0xc0, 0x0a, - 0xbb, 0xc5, 0xd6, 0x98, 0xaf, 0xd9, 0xed, 0xba, 0x3b, 0xd3, 0xed, 0x8a, 0xc9, 0x47, 0xee, 0x18, - 0x0c, 0xbd, 0x0d, 0xab, 0xbd, 0x4e, 0x7f, 0x8b, 0x16, 0xb5, 0x7c, 0x6a, 0x07, 0xfd, 0x5a, 0xb8, - 0x32, 0x82, 0x23, 0x1c, 0xa5, 0xfd, 0x41, 0x81, 0xb5, 0x13, 0xd5, 0x47, 0x77, 0xe0, 0x35, 0xe1, - 0xa5, 0xbe, 0x8f, 0x8c, 0xb2, 0x61, 0x3e, 0x62, 0x69, 0xbd, 0x51, 0x8e, 0x0f, 0xb9, 0x97, 0x20, - 0x57, 0xd4, 0x2b, 0x11, 0xa9, 0xaa, 0xb0, 0x5a, 0x30, 0xe2, 0x5d, 0x8b, 0x39, 0xc7, 0x32, 0x4c, - 0xbc, 0xa7, 0x26, 0xd0, 0x2d, 0xb8, 0x31, 0x8a, 0x64, 0x85, 0xc2, 0x28, 0x62, 0xab, 0x58, 0xdd, - 0xdb, 0x36, 0x2a, 0xa2, 0x64, 0x24, 0x59, 0x38, 0x4c, 0x88, 0x13, 0xab, 0x6a, 0xee, 0x62, 0x62, - 0x11, 0xac, 0xd7, 0xab, 0x15, 0x35, 0xa5, 0xfd, 0x22, 0x0d, 0x17, 0x27, 0xdb, 0xa9, 0x9f, 0x72, - 0x45, 0x87, 0x7c, 0x96, 0x94, 0x8b, 0x9c, 0x7e, 0x60, 0x88, 0x06, 0xa5, 0x7c, 0x0e, 0x3f, 0x6d, - 0x4e, 0x70, 0xdd, 0x68, 0x68, 0x9c, 0xdd, 0x69, 0xe8, 0x29, 0x2c, 0x8c, 0x7c, 0x01, 0x10, 0xf3, - 0xbc, 0xfb, 0xe7, 0x51, 0x4f, 0xbc, 0x2c, 0x9c, 0x91, 0x6f, 0x03, 0x23, 0xc2, 0xd1, 0x2e, 0xe4, - 0x64, 0xb2, 0xe4, 0x09, 0x44, 0x94, 0xae, 0xd7, 0xa6, 0xee, 0x25, 0xf2, 0x2c, 0x4f, 0x1e, 0x10, - 0xf6, 0xff, 0xbf, 0x7c, 0x0f, 0x56, 0x26, 0x6c, 0xc7, 0x8b, 0x59, 0xd7, 0x0b, 0x03, 0xcb, 0xeb, - 0xd2, 0x0e, 0xf7, 0x53, 0x9a, 0x64, 0x39, 0xa4, 0xda, 0xa5, 0x1d, 0xed, 0x2b, 0x05, 0x0a, 0x27, - 0x19, 0x11, 0x6d, 0xc0, 0xab, 0x2c, 0x9e, 0xce, 0x17, 0x9f, 0x93, 0xda, 0xbd, 0x04, 0x8b, 0xb8, - 0xd1, 0x58, 0x33, 0x8d, 0xe2, 0x87, 0xd8, 0x8c, 0xc5, 0xe5, 0x0a, 0x2c, 0x19, 0x95, 0x62, 0x95, - 0x10, 0x5c, 0x34, 0xad, 0x1a, 0x31, 0x8a, 0x58, 0x4d, 0xa1, 0x57, 0xe0, 0x3a, 0xd7, 0x66, 0x4a, - 0xac, 0xa6, 0xb5, 0x9f, 0x29, 0x00, 0x03, 0x03, 0xa1, 0x9b, 0x90, 0x1f, 0x32, 0xef, 0xa0, 0x20, - 0x2d, 0x0c, 0x0c, 0x67, 0x38, 0xe8, 0x0e, 0x2c, 0x07, 0x4f, 0x3c, 0x3f, 0xb4, 0x86, 0xf3, 0x6e, - 0x42, 0x8c, 0x32, 0x38, 0xa2, 0x34, 0x80, 0x0f, 0xca, 0x6d, 0xf2, 0x8c, 0xe5, 0x56, 0xfb, 0x04, - 0x72, 0x84, 0x06, 0x5e, 0xcf, 0x67, 0x6d, 0x04, 0x7f, 0x44, 0x07, 0xa1, 0x7d, 0x70, 0x30, 0xd4, - 0xa5, 0xf1, 0xb5, 0xe1, 0xa0, 0x4b, 0x90, 0xf1, 0x3d, 0xaf, 0xcd, 0x30, 0x42, 0x8d, 0x39, 0xb6, - 0x34, 0x1c, 0xe6, 0x4d, 0x26, 0xfd, 0xd8, 0x0a, 0xdc, 0xcf, 0x85, 0x06, 0x69, 0x92, 0xe5, 0x90, - 0xba, 0xfb, 0x39, 0xd5, 0x7e, 0x9d, 0x84, 0x2b, 0x53, 0x06, 0x3a, 0xe8, 0x29, 0x64, 0xe5, 0xa4, - 0xc8, 0xf3, 0x65, 0x3e, 0x36, 0xce, 0x3b, 0x1d, 0x8a, 0xe1, 0x3c, 0x7f, 0x3b, 0x51, 0x50, 0xc8, - 0x40, 0x3e, 0xba, 0x07, 0xab, 0x51, 0x47, 0xd8, 0xa6, 0xe1, 0x13, 0xcf, 0x91, 0x33, 0x22, 0x7e, - 0x22, 0x4e, 0x1c, 0x75, 0x79, 0x7b, 0x1c, 0x2d, 0xe6, 0xc8, 0x3a, 0x5c, 0xeb, 0x75, 0xba, 0xb6, - 0x1f, 0x50, 0xc7, 0x9a, 0xc8, 0x9e, 0xe6, 0x06, 0xb9, 0x1c, 0x11, 0xd5, 0xc6, 0x45, 0x14, 0x20, - 0x73, 0x44, 0xfd, 0x60, 0xf0, 0x4e, 0x89, 0x96, 0xcc, 0xd1, 0xb1, 0x89, 0x99, 0xe7, 0xcb, 0x02, - 0xab, 0x76, 0x63, 0xc7, 0xd1, 0x1c, 0x50, 0xe3, 0x47, 0x44, 0x37, 0xe0, 0x5a, 0x54, 0xf8, 0x6a, - 0xa4, 0x5a, 0xc4, 0xf5, 0x7a, 0x95, 0x8c, 0x3f, 0x73, 0x06, 0xa8, 0xba, 0x49, 0x8c, 0x1a, 0x2b, - 0xbc, 0x97, 0x60, 0x65, 0x00, 0xdd, 0x26, 0xba, 0x51, 0x31, 0x09, 0xc6, 0x6a, 0x42, 0xfb, 0x7b, - 0x02, 0x96, 0xc7, 0xde, 0xfb, 0xe8, 0x2e, 0x5c, 0x9c, 0x30, 0x3c, 0x18, 0x44, 0xca, 0xca, 0xd8, - 0x3c, 0xc0, 0x70, 0xd0, 0x5b, 0xb0, 0x7a, 0x64, 0xb7, 0x5c, 0xc7, 0x12, 0xed, 0x69, 0x7f, 0x86, - 0x29, 0x7a, 0xd4, 0x65, 0x8e, 0xab, 0x33, 0x94, 0x1c, 0x5f, 0xa2, 0x3b, 0x80, 0x04, 0x03, 0xed, - 0x38, 0x03, 0x72, 0xd1, 0xb2, 0x2e, 0x71, 0x0c, 0xee, 0x38, 0x11, 0xf1, 0x36, 0xa4, 0x78, 0x8a, - 0x12, 0x8f, 0xeb, 0xcd, 0x59, 0xc2, 0x46, 0x68, 0xc6, 0x33, 0x15, 0xe7, 0x45, 0xb7, 0x20, 0xef, - 0xf9, 0xee, 0xa1, 0xdb, 0xb1, 0x5b, 0x96, 0x68, 0x03, 0xd3, 0x3c, 0x84, 0x17, 0x23, 0x68, 0x91, - 0x01, 0xd1, 0x2b, 0xb0, 0xd8, 0xec, 0xf9, 0x3e, 0x3b, 0xb8, 0xa0, 0x9a, 0xe3, 0x54, 0x0b, 0x12, - 0x28, 0x88, 0x36, 0x06, 0xbe, 0x1c, 0x58, 0x47, 0x7c, 0x6f, 0x58, 0xea, 0x8e, 0x5a, 0x46, 0xfb, - 0x6a, 0x0e, 0xd0, 0xf8, 0x2b, 0x63, 0xf2, 0xf7, 0x30, 0xe5, 0xb9, 0x7c, 0x0f, 0x43, 0xf7, 0xe0, - 0x62, 0x24, 0x38, 0xf4, 0xed, 0x4e, 0x60, 0x37, 0x23, 0x1d, 0xc5, 0x8d, 0x8e, 0xee, 0x86, 0x39, - 0x40, 0x1a, 0xce, 0xf9, 0x93, 0x0b, 0xd2, 0x01, 0x42, 0xfb, 0x99, 0x65, 0xb7, 0xb9, 0xc1, 0x52, - 0x33, 0xb3, 0x67, 0x43, 0xfb, 0x99, 0xce, 0x99, 0x50, 0x38, 0xb8, 0xb0, 0xf2, 0x76, 0x50, 0xc7, - 0x7a, 0x7c, 0xcc, 0x7d, 0x94, 0xdf, 0xda, 0x3e, 0xe3, 0x1b, 0x2e, 0x96, 0x1f, 0xa8, 0xb3, 0x7d, - 0xdc, 0xbf, 0xf0, 0x43, 0x30, 0xf4, 0xc6, 0x24, 0x3f, 0xce, 0xc9, 0xa1, 0x66, 0xdc, 0x93, 0xe8, - 0x9d, 0x13, 0x2f, 0x46, 0x46, 0xb2, 0x4c, 0xbc, 0x1a, 0xef, 0x43, 0xc6, 0xa1, 0x5d, 0x2f, 0x70, - 0xc3, 0xc2, 0xfc, 0x0c, 0xc3, 0xbc, 0x92, 0xa0, 0x25, 0x11, 0x13, 0xda, 0x81, 0x5c, 0xc7, 0xb3, - 0x82, 0x27, 0xde, 0x67, 0xd6, 0x01, 0xa5, 0x85, 0x2c, 0x97, 0xf1, 0xea, 0x54, 0x19, 0x15, 0xaf, - 0xfe, 0xc4, 0xfb, 0x6c, 0x87, 0x52, 0x92, 0xed, 0x44, 0xff, 0x4e, 0xf8, 0x28, 0x0d, 0xe7, 0xfc, - 0x28, 0xdd, 0xee, 0x47, 0xf4, 0xb0, 0x31, 0x87, 0xfa, 0x7b, 0x99, 0x6e, 0xe4, 0x2c, 0x25, 0xfe, - 0x3c, 0x18, 0xc1, 0xde, 0xaf, 0x56, 0xef, 0xf3, 0xe7, 0x41, 0x01, 0x56, 0x47, 0x10, 0x35, 0x9d, - 0x98, 0x15, 0x4c, 0xd4, 0xc4, 0xf6, 0x02, 0x2b, 0x3c, 0xf2, 0x79, 0xef, 0x68, 0x5f, 0x40, 0x9a, - 0xeb, 0xc4, 0x9e, 0xbb, 0x3c, 0xfc, 0xac, 0xb6, 0xdb, 0xf4, 0x3d, 0x71, 0x79, 0x92, 0x24, 0xc7, - 0x61, 0x7b, 0x1c, 0x34, 0xb8, 0xcc, 0xcd, 0x63, 0xab, 0xe9, 0x39, 0x54, 0xc6, 0xff, 0x42, 0x04, - 0x2c, 0x7a, 0x0e, 0x45, 0x6f, 0x00, 0x62, 0x3c, 0x6e, 0xe7, 0x30, 0xf2, 0x68, 0x68, 0x1f, 0x46, - 0x5f, 0x13, 0x24, 0x46, 0x66, 0x13, 0xfb, 0x50, 0xfb, 0xa1, 0x02, 0xd9, 0xbe, 0x79, 0xd1, 0x3d, - 0x48, 0x32, 0x9f, 0x28, 0x33, 0x1b, 0x92, 0x91, 0x23, 0x1d, 0xe6, 0x0f, 0x28, 0x1d, 0x7e, 0xb6, - 0xbd, 0x7a, 0x3a, 0x2b, 0x4f, 0x65, 0x99, 0x03, 0xca, 0xff, 0xd1, 0xfe, 0xac, 0x40, 0x46, 0x46, - 0x0a, 0xfa, 0xf6, 0x20, 0xc0, 0x66, 0x57, 0xa4, 0x1f, 0x5e, 0xdf, 0x81, 0xab, 0x6d, 0xb7, 0x63, - 0xd9, 0xce, 0x91, 0xdd, 0x69, 0x52, 0xab, 0xc9, 0xfe, 0xb6, 0x5a, 0x83, 0x29, 0x82, 0xc8, 0xe0, - 0x6b, 0x6d, 0xb7, 0xa3, 0x0b, 0x92, 0xe2, 0x10, 0x05, 0x4b, 0xce, 0x06, 0x2c, 0x48, 0x59, 0xe7, - 0x39, 0x51, 0x4e, 0xf2, 0xf2, 0x53, 0x7d, 0xad, 0x40, 0xaa, 0xde, 0xf2, 0x66, 0xf8, 0x6d, 0xc8, - 0xe8, 0x9c, 0x24, 0x31, 0x75, 0x4e, 0x92, 0x3c, 0x65, 0x4e, 0x92, 0x1a, 0x9f, 0x93, 0xbc, 0x0e, - 0xea, 0xc8, 0xaf, 0x8e, 0x58, 0x44, 0x88, 0xe2, 0xbf, 0x34, 0x0c, 0x37, 0xed, 0x43, 0xb4, 0x03, - 0x59, 0x5f, 0x76, 0x56, 0x62, 0x96, 0x91, 0xdb, 0xba, 0x3d, 0xf5, 0xec, 0x43, 0x7d, 0x18, 0x19, - 0xb0, 0x6a, 0xff, 0x50, 0x60, 0x29, 0x36, 0xe9, 0x3a, 0xf1, 0x9b, 0x0f, 0x3b, 0xfe, 0xa1, 0x7b, - 0x44, 0x3b, 0x56, 0xc7, 0x6e, 0x47, 0x51, 0x9d, 0xe5, 0x90, 0x8a, 0xdd, 0xa6, 0xcc, 0x7c, 0x07, - 0x76, 0xdb, 0x6d, 0x1d, 0x0b, 0xbc, 0x88, 0x65, 0x10, 0x20, 0x4e, 0x50, 0x82, 0x8c, 0xed, 0x38, - 0x3e, 0x0d, 0x02, 0x99, 0xae, 0xa7, 0x8f, 0x5f, 0x6a, 0x5e, 0x10, 0xda, 0x2d, 0x5d, 0x70, 0x90, - 0x88, 0x15, 0x5d, 0x85, 0x6c, 0x48, 0x5b, 0xb4, 0xfb, 0xc4, 0xeb, 0x50, 0x69, 0x9e, 0x01, 0x00, - 0xad, 0x42, 0x9a, 0xb6, 0x6d, 0xb7, 0x25, 0x3f, 0xdb, 0x8b, 0x85, 0xf6, 0xa5, 0x02, 0x8b, 0x23, - 0xe2, 0x58, 0xcb, 0xc4, 0x2b, 0xad, 0x7f, 0x1c, 0xb5, 0xa2, 0x72, 0x89, 0x2e, 0xc3, 0x7c, 0xcb, - 0x6b, 0xda, 0xfd, 0xe1, 0x49, 0x96, 0xf4, 0xd7, 0xe8, 0x22, 0x7b, 0xc2, 0x1d, 0x0e, 0xfa, 0x2c, - 0xb9, 0x62, 0x47, 0xef, 0x72, 0xf1, 0xe2, 0xc2, 0xcb, 0x49, 0x9d, 0x00, 0xf1, 0xeb, 0x7e, 0x0b, - 0xf2, 0x41, 0xe8, 0x53, 0x1a, 0x5a, 0x91, 0x05, 0x84, 0xe6, 0x8b, 0x02, 0x2a, 0xb5, 0xda, 0xf8, - 0x89, 0x02, 0x8b, 0x23, 0x53, 0x27, 0xf4, 0x32, 0x5c, 0x8e, 0xa6, 0xa3, 0x75, 0x53, 0x37, 0x1b, - 0xf5, 0x58, 0x66, 0x5b, 0x84, 0x6c, 0xb1, 0x5a, 0xd9, 0x31, 0xc8, 0x1e, 0x2e, 0xa9, 0x0a, 0x6f, - 0xd7, 0x70, 0xa5, 0xc4, 0xc8, 0xf7, 0x30, 0x29, 0xee, 0xea, 0x15, 0xf6, 0xd2, 0xe0, 0x78, 0xf9, - 0x53, 0x30, 0xb4, 0x00, 0xf3, 0x62, 0xc6, 0xca, 0x07, 0x1b, 0x39, 0xc8, 0x54, 0xaa, 0xfc, 0xe7, - 0x62, 0x6a, 0x0a, 0xbd, 0x04, 0xcb, 0x72, 0x61, 0xd5, 0x70, 0x45, 0x2f, 0x1b, 0x1f, 0xe3, 0x92, - 0x9a, 0xde, 0xe8, 0x42, 0x7e, 0x74, 0x86, 0x83, 0xd6, 0xe1, 0x6a, 0x91, 0xe0, 0x92, 0x61, 0x0e, - 0x8d, 0x53, 0x46, 0xf5, 0x9a, 0x87, 0xd4, 0xbe, 0x51, 0xd7, 0x55, 0x05, 0xe5, 0x01, 0xf6, 0xf4, - 0xba, 0x89, 0x09, 0x23, 0x55, 0x13, 0xac, 0x5d, 0xd4, 0xf7, 0x30, 0x31, 0xd8, 0xe3, 0x09, 0x3f, - 0xac, 0x11, 0x5c, 0xaf, 0xab, 0x49, 0xa6, 0x55, 0xc9, 0xa8, 0x17, 0xab, 0xfb, 0x98, 0xa8, 0xa9, - 0x8d, 0x9f, 0x2a, 0xb0, 0x3c, 0xd6, 0x52, 0xb1, 0xf7, 0x50, 0x6c, 0x3a, 0x3d, 0x61, 0xe3, 0x6b, - 0xb0, 0x16, 0x23, 0xaa, 0x1b, 0x95, 0xfb, 0x65, 0x6c, 0x35, 0xea, 0x2c, 0xe1, 0x8f, 0x4f, 0xb8, - 0xf7, 0x1a, 0x65, 0xd3, 0xe0, 0xd8, 0x04, 0x3b, 0x57, 0x0c, 0xdb, 0xa8, 0x94, 0x8d, 0x3d, 0xc3, - 0xc4, 0x25, 0x4e, 0x91, 0xdc, 0xf8, 0xb9, 0x02, 0x6a, 0xbc, 0x19, 0xe2, 0x56, 0x27, 0x38, 0xe2, - 0x9c, 0xe8, 0x27, 0x5e, 0x81, 0xf0, 0x50, 0xa9, 0xda, 0x37, 0x4a, 0xdc, 0x63, 0x57, 0xe0, 0xd2, - 0x10, 0xa2, 0x52, 0x1d, 0x42, 0x26, 0x62, 0x5c, 0x04, 0xef, 0x34, 0x2a, 0x25, 0xee, 0xb6, 0x51, - 0x84, 0xf0, 0x05, 0x2e, 0xa9, 0xa9, 0x8d, 0xbb, 0x90, 0xed, 0xa7, 0x39, 0x74, 0x11, 0xd0, 0x8e, - 0xf1, 0x10, 0x97, 0x2c, 0xa2, 0x9b, 0xd8, 0x2a, 0xe1, 0x1d, 0xbd, 0x51, 0x36, 0xd5, 0x0b, 0xcc, - 0x25, 0x35, 0x4c, 0xac, 0x1a, 0x26, 0xec, 0x0d, 0xa9, 0x3c, 0x9e, 0xe3, 0x3f, 0x31, 0xbd, 0xfb, - 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x14, 0x95, 0x3d, 0x8b, 0x6e, 0x2a, 0x00, 0x00, +var fileDescriptor_1820d8e1a9fad753 = []byte{ + // 3301 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3a, 0x3b, 0x70, 0x1b, 0xd7, + 0x76, 0x5a, 0x7c, 0x08, 0xe2, 0x80, 0x04, 0x97, 0x97, 0xb4, 0x04, 0xea, 0x63, 0x51, 0x6b, 0xc9, + 0x96, 0x29, 0x9b, 0x8e, 0x29, 0x79, 0x62, 0x67, 0x32, 0x4e, 0x96, 0xd8, 0x4b, 0x71, 0x6d, 0x10, + 0x80, 0x2f, 0x16, 0x94, 0xe4, 0x22, 0xeb, 0x15, 0xf6, 0x92, 0xda, 0x08, 0xc0, 0xc2, 0xbb, 0x0b, + 0x5a, 0xf4, 0xc4, 0x5d, 0xda, 0x14, 0x99, 0x14, 0x99, 0x14, 0x29, 0xdd, 0x25, 0x33, 0x29, 0xd2, + 0x64, 0xd2, 0x64, 0x26, 0x33, 0x29, 0x92, 0x49, 0x95, 0x22, 0xa9, 0x52, 0x64, 0x52, 0xbc, 0xea, + 0xf5, 0x9e, 0x79, 0xf3, 0xe6, 0xcd, 0xfd, 0x2c, 0x3e, 0x0b, 0x10, 0x04, 0x69, 0xe9, 0x35, 0xaf, + 0xe1, 0xf0, 0x9e, 0xdf, 0x3d, 0xf7, 0x9c, 0x73, 0xcf, 0x39, 0xf7, 0x2c, 0x60, 0xf1, 0xe4, 0xe1, + 0x76, 0x2f, 0xf0, 0x23, 0x1f, 0xdd, 0xa0, 0xaf, 0xa2, 0xed, 0x8e, 0xd3, 0x0b, 0xb7, 0x9f, 0xfb, + 0xfe, 0x4b, 0xaf, 0x7b, 0xbc, 0xdd, 0x73, 0x82, 0xa8, 0x4b, 0x83, 0xed, 0x93, 0x87, 0xda, 0x57, + 0x50, 0x2a, 0xbf, 0xa0, 0xad, 0x97, 0xfa, 0x89, 0xe3, 0xb5, 0x9d, 0xe7, 0x5e, 0xdb, 0x8b, 0x4e, + 0x09, 0xfd, 0xb6, 0x4f, 0xc3, 0x08, 0x7d, 0x02, 0x99, 0xb0, 0xed, 0x47, 0x25, 0x65, 0x53, 0xb9, + 0x5f, 0xd8, 0xb9, 0xb3, 0x3d, 0x43, 0xce, 0x76, 0xa3, 0xed, 0x47, 0x84, 0x93, 0x6b, 0xff, 0x91, + 0x86, 0x8d, 0x29, 0x32, 0xc3, 0x9e, 0xdf, 0x0d, 0xe9, 0x25, 0x85, 0xa2, 0xf7, 0x60, 0xa5, 0xe5, + 0xf7, 0xbb, 0x91, 0xed, 0x08, 0xa1, 0x6d, 0x5a, 0x4a, 0x6d, 0x2a, 0xf7, 0xb3, 0xa4, 0xc8, 0xc1, + 0x7a, 0x0c, 0x45, 0x3f, 0xc0, 0xba, 0xdb, 0x0f, 0x9c, 0xc8, 0xf3, 0xbb, 0x76, 0x40, 0xbf, 0xed, + 0x7b, 0x01, 0xed, 0xd0, 0x6e, 0x54, 0x4a, 0x6f, 0x2a, 0xf7, 0x8b, 0x3b, 0x5f, 0xcc, 0xdc, 0xef, + 0x4c, 0xad, 0xb7, 0x0d, 0x29, 0x92, 0x0c, 0x25, 0x92, 0x35, 0x77, 0x12, 0x88, 0xbe, 0x81, 0x35, + 0x67, 0x44, 0x80, 0xdd, 0xef, 0xb9, 0x4e, 0x44, 0x4b, 0x19, 0x7e, 0xda, 0x8f, 0x66, 0xee, 0x3e, + 0xba, 0x71, 0x93, 0xb3, 0x11, 0xe4, 0x4c, 0xc0, 0xb4, 0x0e, 0xac, 0x4d, 0xd1, 0x06, 0xdd, 0x85, + 0x4d, 0xa3, 0x49, 0x74, 0xcb, 0xac, 0x55, 0x6d, 0x82, 0xbf, 0x6a, 0x9a, 0x04, 0x1f, 0xe0, 0xaa, + 0x65, 0x37, 0xab, 0x8d, 0x3a, 0x2e, 0x9b, 0x7b, 0x26, 0x36, 0xd4, 0x2b, 0xa8, 0x04, 0xeb, 0x46, + 0xcd, 0xae, 0xd6, 0x2c, 0xbb, 0xb1, 0x5f, 0x7b, 0x62, 0xc7, 0x1c, 0xaa, 0x82, 0xae, 0x02, 0x3a, + 0x68, 0x36, 0x92, 0xf0, 0x94, 0xd6, 0x03, 0x34, 0xa9, 0x18, 0xfa, 0x1a, 0x56, 0x99, 0x5b, 0xec, + 0x51, 0xfd, 0x4a, 0xca, 0x66, 0xfa, 0x7e, 0x61, 0xe7, 0xc3, 0x73, 0x5d, 0x3a, 0x66, 0x61, 0x35, + 0x4c, 0x40, 0xb4, 0x00, 0xd4, 0x24, 0xd5, 0x9b, 0x8e, 0x1a, 0xed, 0x07, 0xb8, 0xcd, 0x9d, 0x5f, + 0x0b, 0x5c, 0x1a, 0xec, 0xf5, 0xdb, 0x47, 0x5e, 0x3b, 0x79, 0x1b, 0x6e, 0x43, 0xa1, 0x43, 0x83, + 0xd6, 0x0b, 0xa7, 0x1b, 0xd9, 0x9e, 0xcb, 0x35, 0xc9, 0x13, 0x88, 0x41, 0xa6, 0x8b, 0x3e, 0x83, + 0x8c, 0x17, 0xd1, 0x4e, 0x29, 0xc5, 0xcd, 0x70, 0x6f, 0xa6, 0x8e, 0x15, 0xaf, 0x4b, 0xcd, 0x88, + 0x76, 0x08, 0x67, 0xd1, 0xfe, 0x4d, 0x81, 0xcd, 0xb3, 0xf7, 0x97, 0x37, 0xe7, 0x29, 0x14, 0x8f, + 0xc6, 0x30, 0xd2, 0x1a, 0xbf, 0x37, 0x73, 0xa7, 0x69, 0x12, 0x13, 0x72, 0xd0, 0x3e, 0x14, 0x8f, + 0x28, 0x0d, 0x6d, 0xa7, 0xeb, 0xda, 0x91, 0xf3, 0x8a, 0x86, 0xdc, 0x4a, 0x85, 0x1d, 0x6d, 0xa6, + 0xe4, 0x7a, 0xe0, 0xb5, 0x28, 0x59, 0x62, 0x9c, 0x7a, 0xd7, 0xb5, 0x18, 0x9f, 0xf6, 0x29, 0x5c, + 0x7b, 0x4c, 0xa3, 0x5d, 0x41, 0xdc, 0x88, 0x9c, 0xa8, 0x1f, 0xc6, 0xf6, 0xbb, 0x05, 0x20, 0x85, + 0x0c, 0xcd, 0x97, 0x97, 0x10, 0xd3, 0xd5, 0x7e, 0xa1, 0x40, 0x69, 0x92, 0x55, 0x1e, 0x7d, 0x36, + 0x2f, 0xfa, 0x0a, 0x8a, 0x31, 0x3a, 0xe4, 0x8c, 0x5c, 0xff, 0xe2, 0xce, 0xd6, 0x4c, 0xfd, 0xc7, + 0xb7, 0x5a, 0x7e, 0x3e, 0xba, 0x64, 0x01, 0xde, 0x0b, 0x68, 0xcf, 0x39, 0x65, 0x97, 0x2b, 0x96, + 0x2a, 0x72, 0xc8, 0x87, 0xe7, 0x58, 0x25, 0xe6, 0x92, 0x82, 0xd5, 0x5e, 0x02, 0xa2, 0xfd, 0x5d, + 0x06, 0xd6, 0xcb, 0x01, 0x75, 0x22, 0x2a, 0x55, 0xf8, 0x79, 0x09, 0x17, 0xed, 0x43, 0xbe, 0x4d, + 0x9d, 0x90, 0xda, 0x01, 0x3d, 0x92, 0x9e, 0x7b, 0x30, 0x3b, 0xfa, 0x18, 0x35, 0xa1, 0x47, 0x34, + 0xa0, 0xdd, 0x16, 0x25, 0x8b, 0x6d, 0xb9, 0x46, 0x4f, 0x40, 0xed, 0x87, 0x34, 0xb0, 0xbd, 0xee, + 0x91, 0x1f, 0x74, 0x78, 0x8e, 0xe1, 0x87, 0x2e, 0xec, 0x7c, 0x30, 0x53, 0x60, 0x33, 0xa4, 0x81, + 0x39, 0xe4, 0x21, 0x2b, 0xfd, 0x71, 0x00, 0x4b, 0x8b, 0xb1, 0x2d, 0x47, 0x65, 0xcf, 0x93, 0x16, + 0xeb, 0x82, 0x6f, 0x54, 0x3c, 0xea, 0x4d, 0xc0, 0xd0, 0x9f, 0xc1, 0xad, 0x78, 0x87, 0x5e, 0xe0, + 0xb7, 0x68, 0x18, 0xb2, 0x70, 0xe8, 0x39, 0x81, 0xd3, 0xa1, 0x11, 0x0d, 0xc2, 0x52, 0x96, 0xef, + 0xf5, 0xe9, 0x3c, 0x7b, 0xd5, 0x07, 0x02, 0xea, 0x03, 0x7e, 0x72, 0xa3, 0x77, 0x36, 0x12, 0x3d, + 0x80, 0x55, 0xcf, 0xa5, 0x9d, 0x9e, 0x1f, 0xd1, 0x6e, 0xeb, 0xd4, 0x8e, 0xfc, 0x97, 0xb4, 0x5b, + 0x5a, 0xe0, 0x71, 0xaa, 0x8e, 0x20, 0x2c, 0x06, 0x47, 0x1f, 0x02, 0x72, 0x5c, 0xd7, 0x63, 0x6a, + 0x3b, 0x6d, 0x5e, 0xa4, 0x68, 0x18, 0x95, 0x72, 0x9c, 0x7a, 0x75, 0x88, 0x91, 0x51, 0xa1, 0xfd, + 0x45, 0x0a, 0xde, 0x4a, 0x84, 0x8b, 0xbc, 0x16, 0x9f, 0x43, 0x4e, 0x1e, 0x42, 0x86, 0xcc, 0xdd, + 0x79, 0x02, 0x9e, 0xc4, 0x4c, 0xe8, 0x4f, 0x60, 0x8d, 0xbb, 0x3b, 0x36, 0x9c, 0xdf, 0xe3, 0x5e, + 0x11, 0x21, 0xb4, 0x7d, 0xae, 0xc7, 0xa5, 0xb5, 0x6a, 0x9c, 0x8b, 0xac, 0xf6, 0x93, 0x20, 0x64, + 0xc1, 0x4a, 0x7c, 0x2f, 0x8f, 0x1c, 0xaf, 0xdd, 0x0f, 0xa8, 0x8c, 0xa6, 0x07, 0xf3, 0xe8, 0xb9, + 0x27, 0x58, 0x48, 0x7c, 0xb7, 0xe5, 0x5a, 0xab, 0x02, 0x12, 0xe6, 0x90, 0x61, 0x2c, 0xee, 0xce, + 0xa7, 0x90, 0xe5, 0x61, 0x2c, 0x2d, 0xa1, 0xcd, 0x71, 0x01, 0x04, 0x83, 0xf6, 0xa3, 0x02, 0x6b, + 0x63, 0x02, 0xa5, 0x75, 0x2f, 0x2d, 0x71, 0xda, 0xb9, 0x53, 0x3f, 0xff, 0xdc, 0xff, 0xac, 0x40, + 0x96, 0x6f, 0x83, 0x36, 0x40, 0x5c, 0xd9, 0x61, 0x32, 0xcc, 0xf1, 0xb5, 0xe9, 0x0e, 0x52, 0x48, + 0xea, 0x62, 0x29, 0xe4, 0x1e, 0x14, 0x79, 0x24, 0x04, 0x71, 0x52, 0xe0, 0x8e, 0xca, 0x93, 0x65, + 0x06, 0x1d, 0x64, 0x0a, 0xf4, 0x19, 0x6c, 0x88, 0x8d, 0xe9, 0xab, 0x9e, 0x27, 0x9b, 0xac, 0xc8, + 0xeb, 0x50, 0x3b, 0xa4, 0x2d, 0x7e, 0x99, 0xd3, 0xe4, 0x2a, 0x27, 0xc0, 0x03, 0xbc, 0xe5, 0x75, + 0x68, 0x83, 0xb6, 0xb4, 0x07, 0x50, 0x1c, 0x4f, 0x3b, 0x33, 0x4e, 0xa1, 0xfd, 0xa4, 0xc4, 0x3e, + 0xe6, 0xe5, 0x6b, 0xc4, 0xc7, 0x3e, 0x5b, 0xcf, 0xe5, 0x11, 0xc1, 0x29, 0x18, 0xce, 0xcf, 0x0e, + 0xa9, 0xdf, 0x7a, 0x76, 0x48, 0x4f, 0xcf, 0x0e, 0xda, 0xdf, 0x0f, 0xc2, 0x51, 0x9e, 0x5d, 0x86, + 0xe3, 0x1f, 0x5c, 0xf8, 0xf0, 0xfb, 0x57, 0xe2, 0xe3, 0xd7, 0x61, 0x99, 0xff, 0x93, 0x08, 0xc7, + 0xf7, 0xe7, 0xe8, 0x1c, 0x04, 0xc3, 0xfe, 0x15, 0xb2, 0xe4, 0x8f, 0xac, 0x77, 0x17, 0x61, 0x21, + 0xa0, 0x61, 0xbf, 0x1d, 0x69, 0xdb, 0xb0, 0x56, 0xf1, 0xc2, 0xb8, 0x70, 0x0f, 0xca, 0xfd, 0x35, + 0xc8, 0x89, 0x52, 0x12, 0x3b, 0x77, 0x81, 0xd7, 0x04, 0x57, 0x7b, 0x0a, 0xeb, 0xe3, 0xf4, 0xf2, + 0x7c, 0x7f, 0x0c, 0x8b, 0x52, 0x89, 0x50, 0x76, 0x92, 0xf3, 0x65, 0xb3, 0x01, 0x97, 0xf6, 0x8f, + 0x0a, 0xac, 0x32, 0xd1, 0x5c, 0xf1, 0x81, 0x22, 0x1b, 0x09, 0x45, 0xf6, 0xaf, 0xc4, 0xaa, 0xa0, + 0x43, 0xc8, 0x0b, 0xb3, 0x78, 0x6e, 0x1c, 0x01, 0xbf, 0x7f, 0x4e, 0xdb, 0x96, 0x90, 0x2e, 0x8c, + 0x64, 0xba, 0xe1, 0xfe, 0x15, 0xb2, 0xe8, 0xcb, 0xff, 0xaf, 0xdf, 0x83, 0xc5, 0x18, 0xce, 0xa2, + 0x3c, 0xde, 0x83, 0x1f, 0x2b, 0x4f, 0x72, 0x92, 0x6e, 0x37, 0x0b, 0x69, 0xcf, 0x0d, 0x59, 0x3e, + 0x1b, 0x95, 0x3b, 0xcc, 0x3e, 0xb1, 0xbb, 0xd3, 0x17, 0x8a, 0x75, 0xed, 0x10, 0xd6, 0x45, 0x97, + 0x9e, 0xe8, 0x2e, 0x7e, 0x66, 0xb5, 0xe0, 0x75, 0x28, 0x21, 0xf8, 0x77, 0xba, 0x0e, 0xfd, 0x6f, + 0x0a, 0x72, 0x92, 0xe4, 0xbc, 0x06, 0xf5, 0x92, 0x59, 0xf9, 0x8d, 0xb5, 0x63, 0xbb, 0xb0, 0x20, + 0x5b, 0xda, 0xcc, 0x85, 0x1b, 0x65, 0xc9, 0x79, 0x56, 0x4b, 0x97, 0x7d, 0x6d, 0x2d, 0x9d, 0xf6, + 0xdf, 0x19, 0x28, 0x8e, 0xfb, 0x00, 0x3d, 0x86, 0x6c, 0xcb, 0xe9, 0xcb, 0x9a, 0x5c, 0xdc, 0xf9, + 0xf8, 0x02, 0xfe, 0xdb, 0x2e, 0x33, 0x46, 0x22, 0xf8, 0xd1, 0x33, 0x40, 0x01, 0xfd, 0x53, 0xda, + 0x8a, 0xa8, 0x6b, 0xb7, 0x9c, 0xc0, 0xb5, 0xa3, 0xd3, 0x1e, 0x95, 0xcf, 0x86, 0xd9, 0x51, 0x51, + 0x0e, 0xa8, 0xeb, 0x45, 0x65, 0x27, 0x70, 0xad, 0xd3, 0x1e, 0x25, 0x6a, 0x2c, 0x26, 0x86, 0xa0, + 0x4d, 0x28, 0xb8, 0x34, 0x6c, 0x05, 0x5e, 0x6f, 0xe0, 0xb0, 0x3c, 0x19, 0x05, 0x69, 0xbf, 0x4e, + 0x41, 0x96, 0x6b, 0x83, 0xde, 0x82, 0xd5, 0xb2, 0xde, 0x6c, 0xe0, 0xc4, 0x33, 0x7d, 0x1d, 0xd4, + 0x46, 0xa5, 0xc6, 0x1e, 0xef, 0xfa, 0xa1, 0x6e, 0x56, 0xf4, 0xdd, 0x0a, 0x56, 0x15, 0x74, 0x1b, + 0x6e, 0x70, 0xa8, 0x5e, 0x21, 0x58, 0x37, 0x9e, 0xd9, 0xbb, 0xb5, 0xda, 0x97, 0xd8, 0xb0, 0x77, + 0x9f, 0xd9, 0xcd, 0x06, 0x26, 0x6a, 0x0a, 0xad, 0xc2, 0x72, 0x05, 0xeb, 0x0d, 0x6c, 0xe3, 0xa7, + 0x75, 0x93, 0x60, 0x43, 0x4d, 0x33, 0x9e, 0x5a, 0xd3, 0x6a, 0x98, 0x06, 0xb6, 0xcb, 0x7a, 0xb5, + 0x8c, 0x2b, 0x15, 0x31, 0x22, 0x78, 0x62, 0x56, 0x8d, 0xda, 0x13, 0x35, 0x83, 0xee, 0xc2, 0x66, + 0x5d, 0x7f, 0xc6, 0x47, 0x05, 0x98, 0x90, 0x1a, 0xb1, 0xcb, 0x3a, 0x31, 0x6c, 0xeb, 0x59, 0x1d, + 0xdb, 0x04, 0x7f, 0x81, 0xcb, 0x16, 0x36, 0xd4, 0x2c, 0x13, 0x33, 0x85, 0xca, 0xc0, 0xe5, 0x8a, + 0x59, 0xc5, 0x86, 0xba, 0x80, 0x6e, 0x42, 0x29, 0x26, 0xa8, 0xd5, 0xf9, 0x0e, 0xd5, 0x9a, 0x65, + 0x1f, 0xea, 0x15, 0xd3, 0x50, 0x73, 0x4c, 0xb1, 0x31, 0x76, 0x75, 0x11, 0x69, 0xf0, 0x36, 0xd3, + 0x9a, 0x69, 0xc5, 0x28, 0x99, 0x0d, 0xc6, 0x05, 0xa8, 0x79, 0x74, 0x0b, 0x36, 0xd8, 0x19, 0xcd, + 0xea, 0xe3, 0xc1, 0x99, 0xe5, 0x21, 0xb0, 0xa1, 0x02, 0xba, 0x01, 0xd7, 0x62, 0x34, 0x13, 0x11, + 0x9f, 0x8f, 0x19, 0xab, 0xc0, 0x90, 0xb5, 0x43, 0x4c, 0x2a, 0x7a, 0xbd, 0xce, 0x08, 0x08, 0x6e, + 0x60, 0x72, 0x28, 0x86, 0x1a, 0x4b, 0xda, 0x3f, 0xa5, 0x20, 0xcb, 0x73, 0x66, 0x22, 0x3d, 0x2b, + 0x23, 0xe9, 0x79, 0xea, 0xed, 0x4b, 0xbd, 0xc1, 0xc7, 0x50, 0xfa, 0xf5, 0x3d, 0x86, 0x12, 0xb3, + 0x8a, 0xcc, 0x99, 0xb3, 0x8a, 0xec, 0xc5, 0x67, 0x15, 0xbf, 0x4a, 0xc1, 0x62, 0x0c, 0x62, 0x79, + 0x2f, 0xa4, 0xc1, 0x89, 0xd7, 0x1a, 0xe9, 0xe2, 0xf2, 0x12, 0x62, 0xba, 0xe8, 0x06, 0xe4, 0xc3, + 0xc8, 0x09, 0x22, 0xde, 0x1f, 0xa6, 0x78, 0x7f, 0xb8, 0xc8, 0x01, 0x0d, 0xda, 0x42, 0x77, 0x60, + 0x69, 0x30, 0xa9, 0x63, 0xf8, 0x34, 0xc7, 0x17, 0x62, 0x18, 0x23, 0xa9, 0x42, 0x2e, 0xf2, 0x5a, + 0x2f, 0x69, 0xc4, 0x12, 0x15, 0xd3, 0xf4, 0xd1, 0x5c, 0x9a, 0x8a, 0x7a, 0x48, 0x5d, 0x4b, 0xf0, + 0x92, 0x58, 0x08, 0x2b, 0xaa, 0xbd, 0xc0, 0x6b, 0x51, 0x99, 0xa5, 0xe6, 0x99, 0x6f, 0x08, 0x86, + 0x91, 0x8c, 0xb9, 0x70, 0xd9, 0x8c, 0x79, 0xbd, 0x0c, 0xc5, 0x71, 0xc5, 0x98, 0x7d, 0x84, 0x6a, + 0x43, 0xeb, 0x2d, 0x0a, 0x80, 0xe9, 0xa2, 0x75, 0xc8, 0xf2, 0x29, 0x95, 0x1c, 0x59, 0x89, 0x85, + 0xf6, 0x2f, 0x69, 0x58, 0x1a, 0xed, 0xcc, 0x10, 0x1e, 0x4f, 0x89, 0x1f, 0xcd, 0xdd, 0xd3, 0x8d, + 0x27, 0xc4, 0xc9, 0xe9, 0x52, 0xea, 0x35, 0x4d, 0x97, 0xa6, 0xa7, 0xda, 0xf4, 0x1b, 0x48, 0xb5, + 0x99, 0xc9, 0x54, 0xfb, 0x97, 0xca, 0x39, 0xa9, 0xf6, 0x1a, 0xac, 0xd5, 0x88, 0x81, 0x89, 0xdd, + 0xac, 0xee, 0x35, 0x2b, 0x7b, 0x66, 0x25, 0xce, 0xb6, 0xf3, 0x24, 0xc6, 0xd4, 0x79, 0x89, 0x31, + 0x3d, 0x99, 0xfa, 0x32, 0xda, 0xff, 0xa4, 0x61, 0x6d, 0x8a, 0xe1, 0xd0, 0xf3, 0xb8, 0xa7, 0x96, + 0xae, 0xfc, 0xe2, 0xa2, 0xa6, 0xdf, 0x9e, 0x3e, 0x3e, 0xec, 0xb7, 0x23, 0x22, 0x25, 0x23, 0x17, + 0xd6, 0xd8, 0x2d, 0xb6, 0x27, 0x7c, 0xcd, 0x6e, 0xd7, 0xc3, 0xb9, 0x6e, 0x57, 0x42, 0x3e, 0xf2, + 0x26, 0x60, 0xe8, 0x63, 0x58, 0xef, 0x77, 0x07, 0x5b, 0xb4, 0xa9, 0x1d, 0x50, 0x27, 0x1c, 0xd4, + 0xc2, 0xb5, 0x31, 0x1c, 0xe1, 0x28, 0xed, 0x5f, 0x15, 0xd8, 0x38, 0x53, 0x7d, 0xf4, 0x00, 0xde, + 0x13, 0x5e, 0x1a, 0xf8, 0xc8, 0xac, 0x98, 0xd6, 0x33, 0x96, 0xd6, 0x9b, 0x95, 0xe4, 0x90, 0x7b, + 0x05, 0x0a, 0x65, 0xbd, 0x1a, 0x93, 0xaa, 0x0a, 0xab, 0x05, 0x63, 0xde, 0xb5, 0x99, 0x73, 0x6c, + 0xd3, 0xc2, 0x07, 0x6a, 0x0a, 0xdd, 0x83, 0x3b, 0xe3, 0x48, 0x56, 0x28, 0xcc, 0x32, 0xb6, 0xcb, + 0xb5, 0x83, 0x5d, 0xb3, 0x2a, 0x4a, 0x46, 0x9a, 0x85, 0xc3, 0x94, 0x38, 0xb1, 0x6b, 0xd6, 0x3e, + 0x26, 0x36, 0xc1, 0x7a, 0xa3, 0x56, 0x55, 0x33, 0xda, 0xbf, 0x67, 0xe1, 0xea, 0x74, 0x3b, 0x0d, + 0x52, 0xae, 0xe8, 0x90, 0x2f, 0x92, 0x72, 0x91, 0x3b, 0x08, 0x0c, 0xd1, 0xa0, 0x54, 0x2e, 0xe1, + 0xa7, 0xed, 0x29, 0xae, 0x1b, 0x0f, 0x8d, 0x8b, 0x3b, 0x0d, 0xbd, 0x84, 0xa5, 0xb1, 0x2f, 0x00, + 0x62, 0x9e, 0xf7, 0xf8, 0x32, 0xea, 0x89, 0x97, 0x85, 0x3b, 0xf6, 0x6d, 0x60, 0x4c, 0x38, 0xda, + 0x87, 0x82, 0x4c, 0x96, 0x3c, 0x81, 0x88, 0xd2, 0xf5, 0xde, 0xcc, 0xbd, 0x44, 0x9e, 0xe5, 0xc9, + 0x03, 0xa2, 0xc1, 0xff, 0xd7, 0x1f, 0xc1, 0xda, 0x94, 0xed, 0x78, 0x31, 0xeb, 0xf9, 0x51, 0x68, + 0xfb, 0x3d, 0xda, 0xe5, 0x7e, 0xca, 0x92, 0x3c, 0x87, 0xd4, 0x7a, 0xb4, 0xab, 0xfd, 0x52, 0x81, + 0xd2, 0x59, 0x46, 0x44, 0x5b, 0xf0, 0x2e, 0x8b, 0xa7, 0xcb, 0xc5, 0xe7, 0xb4, 0x76, 0x8f, 0xa7, + 0x96, 0xf2, 0xbe, 0x59, 0x31, 0x6c, 0xcb, 0x2c, 0x7f, 0x89, 0xad, 0x86, 0xfd, 0xc4, 0xb4, 0xf6, + 0x6b, 0x4d, 0xcb, 0xd6, 0x8d, 0x66, 0xc5, 0x52, 0x17, 0x58, 0x48, 0x8e, 0x07, 0xa3, 0x20, 0x4c, + 0x04, 0xee, 0x1a, 0xac, 0x98, 0xd5, 0x72, 0x8d, 0x10, 0x5c, 0xb6, 0xec, 0x3a, 0x31, 0xcb, 0x58, + 0xcd, 0xa0, 0x77, 0xe0, 0x36, 0x57, 0x77, 0x46, 0x30, 0x67, 0xb5, 0xbf, 0x51, 0x00, 0x86, 0x16, + 0x44, 0x77, 0xa1, 0x38, 0x62, 0xff, 0x61, 0xc5, 0x5a, 0x1a, 0x5a, 0xd6, 0x74, 0xd1, 0x03, 0x58, + 0x0d, 0x5f, 0xf8, 0x41, 0x64, 0x8f, 0x26, 0xe6, 0x94, 0x98, 0x75, 0x70, 0x84, 0x31, 0x84, 0x0f, + 0xeb, 0x71, 0xfa, 0x82, 0xf5, 0x58, 0xfb, 0x06, 0x0a, 0x84, 0x86, 0x7e, 0x3f, 0x60, 0x7d, 0x06, + 0x7f, 0x65, 0x87, 0x91, 0x73, 0x74, 0x34, 0xd2, 0xc6, 0xf1, 0xb5, 0xe9, 0xa2, 0x6b, 0x90, 0x0b, + 0x7c, 0xbf, 0xc3, 0x30, 0x42, 0x8d, 0x05, 0xb6, 0x34, 0x5d, 0xe6, 0x6e, 0x26, 0xfd, 0xd4, 0x0e, + 0xbd, 0xef, 0x85, 0x06, 0x59, 0x92, 0xe7, 0x90, 0x86, 0xf7, 0x3d, 0xd5, 0xfe, 0x21, 0x0d, 0x37, + 0x66, 0x4c, 0x7c, 0xd0, 0x4b, 0xc8, 0xcb, 0x51, 0x92, 0x1f, 0xc8, 0x84, 0x6d, 0x5e, 0x76, 0x7c, + 0x94, 0xc0, 0xf9, 0xc1, 0x6e, 0xaa, 0xa4, 0x90, 0xa1, 0x7c, 0xf4, 0x08, 0xd6, 0xe3, 0x96, 0xb1, + 0x43, 0xa3, 0x17, 0xbe, 0x2b, 0x87, 0x48, 0xfc, 0x44, 0x9c, 0x38, 0x6e, 0x03, 0x0f, 0x38, 0x5a, + 0x0c, 0x9a, 0x75, 0xb8, 0xd5, 0xef, 0xf6, 0x9c, 0x20, 0xa4, 0xae, 0x3d, 0x95, 0x3d, 0xcb, 0x0d, + 0x72, 0x3d, 0x26, 0xaa, 0x4f, 0x8a, 0x28, 0x41, 0xee, 0x84, 0x06, 0xe1, 0xf0, 0x21, 0x13, 0x2f, + 0x99, 0xa3, 0x13, 0x23, 0x35, 0x3f, 0x90, 0x15, 0x58, 0xed, 0x25, 0x8e, 0xa3, 0xb9, 0xa0, 0x26, + 0x8f, 0x88, 0xee, 0xc0, 0xad, 0xb8, 0x32, 0xd6, 0x49, 0xad, 0x8c, 0x1b, 0x8d, 0x1a, 0x99, 0x7c, + 0x07, 0x0d, 0x51, 0x0d, 0x8b, 0x98, 0x75, 0x56, 0x99, 0xaf, 0xc1, 0xda, 0x10, 0xba, 0x4b, 0x74, + 0xb3, 0x6a, 0x11, 0x8c, 0xd5, 0x94, 0xf6, 0x7f, 0x29, 0x58, 0x9d, 0x18, 0x08, 0xa0, 0x87, 0x70, + 0x75, 0xca, 0x74, 0x61, 0x18, 0x29, 0x6b, 0x13, 0x03, 0x03, 0xd3, 0x45, 0x1f, 0xc1, 0xfa, 0x89, + 0xd3, 0xf6, 0x5c, 0x5b, 0xf4, 0xaf, 0x83, 0x21, 0xa7, 0x68, 0x62, 0x57, 0x39, 0xae, 0xc1, 0x50, + 0x72, 0xbe, 0x89, 0x1e, 0x00, 0x12, 0x0c, 0xb4, 0xeb, 0x0e, 0xc9, 0x45, 0x4f, 0xbb, 0xc2, 0x31, + 0xb8, 0xeb, 0xc6, 0xc4, 0xbb, 0x90, 0xe1, 0x39, 0x4c, 0xbc, 0xbe, 0xb7, 0xe7, 0x09, 0x1b, 0xa1, + 0x19, 0x4f, 0x65, 0x9c, 0x17, 0xdd, 0x83, 0xa2, 0x1f, 0x78, 0xc7, 0x5e, 0xd7, 0x69, 0xdb, 0xa2, + 0x4f, 0xcc, 0xf2, 0x10, 0x5e, 0x8e, 0xa1, 0x65, 0x06, 0x44, 0xef, 0xc0, 0x72, 0xab, 0x1f, 0x04, + 0xec, 0xe0, 0x82, 0x6a, 0x81, 0x53, 0x2d, 0x49, 0xa0, 0x20, 0xda, 0x1a, 0xfa, 0x72, 0x68, 0x1d, + 0xf1, 0x41, 0x62, 0xa5, 0x37, 0x6e, 0x19, 0xed, 0x3f, 0x17, 0x00, 0x4d, 0x3e, 0x43, 0xa6, 0x7f, + 0x30, 0x53, 0x5e, 0xcb, 0x07, 0x33, 0xf4, 0x08, 0xae, 0xc6, 0x82, 0xa3, 0xc0, 0xe9, 0x86, 0x4e, + 0x2b, 0xd6, 0x51, 0xdc, 0xe8, 0xf8, 0x6e, 0x58, 0x43, 0xa4, 0xe9, 0x5e, 0x3e, 0xb9, 0x20, 0x1d, + 0x20, 0x72, 0x5e, 0xd9, 0x4e, 0x87, 0x1b, 0x2c, 0x33, 0x37, 0x7b, 0x3e, 0x72, 0x5e, 0xe9, 0x9c, + 0x09, 0x45, 0xc3, 0x0b, 0x2b, 0x6f, 0x07, 0x75, 0xed, 0xe7, 0xa7, 0xdc, 0x47, 0xc5, 0x9d, 0xdd, + 0x0b, 0x3e, 0xf2, 0x12, 0xf9, 0x81, 0xba, 0xbb, 0xa7, 0x83, 0x0b, 0x3f, 0x02, 0x43, 0x1f, 0x4c, + 0xf3, 0xe3, 0x82, 0x9c, 0x7a, 0x26, 0x3d, 0x89, 0x3e, 0x39, 0xf3, 0x62, 0xe4, 0x24, 0xcb, 0xd4, + 0xab, 0xf1, 0x39, 0xe4, 0x5c, 0xda, 0xf3, 0x43, 0x2f, 0x2a, 0x2d, 0xce, 0x31, 0xed, 0x33, 0x04, + 0x2d, 0x89, 0x99, 0xd0, 0x1e, 0x14, 0xba, 0xbe, 0x1d, 0xbe, 0xf0, 0xbf, 0xb3, 0x8f, 0x28, 0x2d, + 0xe5, 0xb9, 0x8c, 0x77, 0x67, 0xca, 0xa8, 0xfa, 0x8d, 0x17, 0xfe, 0x77, 0x7b, 0x94, 0x92, 0x7c, + 0x37, 0xfe, 0x77, 0xca, 0x57, 0x6b, 0xb8, 0xe4, 0x57, 0xeb, 0xce, 0x20, 0xa2, 0x47, 0x8d, 0x39, + 0xf2, 0x00, 0x90, 0xe9, 0x46, 0x0e, 0x5b, 0x92, 0xef, 0x87, 0x31, 0xec, 0xe3, 0x5a, 0xed, 0x31, + 0x7f, 0x3f, 0x94, 0x60, 0x7d, 0x0c, 0x51, 0xd7, 0x89, 0x55, 0xc5, 0x44, 0x4d, 0xed, 0x2e, 0xb1, + 0xc2, 0x23, 0xdf, 0xff, 0xae, 0xf6, 0x03, 0x64, 0xb9, 0x4e, 0xec, 0x3d, 0xcc, 0xc3, 0xcf, 0xee, + 0x78, 0xad, 0xc0, 0x17, 0x97, 0x27, 0x4d, 0x0a, 0x1c, 0x76, 0xc0, 0x41, 0xc3, 0xcb, 0xdc, 0x3a, + 0xb5, 0x5b, 0xbe, 0x4b, 0x65, 0xfc, 0x2f, 0xc5, 0xc0, 0xb2, 0xef, 0x52, 0xf4, 0x01, 0x20, 0xc6, + 0xe3, 0x75, 0x8f, 0x63, 0x8f, 0x46, 0xce, 0x71, 0xfc, 0xb9, 0x41, 0x62, 0x64, 0x36, 0x71, 0x8e, + 0xb5, 0x3f, 0x57, 0x20, 0x3f, 0x30, 0x2f, 0x7a, 0x04, 0x69, 0xe6, 0x13, 0x65, 0x6e, 0x43, 0x32, + 0x72, 0xa4, 0xc3, 0xe2, 0x11, 0xa5, 0xa3, 0xef, 0xba, 0x77, 0xcf, 0x67, 0xe5, 0xa9, 0x2c, 0x77, + 0x44, 0xf9, 0x3f, 0xda, 0x7f, 0x29, 0x90, 0x93, 0x91, 0x82, 0xfe, 0x70, 0x18, 0x60, 0xf3, 0x2b, + 0x32, 0x08, 0xaf, 0x3f, 0x82, 0x9b, 0x1d, 0xaf, 0x6b, 0x3b, 0xee, 0x89, 0xd3, 0x6d, 0x51, 0xbb, + 0xc5, 0xfe, 0xb6, 0xdb, 0xc3, 0x31, 0x83, 0xc8, 0xe0, 0x1b, 0x1d, 0xaf, 0xab, 0x0b, 0x92, 0xf2, + 0x08, 0x05, 0x4b, 0xce, 0x26, 0x2c, 0x49, 0x59, 0x97, 0x39, 0x51, 0x41, 0xf2, 0xf2, 0x53, 0xfd, + 0xa4, 0x40, 0xa6, 0xd1, 0xf6, 0xe7, 0xf8, 0xf1, 0xc8, 0xf8, 0x20, 0x25, 0x35, 0x73, 0x90, 0x92, + 0x3e, 0x67, 0x90, 0x92, 0x99, 0x1c, 0xa4, 0xbc, 0x0f, 0xea, 0xd8, 0xcf, 0x92, 0x58, 0x44, 0x88, + 0xe2, 0xbf, 0x32, 0x0a, 0xb7, 0x9c, 0x63, 0xb4, 0x07, 0xf9, 0x40, 0x76, 0x56, 0x62, 0xd8, 0x51, + 0xd8, 0xb9, 0x3f, 0xf3, 0xec, 0x23, 0x7d, 0x18, 0x19, 0xb2, 0x6a, 0xff, 0xaf, 0xc0, 0x4a, 0x62, + 0x14, 0x76, 0xe6, 0x47, 0x21, 0x76, 0xfc, 0x63, 0xef, 0x84, 0x76, 0xed, 0xae, 0xd3, 0x89, 0xa3, + 0x3a, 0xcf, 0x21, 0x55, 0xa7, 0x43, 0x99, 0xf9, 0x8e, 0x9c, 0x8e, 0xd7, 0x3e, 0x15, 0x78, 0x11, + 0xcb, 0x20, 0x40, 0x9c, 0xc0, 0x80, 0x9c, 0xe3, 0xba, 0x01, 0x0d, 0x43, 0x99, 0xae, 0x67, 0xcf, + 0x67, 0xea, 0x7e, 0x18, 0x39, 0x6d, 0x5d, 0x70, 0x90, 0x98, 0x15, 0xdd, 0x84, 0x7c, 0x44, 0xdb, + 0xb4, 0xf7, 0xc2, 0xef, 0x52, 0x69, 0x9e, 0x21, 0x00, 0xad, 0x43, 0x96, 0x76, 0x1c, 0xaf, 0x2d, + 0xbf, 0xeb, 0x8b, 0x85, 0xf6, 0xa3, 0x02, 0xcb, 0x63, 0xe2, 0x58, 0xcb, 0xc4, 0x2b, 0x6d, 0x70, + 0x1a, 0xb7, 0xa2, 0x72, 0x89, 0xae, 0xc3, 0x62, 0xdb, 0x6f, 0x39, 0x83, 0xe9, 0x4a, 0x9e, 0x0c, + 0xd6, 0xe8, 0x2a, 0x7b, 0xe3, 0x1d, 0x0f, 0xfb, 0x2c, 0xb9, 0x62, 0x47, 0xef, 0x71, 0xf1, 0xe2, + 0xc2, 0xcb, 0x51, 0x9e, 0x00, 0xf1, 0xeb, 0x7e, 0x0f, 0x8a, 0x61, 0x14, 0x50, 0x1a, 0xd9, 0xb1, + 0x05, 0x84, 0xe6, 0xcb, 0x02, 0x2a, 0xb5, 0xda, 0xfa, 0x2b, 0x05, 0x96, 0xc7, 0xc6, 0x52, 0xe8, + 0x6d, 0xb8, 0x1e, 0x8f, 0x4f, 0x1b, 0x96, 0x6e, 0x35, 0x1b, 0x89, 0xcc, 0xb6, 0x0c, 0xf9, 0x72, + 0xad, 0xba, 0x67, 0x92, 0x03, 0x6c, 0xa8, 0x0a, 0x6f, 0xd7, 0x70, 0xd5, 0x60, 0xe4, 0x07, 0x98, + 0x94, 0xf7, 0xf5, 0x2a, 0x7b, 0x69, 0x70, 0xbc, 0xfc, 0xad, 0x18, 0x5a, 0x82, 0x45, 0x31, 0x84, + 0xe5, 0x93, 0x8f, 0x02, 0xe4, 0xaa, 0x35, 0xfe, 0x7b, 0x32, 0x35, 0x83, 0xde, 0x82, 0x55, 0xb9, + 0xb0, 0xeb, 0xb8, 0xaa, 0x57, 0xcc, 0xaf, 0xb1, 0xa1, 0x66, 0xb7, 0x7a, 0x50, 0x1c, 0x1f, 0xf2, + 0xa0, 0x4d, 0xb8, 0x59, 0x26, 0xd8, 0x30, 0xad, 0x91, 0x79, 0xcb, 0xb8, 0x5e, 0x8b, 0x90, 0x39, + 0x34, 0x1b, 0xba, 0xaa, 0xa0, 0x22, 0xc0, 0x81, 0xde, 0xb0, 0x30, 0x61, 0xa4, 0x6a, 0x8a, 0xb5, + 0x8b, 0xfa, 0x01, 0x26, 0x26, 0x7b, 0x5d, 0xe1, 0xa7, 0x75, 0x82, 0x1b, 0x0d, 0x35, 0xcd, 0xb4, + 0x32, 0xcc, 0x46, 0xb9, 0x76, 0x88, 0x89, 0x9a, 0xd9, 0xfa, 0x6b, 0x05, 0x56, 0x27, 0x5a, 0x2a, + 0xf6, 0x1e, 0x4a, 0x8c, 0xaf, 0xa7, 0x6c, 0x7c, 0x0b, 0x36, 0x12, 0x44, 0x0d, 0xb3, 0xfa, 0xb8, + 0x82, 0xed, 0x66, 0x83, 0x25, 0xfc, 0xc9, 0x11, 0xf8, 0x41, 0xb3, 0x62, 0x99, 0x1c, 0x9b, 0x62, + 0xe7, 0x4a, 0x60, 0x9b, 0xd5, 0x8a, 0x79, 0x60, 0x5a, 0xd8, 0xe0, 0x14, 0xe9, 0xad, 0xbf, 0x55, + 0x40, 0x4d, 0x36, 0x43, 0xdc, 0xea, 0x04, 0xc7, 0x9c, 0x53, 0xfd, 0xc4, 0x2b, 0x10, 0x1e, 0x29, + 0x55, 0x87, 0xa6, 0xc1, 0x3d, 0x76, 0x03, 0xae, 0x8d, 0x20, 0xaa, 0xb5, 0x11, 0x64, 0x2a, 0xc1, + 0x45, 0xf0, 0x5e, 0xb3, 0x6a, 0x70, 0xb7, 0x8d, 0x23, 0x84, 0x2f, 0xb0, 0xa1, 0x66, 0xb6, 0x1e, + 0x42, 0x7e, 0x90, 0xe6, 0xd0, 0x55, 0x40, 0x7b, 0xe6, 0x53, 0x6c, 0xd8, 0x44, 0xb7, 0xb0, 0x6d, + 0xe0, 0x3d, 0x9d, 0xbd, 0x49, 0xaf, 0x30, 0x97, 0xd4, 0x31, 0xb1, 0xeb, 0x98, 0xb0, 0x37, 0xa4, + 0xf2, 0x7c, 0x81, 0xff, 0x06, 0xf5, 0xe1, 0x6f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xdc, 0x5d, + 0x0e, 0x8f, 0x2a, 0x00, 0x00, }
diff --git a/waitlist/waitlist.pb.go b/waitlist/waitlist.pb.go new file mode 100644 index 0000000..09df310 --- /dev/null +++ b/waitlist/waitlist.pb.go
@@ -0,0 +1,1202 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: waitlist.proto + +// Waitlist partner API protos +package ext_maps_booking_partner_v3_waitlist + +/* +Waitlist partner API protos +*/ + +import ( + fmt "fmt" + math "math" + + proto "github.com/golang/protobuf/proto" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +// A status for the waitlist that determines if new users can join and what +// the reason is if they can’t join. +type WaitlistStatus int32 + +const ( + WaitlistStatus_WAITLIST_STATUS_UNSPECIFIED WaitlistStatus = 0 + // The waitlist is open and is accepting new users. + WaitlistStatus_OPEN WaitlistStatus = 1 + // There is currently no wait and users should arrive at the merchant + // without joining the waitlist. + WaitlistStatus_CLOSED_NO_WAIT WaitlistStatus = 2 + // The waitlist is not currently accepting new users because it is full + // or closed for other reasons. + WaitlistStatus_CLOSED_OTHER WaitlistStatus = 3 +) + +var WaitlistStatus_name = map[int32]string{ + 0: "WAITLIST_STATUS_UNSPECIFIED", + 1: "OPEN", + 2: "CLOSED_NO_WAIT", + 3: "CLOSED_OTHER", +} + +var WaitlistStatus_value = map[string]int32{ + "WAITLIST_STATUS_UNSPECIFIED": 0, + "OPEN": 1, + "CLOSED_NO_WAIT": 2, + "CLOSED_OTHER": 3, +} + +func (x WaitlistStatus) String() string { + return proto.EnumName(WaitlistStatus_name, int32(x)) +} + +func (WaitlistStatus) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{0} +} + +type WaitlistEntryState int32 + +const ( + WaitlistEntryState_WAITLIST_ENTRY_STATE_UNSPECIFIED WaitlistEntryState = 0 + // The waitlist entry was created and the user is currently waiting in the + // waitlist. + WaitlistEntryState_WAITING WaitlistEntryState = 1 + // The waitlist entry has been canceled. Cancellation for no-shows should use + // the NO_SHOW state. + WaitlistEntryState_CANCELED WaitlistEntryState = 2 + // The merchant is ready to serve the user. + WaitlistEntryState_SERVICE_READY WaitlistEntryState = 3 + // The user has checked in with the host and is waiting to be seated. + WaitlistEntryState_CHECKED_IN WaitlistEntryState = 4 + // The user has arrived and been seated by the merchant. + WaitlistEntryState_SEATED WaitlistEntryState = 5 + // The user did not arrive at the merchant in time and lost their space. + WaitlistEntryState_NO_SHOW WaitlistEntryState = 6 +) + +var WaitlistEntryState_name = map[int32]string{ + 0: "WAITLIST_ENTRY_STATE_UNSPECIFIED", + 1: "WAITING", + 2: "CANCELED", + 3: "SERVICE_READY", + 4: "CHECKED_IN", + 5: "SEATED", + 6: "NO_SHOW", +} + +var WaitlistEntryState_value = map[string]int32{ + "WAITLIST_ENTRY_STATE_UNSPECIFIED": 0, + "WAITING": 1, + "CANCELED": 2, + "SERVICE_READY": 3, + "CHECKED_IN": 4, + "SEATED": 5, + "NO_SHOW": 6, +} + +func (x WaitlistEntryState) String() string { + return proto.EnumName(WaitlistEntryState_name, int32(x)) +} + +func (WaitlistEntryState) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{1} +} + +type WaitlistBusinessLogicFailure_Cause int32 + +const ( + // Default value: Don't use; amounts to an "unknown error" + // Unexpected errors must be returned using standard HTTP error codes. + WaitlistBusinessLogicFailure_CAUSE_UNSPECIFIED WaitlistBusinessLogicFailure_Cause = 0 + // The user has already booked a waitlist entry with the partner. + WaitlistBusinessLogicFailure_EXISTING_WAITLIST_ENTRY WaitlistBusinessLogicFailure_Cause = 1 + // The requested party size is below the merchant’s minimum. + WaitlistBusinessLogicFailure_BELOW_MIN_PARTY_SIZE WaitlistBusinessLogicFailure_Cause = 2 + // The requested party size is above the merchant’s maximum. + WaitlistBusinessLogicFailure_ABOVE_MAX_PARTY_SIZE WaitlistBusinessLogicFailure_Cause = 3 + // The requested merchant is currently closed. + WaitlistBusinessLogicFailure_MERCHANT_CLOSED WaitlistBusinessLogicFailure_Cause = 4 + // There is currently no wait and the user should walk in without joining + // the waitlist. + WaitlistBusinessLogicFailure_NO_WAIT WaitlistBusinessLogicFailure_Cause = 5 + // The waitlist is at capacity and new users are not being accepted at this + // time. + WaitlistBusinessLogicFailure_WAITLIST_FULL WaitlistBusinessLogicFailure_Cause = 6 +) + +var WaitlistBusinessLogicFailure_Cause_name = map[int32]string{ + 0: "CAUSE_UNSPECIFIED", + 1: "EXISTING_WAITLIST_ENTRY", + 2: "BELOW_MIN_PARTY_SIZE", + 3: "ABOVE_MAX_PARTY_SIZE", + 4: "MERCHANT_CLOSED", + 5: "NO_WAIT", + 6: "WAITLIST_FULL", +} + +var WaitlistBusinessLogicFailure_Cause_value = map[string]int32{ + "CAUSE_UNSPECIFIED": 0, + "EXISTING_WAITLIST_ENTRY": 1, + "BELOW_MIN_PARTY_SIZE": 2, + "ABOVE_MAX_PARTY_SIZE": 3, + "MERCHANT_CLOSED": 4, + "NO_WAIT": 5, + "WAITLIST_FULL": 6, +} + +func (x WaitlistBusinessLogicFailure_Cause) String() string { + return proto.EnumName(WaitlistBusinessLogicFailure_Cause_name, int32(x)) +} + +func (WaitlistBusinessLogicFailure_Cause) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{12, 0} +} + +// Batch request for the wait estimates for the specified merchant, service and +// party sizes. +type BatchGetWaitEstimatesRequest struct { + // Required. Partner-provided ID for the merchant. + MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"` + // Required. Partner-provided ID for the service. + ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + // Required. The different party sizes WaitEstimates are requested for. + // WaitEstimates may differ with the number of people in the party. + PartySize []int32 `protobuf:"varint,3,rep,packed,name=party_size,json=partySize,proto3" json:"party_size,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BatchGetWaitEstimatesRequest) Reset() { *m = BatchGetWaitEstimatesRequest{} } +func (m *BatchGetWaitEstimatesRequest) String() string { return proto.CompactTextString(m) } +func (*BatchGetWaitEstimatesRequest) ProtoMessage() {} +func (*BatchGetWaitEstimatesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{0} +} + +func (m *BatchGetWaitEstimatesRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BatchGetWaitEstimatesRequest.Unmarshal(m, b) +} +func (m *BatchGetWaitEstimatesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BatchGetWaitEstimatesRequest.Marshal(b, m, deterministic) +} +func (m *BatchGetWaitEstimatesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_BatchGetWaitEstimatesRequest.Merge(m, src) +} +func (m *BatchGetWaitEstimatesRequest) XXX_Size() int { + return xxx_messageInfo_BatchGetWaitEstimatesRequest.Size(m) +} +func (m *BatchGetWaitEstimatesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_BatchGetWaitEstimatesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_BatchGetWaitEstimatesRequest proto.InternalMessageInfo + +func (m *BatchGetWaitEstimatesRequest) GetMerchantId() string { + if m != nil { + return m.MerchantId + } + return "" +} + +func (m *BatchGetWaitEstimatesRequest) GetServiceId() string { + if m != nil { + return m.ServiceId + } + return "" +} + +func (m *BatchGetWaitEstimatesRequest) GetPartySize() []int32 { + if m != nil { + return m.PartySize + } + return nil +} + +// Response for the BatchGetWaitEstimates RPC with the wait estimates of the +// specified merchant, service and party sizes. +type BatchGetWaitEstimatesResponse struct { + // Required. A status for the waitlist that indicates whether new users can + // join and what the reason is if they can’t join. If the waitlist is not + // open, all other fields in the BatchGetWaitEstimatesResponse are expected to + // be unset. + WaitlistStatus WaitlistStatus `protobuf:"varint,1,opt,name=waitlist_status,json=waitlistStatus,proto3,enum=ext.maps.booking.partner.v3.waitlist.WaitlistStatus" json:"waitlist_status,omitempty"` + // The wait estimates for each party size requested. The response should + // contain exactly one wait estimate for each party size sent in the request. + // If a party size is not available for some reason, prefer ommitting it + // instead of returning an error so that the user will have some options to + // choose from. + WaitEstimate []*WaitEstimate `protobuf:"bytes,2,rep,name=wait_estimate,json=waitEstimate,proto3" json:"wait_estimate,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BatchGetWaitEstimatesResponse) Reset() { *m = BatchGetWaitEstimatesResponse{} } +func (m *BatchGetWaitEstimatesResponse) String() string { return proto.CompactTextString(m) } +func (*BatchGetWaitEstimatesResponse) ProtoMessage() {} +func (*BatchGetWaitEstimatesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{1} +} + +func (m *BatchGetWaitEstimatesResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BatchGetWaitEstimatesResponse.Unmarshal(m, b) +} +func (m *BatchGetWaitEstimatesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BatchGetWaitEstimatesResponse.Marshal(b, m, deterministic) +} +func (m *BatchGetWaitEstimatesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_BatchGetWaitEstimatesResponse.Merge(m, src) +} +func (m *BatchGetWaitEstimatesResponse) XXX_Size() int { + return xxx_messageInfo_BatchGetWaitEstimatesResponse.Size(m) +} +func (m *BatchGetWaitEstimatesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_BatchGetWaitEstimatesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_BatchGetWaitEstimatesResponse proto.InternalMessageInfo + +func (m *BatchGetWaitEstimatesResponse) GetWaitlistStatus() WaitlistStatus { + if m != nil { + return m.WaitlistStatus + } + return WaitlistStatus_WAITLIST_STATUS_UNSPECIFIED +} + +func (m *BatchGetWaitEstimatesResponse) GetWaitEstimate() []*WaitEstimate { + if m != nil { + return m.WaitEstimate + } + return nil +} + +// The range of time for the current estimated seat time for the user. Estimated +// seat time range must change over time when the merchant or partner updates +// their estimates. +type EstimatedSeatTimeRange struct { + // Required. The lower bound for the range. Expressed as the number of seconds + // since the Unix epoch. + StartSeconds int64 `protobuf:"varint,1,opt,name=start_seconds,json=startSeconds,proto3" json:"start_seconds,omitempty"` + // Required. The upper bound for the range. Expressed as the number of seconds + // since the Unix epoch. + EndSeconds int64 `protobuf:"varint,2,opt,name=end_seconds,json=endSeconds,proto3" json:"end_seconds,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *EstimatedSeatTimeRange) Reset() { *m = EstimatedSeatTimeRange{} } +func (m *EstimatedSeatTimeRange) String() string { return proto.CompactTextString(m) } +func (*EstimatedSeatTimeRange) ProtoMessage() {} +func (*EstimatedSeatTimeRange) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{2} +} + +func (m *EstimatedSeatTimeRange) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_EstimatedSeatTimeRange.Unmarshal(m, b) +} +func (m *EstimatedSeatTimeRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_EstimatedSeatTimeRange.Marshal(b, m, deterministic) +} +func (m *EstimatedSeatTimeRange) XXX_Merge(src proto.Message) { + xxx_messageInfo_EstimatedSeatTimeRange.Merge(m, src) +} +func (m *EstimatedSeatTimeRange) XXX_Size() int { + return xxx_messageInfo_EstimatedSeatTimeRange.Size(m) +} +func (m *EstimatedSeatTimeRange) XXX_DiscardUnknown() { + xxx_messageInfo_EstimatedSeatTimeRange.DiscardUnknown(m) +} + +var xxx_messageInfo_EstimatedSeatTimeRange proto.InternalMessageInfo + +func (m *EstimatedSeatTimeRange) GetStartSeconds() int64 { + if m != nil { + return m.StartSeconds + } + return 0 +} + +func (m *EstimatedSeatTimeRange) GetEndSeconds() int64 { + if m != nil { + return m.EndSeconds + } + return 0 +} + +// Contains fields measuring how long (in time or # of people) until the +// user is ready to leave the waitlist and be seated. +type WaitLength struct { + // The count of how many other parties are ahead of the user in the waitlist. + // parties_ahead_count must change over time as parties ahead + // in the waitlist are seated or leave the waitlist. Either + // parties_ahead_count or estimated_seat_time_range must be populated. Both + // should be populated. + PartiesAheadCount int32 `protobuf:"varint,1,opt,name=parties_ahead_count,json=partiesAheadCount,proto3" json:"parties_ahead_count,omitempty"` + // The range of time that the user is estimated to be seated in. Either + // parties_ahead_count or estimated_seat_time_range must be populated. Both + // should be populated. + EstimatedSeatTimeRange *EstimatedSeatTimeRange `protobuf:"bytes,2,opt,name=estimated_seat_time_range,json=estimatedSeatTimeRange,proto3" json:"estimated_seat_time_range,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WaitLength) Reset() { *m = WaitLength{} } +func (m *WaitLength) String() string { return proto.CompactTextString(m) } +func (*WaitLength) ProtoMessage() {} +func (*WaitLength) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{3} +} + +func (m *WaitLength) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WaitLength.Unmarshal(m, b) +} +func (m *WaitLength) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WaitLength.Marshal(b, m, deterministic) +} +func (m *WaitLength) XXX_Merge(src proto.Message) { + xxx_messageInfo_WaitLength.Merge(m, src) +} +func (m *WaitLength) XXX_Size() int { + return xxx_messageInfo_WaitLength.Size(m) +} +func (m *WaitLength) XXX_DiscardUnknown() { + xxx_messageInfo_WaitLength.DiscardUnknown(m) +} + +var xxx_messageInfo_WaitLength proto.InternalMessageInfo + +func (m *WaitLength) GetPartiesAheadCount() int32 { + if m != nil { + return m.PartiesAheadCount + } + return 0 +} + +func (m *WaitLength) GetEstimatedSeatTimeRange() *EstimatedSeatTimeRange { + if m != nil { + return m.EstimatedSeatTimeRange + } + return nil +} + +// The wait estimate for a particular party size, merchant and service. +type WaitEstimate struct { + // Required. The party size this wait estimate applies to. + PartySize int32 `protobuf:"varint,1,opt,name=party_size,json=partySize,proto3" json:"party_size,omitempty"` + // Required. Contains fields measuring how long (in time or # of people) until + // the user is ready to leave the waitlist and be seated. + WaitLength *WaitLength `protobuf:"bytes,2,opt,name=wait_length,json=waitLength,proto3" json:"wait_length,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WaitEstimate) Reset() { *m = WaitEstimate{} } +func (m *WaitEstimate) String() string { return proto.CompactTextString(m) } +func (*WaitEstimate) ProtoMessage() {} +func (*WaitEstimate) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{4} +} + +func (m *WaitEstimate) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WaitEstimate.Unmarshal(m, b) +} +func (m *WaitEstimate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WaitEstimate.Marshal(b, m, deterministic) +} +func (m *WaitEstimate) XXX_Merge(src proto.Message) { + xxx_messageInfo_WaitEstimate.Merge(m, src) +} +func (m *WaitEstimate) XXX_Size() int { + return xxx_messageInfo_WaitEstimate.Size(m) +} +func (m *WaitEstimate) XXX_DiscardUnknown() { + xxx_messageInfo_WaitEstimate.DiscardUnknown(m) +} + +var xxx_messageInfo_WaitEstimate proto.InternalMessageInfo + +func (m *WaitEstimate) GetPartySize() int32 { + if m != nil { + return m.PartySize + } + return 0 +} + +func (m *WaitEstimate) GetWaitLength() *WaitLength { + if m != nil { + return m.WaitLength + } + return nil +} + +// Request for a user to join the waitlist. +// +// Reserve with Google may retry REST HTTP requests if no response is +// received. If the exact same CreateWaitlistEntry is received a second time, +// then the same CreateWaitlistResponse must be returned. A second waitlist +// entry must not be created. +type CreateWaitlistEntryRequest struct { + // Required. Partner-provided ID for the merchant. + MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"` + // Required. Partner-provided ID for the service. + ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + // Required. The party size requested for the waitlist entry. + PartySize int32 `protobuf:"varint,3,opt,name=party_size,json=partySize,proto3" json:"party_size,omitempty"` + // Required. Personal information of the user joining the waitlist. + UserInformation *UserInformation `protobuf:"bytes,4,opt,name=user_information,json=userInformation,proto3" json:"user_information,omitempty"` + // A string from the user which contains any special requests or additional + // information that they would like to notify the merchant about. + // This will be populated when the user submits an additional request to + // Reserve with Google. The partner can disable this functionality at the + // service level by setting supports_additional_request to false in the + // service feed. + AdditionalRequest string `protobuf:"bytes,5,opt,name=additional_request,json=additionalRequest,proto3" json:"additional_request,omitempty"` + // Required. Used to differentiate retries from separate requests. If the + // exact same CreateWaitlistEntry is received a second time, (including + // idempotency_token) then the same CreateWaitlistResponse must be returned. + IdempotencyToken string `protobuf:"bytes,6,opt,name=idempotency_token,json=idempotencyToken,proto3" json:"idempotency_token,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateWaitlistEntryRequest) Reset() { *m = CreateWaitlistEntryRequest{} } +func (m *CreateWaitlistEntryRequest) String() string { return proto.CompactTextString(m) } +func (*CreateWaitlistEntryRequest) ProtoMessage() {} +func (*CreateWaitlistEntryRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{5} +} + +func (m *CreateWaitlistEntryRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateWaitlistEntryRequest.Unmarshal(m, b) +} +func (m *CreateWaitlistEntryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateWaitlistEntryRequest.Marshal(b, m, deterministic) +} +func (m *CreateWaitlistEntryRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateWaitlistEntryRequest.Merge(m, src) +} +func (m *CreateWaitlistEntryRequest) XXX_Size() int { + return xxx_messageInfo_CreateWaitlistEntryRequest.Size(m) +} +func (m *CreateWaitlistEntryRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateWaitlistEntryRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateWaitlistEntryRequest proto.InternalMessageInfo + +func (m *CreateWaitlistEntryRequest) GetMerchantId() string { + if m != nil { + return m.MerchantId + } + return "" +} + +func (m *CreateWaitlistEntryRequest) GetServiceId() string { + if m != nil { + return m.ServiceId + } + return "" +} + +func (m *CreateWaitlistEntryRequest) GetPartySize() int32 { + if m != nil { + return m.PartySize + } + return 0 +} + +func (m *CreateWaitlistEntryRequest) GetUserInformation() *UserInformation { + if m != nil { + return m.UserInformation + } + return nil +} + +func (m *CreateWaitlistEntryRequest) GetAdditionalRequest() string { + if m != nil { + return m.AdditionalRequest + } + return "" +} + +func (m *CreateWaitlistEntryRequest) GetIdempotencyToken() string { + if m != nil { + return m.IdempotencyToken + } + return "" +} + +// Response for the CreateWaitlistEntry RPC with the waitlist entry ID or any +// failing business logic information. +type CreateWaitlistEntryResponse struct { + // Unique partner-provided ID for the newly created entry in the waitlist. + // Required if the waitlist entry was created successfully. Unique for all + // time. + WaitlistEntryId string `protobuf:"bytes,1,opt,name=waitlist_entry_id,json=waitlistEntryId,proto3" json:"waitlist_entry_id,omitempty"` + WaitlistBusinessLogicFailure *WaitlistBusinessLogicFailure `protobuf:"bytes,2,opt,name=waitlist_business_logic_failure,json=waitlistBusinessLogicFailure,proto3" json:"waitlist_business_logic_failure,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateWaitlistEntryResponse) Reset() { *m = CreateWaitlistEntryResponse{} } +func (m *CreateWaitlistEntryResponse) String() string { return proto.CompactTextString(m) } +func (*CreateWaitlistEntryResponse) ProtoMessage() {} +func (*CreateWaitlistEntryResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{6} +} + +func (m *CreateWaitlistEntryResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateWaitlistEntryResponse.Unmarshal(m, b) +} +func (m *CreateWaitlistEntryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateWaitlistEntryResponse.Marshal(b, m, deterministic) +} +func (m *CreateWaitlistEntryResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateWaitlistEntryResponse.Merge(m, src) +} +func (m *CreateWaitlistEntryResponse) XXX_Size() int { + return xxx_messageInfo_CreateWaitlistEntryResponse.Size(m) +} +func (m *CreateWaitlistEntryResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CreateWaitlistEntryResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateWaitlistEntryResponse proto.InternalMessageInfo + +func (m *CreateWaitlistEntryResponse) GetWaitlistEntryId() string { + if m != nil { + return m.WaitlistEntryId + } + return "" +} + +func (m *CreateWaitlistEntryResponse) GetWaitlistBusinessLogicFailure() *WaitlistBusinessLogicFailure { + if m != nil { + return m.WaitlistBusinessLogicFailure + } + return nil +} + +// Get the waitlist entry corresponding to the provided waitlist entry ID. +type GetWaitlistEntryRequest struct { + // Required. The partner-provided waitlist entry ID to request info for. + WaitlistEntryId string `protobuf:"bytes,1,opt,name=waitlist_entry_id,json=waitlistEntryId,proto3" json:"waitlist_entry_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetWaitlistEntryRequest) Reset() { *m = GetWaitlistEntryRequest{} } +func (m *GetWaitlistEntryRequest) String() string { return proto.CompactTextString(m) } +func (*GetWaitlistEntryRequest) ProtoMessage() {} +func (*GetWaitlistEntryRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{7} +} + +func (m *GetWaitlistEntryRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetWaitlistEntryRequest.Unmarshal(m, b) +} +func (m *GetWaitlistEntryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetWaitlistEntryRequest.Marshal(b, m, deterministic) +} +func (m *GetWaitlistEntryRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetWaitlistEntryRequest.Merge(m, src) +} +func (m *GetWaitlistEntryRequest) XXX_Size() int { + return xxx_messageInfo_GetWaitlistEntryRequest.Size(m) +} +func (m *GetWaitlistEntryRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetWaitlistEntryRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetWaitlistEntryRequest proto.InternalMessageInfo + +func (m *GetWaitlistEntryRequest) GetWaitlistEntryId() string { + if m != nil { + return m.WaitlistEntryId + } + return "" +} + +// Response with the waitlist entry corresponding to the provided +// waitlist entry ID. +type GetWaitlistEntryResponse struct { + // Required. The partner-provided information about a user’s waitlist entry. + WaitlistEntry *WaitlistEntry `protobuf:"bytes,1,opt,name=waitlist_entry,json=waitlistEntry,proto3" json:"waitlist_entry,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetWaitlistEntryResponse) Reset() { *m = GetWaitlistEntryResponse{} } +func (m *GetWaitlistEntryResponse) String() string { return proto.CompactTextString(m) } +func (*GetWaitlistEntryResponse) ProtoMessage() {} +func (*GetWaitlistEntryResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{8} +} + +func (m *GetWaitlistEntryResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetWaitlistEntryResponse.Unmarshal(m, b) +} +func (m *GetWaitlistEntryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetWaitlistEntryResponse.Marshal(b, m, deterministic) +} +func (m *GetWaitlistEntryResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetWaitlistEntryResponse.Merge(m, src) +} +func (m *GetWaitlistEntryResponse) XXX_Size() int { + return xxx_messageInfo_GetWaitlistEntryResponse.Size(m) +} +func (m *GetWaitlistEntryResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetWaitlistEntryResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetWaitlistEntryResponse proto.InternalMessageInfo + +func (m *GetWaitlistEntryResponse) GetWaitlistEntry() *WaitlistEntry { + if m != nil { + return m.WaitlistEntry + } + return nil +} + +// Cancel the user's entry in the waitlist. +type DeleteWaitlistEntryRequest struct { + // Required. The partner-provided ID for the waitlist entry to be deleted. + WaitlistEntryId string `protobuf:"bytes,1,opt,name=waitlist_entry_id,json=waitlistEntryId,proto3" json:"waitlist_entry_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteWaitlistEntryRequest) Reset() { *m = DeleteWaitlistEntryRequest{} } +func (m *DeleteWaitlistEntryRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteWaitlistEntryRequest) ProtoMessage() {} +func (*DeleteWaitlistEntryRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{9} +} + +func (m *DeleteWaitlistEntryRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteWaitlistEntryRequest.Unmarshal(m, b) +} +func (m *DeleteWaitlistEntryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteWaitlistEntryRequest.Marshal(b, m, deterministic) +} +func (m *DeleteWaitlistEntryRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteWaitlistEntryRequest.Merge(m, src) +} +func (m *DeleteWaitlistEntryRequest) XXX_Size() int { + return xxx_messageInfo_DeleteWaitlistEntryRequest.Size(m) +} +func (m *DeleteWaitlistEntryRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteWaitlistEntryRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteWaitlistEntryRequest proto.InternalMessageInfo + +func (m *DeleteWaitlistEntryRequest) GetWaitlistEntryId() string { + if m != nil { + return m.WaitlistEntryId + } + return "" +} + +// The times at which the waitlist entry changed state. +type WaitlistEntryStateTimes struct { + // Required. The time at which the waitlist entry was created. + // In seconds since Unix epoch. + CreatedTimeSeconds int64 `protobuf:"varint,1,opt,name=created_time_seconds,json=createdTimeSeconds,proto3" json:"created_time_seconds,omitempty"` + // The time that the waitlist entry was cancelled. Must be populated + // when the waitlist entry has been canceled but not before. + // In seconds since Unix epoch. + CanceledTimeSeconds int64 `protobuf:"varint,2,opt,name=canceled_time_seconds,json=canceledTimeSeconds,proto3" json:"canceled_time_seconds,omitempty"` + // The time the merchant was ready to serve the user. + // service_readied_time_seconds must be populated after the merchant is + // ready to serve the user but not before. + // In seconds since Unix epoch. + ServiceReadiedTimeSeconds int64 `protobuf:"varint,3,opt,name=service_readied_time_seconds,json=serviceReadiedTimeSeconds,proto3" json:"service_readied_time_seconds,omitempty"` + // The actual time the user checked in with the host. checked_in_time must be + // populated after the user has checked in with the merchant but not before. + // In seconds since Unix epoch. + CheckedInTimeSeconds int64 `protobuf:"varint,4,opt,name=checked_in_time_seconds,json=checkedInTimeSeconds,proto3" json:"checked_in_time_seconds,omitempty"` + // The seated time for the user. seated_time_seconds must be populated + // when the user has been seated but not before. + // In seconds since Unix epoch. + SeatedTimeSeconds int64 `protobuf:"varint,5,opt,name=seated_time_seconds,json=seatedTimeSeconds,proto3" json:"seated_time_seconds,omitempty"` + // The time that the user was marked as a no-show. marked_no_show_time_seconds + // must be populated when the user has been marked a no-show but not before. + // In seconds since Unix epoch. + MarkedNoShowTimeSeconds int64 `protobuf:"varint,6,opt,name=marked_no_show_time_seconds,json=markedNoShowTimeSeconds,proto3" json:"marked_no_show_time_seconds,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WaitlistEntryStateTimes) Reset() { *m = WaitlistEntryStateTimes{} } +func (m *WaitlistEntryStateTimes) String() string { return proto.CompactTextString(m) } +func (*WaitlistEntryStateTimes) ProtoMessage() {} +func (*WaitlistEntryStateTimes) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{10} +} + +func (m *WaitlistEntryStateTimes) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WaitlistEntryStateTimes.Unmarshal(m, b) +} +func (m *WaitlistEntryStateTimes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WaitlistEntryStateTimes.Marshal(b, m, deterministic) +} +func (m *WaitlistEntryStateTimes) XXX_Merge(src proto.Message) { + xxx_messageInfo_WaitlistEntryStateTimes.Merge(m, src) +} +func (m *WaitlistEntryStateTimes) XXX_Size() int { + return xxx_messageInfo_WaitlistEntryStateTimes.Size(m) +} +func (m *WaitlistEntryStateTimes) XXX_DiscardUnknown() { + xxx_messageInfo_WaitlistEntryStateTimes.DiscardUnknown(m) +} + +var xxx_messageInfo_WaitlistEntryStateTimes proto.InternalMessageInfo + +func (m *WaitlistEntryStateTimes) GetCreatedTimeSeconds() int64 { + if m != nil { + return m.CreatedTimeSeconds + } + return 0 +} + +func (m *WaitlistEntryStateTimes) GetCanceledTimeSeconds() int64 { + if m != nil { + return m.CanceledTimeSeconds + } + return 0 +} + +func (m *WaitlistEntryStateTimes) GetServiceReadiedTimeSeconds() int64 { + if m != nil { + return m.ServiceReadiedTimeSeconds + } + return 0 +} + +func (m *WaitlistEntryStateTimes) GetCheckedInTimeSeconds() int64 { + if m != nil { + return m.CheckedInTimeSeconds + } + return 0 +} + +func (m *WaitlistEntryStateTimes) GetSeatedTimeSeconds() int64 { + if m != nil { + return m.SeatedTimeSeconds + } + return 0 +} + +func (m *WaitlistEntryStateTimes) GetMarkedNoShowTimeSeconds() int64 { + if m != nil { + return m.MarkedNoShowTimeSeconds + } + return 0 +} + +// An entry in the waitlist. +type WaitlistEntry struct { + // Required. + WaitlistEntryState WaitlistEntryState `protobuf:"varint,1,opt,name=waitlist_entry_state,json=waitlistEntryState,proto3,enum=ext.maps.booking.partner.v3.waitlist.WaitlistEntryState" json:"waitlist_entry_state,omitempty"` + // Required. The times at which the waitlist entry changed state. + WaitlistEntryStateTimes *WaitlistEntryStateTimes `protobuf:"bytes,2,opt,name=waitlist_entry_state_times,json=waitlistEntryStateTimes,proto3" json:"waitlist_entry_state_times,omitempty"` + // Required. Contains fields measuring how long (in time or # of people) until + // the user is ready to leave the waitlist and be seated. + WaitEstimate *WaitEstimate `protobuf:"bytes,3,opt,name=wait_estimate,json=waitEstimate,proto3" json:"wait_estimate,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WaitlistEntry) Reset() { *m = WaitlistEntry{} } +func (m *WaitlistEntry) String() string { return proto.CompactTextString(m) } +func (*WaitlistEntry) ProtoMessage() {} +func (*WaitlistEntry) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{11} +} + +func (m *WaitlistEntry) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WaitlistEntry.Unmarshal(m, b) +} +func (m *WaitlistEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WaitlistEntry.Marshal(b, m, deterministic) +} +func (m *WaitlistEntry) XXX_Merge(src proto.Message) { + xxx_messageInfo_WaitlistEntry.Merge(m, src) +} +func (m *WaitlistEntry) XXX_Size() int { + return xxx_messageInfo_WaitlistEntry.Size(m) +} +func (m *WaitlistEntry) XXX_DiscardUnknown() { + xxx_messageInfo_WaitlistEntry.DiscardUnknown(m) +} + +var xxx_messageInfo_WaitlistEntry proto.InternalMessageInfo + +func (m *WaitlistEntry) GetWaitlistEntryState() WaitlistEntryState { + if m != nil { + return m.WaitlistEntryState + } + return WaitlistEntryState_WAITLIST_ENTRY_STATE_UNSPECIFIED +} + +func (m *WaitlistEntry) GetWaitlistEntryStateTimes() *WaitlistEntryStateTimes { + if m != nil { + return m.WaitlistEntryStateTimes + } + return nil +} + +func (m *WaitlistEntry) GetWaitEstimate() *WaitEstimate { + if m != nil { + return m.WaitEstimate + } + return nil +} + +// Status data that conveys why creating a waitlist entry fails. +// If there is a business logic error that is not captured here, please +// reach out to the Reserve with Google team to add it to this list. Other +// errors should be returned using standard HTTP error codes. +type WaitlistBusinessLogicFailure struct { + // Required. The reason why the booking failed. + Cause WaitlistBusinessLogicFailure_Cause `protobuf:"varint,1,opt,name=cause,proto3,enum=ext.maps.booking.partner.v3.waitlist.WaitlistBusinessLogicFailure_Cause" json:"cause,omitempty"` + // This optional field is used for the partner to include additional + // information for debugging purposes only. + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WaitlistBusinessLogicFailure) Reset() { *m = WaitlistBusinessLogicFailure{} } +func (m *WaitlistBusinessLogicFailure) String() string { return proto.CompactTextString(m) } +func (*WaitlistBusinessLogicFailure) ProtoMessage() {} +func (*WaitlistBusinessLogicFailure) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{12} +} + +func (m *WaitlistBusinessLogicFailure) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WaitlistBusinessLogicFailure.Unmarshal(m, b) +} +func (m *WaitlistBusinessLogicFailure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WaitlistBusinessLogicFailure.Marshal(b, m, deterministic) +} +func (m *WaitlistBusinessLogicFailure) XXX_Merge(src proto.Message) { + xxx_messageInfo_WaitlistBusinessLogicFailure.Merge(m, src) +} +func (m *WaitlistBusinessLogicFailure) XXX_Size() int { + return xxx_messageInfo_WaitlistBusinessLogicFailure.Size(m) +} +func (m *WaitlistBusinessLogicFailure) XXX_DiscardUnknown() { + xxx_messageInfo_WaitlistBusinessLogicFailure.DiscardUnknown(m) +} + +var xxx_messageInfo_WaitlistBusinessLogicFailure proto.InternalMessageInfo + +func (m *WaitlistBusinessLogicFailure) GetCause() WaitlistBusinessLogicFailure_Cause { + if m != nil { + return m.Cause + } + return WaitlistBusinessLogicFailure_CAUSE_UNSPECIFIED +} + +func (m *WaitlistBusinessLogicFailure) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +// Personal information about the person making a booking +type UserInformation struct { + // Unique ID of the user to the partner, chosen by Reserve with Google. + // (required) + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + // Given name of the user (maximum 40 characters) (required) + GivenName string `protobuf:"bytes,2,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` + // Family name of the user (maximum 40 characters) (required) + FamilyName string `protobuf:"bytes,3,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"` + // Address of the user (optional) + Address *PostalAddress `protobuf:"bytes,4,opt,name=address,proto3" json:"address,omitempty"` + // Phone number of the user (required) + Telephone string `protobuf:"bytes,5,opt,name=telephone,proto3" json:"telephone,omitempty"` + // Email address of the user (required) + Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UserInformation) Reset() { *m = UserInformation{} } +func (m *UserInformation) String() string { return proto.CompactTextString(m) } +func (*UserInformation) ProtoMessage() {} +func (*UserInformation) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{13} +} + +func (m *UserInformation) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserInformation.Unmarshal(m, b) +} +func (m *UserInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserInformation.Marshal(b, m, deterministic) +} +func (m *UserInformation) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserInformation.Merge(m, src) +} +func (m *UserInformation) XXX_Size() int { + return xxx_messageInfo_UserInformation.Size(m) +} +func (m *UserInformation) XXX_DiscardUnknown() { + xxx_messageInfo_UserInformation.DiscardUnknown(m) +} + +var xxx_messageInfo_UserInformation proto.InternalMessageInfo + +func (m *UserInformation) GetUserId() string { + if m != nil { + return m.UserId + } + return "" +} + +func (m *UserInformation) GetGivenName() string { + if m != nil { + return m.GivenName + } + return "" +} + +func (m *UserInformation) GetFamilyName() string { + if m != nil { + return m.FamilyName + } + return "" +} + +func (m *UserInformation) GetAddress() *PostalAddress { + if m != nil { + return m.Address + } + return nil +} + +func (m *UserInformation) GetTelephone() string { + if m != nil { + return m.Telephone + } + return "" +} + +func (m *UserInformation) GetEmail() string { + if m != nil { + return m.Email + } + return "" +} + +// The postal address for a merchant. +type PostalAddress struct { + // The country, e.g. "USA". (required) + Country string `protobuf:"bytes,1,opt,name=country,proto3" json:"country,omitempty"` + // The locality/city, e.g. "Mountain View". (required) + Locality string `protobuf:"bytes,2,opt,name=locality,proto3" json:"locality,omitempty"` + // The region/state/province, e.g. "CA". (required) + Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` + // The postal code, e.g. "94043". (required) + PostalCode string `protobuf:"bytes,4,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` + // The street address, e.g. "1600 Amphitheatre Pkwy". (required) + StreetAddress string `protobuf:"bytes,5,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PostalAddress) Reset() { *m = PostalAddress{} } +func (m *PostalAddress) String() string { return proto.CompactTextString(m) } +func (*PostalAddress) ProtoMessage() {} +func (*PostalAddress) Descriptor() ([]byte, []int) { + return fileDescriptor_c4272259c545fcea, []int{14} +} + +func (m *PostalAddress) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PostalAddress.Unmarshal(m, b) +} +func (m *PostalAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PostalAddress.Marshal(b, m, deterministic) +} +func (m *PostalAddress) XXX_Merge(src proto.Message) { + xxx_messageInfo_PostalAddress.Merge(m, src) +} +func (m *PostalAddress) XXX_Size() int { + return xxx_messageInfo_PostalAddress.Size(m) +} +func (m *PostalAddress) XXX_DiscardUnknown() { + xxx_messageInfo_PostalAddress.DiscardUnknown(m) +} + +var xxx_messageInfo_PostalAddress proto.InternalMessageInfo + +func (m *PostalAddress) GetCountry() string { + if m != nil { + return m.Country + } + return "" +} + +func (m *PostalAddress) GetLocality() string { + if m != nil { + return m.Locality + } + return "" +} + +func (m *PostalAddress) GetRegion() string { + if m != nil { + return m.Region + } + return "" +} + +func (m *PostalAddress) GetPostalCode() string { + if m != nil { + return m.PostalCode + } + return "" +} + +func (m *PostalAddress) GetStreetAddress() string { + if m != nil { + return m.StreetAddress + } + return "" +} + +func init() { + proto.RegisterType((*BatchGetWaitEstimatesRequest)(nil), "ext.maps.booking.partner.v3.waitlist.BatchGetWaitEstimatesRequest") + proto.RegisterType((*BatchGetWaitEstimatesResponse)(nil), "ext.maps.booking.partner.v3.waitlist.BatchGetWaitEstimatesResponse") + proto.RegisterType((*EstimatedSeatTimeRange)(nil), "ext.maps.booking.partner.v3.waitlist.EstimatedSeatTimeRange") + proto.RegisterType((*WaitLength)(nil), "ext.maps.booking.partner.v3.waitlist.WaitLength") + proto.RegisterType((*WaitEstimate)(nil), "ext.maps.booking.partner.v3.waitlist.WaitEstimate") + proto.RegisterType((*CreateWaitlistEntryRequest)(nil), "ext.maps.booking.partner.v3.waitlist.CreateWaitlistEntryRequest") + proto.RegisterType((*CreateWaitlistEntryResponse)(nil), "ext.maps.booking.partner.v3.waitlist.CreateWaitlistEntryResponse") + proto.RegisterType((*GetWaitlistEntryRequest)(nil), "ext.maps.booking.partner.v3.waitlist.GetWaitlistEntryRequest") + proto.RegisterType((*GetWaitlistEntryResponse)(nil), "ext.maps.booking.partner.v3.waitlist.GetWaitlistEntryResponse") + proto.RegisterType((*DeleteWaitlistEntryRequest)(nil), "ext.maps.booking.partner.v3.waitlist.DeleteWaitlistEntryRequest") + proto.RegisterType((*WaitlistEntryStateTimes)(nil), "ext.maps.booking.partner.v3.waitlist.WaitlistEntryStateTimes") + proto.RegisterType((*WaitlistEntry)(nil), "ext.maps.booking.partner.v3.waitlist.WaitlistEntry") + proto.RegisterType((*WaitlistBusinessLogicFailure)(nil), "ext.maps.booking.partner.v3.waitlist.WaitlistBusinessLogicFailure") + proto.RegisterType((*UserInformation)(nil), "ext.maps.booking.partner.v3.waitlist.UserInformation") + proto.RegisterType((*PostalAddress)(nil), "ext.maps.booking.partner.v3.waitlist.PostalAddress") + proto.RegisterEnum("ext.maps.booking.partner.v3.waitlist.WaitlistStatus", WaitlistStatus_name, WaitlistStatus_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.waitlist.WaitlistEntryState", WaitlistEntryState_name, WaitlistEntryState_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.waitlist.WaitlistBusinessLogicFailure_Cause", WaitlistBusinessLogicFailure_Cause_name, WaitlistBusinessLogicFailure_Cause_value) +} + +func init() { proto.RegisterFile("waitlist.proto", fileDescriptor_c4272259c545fcea) } + +var fileDescriptor_c4272259c545fcea = []byte{ + // 1295 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcd, 0x6e, 0xdb, 0x46, + 0x10, 0x2e, 0x25, 0x4b, 0x8e, 0x47, 0xfe, 0xa1, 0xd6, 0x4e, 0xa4, 0xd8, 0x0e, 0x62, 0xb0, 0x29, + 0x10, 0xa4, 0xa8, 0x10, 0x38, 0x0d, 0xd0, 0x43, 0x8a, 0x42, 0x96, 0x98, 0x98, 0xa8, 0x2c, 0xb9, + 0xa4, 0x1c, 0x27, 0x01, 0x9a, 0xed, 0x86, 0x9c, 0x58, 0x6c, 0x28, 0x52, 0xe5, 0xae, 0xac, 0x3a, + 0x40, 0x81, 0x5e, 0x7b, 0xec, 0x3b, 0xb4, 0x8f, 0xd0, 0x43, 0x9f, 0xa0, 0xd7, 0x5e, 0x8a, 0x3e, + 0x41, 0x8f, 0x7d, 0x87, 0x82, 0xbb, 0xa4, 0x2c, 0xc9, 0x4e, 0x60, 0x27, 0xe8, 0x8d, 0x3b, 0x3f, + 0xdf, 0xcc, 0x37, 0x3b, 0x3b, 0x23, 0xc1, 0xf2, 0x88, 0xf9, 0x22, 0xf0, 0xb9, 0xa8, 0x0d, 0xe2, + 0x48, 0x44, 0xe4, 0x16, 0x7e, 0x2f, 0x6a, 0x7d, 0x36, 0xe0, 0xb5, 0x17, 0x51, 0xf4, 0xca, 0x0f, + 0x8f, 0x6a, 0x03, 0x16, 0x8b, 0x10, 0xe3, 0xda, 0xf1, 0xbd, 0x5a, 0x66, 0x6b, 0xfc, 0x00, 0x9b, + 0x3b, 0x4c, 0xb8, 0xbd, 0x47, 0x28, 0x0e, 0x99, 0x2f, 0x4c, 0x2e, 0xfc, 0x3e, 0x13, 0xc8, 0x6d, + 0xfc, 0x6e, 0x88, 0x5c, 0x90, 0x9b, 0x50, 0xea, 0x63, 0xec, 0xf6, 0x58, 0x28, 0xa8, 0xef, 0x55, + 0xb5, 0x2d, 0xed, 0xf6, 0x82, 0x0d, 0x99, 0xc8, 0xf2, 0xc8, 0x0d, 0x00, 0x8e, 0xf1, 0xb1, 0xef, + 0x62, 0xa2, 0xcf, 0x49, 0xfd, 0x42, 0x2a, 0x51, 0xea, 0x24, 0xec, 0x09, 0xe5, 0xfe, 0x6b, 0xac, + 0xe6, 0xb7, 0xf2, 0xb7, 0x0b, 0xf6, 0x82, 0x94, 0x38, 0xfe, 0x6b, 0x34, 0xfe, 0xd6, 0xe0, 0xc6, + 0x1b, 0xe2, 0xf3, 0x41, 0x14, 0x72, 0x24, 0x5f, 0xc3, 0x4a, 0x96, 0x2c, 0xe5, 0x82, 0x89, 0x21, + 0x97, 0x49, 0x2c, 0x6f, 0x7f, 0x5a, 0xbb, 0x08, 0xc1, 0xda, 0x61, 0xfa, 0xe1, 0x48, 0x5f, 0x7b, + 0x5c, 0x25, 0x75, 0x26, 0x87, 0xb0, 0x94, 0x48, 0x28, 0xa6, 0x81, 0xab, 0xb9, 0xad, 0xfc, 0xed, + 0xd2, 0xf6, 0xf6, 0xc5, 0xc1, 0xb3, 0x94, 0xed, 0xc5, 0xd1, 0xc4, 0xc9, 0x78, 0x0e, 0xd7, 0xb2, + 0x6f, 0xcf, 0x41, 0x26, 0xba, 0x7e, 0x1f, 0x6d, 0x16, 0x1e, 0x21, 0xf9, 0x10, 0x96, 0xb8, 0x60, + 0xb1, 0xa0, 0x1c, 0xdd, 0x28, 0xf4, 0x14, 0x9f, 0xbc, 0xbd, 0x28, 0x85, 0x8e, 0x92, 0x25, 0x75, + 0xc7, 0xd0, 0x1b, 0x9b, 0xe4, 0xa4, 0x09, 0x60, 0xe8, 0xa5, 0x06, 0xc6, 0x6f, 0x1a, 0x40, 0x12, + 0xbe, 0x85, 0xe1, 0x91, 0xe8, 0x91, 0x1a, 0xac, 0x26, 0x09, 0xfa, 0xc8, 0x29, 0xeb, 0x21, 0xf3, + 0xa8, 0x1b, 0x0d, 0x43, 0x21, 0xa1, 0x0b, 0x76, 0x39, 0x55, 0xd5, 0x13, 0x4d, 0x23, 0x51, 0x90, + 0x11, 0x5c, 0xcf, 0x28, 0x27, 0x51, 0x98, 0xa0, 0xc2, 0xef, 0x23, 0x8d, 0x93, 0x0c, 0x65, 0xb4, + 0xd2, 0xf6, 0x83, 0x8b, 0xd5, 0xe0, 0x7c, 0x96, 0xf6, 0x35, 0x3c, 0x57, 0x6e, 0xfc, 0xa8, 0xc1, + 0xe2, 0x64, 0xd9, 0x66, 0x3a, 0x44, 0x25, 0x7c, 0xda, 0x21, 0xe4, 0x2b, 0x28, 0xc9, 0x0b, 0x0a, + 0x24, 0xcf, 0x34, 0xb5, 0xbb, 0x17, 0xbf, 0x1e, 0x55, 0x1f, 0x1b, 0x46, 0xe3, 0x6f, 0xe3, 0xf7, + 0x1c, 0xac, 0x37, 0x62, 0x64, 0x02, 0xb3, 0xe6, 0x30, 0x43, 0x11, 0x9f, 0xfc, 0x5f, 0x2d, 0x3f, + 0x43, 0xe8, 0x1b, 0xd0, 0x87, 0x1c, 0x63, 0xea, 0x87, 0x2f, 0xa3, 0xb8, 0xcf, 0x84, 0x1f, 0x85, + 0xd5, 0x39, 0xc9, 0xea, 0xfe, 0xc5, 0x58, 0x1d, 0x70, 0x8c, 0xad, 0x53, 0x67, 0x7b, 0x65, 0x38, + 0x2d, 0x20, 0x9f, 0x00, 0x61, 0x9e, 0xe7, 0x27, 0xdf, 0x2c, 0xa0, 0xb1, 0xa2, 0x55, 0x2d, 0xc8, + 0x3c, 0xcb, 0xa7, 0x9a, 0x8c, 0xef, 0xc7, 0x50, 0xf6, 0x3d, 0xec, 0x0f, 0x22, 0x81, 0xa1, 0x7b, + 0x42, 0x45, 0xf4, 0x0a, 0xc3, 0x6a, 0x51, 0x5a, 0xeb, 0x13, 0x8a, 0x6e, 0x22, 0x37, 0xfe, 0xd2, + 0x60, 0xe3, 0xdc, 0xda, 0xa5, 0xcf, 0xf5, 0x0e, 0x94, 0xc7, 0xcf, 0x15, 0x13, 0xcd, 0x69, 0x09, + 0xc7, 0xef, 0x58, 0x7a, 0x58, 0x1e, 0xf9, 0x49, 0x83, 0x9b, 0x63, 0xe3, 0x17, 0x43, 0xee, 0x87, + 0xc8, 0x39, 0x0d, 0xa2, 0x23, 0xdf, 0xa5, 0x2f, 0x99, 0x1f, 0x0c, 0xe3, 0xac, 0x15, 0x77, 0x2e, + 0xf7, 0xd6, 0x77, 0x52, 0xac, 0x56, 0x02, 0xf5, 0x50, 0x21, 0xd9, 0x9b, 0xa3, 0xb7, 0x68, 0x0d, + 0x13, 0x2a, 0xe9, 0x08, 0x3a, 0xd3, 0x0f, 0x97, 0xa0, 0x64, 0x1c, 0x43, 0xf5, 0x2c, 0x4c, 0x5a, + 0x9a, 0x67, 0xa7, 0x23, 0x5a, 0xe1, 0x48, 0x90, 0xd2, 0xf6, 0xbd, 0xcb, 0x91, 0x53, 0xa0, 0x4b, + 0x53, 0x91, 0x8d, 0x5d, 0x58, 0x6f, 0x62, 0x80, 0x6f, 0xe8, 0xe8, 0xcb, 0x30, 0xf8, 0x27, 0x07, + 0x95, 0x29, 0x90, 0x64, 0x50, 0x62, 0xf2, 0x7e, 0x39, 0xb9, 0x0b, 0x6b, 0xae, 0xbc, 0x7b, 0x4f, + 0x4d, 0x8b, 0xe9, 0x01, 0x46, 0x52, 0x5d, 0x62, 0x9b, 0x8d, 0xb1, 0x6d, 0xb8, 0xea, 0xb2, 0xd0, + 0xc5, 0x60, 0xd6, 0x45, 0x0d, 0xb4, 0xd5, 0x4c, 0x39, 0xe9, 0xf3, 0x05, 0x6c, 0x66, 0xcf, 0x2b, + 0x46, 0xe6, 0xf9, 0xb3, 0xae, 0x79, 0xe9, 0x7a, 0x3d, 0xb5, 0xb1, 0x95, 0xc9, 0x24, 0xc0, 0x7d, + 0xa8, 0xb8, 0x3d, 0x74, 0x5f, 0xa1, 0x47, 0xfd, 0x70, 0xda, 0x77, 0x4e, 0xfa, 0xae, 0xa5, 0x6a, + 0x2b, 0x9c, 0x74, 0xab, 0xc1, 0x2a, 0x3f, 0x87, 0x5c, 0x41, 0xba, 0x94, 0xf9, 0x19, 0x6e, 0x0f, + 0x60, 0xa3, 0xcf, 0xe2, 0x24, 0x4a, 0x18, 0x51, 0xde, 0x8b, 0x46, 0xd3, 0x7e, 0x45, 0xe9, 0x57, + 0x51, 0x26, 0xed, 0xc8, 0xe9, 0x45, 0xa3, 0x09, 0x6f, 0xe3, 0xcf, 0x1c, 0x2c, 0x4d, 0xd5, 0x99, + 0x7c, 0x0b, 0x6b, 0x33, 0xb7, 0x94, 0xec, 0x3b, 0x4c, 0xd7, 0xdd, 0x67, 0xef, 0xd0, 0x25, 0xf2, + 0xea, 0x6c, 0x32, 0x3a, 0x23, 0x23, 0xaf, 0x61, 0xfd, 0xbc, 0x58, 0x92, 0x01, 0x4f, 0x1f, 0xdd, + 0xe7, 0xef, 0x1a, 0x51, 0x36, 0x8b, 0x5d, 0x19, 0xbd, 0xa1, 0x8b, 0xce, 0xac, 0xdc, 0xbc, 0x0c, + 0xf7, 0xfe, 0x2b, 0xf7, 0x8f, 0x1c, 0x6c, 0xbe, 0x6d, 0x04, 0x90, 0xe7, 0x50, 0x70, 0xd9, 0x90, + 0x67, 0x25, 0xdd, 0x7d, 0xff, 0xa9, 0x52, 0x6b, 0x24, 0x78, 0xb6, 0x82, 0x25, 0x5b, 0x50, 0xf2, + 0x90, 0xbb, 0xb1, 0x3f, 0x90, 0x53, 0x5d, 0x6d, 0x86, 0x49, 0x91, 0xf1, 0x8b, 0x06, 0x05, 0xe9, + 0x42, 0xae, 0x42, 0xb9, 0x51, 0x3f, 0x70, 0x4c, 0x7a, 0xd0, 0x76, 0xf6, 0xcd, 0x86, 0xf5, 0xd0, + 0x32, 0x9b, 0xfa, 0x07, 0x64, 0x03, 0x2a, 0xe6, 0x13, 0xcb, 0xe9, 0x5a, 0xed, 0x47, 0xf4, 0xb0, + 0x6e, 0x75, 0x5b, 0x96, 0xd3, 0xa5, 0x66, 0xbb, 0x6b, 0x3f, 0xd5, 0x35, 0x52, 0x85, 0xb5, 0x1d, + 0xb3, 0xd5, 0x39, 0xa4, 0x7b, 0x56, 0x9b, 0xee, 0xd7, 0xed, 0xee, 0x53, 0xea, 0x58, 0xcf, 0x4c, + 0x3d, 0x97, 0x68, 0xea, 0x3b, 0x9d, 0xc7, 0x26, 0xdd, 0xab, 0x3f, 0x99, 0xd4, 0xe4, 0xc9, 0x2a, + 0xac, 0xec, 0x99, 0x76, 0x63, 0xb7, 0xde, 0xee, 0xd2, 0x46, 0xab, 0xe3, 0x98, 0x4d, 0x7d, 0x8e, + 0x94, 0x60, 0xbe, 0xdd, 0x91, 0xf8, 0x7a, 0x81, 0x94, 0x61, 0x69, 0x1c, 0xe9, 0xe1, 0x41, 0xab, + 0xa5, 0x17, 0x8d, 0x7f, 0x35, 0x58, 0x99, 0x59, 0x33, 0xa4, 0x02, 0xf3, 0x6a, 0x6f, 0x65, 0xa3, + 0xa3, 0x28, 0xf7, 0x8e, 0xdc, 0x77, 0x47, 0xfe, 0x31, 0x86, 0x34, 0x64, 0x7d, 0xcc, 0xd6, 0xa1, + 0x94, 0xb4, 0x59, 0x1f, 0x93, 0x75, 0xfa, 0x92, 0xf5, 0xfd, 0xe0, 0x44, 0xe9, 0xf3, 0x6a, 0x9d, + 0x2a, 0x91, 0x34, 0xd8, 0x83, 0x79, 0xe6, 0x79, 0x31, 0x72, 0x9e, 0xee, 0xc1, 0x0b, 0x0e, 0xc4, + 0xfd, 0x88, 0x0b, 0x16, 0xd4, 0x95, 0xab, 0x9d, 0x61, 0x90, 0x4d, 0x58, 0x10, 0x18, 0xe0, 0xa0, + 0x17, 0x85, 0x98, 0x2e, 0xbd, 0x53, 0x01, 0x59, 0x83, 0x02, 0xf6, 0x99, 0x1f, 0xa4, 0x0b, 0x4e, + 0x1d, 0x8c, 0x5f, 0x35, 0x58, 0x9a, 0x82, 0x23, 0x55, 0x98, 0x97, 0xbf, 0xa0, 0xd2, 0x29, 0xbd, + 0x60, 0x67, 0x47, 0xb2, 0x0e, 0x57, 0x82, 0xc8, 0x65, 0x81, 0x2f, 0x4e, 0x52, 0xb2, 0xe3, 0x33, + 0xb9, 0x06, 0xc5, 0x18, 0x8f, 0x92, 0xbb, 0x57, 0x34, 0xd3, 0x53, 0x52, 0x83, 0x81, 0x84, 0xa7, + 0x6e, 0xe4, 0xa1, 0xa4, 0xb9, 0x60, 0x83, 0x12, 0x35, 0x22, 0x0f, 0xc9, 0x47, 0xb0, 0xcc, 0x45, + 0x8c, 0x28, 0x68, 0x56, 0x0a, 0x95, 0xf9, 0x92, 0x92, 0xa6, 0x59, 0xdd, 0x61, 0xb0, 0x3c, 0xfd, + 0x7b, 0x96, 0xdc, 0x84, 0x8d, 0xf1, 0xe5, 0x39, 0xdd, 0x7a, 0xf7, 0xc0, 0x99, 0x69, 0xa8, 0x2b, + 0x30, 0xd7, 0xd9, 0x37, 0xdb, 0xba, 0x46, 0x08, 0x2c, 0xab, 0x06, 0xa0, 0xd9, 0xdd, 0xe7, 0x88, + 0x0e, 0x8b, 0xa9, 0xac, 0xd3, 0xdd, 0x35, 0x6d, 0x3d, 0x7f, 0xe7, 0x67, 0x0d, 0xc8, 0xd9, 0x27, + 0x4d, 0x6e, 0xc1, 0xd6, 0x74, 0x3b, 0xca, 0x68, 0xb3, 0xdd, 0x5b, 0x82, 0xf9, 0xc4, 0xca, 0x6a, + 0x3f, 0xd2, 0x35, 0xb2, 0x08, 0x57, 0x1a, 0xf5, 0x76, 0xc3, 0x6c, 0x99, 0x4d, 0x3d, 0x97, 0x74, + 0x99, 0x63, 0xda, 0x8f, 0xad, 0x86, 0x49, 0x6d, 0xb3, 0xde, 0x7c, 0xaa, 0xe7, 0xc9, 0x32, 0x40, + 0x63, 0xd7, 0x6c, 0x7c, 0x69, 0x36, 0xa9, 0xd5, 0xd6, 0xe7, 0x08, 0x40, 0xd1, 0x31, 0xeb, 0x5d, + 0xb3, 0xa9, 0x17, 0xd2, 0x0e, 0x75, 0x76, 0x3b, 0x87, 0x7a, 0xf1, 0x45, 0x51, 0xfe, 0xa3, 0xb9, + 0xf7, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x7a, 0x92, 0x6d, 0xe3, 0x0c, 0x00, 0x00, +}