Move ServiceId from BatchAvailabilityRequest to SlotTime message, to allow multiple services in one request
diff --git a/api/api.go b/api/api.go
index ba2e0bb..d419c40 100644
--- a/api/api.go
+++ b/api/api.go
@@ -783,7 +783,7 @@
 
 	var resp empty.Empty
 	if err := jsonpb.UnmarshalString(httpResp, &resp); err != nil {
-		return fmt.Errorf("DeleteWaitlistEntry: Could not parse HTTP response to pb3: %v", err)
+		return fmt.Errorf("DeleteWaitlistEntry: Could not parse HTTP response to pb3: %v. Body should be: {}", err)
 	}
 
 	return nil
diff --git a/feeds/feeds.pb.go b/feeds/feeds.pb.go
index d64e87c..0ce2445 100644
--- a/feeds/feeds.pb.go
+++ b/feeds/feeds.pb.go
@@ -1,39 +1,13 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: github.com/maps-booking-v3/feeds/feeds.proto
+// source: feeds.proto
 
-/*
-Package maps_booking_feeds is a generated protocol buffer package.
-
-It is generated from these files:
-	github.com/maps-booking-v3/feeds/feeds.proto
-
-It has these top-level messages:
-	FeedMetadata
-	AvailabilityFeed
-	ServiceAvailability
-	Availability
-	Resources
-	TimeRange
-	ServiceFeed
-	Service
-	Price
-	SchedulingRules
-	TaxRate
-	ServiceIntakeFormField
-	ServiceIntakeForm
-	Deposit
-	NoShowFee
-	ActionLink
-	TicketType
-	RelatedMedia
-	ServiceAttributeValueId
-	WaitlistRules
-*/
 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
@@ -44,7 +18,7 @@
 // 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
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 // Defines how a total price is determined from an availability.
 type PriceType int32
@@ -65,6 +39,7 @@
 	0: "FIXED_RATE_DEFAULT",
 	1: "PER_PERSON",
 }
+
 var PriceType_value = map[string]int32{
 	"FIXED_RATE_DEFAULT": 0,
 	"PER_PERSON":         1,
@@ -73,7 +48,10 @@
 func (x PriceType) String() string {
 	return proto.EnumName(PriceType_name, int32(x))
 }
-func (PriceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (PriceType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_7aa923a38d4cd9d3, []int{0}
+}
 
 // Defines whether a credit card is required in order to book an appointment.
 type RequireCreditCard int32
@@ -98,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,
@@ -107,7 +86,10 @@
 func (x RequireCreditCard) String() string {
 	return proto.EnumName(RequireCreditCard_name, int32(x))
 }
-func (RequireCreditCard) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (RequireCreditCard) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_7aa923a38d4cd9d3, []int{1}
+}
 
 // The platform that the action is performed on. Web application is the general
 // fallback. It is recommended to have at least one ActionLink with
@@ -135,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,
@@ -146,7 +129,10 @@
 func (x ActionPlatform) String() string {
 	return proto.EnumName(ActionPlatform_name, int32(x))
 }
-func (ActionPlatform) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (ActionPlatform) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_7aa923a38d4cd9d3, []int{2}
+}
 
 type FeedMetadata_ProcessingInstruction int32
 
@@ -167,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,
@@ -176,8 +163,42 @@
 func (x FeedMetadata_ProcessingInstruction) String() string {
 	return proto.EnumName(FeedMetadata_ProcessingInstruction_name, int32(x))
 }
+
 func (FeedMetadata_ProcessingInstruction) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{0, 0}
+	return fileDescriptor_7aa923a38d4cd9d3, []int{0, 0}
+}
+
+// The confirmation modes used when booking availabilities.
+type Availability_ConfirmationMode int32
+
+const (
+	// The confirmation mode was not specified.
+	// Synchronous confirmation will be assumed.
+	Availability_CONFIRMATION_MODE_UNSPECIFIED Availability_ConfirmationMode = 0
+	// Bookings for this availability will be confirmed synchronously.
+	Availability_CONFIRMATION_MODE_SYNCHRONOUS Availability_ConfirmationMode = 1
+	// Bookings for this availability will be confirmed asynchronously.
+	Availability_CONFIRMATION_MODE_ASYNCHRONOUS Availability_ConfirmationMode = 2
+)
+
+var Availability_ConfirmationMode_name = map[int32]string{
+	0: "CONFIRMATION_MODE_UNSPECIFIED",
+	1: "CONFIRMATION_MODE_SYNCHRONOUS",
+	2: "CONFIRMATION_MODE_ASYNCHRONOUS",
+}
+
+var Availability_ConfirmationMode_value = map[string]int32{
+	"CONFIRMATION_MODE_UNSPECIFIED":  0,
+	"CONFIRMATION_MODE_SYNCHRONOUS":  1,
+	"CONFIRMATION_MODE_ASYNCHRONOUS": 2,
+}
+
+func (x Availability_ConfirmationMode) String() string {
+	return proto.EnumName(Availability_ConfirmationMode_name, int32(x))
+}
+
+func (Availability_ConfirmationMode) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_7aa923a38d4cd9d3, []int{3, 0}
 }
 
 // Enum to indicate the prepayment type.
@@ -201,6 +222,7 @@
 	2: "OPTIONAL",
 	3: "NOT_SUPPORTED",
 }
+
 var Service_PrepaymentType_value = map[string]int32{
 	"PREPAYMENT_TYPE_UNSPECIFIED": 0,
 	"REQUIRED":                    1,
@@ -211,7 +233,10 @@
 func (x Service_PrepaymentType) String() string {
 	return proto.EnumName(Service_PrepaymentType_name, int32(x))
 }
-func (Service_PrepaymentType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} }
+
+func (Service_PrepaymentType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_7aa923a38d4cd9d3, []int{7, 0}
+}
 
 type Service_ServiceType int32
 
@@ -230,6 +255,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,
@@ -241,7 +267,10 @@
 func (x Service_ServiceType) String() string {
 	return proto.EnumName(Service_ServiceType_name, int32(x))
 }
-func (Service_ServiceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 1} }
+
+func (Service_ServiceType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_7aa923a38d4cd9d3, []int{7, 1}
+}
 
 // The admission policy of this service.
 type SchedulingRules_AdmissionPolicy int32
@@ -285,6 +314,7 @@
 	2: "TIME_FLEXIBLE",
 	3: "TIMED_ENTRY_WITH_FLEXIBLE_DURATION",
 }
+
 var SchedulingRules_AdmissionPolicy_value = map[string]int32{
 	"ADMISSION_POLICY_UNSPECIFIED":       0,
 	"TIME_STRICT":                        1,
@@ -295,8 +325,9 @@
 func (x SchedulingRules_AdmissionPolicy) String() string {
 	return proto.EnumName(SchedulingRules_AdmissionPolicy_name, int32(x))
 }
+
 func (SchedulingRules_AdmissionPolicy) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{9, 0}
+	return fileDescriptor_7aa923a38d4cd9d3, []int{9, 0}
 }
 
 // Enum to indicate the type of field.
@@ -328,6 +359,7 @@
 	5: "DROPDOWN",
 	6: "BOOLEAN",
 }
+
 var ServiceIntakeFormField_FieldType_value = map[string]int32{
 	"FIELD_TYPE_UNSPECIFIED": 0,
 	"SHORT_ANSWER":           1,
@@ -341,8 +373,9 @@
 func (x ServiceIntakeFormField_FieldType) String() string {
 	return proto.EnumName(ServiceIntakeFormField_FieldType_name, int32(x))
 }
+
 func (ServiceIntakeFormField_FieldType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{11, 0}
+	return fileDescriptor_7aa923a38d4cd9d3, []int{11, 0}
 }
 
 // Enum to indicate the type of this media source. Only photos are supported.
@@ -361,6 +394,7 @@
 	0: "TYPE_UNSPECIFIED",
 	1: "PHOTO",
 }
+
 var RelatedMedia_MediaType_value = map[string]int32{
 	"TYPE_UNSPECIFIED": 0,
 	"PHOTO":            1,
@@ -369,12 +403,15 @@
 func (x RelatedMedia_MediaType) String() string {
 	return proto.EnumName(RelatedMedia_MediaType_name, int32(x))
 }
-func (RelatedMedia_MediaType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{17, 0} }
+
+func (RelatedMedia_MediaType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_7aa923a38d4cd9d3, []int{17, 0}
+}
 
 type FeedMetadata struct {
 	// Instructs us how to process the feed: either as a shard of a complete feed,
 	// or as a shard of an incremental update.
-	ProcessingInstruction FeedMetadata_ProcessingInstruction `protobuf:"varint,1,opt,name=processing_instruction,json=processingInstruction,enum=maps.booking.feeds.FeedMetadata_ProcessingInstruction" json:"processing_instruction,omitempty"`
+	ProcessingInstruction FeedMetadata_ProcessingInstruction `protobuf:"varint,1,opt,name=processing_instruction,json=processingInstruction,proto3,enum=maps.booking.feeds.FeedMetadata_ProcessingInstruction" json:"processing_instruction,omitempty"`
 	// The current shard and total number of shards for this feed.
 	//
 	// Shard number is assumed to be zero-based.
@@ -383,8 +420,8 @@
 	//
 	// Shards do not need to be transferred in order, and they may not be
 	// processed in order.
-	ShardNumber int32 `protobuf:"varint,2,opt,name=shard_number,json=shardNumber" json:"shard_number,omitempty"`
-	TotalShards int32 `protobuf:"varint,3,opt,name=total_shards,json=totalShards" json:"total_shards,omitempty"`
+	ShardNumber int32 `protobuf:"varint,2,opt,name=shard_number,json=shardNumber,proto3" json:"shard_number,omitempty"`
+	TotalShards int32 `protobuf:"varint,3,opt,name=total_shards,json=totalShards,proto3" json:"total_shards,omitempty"`
 	// An identifier that must be consistent across all shards in a feed.
 	// This value must be globally unique across each feed type.
 	//
@@ -396,17 +433,40 @@
 	// total_shards).
 	//
 	// Feeds that span multiple shards must set this nonce to the same value.
-	Nonce uint64 `protobuf:"varint,5,opt,name=nonce" json:"nonce,omitempty"`
+	Nonce uint64 `protobuf:"varint,5,opt,name=nonce,proto3" json:"nonce,omitempty"`
 	// The timestamp at which this feed shard was generated.
 	//
 	// In Unix time format (seconds since the epoch).
-	GenerationTimestamp int64 `protobuf:"varint,4,opt,name=generation_timestamp,json=generationTimestamp" json:"generation_timestamp,omitempty"`
+	GenerationTimestamp  int64    `protobuf:"varint,4,opt,name=generation_timestamp,json=generationTimestamp,proto3" json:"generation_timestamp,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *FeedMetadata) Reset()                    { *m = FeedMetadata{} }
-func (m *FeedMetadata) String() string            { return proto.CompactTextString(m) }
-func (*FeedMetadata) ProtoMessage()               {}
-func (*FeedMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (m *FeedMetadata) Reset()         { *m = FeedMetadata{} }
+func (m *FeedMetadata) String() string { return proto.CompactTextString(m) }
+func (*FeedMetadata) ProtoMessage()    {}
+func (*FeedMetadata) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *FeedMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_FeedMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FeedMetadata proto.InternalMessageInfo
 
 func (m *FeedMetadata) GetProcessingInstruction() FeedMetadata_ProcessingInstruction {
 	if m != nil {
@@ -444,14 +504,37 @@
 }
 
 type AvailabilityFeed struct {
-	Metadata            *FeedMetadata          `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
-	ServiceAvailability []*ServiceAvailability `protobuf:"bytes,2,rep,name=service_availability,json=serviceAvailability" json:"service_availability,omitempty"`
+	Metadata             *FeedMetadata          `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	ServiceAvailability  []*ServiceAvailability `protobuf:"bytes,2,rep,name=service_availability,json=serviceAvailability,proto3" json:"service_availability,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
+	XXX_unrecognized     []byte                 `json:"-"`
+	XXX_sizecache        int32                  `json:"-"`
 }
 
-func (m *AvailabilityFeed) Reset()                    { *m = AvailabilityFeed{} }
-func (m *AvailabilityFeed) String() string            { return proto.CompactTextString(m) }
-func (*AvailabilityFeed) ProtoMessage()               {}
-func (*AvailabilityFeed) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+func (m *AvailabilityFeed) Reset()         { *m = AvailabilityFeed{} }
+func (m *AvailabilityFeed) String() string { return proto.CompactTextString(m) }
+func (*AvailabilityFeed) ProtoMessage()    {}
+func (*AvailabilityFeed) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *AvailabilityFeed) XXX_DiscardUnknown() {
+	xxx_messageInfo_AvailabilityFeed.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AvailabilityFeed proto.InternalMessageInfo
 
 func (m *AvailabilityFeed) GetMetadata() *FeedMetadata {
 	if m != nil {
@@ -491,8 +574,8 @@
 	// is interpreted to mean all time up to the end_timestamp_restrict.
 	//
 	// In Unix time format (seconds since the epoch).
-	StartTimestampRestrict int64 `protobuf:"varint,1,opt,name=start_timestamp_restrict,json=startTimestampRestrict" json:"start_timestamp_restrict,omitempty"`
-	EndTimestampRestrict   int64 `protobuf:"varint,2,opt,name=end_timestamp_restrict,json=endTimestampRestrict" json:"end_timestamp_restrict,omitempty"`
+	StartTimestampRestrict int64 `protobuf:"varint,1,opt,name=start_timestamp_restrict,json=startTimestampRestrict,proto3" json:"start_timestamp_restrict,omitempty"`
+	EndTimestampRestrict   int64 `protobuf:"varint,2,opt,name=end_timestamp_restrict,json=endTimestampRestrict,proto3" json:"end_timestamp_restrict,omitempty"`
 	// If provided, the timestamp restricts will be applied only to the given
 	// merchant or service.
 	//
@@ -502,19 +585,42 @@
 	//
 	// Leaving these fields unset, or setting these to the empty string or null,
 	// is interpreted to mean that no restrict is intended.
-	MerchantIdRestrict string `protobuf:"bytes,3,opt,name=merchant_id_restrict,json=merchantIdRestrict" json:"merchant_id_restrict,omitempty"`
-	ServiceIdRestrict  string `protobuf:"bytes,4,opt,name=service_id_restrict,json=serviceIdRestrict" json:"service_id_restrict,omitempty"`
+	MerchantIdRestrict string `protobuf:"bytes,3,opt,name=merchant_id_restrict,json=merchantIdRestrict,proto3" json:"merchant_id_restrict,omitempty"`
+	ServiceIdRestrict  string `protobuf:"bytes,4,opt,name=service_id_restrict,json=serviceIdRestrict,proto3" json:"service_id_restrict,omitempty"`
 	// Setting resources_restrict further restricts the scope of the update to
 	// just this set of resources. All id fields of the resources must match
 	// exactly.
-	ResourcesRestrict *Resources      `protobuf:"bytes,6,opt,name=resources_restrict,json=resourcesRestrict" json:"resources_restrict,omitempty"`
-	Availability      []*Availability `protobuf:"bytes,5,rep,name=availability" json:"availability,omitempty"`
+	ResourcesRestrict    *Resources      `protobuf:"bytes,6,opt,name=resources_restrict,json=resourcesRestrict,proto3" json:"resources_restrict,omitempty"`
+	Availability         []*Availability `protobuf:"bytes,5,rep,name=availability,proto3" json:"availability,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
 }
 
-func (m *ServiceAvailability) Reset()                    { *m = ServiceAvailability{} }
-func (m *ServiceAvailability) String() string            { return proto.CompactTextString(m) }
-func (*ServiceAvailability) ProtoMessage()               {}
-func (*ServiceAvailability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (m *ServiceAvailability) Reset()         { *m = ServiceAvailability{} }
+func (m *ServiceAvailability) String() string { return proto.CompactTextString(m) }
+func (*ServiceAvailability) ProtoMessage()    {}
+func (*ServiceAvailability) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *ServiceAvailability) XXX_DiscardUnknown() {
+	xxx_messageInfo_ServiceAvailability.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ServiceAvailability proto.InternalMessageInfo
 
 func (m *ServiceAvailability) GetStartTimestampRestrict() int64 {
 	if m != nil {
@@ -573,16 +679,16 @@
 //
 type Availability struct {
 	// An opaque string from an aggregator to identify a merchant. (required)
-	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"`
+	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
 	// An opaque string from aggregator to identify a service of the
 	// merchant. (required)
-	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId" json:"service_id,omitempty"`
+	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
 	// Start time of this availability, using epoch time in seconds in UTC.
-	// (required)
-	StartSec int64 `protobuf:"varint,3,opt,name=start_sec,json=startSec" json:"start_sec,omitempty"`
+	//(required)
+	StartSec int64 `protobuf:"varint,3,opt,name=start_sec,json=startSec,proto3" json:"start_sec,omitempty"`
 	// Duration of the service in seconds, e.g. 30 minutes for a chair massage.
 	// (required)
-	DurationSec int64 `protobuf:"varint,4,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
+	DurationSec int64 `protobuf:"varint,4,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
 	// Number of total spots and open spots of this availability.
 	// E.g. a Yoga class of 10 spots with 3 booked.
 	//   availability {spots_total: 10, spots_open: 7 ...}
@@ -594,12 +700,12 @@
 	//       implies spots_total=1 and spots_open=1. A ScheduleException implies
 	//       spots_total=1 and spots_open=0.
 	// (both required if recurrence not set)
-	SpotsTotal int64 `protobuf:"varint,5,opt,name=spots_total,json=spotsTotal" json:"spots_total,omitempty"`
-	SpotsOpen  int64 `protobuf:"varint,6,opt,name=spots_open,json=spotsOpen" json:"spots_open,omitempty"`
+	SpotsTotal int64 `protobuf:"varint,5,opt,name=spots_total,json=spotsTotal,proto3" json:"spots_total,omitempty"`
+	SpotsOpen  int64 `protobuf:"varint,6,opt,name=spots_open,json=spotsOpen,proto3" json:"spots_open,omitempty"`
 	// An optional opaque string to identify this availability slot. If set, it
 	// will be included in the requests that book/update/cancel appointments.
 	// (optional)
-	AvailabilityTag string `protobuf:"bytes,7,opt,name=availability_tag,json=availabilityTag" json:"availability_tag,omitempty"`
+	AvailabilityTag string `protobuf:"bytes,7,opt,name=availability_tag,json=availabilityTag,proto3" json:"availability_tag,omitempty"`
 	// Optional resources used to disambiguate this availability slot from
 	// others when different staff, room, or party_size values are part
 	// of the service.
@@ -610,7 +716,7 @@
 	//  availability { resources { staff_id: "2" staff_name: "John" }
 	//                 spots_total: 5 spots_open: 2 }
 	// (optional)
-	Resources *Resources `protobuf:"bytes,8,opt,name=resources" json:"resources,omitempty"`
+	Resources *Resources `protobuf:"bytes,8,opt,name=resources,proto3" json:"resources,omitempty"`
 	// A list of IDs referencing the payment options which can be used to pay
 	// for this slot. The actual payment options are defined at the Merchant
 	// level, and can also be shared among multiple Merchants.
@@ -623,28 +729,28 @@
 	// one element. Multiple payment_option_id are still allowed at the Service
 	// level, but an override at the availability slot level, is limited to a
 	// single payment_option_id. (optional)
-	PaymentOptionId []string `protobuf:"bytes,9,rep,name=payment_option_id,json=paymentOptionId" json:"payment_option_id,omitempty"`
+	PaymentOptionId []string `protobuf:"bytes,9,rep,name=payment_option_id,json=paymentOptionId,proto3" json:"payment_option_id,omitempty"`
 	// The recurrence information for the availability, representing more than one
 	// start time. A recurrence should contain appointments for one working day.
 	// (optional)
-	Recurrence *Availability_Recurrence `protobuf:"bytes,10,opt,name=recurrence" json:"recurrence,omitempty"`
+	Recurrence *Availability_Recurrence `protobuf:"bytes,10,opt,name=recurrence,proto3" json:"recurrence,omitempty"`
 	// Times when this service cannot be scheduled. To limit the number of
 	// schedule_exception messages, consider joining adjacent exceptions.
 	// (optional)
-	ScheduleException []*Availability_ScheduleException `protobuf:"bytes,11,rep,name=schedule_exception,json=scheduleException" json:"schedule_exception,omitempty"`
+	ScheduleException []*Availability_ScheduleException `protobuf:"bytes,11,rep,name=schedule_exception,json=scheduleException,proto3" json:"schedule_exception,omitempty"`
 	// Defines how a deposit may be charged to the user. Overrides the service
 	// deposit if one was specified. Setting this to an empty Deposit message
 	// removes any service-level deposit. (optional)
-	Deposit *Deposit `protobuf:"bytes,12,opt,name=deposit" json:"deposit,omitempty"`
+	Deposit *Deposit `protobuf:"bytes,12,opt,name=deposit,proto3" json:"deposit,omitempty"`
 	// Defines a no show fee that may be charged to the user. Overrides the
 	// service no show fee if one was specified. Setting this to an empty
 	// NoShowFee message removes any service-level no show fee. (optional)
-	NoShowFee *NoShowFee `protobuf:"bytes,13,opt,name=no_show_fee,json=noShowFee" json:"no_show_fee,omitempty"`
+	NoShowFee *NoShowFee `protobuf:"bytes,13,opt,name=no_show_fee,json=noShowFee,proto3" json:"no_show_fee,omitempty"`
 	// Indicates whether the user must provide a credit card in order to book this
 	// availability slot.
 	// If the value is not set, it is inherited from the service level if it's set
 	// there. (optional)
-	RequireCreditCard RequireCreditCard `protobuf:"varint,14,opt,name=require_credit_card,json=requireCreditCard,enum=maps.booking.feeds.RequireCreditCard" json:"require_credit_card,omitempty"`
+	RequireCreditCard RequireCreditCard `protobuf:"varint,14,opt,name=require_credit_card,json=requireCreditCard,proto3,enum=maps.booking.feeds.RequireCreditCard" json:"require_credit_card,omitempty"`
 	// Indicates a list of supported ticket types for this availability slot. If
 	// unset, all ticket types in the parent service are available for this slot.
 	// Note that the values of this field must be defined in the parent service.
@@ -674,16 +780,46 @@
 	//   `availability {...}' (do not set ticket_type_id in this slot).
 	//
 	//  (optional)
-	TicketTypeId []string `protobuf:"bytes,15,rep,name=ticket_type_id,json=ticketTypeId" json:"ticket_type_id,omitempty"`
+	TicketTypeId []string `protobuf:"bytes,15,rep,name=ticket_type_id,json=ticketTypeId,proto3" json:"ticket_type_id,omitempty"`
 	// Availability scheduling rules. If fields are populated, they will override
 	// any corresponding scheduling rules on the service-level SchedulingRules.
-	SchedulingRuleOverrides *Availability_SchedulingRuleOverrides `protobuf:"bytes,16,opt,name=scheduling_rule_overrides,json=schedulingRuleOverrides" json:"scheduling_rule_overrides,omitempty"`
+	SchedulingRuleOverrides *Availability_SchedulingRuleOverrides `protobuf:"bytes,16,opt,name=scheduling_rule_overrides,json=schedulingRuleOverrides,proto3" json:"scheduling_rule_overrides,omitempty"`
+	// The confirmation mode that will be used when booking this availability.
+	// Attempts to create bookings for availabilities with a confirmation mode
+	// of CONFIRMATION_MODE_SYNCHRONOUS must be immediatlely confirmed or denied.
+	// Attempts to create bookings for availabilities with confirmation mode
+	// of CONFIRMATION_MODE_ASYNCHRONOUS must be either immediately denied
+	// or created with status PENDING.
+	ConfirmationMode     Availability_ConfirmationMode `protobuf:"varint,17,opt,name=confirmation_mode,json=confirmationMode,proto3,enum=maps.booking.feeds.Availability_ConfirmationMode" json:"confirmation_mode,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
+	XXX_unrecognized     []byte                        `json:"-"`
+	XXX_sizecache        int32                         `json:"-"`
 }
 
-func (m *Availability) Reset()                    { *m = Availability{} }
-func (m *Availability) String() string            { return proto.CompactTextString(m) }
-func (*Availability) ProtoMessage()               {}
-func (*Availability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+func (m *Availability) Reset()         { *m = Availability{} }
+func (m *Availability) String() string { return proto.CompactTextString(m) }
+func (*Availability) ProtoMessage()    {}
+func (*Availability) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *Availability) XXX_DiscardUnknown() {
+	xxx_messageInfo_Availability.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Availability proto.InternalMessageInfo
 
 func (m *Availability) GetMerchantId() string {
 	if m != nil {
@@ -797,6 +933,13 @@
 	return nil
 }
 
+func (m *Availability) GetConfirmationMode() Availability_ConfirmationMode {
+	if m != nil {
+		return m.ConfirmationMode
+	}
+	return Availability_CONFIRMATION_MODE_UNSPECIFIED
+}
+
 // Recurrence messages are optional, but allow for a more compact
 // representation of consistently repeating availability slots. They typically
 // represent a day's working schedule.
@@ -811,23 +954,47 @@
 //      slots of a single service. Recurrence benefits merchants/services that
 //      offer appointments. The standard format is geared towards
 //      merchants/services with regularly scheduled classes.
+//   3. Recurrences should not last for more than 24 hours.
 type Availability_Recurrence struct {
 	// The inclusive maximum UTC timestamp the availability repeats until.
 	// (required)
-	RepeatUntilSec int64 `protobuf:"varint,1,opt,name=repeat_until_sec,json=repeatUntilSec" json:"repeat_until_sec,omitempty"`
+	RepeatUntilSec int64 `protobuf:"varint,1,opt,name=repeat_until_sec,json=repeatUntilSec,proto3" json:"repeat_until_sec,omitempty"`
 	// Defines the time between successive availability slots.
 	//
 	// Example: An availability with a duration of 20 min, a repeat_every_sec of
 	// 30 min, a start_sec of 9:00am, and a repeat_until_sec of 11:00am will
 	// yield slots at 9-9:20am, 9:30-9:50am, 10-10:20am, 10:30-10:50am,
 	// 11-11:20am. (required)
-	RepeatEverySec int32 `protobuf:"varint,2,opt,name=repeat_every_sec,json=repeatEverySec" json:"repeat_every_sec,omitempty"`
+	RepeatEverySec       int32    `protobuf:"varint,2,opt,name=repeat_every_sec,json=repeatEverySec,proto3" json:"repeat_every_sec,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Availability_Recurrence) Reset()                    { *m = Availability_Recurrence{} }
-func (m *Availability_Recurrence) String() string            { return proto.CompactTextString(m) }
-func (*Availability_Recurrence) ProtoMessage()               {}
-func (*Availability_Recurrence) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} }
+func (m *Availability_Recurrence) Reset()         { *m = Availability_Recurrence{} }
+func (m *Availability_Recurrence) String() string { return proto.CompactTextString(m) }
+func (*Availability_Recurrence) ProtoMessage()    {}
+func (*Availability_Recurrence) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *Availability_Recurrence) XXX_DiscardUnknown() {
+	xxx_messageInfo_Availability_Recurrence.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Availability_Recurrence proto.InternalMessageInfo
 
 func (m *Availability_Recurrence) GetRepeatUntilSec() int64 {
 	if m != nil {
@@ -860,16 +1027,37 @@
 	//
 	// Note that because the time range is closed-open, the slot beginning at
 	// 11am slot would not be impacted.
-	TimeRange *TimeRange `protobuf:"bytes,1,opt,name=time_range,json=timeRange" json:"time_range,omitempty"`
+	TimeRange            *TimeRange `protobuf:"bytes,1,opt,name=time_range,json=timeRange,proto3" json:"time_range,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
 }
 
 func (m *Availability_ScheduleException) Reset()         { *m = Availability_ScheduleException{} }
 func (m *Availability_ScheduleException) String() string { return proto.CompactTextString(m) }
 func (*Availability_ScheduleException) ProtoMessage()    {}
 func (*Availability_ScheduleException) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []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 (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)
+}
+func (m *Availability_ScheduleException) XXX_DiscardUnknown() {
+	xxx_messageInfo_Availability_ScheduleException.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Availability_ScheduleException proto.InternalMessageInfo
+
 func (m *Availability_ScheduleException) GetTimeRange() *TimeRange {
 	if m != nil {
 		return m.TimeRange
@@ -885,16 +1073,37 @@
 	// SchedulingRules.min_booking_before_end_time). If present, will override
 	// anything specified in the min_booking_buffer of the corresponding
 	// Service's SchedulingRules.
-	LastBookableSec int64 `protobuf:"varint,1,opt,name=last_bookable_sec,json=lastBookableSec" json:"last_bookable_sec,omitempty"`
+	LastBookableSec      int64    `protobuf:"varint,1,opt,name=last_bookable_sec,json=lastBookableSec,proto3" json:"last_bookable_sec,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *Availability_SchedulingRuleOverrides) Reset()         { *m = Availability_SchedulingRuleOverrides{} }
 func (m *Availability_SchedulingRuleOverrides) String() string { return proto.CompactTextString(m) }
 func (*Availability_SchedulingRuleOverrides) ProtoMessage()    {}
 func (*Availability_SchedulingRuleOverrides) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{3, 2}
+	return fileDescriptor_7aa923a38d4cd9d3, []int{3, 2}
 }
 
+func (m *Availability_SchedulingRuleOverrides) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Availability_SchedulingRuleOverrides.Unmarshal(m, b)
+}
+func (m *Availability_SchedulingRuleOverrides) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Availability_SchedulingRuleOverrides.Marshal(b, m, deterministic)
+}
+func (m *Availability_SchedulingRuleOverrides) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Availability_SchedulingRuleOverrides.Merge(m, src)
+}
+func (m *Availability_SchedulingRuleOverrides) XXX_Size() int {
+	return xxx_messageInfo_Availability_SchedulingRuleOverrides.Size(m)
+}
+func (m *Availability_SchedulingRuleOverrides) XXX_DiscardUnknown() {
+	xxx_messageInfo_Availability_SchedulingRuleOverrides.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Availability_SchedulingRuleOverrides proto.InternalMessageInfo
+
 func (m *Availability_SchedulingRuleOverrides) GetLastBookableSec() int64 {
 	if m != nil {
 		return m.LastBookableSec
@@ -912,34 +1121,57 @@
 	// It also needs to be stable over time to allow correlation with past
 	// bookings.
 	// This field must be present if staff_name is present.
-	StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId" json:"staff_id,omitempty"`
+	StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"`
 	// Optional name of a staff member providing the service. This field will be
 	// displayed to users making a booking, and should be human readable, as
 	// opposed to an opaque identifier.
 	// This field must be present if staff_id is present.
-	StaffName string `protobuf:"bytes,2,opt,name=staff_name,json=staffName" json:"staff_name,omitempty"`
+	StaffName string `protobuf:"bytes,2,opt,name=staff_name,json=staffName,proto3" json:"staff_name,omitempty"`
 	// An optional id for the room the service is located in. This field
 	// identifies the room across all merchants, services, and availability
 	// records. It also needs to be stable over time to allow correlation with
 	// past bookings.
 	// This field must be present if room_name is present.
-	RoomId string `protobuf:"bytes,3,opt,name=room_id,json=roomId" json:"room_id,omitempty"`
+	RoomId string `protobuf:"bytes,3,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
 	// An optional name for the room the service is located in. This
 	// field will be displayed to users making a booking, and should be human
 	// readable, as opposed to an opaque identifier.
 	// This field must be present if room_id is present.
-	RoomName string `protobuf:"bytes,4,opt,name=room_name,json=roomName" json:"room_name,omitempty"`
+	RoomName string `protobuf:"bytes,4,opt,name=room_name,json=roomName,proto3" json:"room_name,omitempty"`
 	// Applicable only for Dining: The party size which can be accommodated
 	// during this time slot. A restaurant can be associated with multiple Slots
 	// for the same time, each specifying a different party_size, if for instance
 	// 2, 3, or 4 people can be seated with a reservation.
-	PartySize int32 `protobuf:"varint,5,opt,name=party_size,json=partySize" json:"party_size,omitempty"`
+	PartySize            int32    `protobuf:"varint,5,opt,name=party_size,json=partySize,proto3" json:"party_size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Resources) Reset()                    { *m = Resources{} }
-func (m *Resources) String() string            { return proto.CompactTextString(m) }
-func (*Resources) ProtoMessage()               {}
-func (*Resources) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+func (m *Resources) Reset()         { *m = Resources{} }
+func (m *Resources) String() string { return proto.CompactTextString(m) }
+func (*Resources) ProtoMessage()    {}
+func (*Resources) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *Resources) XXX_DiscardUnknown() {
+	xxx_messageInfo_Resources.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Resources proto.InternalMessageInfo
 
 func (m *Resources) GetStaffId() string {
 	if m != nil {
@@ -977,14 +1209,37 @@
 }
 
 type TimeRange struct {
-	BeginSec int64 `protobuf:"varint,1,opt,name=begin_sec,json=beginSec" json:"begin_sec,omitempty"`
-	EndSec   int64 `protobuf:"varint,2,opt,name=end_sec,json=endSec" json:"end_sec,omitempty"`
+	BeginSec             int64    `protobuf:"varint,1,opt,name=begin_sec,json=beginSec,proto3" json:"begin_sec,omitempty"`
+	EndSec               int64    `protobuf:"varint,2,opt,name=end_sec,json=endSec,proto3" json:"end_sec,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *TimeRange) Reset()                    { *m = TimeRange{} }
-func (m *TimeRange) String() string            { return proto.CompactTextString(m) }
-func (*TimeRange) ProtoMessage()               {}
-func (*TimeRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+func (m *TimeRange) Reset()         { *m = TimeRange{} }
+func (m *TimeRange) String() string { return proto.CompactTextString(m) }
+func (*TimeRange) ProtoMessage()    {}
+func (*TimeRange) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *TimeRange) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimeRange.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TimeRange proto.InternalMessageInfo
 
 func (m *TimeRange) GetBeginSec() int64 {
 	if m != nil {
@@ -1001,14 +1256,37 @@
 }
 
 type ServiceFeed struct {
-	Metadata *FeedMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
-	Service  []*Service    `protobuf:"bytes,2,rep,name=service" json:"service,omitempty"`
+	Metadata             *FeedMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	Service              []*Service    `protobuf:"bytes,2,rep,name=service,proto3" json:"service,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
 }
 
-func (m *ServiceFeed) Reset()                    { *m = ServiceFeed{} }
-func (m *ServiceFeed) String() string            { return proto.CompactTextString(m) }
-func (*ServiceFeed) ProtoMessage()               {}
-func (*ServiceFeed) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+func (m *ServiceFeed) Reset()         { *m = ServiceFeed{} }
+func (m *ServiceFeed) String() string { return proto.CompactTextString(m) }
+func (*ServiceFeed) ProtoMessage()    {}
+func (*ServiceFeed) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *ServiceFeed) XXX_DiscardUnknown() {
+	xxx_messageInfo_ServiceFeed.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ServiceFeed proto.InternalMessageInfo
 
 func (m *ServiceFeed) GetMetadata() *FeedMetadata {
 	if m != nil {
@@ -1028,13 +1306,13 @@
 type Service struct {
 	// An opaque string from an aggregator partner which uniquely identifies a
 	// merchant. (required)
-	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"`
+	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
 	// An opaque string from an aggregator partner which uniquely identifies the
 	// service. (required)
-	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId" json:"service_id,omitempty"`
+	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
 	// The name of the service, suitable for display to users, e.g. "Men's
 	// haircut". (required)
-	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+	Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
 	// The description of the service, suitable for display to users.
 	//
 	// This field now supports both plain text and HTML-like formatting rules to
@@ -1103,68 +1381,91 @@
 	//   approach for you.
 	//
 	// (required)
-	Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
+	Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
 	// The price of the service. (optional, overridden when payment options or
 	// ticket types present)
-	Price *Price `protobuf:"bytes,5,opt,name=price" json:"price,omitempty"`
+	Price *Price `protobuf:"bytes,5,opt,name=price,proto3" json:"price,omitempty"`
 	// Rules to book/cancel an appointment. (optional)
-	Rules *SchedulingRules `protobuf:"bytes,6,opt,name=rules" json:"rules,omitempty"`
+	Rules *SchedulingRules `protobuf:"bytes,6,opt,name=rules,proto3" json:"rules,omitempty"`
 	// Intake forms to customize the service. (optional)
 	//
 	// Deprecated. Please see intake_form and per_ticket_intake_form.
-	Form []*ServiceIntakeForm `protobuf:"bytes,7,rep,name=form" json:"form,omitempty"`
+	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" json:"intake_form,omitempty"`
+	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" json:"per_ticket_intake_form,omitempty"`
+	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,enum=maps.booking.feeds.Service_PrepaymentType" json:"prepayment_type,omitempty"`
+	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
 	// the merchant level. An empty message (i.e. tax_rate { }) will reset the
 	// applied tax rate to zero. (optional)
-	TaxRate *TaxRate `protobuf:"bytes,9,opt,name=tax_rate,json=taxRate" json:"tax_rate,omitempty"`
+	TaxRate *TaxRate `protobuf:"bytes,9,opt,name=tax_rate,json=taxRate,proto3" json:"tax_rate,omitempty"`
 	// A list of ids referencing the payment options which can be used to pay
 	// for this service. The actual payment options are defined at the Merchant
 	// level, and can also be shared among multiple Merchants. (optional)
-	PaymentOptionId []string `protobuf:"bytes,10,rep,name=payment_option_id,json=paymentOptionId" json:"payment_option_id,omitempty"`
+	PaymentOptionId []string `protobuf:"bytes,10,rep,name=payment_option_id,json=paymentOptionId,proto3" json:"payment_option_id,omitempty"`
 	// Defines how a deposit may be charged to the user. Can be overridden at the
 	// availability level. (optional)
-	Deposit *Deposit `protobuf:"bytes,11,opt,name=deposit" json:"deposit,omitempty"`
+	Deposit *Deposit `protobuf:"bytes,11,opt,name=deposit,proto3" json:"deposit,omitempty"`
 	// Defines a no show fee that may be charged to the user. Can be overridden
 	// at the availability level. (optional)
-	NoShowFee *NoShowFee `protobuf:"bytes,12,opt,name=no_show_fee,json=noShowFee" json:"no_show_fee,omitempty"`
+	NoShowFee *NoShowFee `protobuf:"bytes,12,opt,name=no_show_fee,json=noShowFee,proto3" json:"no_show_fee,omitempty"`
 	// Indicates whether the user must provide a credit card in order to book this
 	// service.
 	// This value can be overridden at the availability level. (optional)
-	RequireCreditCard RequireCreditCard `protobuf:"varint,13,opt,name=require_credit_card,json=requireCreditCard,enum=maps.booking.feeds.RequireCreditCard" json:"require_credit_card,omitempty"`
+	RequireCreditCard RequireCreditCard `protobuf:"varint,13,opt,name=require_credit_card,json=requireCreditCard,proto3,enum=maps.booking.feeds.RequireCreditCard" json:"require_credit_card,omitempty"`
 	// An action link related to this service.
-	ActionLink []*ActionLink `protobuf:"bytes,14,rep,name=action_link,json=actionLink" json:"action_link,omitempty"`
+	ActionLink []*ActionLink `protobuf:"bytes,14,rep,name=action_link,json=actionLink,proto3" json:"action_link,omitempty"`
 	// The predefined type of this service. Currently, only used with action_link.
-	Type Service_ServiceType `protobuf:"varint,15,opt,name=type,enum=maps.booking.feeds.Service_ServiceType" json:"type,omitempty"`
+	Type Service_ServiceType `protobuf:"varint,15,opt,name=type,proto3,enum=maps.booking.feeds.Service_ServiceType" json:"type,omitempty"`
 	// Types of tickets that can be booked/purchased for this service, if tickets
 	// are supported. (optional)
-	TicketType []*TicketType `protobuf:"bytes,16,rep,name=ticket_type,json=ticketType" json:"ticket_type,omitempty"`
+	TicketType []*TicketType `protobuf:"bytes,16,rep,name=ticket_type,json=ticketType,proto3" json:"ticket_type,omitempty"`
 	// Photos related to this service. Google will crawl these media to
 	// ensure that they are displayed to end-users in the most efficient way.
 	// (optional)
-	RelatedMedia []*RelatedMedia `protobuf:"bytes,17,rep,name=related_media,json=relatedMedia" json:"related_media,omitempty"`
+	RelatedMedia []*RelatedMedia `protobuf:"bytes,17,rep,name=related_media,json=relatedMedia,proto3" json:"related_media,omitempty"`
 	// Service attribute values that apply to this service (optional).
 	// 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" json:"service_attribute_value_id,omitempty"`
+	ServiceAttributeValueId []*ServiceAttributeValueId `protobuf:"bytes,18,rep,name=service_attribute_value_id,json=serviceAttributeValueId,proto3" json:"service_attribute_value_id,omitempty"`
 	// 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" json:"waitlist_rules,omitempty"`
+	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 fileDescriptor0, []int{7} }
+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_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 (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)
+}
+func (m *Service) XXX_DiscardUnknown() {
+	xxx_messageInfo_Service.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Service proto.InternalMessageInfo
 
 func (m *Service) GetMerchantId() string {
 	if m != nil {
@@ -1208,6 +1509,7 @@
 	return nil
 }
 
+// Deprecated: Do not use.
 func (m *Service) GetForm() []*ServiceIntakeForm {
 	if m != nil {
 		return m.Form
@@ -1320,18 +1622,41 @@
 	// rounding. (e.g. For USD 2.5 cents rounded to 2 cents, 3.5 cents rounded to
 	// 4 cents, 0.5 cents rounded to 0 cents, 2.51 cents rounded to 3 cents).
 	// (required)
-	PriceMicros int64 `protobuf:"varint,1,opt,name=price_micros,json=priceMicros" json:"price_micros,omitempty"`
+	PriceMicros int64 `protobuf:"varint,1,opt,name=price_micros,json=priceMicros,proto3" json:"price_micros,omitempty"`
 	// The currency of the price that is defined in ISO 4217. (required)
-	CurrencyCode string `protobuf:"bytes,2,opt,name=currency_code,json=currencyCode" json:"currency_code,omitempty"`
+	CurrencyCode string `protobuf:"bytes,2,opt,name=currency_code,json=currencyCode,proto3" json:"currency_code,omitempty"`
 	// An optional and opaque string that identifies the pricing option that is
 	// associated with the extended price. (optional)
-	PricingOptionTag string `protobuf:"bytes,3,opt,name=pricing_option_tag,json=pricingOptionTag" json:"pricing_option_tag,omitempty"`
+	PricingOptionTag     string   `protobuf:"bytes,3,opt,name=pricing_option_tag,json=pricingOptionTag,proto3" json:"pricing_option_tag,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Price) Reset()                    { *m = Price{} }
-func (m *Price) String() string            { return proto.CompactTextString(m) }
-func (*Price) ProtoMessage()               {}
-func (*Price) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+func (m *Price) Reset()         { *m = Price{} }
+func (m *Price) String() string { return proto.CompactTextString(m) }
+func (*Price) ProtoMessage()    {}
+func (*Price) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *Price) XXX_DiscardUnknown() {
+	xxx_messageInfo_Price.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Price proto.InternalMessageInfo
 
 func (m *Price) GetPriceMicros() int64 {
 	if m != nil {
@@ -1384,33 +1709,58 @@
 	MinBookingBuffer isSchedulingRules_MinBookingBuffer `protobuf_oneof:"min_booking_buffer"`
 	// The minimum advance notice in seconds required to cancel a booked
 	// appointment online. (optional)
-	MinAdvanceOnlineCanceling int64 `protobuf:"varint,2,opt,name=min_advance_online_canceling,json=minAdvanceOnlineCanceling" json:"min_advance_online_canceling,omitempty"`
+	MinAdvanceOnlineCanceling int64 `protobuf:"varint,2,opt,name=min_advance_online_canceling,json=minAdvanceOnlineCanceling,proto3" json:"min_advance_online_canceling,omitempty"`
 	// The fee for canceling within the minimum advance notice period.
-	LateCancellationFee *Price `protobuf:"bytes,3,opt,name=late_cancellation_fee,json=lateCancellationFee" json:"late_cancellation_fee,omitempty"`
+	LateCancellationFee *Price `protobuf:"bytes,3,opt,name=late_cancellation_fee,json=lateCancellationFee,proto3" json:"late_cancellation_fee,omitempty"` // Deprecated: Do not use.
 	// The fee for no-show without canceling.
-	NoshowFee *Price `protobuf:"bytes,4,opt,name=noshow_fee,json=noshowFee" json:"noshow_fee,omitempty"`
+	NoshowFee *Price `protobuf:"bytes,4,opt,name=noshow_fee,json=noshowFee,proto3" json:"noshow_fee,omitempty"` // Deprecated: Do not use.
 	// The admission policy that applied to this service. If unset, defaults to
 	// TIME_STRICT. (optional)
-	AdmissionPolicy SchedulingRules_AdmissionPolicy `protobuf:"varint,5,opt,name=admission_policy,json=admissionPolicy,enum=maps.booking.feeds.SchedulingRules_AdmissionPolicy" json:"admission_policy,omitempty"`
+	AdmissionPolicy      SchedulingRules_AdmissionPolicy `protobuf:"varint,5,opt,name=admission_policy,json=admissionPolicy,proto3,enum=maps.booking.feeds.SchedulingRules_AdmissionPolicy" json:"admission_policy,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
+	XXX_unrecognized     []byte                          `json:"-"`
+	XXX_sizecache        int32                           `json:"-"`
 }
 
-func (m *SchedulingRules) Reset()                    { *m = SchedulingRules{} }
-func (m *SchedulingRules) String() string            { return proto.CompactTextString(m) }
-func (*SchedulingRules) ProtoMessage()               {}
-func (*SchedulingRules) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+func (m *SchedulingRules) Reset()         { *m = SchedulingRules{} }
+func (m *SchedulingRules) String() string { return proto.CompactTextString(m) }
+func (*SchedulingRules) ProtoMessage()    {}
+func (*SchedulingRules) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *SchedulingRules) XXX_DiscardUnknown() {
+	xxx_messageInfo_SchedulingRules.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SchedulingRules proto.InternalMessageInfo
 
 type isSchedulingRules_MinBookingBuffer interface {
 	isSchedulingRules_MinBookingBuffer()
 }
 
 type SchedulingRules_MinAdvanceBooking struct {
-	MinAdvanceBooking int64 `protobuf:"varint,1,opt,name=min_advance_booking,json=minAdvanceBooking,oneof"`
-}
-type SchedulingRules_MinBookingBufferBeforeEndTime struct {
-	MinBookingBufferBeforeEndTime int64 `protobuf:"varint,6,opt,name=min_booking_buffer_before_end_time,json=minBookingBufferBeforeEndTime,oneof"`
+	MinAdvanceBooking int64 `protobuf:"varint,1,opt,name=min_advance_booking,json=minAdvanceBooking,proto3,oneof"`
 }
 
-func (*SchedulingRules_MinAdvanceBooking) isSchedulingRules_MinBookingBuffer()             {}
+type SchedulingRules_MinBookingBufferBeforeEndTime struct {
+	MinBookingBufferBeforeEndTime int64 `protobuf:"varint,6,opt,name=min_booking_buffer_before_end_time,json=minBookingBufferBeforeEndTime,proto3,oneof"`
+}
+
+func (*SchedulingRules_MinAdvanceBooking) isSchedulingRules_MinBookingBuffer() {}
+
 func (*SchedulingRules_MinBookingBufferBeforeEndTime) isSchedulingRules_MinBookingBuffer() {}
 
 func (m *SchedulingRules) GetMinBookingBuffer() isSchedulingRules_MinBookingBuffer {
@@ -1441,6 +1791,7 @@
 	return 0
 }
 
+// Deprecated: Do not use.
 func (m *SchedulingRules) GetLateCancellationFee() *Price {
 	if m != nil {
 		return m.LateCancellationFee
@@ -1448,6 +1799,7 @@
 	return nil
 }
 
+// Deprecated: Do not use.
 func (m *SchedulingRules) GetNoshowFee() *Price {
 	if m != nil {
 		return m.NoshowFee
@@ -1462,70 +1814,14 @@
 	return SchedulingRules_ADMISSION_POLICY_UNSPECIFIED
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*SchedulingRules) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _SchedulingRules_OneofMarshaler, _SchedulingRules_OneofUnmarshaler, _SchedulingRules_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*SchedulingRules) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*SchedulingRules_MinAdvanceBooking)(nil),
 		(*SchedulingRules_MinBookingBufferBeforeEndTime)(nil),
 	}
 }
 
-func _SchedulingRules_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*SchedulingRules)
-	// min_booking_buffer
-	switch x := m.MinBookingBuffer.(type) {
-	case *SchedulingRules_MinAdvanceBooking:
-		b.EncodeVarint(1<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.MinAdvanceBooking))
-	case *SchedulingRules_MinBookingBufferBeforeEndTime:
-		b.EncodeVarint(6<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.MinBookingBufferBeforeEndTime))
-	case nil:
-	default:
-		return fmt.Errorf("SchedulingRules.MinBookingBuffer has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _SchedulingRules_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*SchedulingRules)
-	switch tag {
-	case 1: // min_booking_buffer.min_advance_booking
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.MinBookingBuffer = &SchedulingRules_MinAdvanceBooking{int64(x)}
-		return true, err
-	case 6: // min_booking_buffer.min_booking_buffer_before_end_time
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.MinBookingBuffer = &SchedulingRules_MinBookingBufferBeforeEndTime{int64(x)}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _SchedulingRules_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*SchedulingRules)
-	// min_booking_buffer
-	switch x := m.MinBookingBuffer.(type) {
-	case *SchedulingRules_MinAdvanceBooking:
-		n += proto.SizeVarint(1<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.MinAdvanceBooking))
-	case *SchedulingRules_MinBookingBufferBeforeEndTime:
-		n += proto.SizeVarint(6<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.MinBookingBufferBeforeEndTime))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // A tax rate applied when charging the user for a service, and which can be set
 // on either a per merchant, or per service basis.
 type TaxRate struct {
@@ -1545,13 +1841,36 @@
 	// the smallest currency unit (for example, fractions of one cent) will be
 	// rounded using nearest even rounding. Taxes will be shown to the user as a
 	// separate line item. (required)
-	MicroPercent int32 `protobuf:"varint,1,opt,name=micro_percent,json=microPercent" json:"micro_percent,omitempty"`
+	MicroPercent         int32    `protobuf:"varint,1,opt,name=micro_percent,json=microPercent,proto3" json:"micro_percent,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *TaxRate) Reset()                    { *m = TaxRate{} }
-func (m *TaxRate) String() string            { return proto.CompactTextString(m) }
-func (*TaxRate) ProtoMessage()               {}
-func (*TaxRate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+func (m *TaxRate) Reset()         { *m = TaxRate{} }
+func (m *TaxRate) String() string { return proto.CompactTextString(m) }
+func (*TaxRate) ProtoMessage()    {}
+func (*TaxRate) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *TaxRate) XXX_DiscardUnknown() {
+	xxx_messageInfo_TaxRate.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TaxRate proto.InternalMessageInfo
 
 func (m *TaxRate) GetMicroPercent() int32 {
 	if m != nil {
@@ -1565,22 +1884,45 @@
 	// 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" json:"id,omitempty"`
+	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,enum=maps.booking.feeds.ServiceIntakeFormField_FieldType" json:"type,omitempty"`
+	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)
-	Label string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"`
+	Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
 	// For MULTIPLE_CHOICE, CHECKBOXES, or DROPDOWN, the values to enumerate.
 	// (optional)
-	Value []string `protobuf:"bytes,3,rep,name=value" json:"value,omitempty"`
+	Value []string `protobuf:"bytes,3,rep,name=value,proto3" json:"value,omitempty"`
 	// Indicates whether an answer to this field is required by a user. (optional)
-	IsRequired bool `protobuf:"varint,4,opt,name=is_required,json=isRequired" json:"is_required,omitempty"`
+	IsRequired           bool     `protobuf:"varint,4,opt,name=is_required,json=isRequired,proto3" json:"is_required,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ServiceIntakeFormField) Reset()                    { *m = ServiceIntakeFormField{} }
-func (m *ServiceIntakeFormField) String() string            { return proto.CompactTextString(m) }
-func (*ServiceIntakeFormField) ProtoMessage()               {}
-func (*ServiceIntakeFormField) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+func (m *ServiceIntakeFormField) Reset()         { *m = ServiceIntakeFormField{} }
+func (m *ServiceIntakeFormField) String() string { return proto.CompactTextString(m) }
+func (*ServiceIntakeFormField) ProtoMessage()    {}
+func (*ServiceIntakeFormField) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *ServiceIntakeFormField) XXX_DiscardUnknown() {
+	xxx_messageInfo_ServiceIntakeFormField.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ServiceIntakeFormField proto.InternalMessageInfo
 
 func (m *ServiceIntakeFormField) GetId() string {
 	if m != nil {
@@ -1620,19 +1962,42 @@
 // Defines an intake form that customizes the service provided by a merchant.
 type ServiceIntakeForm struct {
 	// Fields that will be displayed to the user. (required)
-	Field []*ServiceIntakeFormField `protobuf:"bytes,1,rep,name=field" json:"field,omitempty"`
+	Field []*ServiceIntakeFormField `protobuf:"bytes,1,rep,name=field,proto3" json:"field,omitempty"`
 	// If true, this form will be shown to first time customers.
 	// Deprecated. This functionality is not supported for intake forms.
-	FirstTimeCustomers bool `protobuf:"varint,2,opt,name=first_time_customers,json=firstTimeCustomers" json:"first_time_customers,omitempty"`
+	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.
 	// Deprecated. This functionality is not supported for intake forms.
-	ReturningCustomers bool `protobuf:"varint,3,opt,name=returning_customers,json=returningCustomers" json:"returning_customers,omitempty"`
+	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:"-"`
 }
 
-func (m *ServiceIntakeForm) Reset()                    { *m = ServiceIntakeForm{} }
-func (m *ServiceIntakeForm) String() string            { return proto.CompactTextString(m) }
-func (*ServiceIntakeForm) ProtoMessage()               {}
-func (*ServiceIntakeForm) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+func (m *ServiceIntakeForm) Reset()         { *m = ServiceIntakeForm{} }
+func (m *ServiceIntakeForm) String() string { return proto.CompactTextString(m) }
+func (*ServiceIntakeForm) ProtoMessage()    {}
+func (*ServiceIntakeForm) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *ServiceIntakeForm) XXX_DiscardUnknown() {
+	xxx_messageInfo_ServiceIntakeForm.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ServiceIntakeForm proto.InternalMessageInfo
 
 func (m *ServiceIntakeForm) GetField() []*ServiceIntakeFormField {
 	if m != nil {
@@ -1641,6 +2006,7 @@
 	return nil
 }
 
+// Deprecated: Do not use.
 func (m *ServiceIntakeForm) GetFirstTimeCustomers() bool {
 	if m != nil {
 		return m.FirstTimeCustomers
@@ -1648,6 +2014,7 @@
 	return false
 }
 
+// Deprecated: Do not use.
 func (m *ServiceIntakeForm) GetReturningCustomers() bool {
 	if m != nil {
 		return m.ReturningCustomers
@@ -1659,17 +2026,40 @@
 // for.
 type Deposit struct {
 	// Deposit amount.
-	Deposit *Price `protobuf:"bytes,1,opt,name=deposit" json:"deposit,omitempty"`
+	Deposit *Price `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"`
 	// Minimum advance cancellation for the deposit.
-	MinAdvanceCancellationSec int64 `protobuf:"varint,2,opt,name=min_advance_cancellation_sec,json=minAdvanceCancellationSec" json:"min_advance_cancellation_sec,omitempty"`
+	MinAdvanceCancellationSec int64 `protobuf:"varint,2,opt,name=min_advance_cancellation_sec,json=minAdvanceCancellationSec,proto3" json:"min_advance_cancellation_sec,omitempty"`
 	// Defines how the deposit is determined from the availability.
-	DepositType PriceType `protobuf:"varint,3,opt,name=deposit_type,json=depositType,enum=maps.booking.feeds.PriceType" json:"deposit_type,omitempty"`
+	DepositType          PriceType `protobuf:"varint,3,opt,name=deposit_type,json=depositType,proto3,enum=maps.booking.feeds.PriceType" json:"deposit_type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
 }
 
-func (m *Deposit) Reset()                    { *m = Deposit{} }
-func (m *Deposit) String() string            { return proto.CompactTextString(m) }
-func (*Deposit) ProtoMessage()               {}
-func (*Deposit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+func (m *Deposit) Reset()         { *m = Deposit{} }
+func (m *Deposit) String() string { return proto.CompactTextString(m) }
+func (*Deposit) ProtoMessage()    {}
+func (*Deposit) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *Deposit) XXX_DiscardUnknown() {
+	xxx_messageInfo_Deposit.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Deposit proto.InternalMessageInfo
 
 func (m *Deposit) GetDeposit() *Price {
 	if m != nil {
@@ -1697,15 +2087,38 @@
 type NoShowFee struct {
 	// The amount the user may be charged if they do not show up for their
 	// reservation.
-	Fee *Price `protobuf:"bytes,1,opt,name=fee" json:"fee,omitempty"`
+	Fee *Price `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"`
 	// Defines how the fee is determined from the availability.
-	FeeType PriceType `protobuf:"varint,3,opt,name=fee_type,json=feeType,enum=maps.booking.feeds.PriceType" json:"fee_type,omitempty"`
+	FeeType              PriceType `protobuf:"varint,3,opt,name=fee_type,json=feeType,proto3,enum=maps.booking.feeds.PriceType" json:"fee_type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
 }
 
-func (m *NoShowFee) Reset()                    { *m = NoShowFee{} }
-func (m *NoShowFee) String() string            { return proto.CompactTextString(m) }
-func (*NoShowFee) ProtoMessage()               {}
-func (*NoShowFee) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+func (m *NoShowFee) Reset()         { *m = NoShowFee{} }
+func (m *NoShowFee) String() string { return proto.CompactTextString(m) }
+func (*NoShowFee) ProtoMessage()    {}
+func (*NoShowFee) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *NoShowFee) XXX_DiscardUnknown() {
+	xxx_messageInfo_NoShowFee.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NoShowFee proto.InternalMessageInfo
 
 func (m *NoShowFee) GetFee() *Price {
 	if m != nil {
@@ -1726,21 +2139,44 @@
 // performed on.
 type ActionLink struct {
 	// The entry point URL for this action link.
-	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
 	// The BCP-47 language tag identifying the language in which the content
 	// from this URI is available.
-	Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"`
+	Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"`
 	// ISO 3166-1 alpha-2 country code. Leave empty for unrestricted visibility.
-	RestrictedCountry []string `protobuf:"bytes,3,rep,name=restricted_country,json=restrictedCountry" json:"restricted_country,omitempty"`
+	RestrictedCountry []string `protobuf:"bytes,3,rep,name=restricted_country,json=restrictedCountry,proto3" json:"restricted_country,omitempty"`
 	// The platform that this action should be performed on. If this field is
 	// unset, ACTION_PLATFORM_WEB_APPLICATION will be used as fallback.
-	Platform ActionPlatform `protobuf:"varint,4,opt,name=platform,enum=maps.booking.feeds.ActionPlatform" json:"platform,omitempty"`
+	Platform             ActionPlatform `protobuf:"varint,4,opt,name=platform,proto3,enum=maps.booking.feeds.ActionPlatform" json:"platform,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
 }
 
-func (m *ActionLink) Reset()                    { *m = ActionLink{} }
-func (m *ActionLink) String() string            { return proto.CompactTextString(m) }
-func (*ActionLink) ProtoMessage()               {}
-func (*ActionLink) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+func (m *ActionLink) Reset()         { *m = ActionLink{} }
+func (m *ActionLink) String() string { return proto.CompactTextString(m) }
+func (*ActionLink) ProtoMessage()    {}
+func (*ActionLink) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *ActionLink) XXX_DiscardUnknown() {
+	xxx_messageInfo_ActionLink.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ActionLink proto.InternalMessageInfo
 
 func (m *ActionLink) GetUrl() string {
 	if m != nil {
@@ -1770,25 +2206,87 @@
 	return ActionPlatform_ACTION_PLATFORM_UNSPECIFIED
 }
 
-// TicketType is used to differentiate among tickets (where a ticket can be a
-// spot on a raft trip, an admission to a museum, etc.) with different prices
-// and/or availabilities due to different user types or different service
-// attributes.
+// TicketType is used to differentiate among tickets with different prices
+// and/or availabilities due to different user types, different
+// service attributes, or different options/add-ons.
+//
+// A ticket is the minimal bookable unit to a service, e.g. a spot on a rafting
+// trip, an admission to a museum, a full day double kayak rental.
 type TicketType struct {
 	// The ticket id is used to differentiate among different ticket types of the
 	// same service, and is only expected to be unique within a service.
-	TicketTypeId string `protobuf:"bytes,1,opt,name=ticket_type_id,json=ticketTypeId" json:"ticket_type_id,omitempty"`
+	TicketTypeId string `protobuf:"bytes,1,opt,name=ticket_type_id,json=ticketTypeId,proto3" json:"ticket_type_id,omitempty"`
+	// A short description to this TicketType.
+	//
 	// This can be user visible, e.g., “adult”, "child", “veteran”, “Row J”, etc.
-	ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription" json:"short_description,omitempty"`
+	// Required, each ticket type should have a description to be user visible.
+	ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"`
 	// The price of a single ticket of this type, exclusive of any taxes. The tax
 	// rate of Service is applied to its tickets.
-	Price *Price `protobuf:"bytes,3,opt,name=price" json:"price,omitempty"`
+	Price *Price `protobuf:"bytes,3,opt,name=price,proto3" json:"price,omitempty"`
+	// Description of any additional option which this ticket type represents, if
+	// any.
+	//
+	// This is useful when the ticket type represents multiple dimensions.
+	//
+	// Example 1: an admission ticket with different types 'adult', 'child' and
+	// language as an additional option, the expected TicketType list would be:
+	//     - { ticket_type_id: "ticket_type_1" short_description: "adult"
+	//         option_description: "english" }
+	//     - { ticket_type_id: "ticket_type_2" short_description: "adult"
+	//         option_description: "spanish" }
+	//     - { ticket_type_id: "ticket_type_3" short_description: "child"
+	//         option_description: "english" }
+	//     - { ticket_type_id: "ticket_type_4" short_description: "child"
+	//         option_description: "spanish" }
+	//
+	// Example 2: an multi-hour kayak rental with optional dry bag add-on, the
+	// short_description could be "3 hours" and the option_description could be
+	// either "with dry bag" or "without dry bag":
+	//     - { ticket_type_id: "ticket_type_1" short_description: "2 hours"
+	//         option_description: "english" }
+	//     - { ticket_type_id: "ticket_type_2" short_description: "3 hours"
+	//         option_description: "spanish" }
+	//     - { ticket_type_id: "ticket_type_3" short_description: "2 hours"
+	//          option_description: "english" }
+	//     - { ticket_type_id: "ticket_type_4" short_description: "3 hours"
+	//          option_description: "spanish" }
+	//
+	// Optional, but if any ticket type within the service has this field set, we
+	// expect all other ticket types to have this field set as well (a default
+	// option_description could be used). E.g.
+	// [{ticket_type_1, adult, english}, {ticket_type_1, adult, ''}] is not a
+	// valid list.
+	OptionDescription    string   `protobuf:"bytes,4,opt,name=option_description,json=optionDescription,proto3" json:"option_description,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *TicketType) Reset()                    { *m = TicketType{} }
-func (m *TicketType) String() string            { return proto.CompactTextString(m) }
-func (*TicketType) ProtoMessage()               {}
-func (*TicketType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+func (m *TicketType) Reset()         { *m = TicketType{} }
+func (m *TicketType) String() string { return proto.CompactTextString(m) }
+func (*TicketType) ProtoMessage()    {}
+func (*TicketType) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *TicketType) XXX_DiscardUnknown() {
+	xxx_messageInfo_TicketType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TicketType proto.InternalMessageInfo
 
 func (m *TicketType) GetTicketTypeId() string {
 	if m != nil {
@@ -1811,27 +2309,57 @@
 	return nil
 }
 
+func (m *TicketType) GetOptionDescription() string {
+	if m != nil {
+		return m.OptionDescription
+	}
+	return ""
+}
+
 // Defines a media source. This field only contains the URL of this media source
 // (only photos are supported for now). Google will crawl the media data to
 // ensure that they are displayed to end-users in the most efficient way.
 type RelatedMedia struct {
 	// URL of this media source. Google will crawl the media hosted at this URL.
-	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
 	// Type of this media source.
-	Type RelatedMedia_MediaType `protobuf:"varint,2,opt,name=type,enum=maps.booking.feeds.RelatedMedia_MediaType" json:"type,omitempty"`
+	Type RelatedMedia_MediaType `protobuf:"varint,2,opt,name=type,proto3,enum=maps.booking.feeds.RelatedMedia_MediaType" json:"type,omitempty"`
 	// Caption of the media, only plain text is supported. Any HTML components
 	// will be stripped. (optional)
-	Caption string `protobuf:"bytes,3,opt,name=caption" json:"caption,omitempty"`
+	Caption string `protobuf:"bytes,3,opt,name=caption,proto3" json:"caption,omitempty"`
 	// Attribution information about the source of the media. Note that if
 	// the attribution is required to display with the media to give credit to
 	// photographer or agency, this field must be set. (optional)
-	Attribution *RelatedMedia_Attribution `protobuf:"bytes,4,opt,name=attribution" json:"attribution,omitempty"`
+	Attribution          *RelatedMedia_Attribution `protobuf:"bytes,4,opt,name=attribution,proto3" json:"attribution,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
+	XXX_unrecognized     []byte                    `json:"-"`
+	XXX_sizecache        int32                     `json:"-"`
 }
 
-func (m *RelatedMedia) Reset()                    { *m = RelatedMedia{} }
-func (m *RelatedMedia) String() string            { return proto.CompactTextString(m) }
-func (*RelatedMedia) ProtoMessage()               {}
-func (*RelatedMedia) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+func (m *RelatedMedia) Reset()         { *m = RelatedMedia{} }
+func (m *RelatedMedia) String() string { return proto.CompactTextString(m) }
+func (*RelatedMedia) ProtoMessage()    {}
+func (*RelatedMedia) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *RelatedMedia) XXX_DiscardUnknown() {
+	xxx_messageInfo_RelatedMedia.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RelatedMedia proto.InternalMessageInfo
 
 func (m *RelatedMedia) GetUrl() string {
 	if m != nil {
@@ -1867,13 +2395,36 @@
 	// displayed together with the source media. Note that only plain text is
 	// supported for this field, any HTML components will be stripped (hyperlink
 	// based attribution is not supported).
-	Text string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
+	Text                 string   `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *RelatedMedia_Attribution) Reset()                    { *m = RelatedMedia_Attribution{} }
-func (m *RelatedMedia_Attribution) String() string            { return proto.CompactTextString(m) }
-func (*RelatedMedia_Attribution) ProtoMessage()               {}
-func (*RelatedMedia_Attribution) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17, 0} }
+func (m *RelatedMedia_Attribution) Reset()         { *m = RelatedMedia_Attribution{} }
+func (m *RelatedMedia_Attribution) String() string { return proto.CompactTextString(m) }
+func (*RelatedMedia_Attribution) ProtoMessage()    {}
+func (*RelatedMedia_Attribution) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7aa923a38d4cd9d3, []int{17, 0}
+}
+
+func (m *RelatedMedia_Attribution) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RelatedMedia_Attribution.Unmarshal(m, b)
+}
+func (m *RelatedMedia_Attribution) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RelatedMedia_Attribution.Marshal(b, m, deterministic)
+}
+func (m *RelatedMedia_Attribution) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RelatedMedia_Attribution.Merge(m, src)
+}
+func (m *RelatedMedia_Attribution) XXX_Size() int {
+	return xxx_messageInfo_RelatedMedia_Attribution.Size(m)
+}
+func (m *RelatedMedia_Attribution) XXX_DiscardUnknown() {
+	xxx_messageInfo_RelatedMedia_Attribution.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RelatedMedia_Attribution proto.InternalMessageInfo
 
 func (m *RelatedMedia_Attribution) GetText() string {
 	if m != nil {
@@ -1887,16 +2438,39 @@
 type ServiceAttributeValueId struct {
 	// ID of an attribute as defined in Merchant.service_attribute, e.g.
 	// "service-type".
-	AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId" json:"attribute_id,omitempty"`
+	AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"`
 	// ID of the value for this attribute, e.g. "haircut". Must match a value_id
 	// in the service attribute definition.
-	ValueId string `protobuf:"bytes,2,opt,name=value_id,json=valueId" json:"value_id,omitempty"`
+	ValueId              string   `protobuf:"bytes,2,opt,name=value_id,json=valueId,proto3" json:"value_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ServiceAttributeValueId) Reset()                    { *m = ServiceAttributeValueId{} }
-func (m *ServiceAttributeValueId) String() string            { return proto.CompactTextString(m) }
-func (*ServiceAttributeValueId) ProtoMessage()               {}
-func (*ServiceAttributeValueId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+func (m *ServiceAttributeValueId) Reset()         { *m = ServiceAttributeValueId{} }
+func (m *ServiceAttributeValueId) String() string { return proto.CompactTextString(m) }
+func (*ServiceAttributeValueId) ProtoMessage()    {}
+func (*ServiceAttributeValueId) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *ServiceAttributeValueId) XXX_DiscardUnknown() {
+	xxx_messageInfo_ServiceAttributeValueId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ServiceAttributeValueId proto.InternalMessageInfo
 
 func (m *ServiceAttributeValueId) GetAttributeId() string {
 	if m != nil {
@@ -1917,20 +2491,43 @@
 	// 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" json:"min_party_size,omitempty"`
+	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" json:"max_party_size,omitempty"`
+	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" json:"supports_additional_request,omitempty"`
+	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 fileDescriptor0, []int{19} }
+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 {
@@ -1954,6 +2551,16 @@
 }
 
 func init() {
+	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)
+	proto.RegisterEnum("maps.booking.feeds.FeedMetadata_ProcessingInstruction", FeedMetadata_ProcessingInstruction_name, FeedMetadata_ProcessingInstruction_value)
+	proto.RegisterEnum("maps.booking.feeds.Availability_ConfirmationMode", Availability_ConfirmationMode_name, Availability_ConfirmationMode_value)
+	proto.RegisterEnum("maps.booking.feeds.Service_PrepaymentType", Service_PrepaymentType_name, Service_PrepaymentType_value)
+	proto.RegisterEnum("maps.booking.feeds.Service_ServiceType", Service_ServiceType_name, Service_ServiceType_value)
+	proto.RegisterEnum("maps.booking.feeds.SchedulingRules_AdmissionPolicy", SchedulingRules_AdmissionPolicy_name, SchedulingRules_AdmissionPolicy_value)
+	proto.RegisterEnum("maps.booking.feeds.ServiceIntakeFormField_FieldType", ServiceIntakeFormField_FieldType_name, ServiceIntakeFormField_FieldType_value)
+	proto.RegisterEnum("maps.booking.feeds.RelatedMedia_MediaType", RelatedMedia_MediaType_name, RelatedMedia_MediaType_value)
 	proto.RegisterType((*FeedMetadata)(nil), "maps.booking.feeds.FeedMetadata")
 	proto.RegisterType((*AvailabilityFeed)(nil), "maps.booking.feeds.AvailabilityFeed")
 	proto.RegisterType((*ServiceAvailability)(nil), "maps.booking.feeds.ServiceAvailability")
@@ -1978,189 +2585,184 @@
 	proto.RegisterType((*RelatedMedia_Attribution)(nil), "maps.booking.feeds.RelatedMedia.Attribution")
 	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)
-	proto.RegisterEnum("maps.booking.feeds.FeedMetadata_ProcessingInstruction", FeedMetadata_ProcessingInstruction_name, FeedMetadata_ProcessingInstruction_value)
-	proto.RegisterEnum("maps.booking.feeds.Service_PrepaymentType", Service_PrepaymentType_name, Service_PrepaymentType_value)
-	proto.RegisterEnum("maps.booking.feeds.Service_ServiceType", Service_ServiceType_name, Service_ServiceType_value)
-	proto.RegisterEnum("maps.booking.feeds.SchedulingRules_AdmissionPolicy", SchedulingRules_AdmissionPolicy_name, SchedulingRules_AdmissionPolicy_value)
-	proto.RegisterEnum("maps.booking.feeds.ServiceIntakeFormField_FieldType", ServiceIntakeFormField_FieldType_name, ServiceIntakeFormField_FieldType_value)
-	proto.RegisterEnum("maps.booking.feeds.RelatedMedia_MediaType", RelatedMedia_MediaType_name, RelatedMedia_MediaType_value)
 }
 
-func init() { proto.RegisterFile("github.com/maps-booking-v3/feeds/feeds.proto", fileDescriptor0) }
+func init() { proto.RegisterFile("feeds.proto", fileDescriptor_7aa923a38d4cd9d3) }
 
-var fileDescriptor0 = []byte{
-	// 2706 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0x4f, 0x73, 0xe3, 0xc6,
-	0xb1, 0x5f, 0x92, 0xd2, 0x92, 0x6c, 0x52, 0x12, 0x34, 0xd2, 0x4a, 0x94, 0xd6, 0xeb, 0x95, 0xe1,
-	0xe7, 0xf7, 0xf6, 0xed, 0xae, 0x69, 0x3f, 0xad, 0xed, 0xf2, 0x2b, 0xff, 0xa5, 0x48, 0xc8, 0x42,
-	0x2d, 0x45, 0xc0, 0x43, 0xc8, 0xf2, 0xfa, 0x90, 0x31, 0x04, 0x8c, 0x24, 0xd4, 0x92, 0x00, 0x03,
-	0x80, 0xda, 0x95, 0xab, 0x5c, 0xa9, 0xca, 0x29, 0xc7, 0x9c, 0xe3, 0xaa, 0xdc, 0x53, 0xf1, 0x87,
-	0x48, 0xae, 0xf9, 0x06, 0xf9, 0x14, 0x39, 0xe6, 0x90, 0x4b, 0x6a, 0x7a, 0x00, 0x10, 0x94, 0xa8,
-	0x95, 0x1c, 0xfb, 0x42, 0x01, 0xdd, 0xbf, 0xee, 0x99, 0xe9, 0x99, 0xfe, 0x75, 0x0f, 0x04, 0x8f,
-	0x4f, 0xbc, 0xf8, 0x74, 0x7c, 0xd4, 0x74, 0x82, 0xe1, 0x3b, 0x43, 0x7b, 0x14, 0xbd, 0x7d, 0x14,
-	0x04, 0xcf, 0x3d, 0xff, 0xe4, 0xed, 0xb3, 0x27, 0xef, 0x1c, 0x73, 0xee, 0x46, 0xf2, 0xb7, 0x39,
-	0x0a, 0x83, 0x38, 0x20, 0x44, 0x40, 0x9a, 0x09, 0xa4, 0x89, 0x1a, 0xf5, 0x1f, 0x45, 0xa8, 0xef,
-	0x72, 0xee, 0xee, 0xf3, 0xd8, 0x76, 0xed, 0xd8, 0x26, 0x43, 0x58, 0x1b, 0x85, 0x81, 0xc3, 0xa3,
-	0xc8, 0xf3, 0x4f, 0x98, 0xe7, 0x47, 0x71, 0x38, 0x76, 0x62, 0x2f, 0xf0, 0x1b, 0x85, 0xad, 0xc2,
-	0x83, 0xc5, 0xed, 0x0f, 0x9a, 0x97, 0xbd, 0x34, 0xf3, 0x1e, 0x9a, 0x66, 0x66, 0xae, 0x4f, 0xac,
-	0xe9, 0x9d, 0xd1, 0x2c, 0x31, 0x79, 0x03, 0xea, 0xd1, 0xa9, 0x1d, 0xba, 0xcc, 0x1f, 0x0f, 0x8f,
-	0x78, 0xd8, 0x28, 0x6e, 0x15, 0x1e, 0xcc, 0xd3, 0x1a, 0xca, 0x7a, 0x28, 0x12, 0x90, 0x38, 0x88,
-	0xed, 0x01, 0x43, 0x61, 0xd4, 0x28, 0x49, 0x08, 0xca, 0xfa, 0x28, 0x22, 0xab, 0x30, 0xef, 0x07,
-	0xbe, 0xc3, 0x1b, 0xf3, 0x5b, 0x85, 0x07, 0x73, 0x54, 0xbe, 0x90, 0xff, 0x83, 0xd5, 0x13, 0xee,
-	0xf3, 0xd0, 0x16, 0x23, 0xb1, 0xd8, 0x1b, 0xf2, 0x28, 0xb6, 0x87, 0xa3, 0xc6, 0xdc, 0x56, 0xe1,
-	0x41, 0x89, 0xae, 0x4c, 0x74, 0x56, 0xaa, 0x52, 0x6d, 0xb8, 0x33, 0x73, 0xfa, 0x64, 0x05, 0x96,
-	0x4c, 0x6a, 0xb4, 0xb5, 0x7e, 0x9f, 0x1d, 0xf4, 0x9e, 0xf6, 0x8c, 0xc3, 0x9e, 0x72, 0x8b, 0xac,
-	0xc3, 0x4a, 0x2a, 0x6c, 0xf5, 0x59, 0xdb, 0xd8, 0x37, 0xbb, 0x9a, 0xa5, 0x29, 0x05, 0xb2, 0x09,
-	0x6b, 0x39, 0x85, 0xde, 0x6b, 0x53, 0x6d, 0x5f, 0xeb, 0x59, 0xad, 0xae, 0x52, 0x54, 0x7f, 0x2c,
-	0x80, 0xd2, 0x3a, 0xb3, 0xbd, 0x81, 0x7d, 0xe4, 0x0d, 0xbc, 0xf8, 0x5c, 0xc4, 0x8e, 0x7c, 0x0c,
-	0x95, 0x61, 0x12, 0x3f, 0x8c, 0x73, 0x6d, 0x7b, 0xeb, 0xba, 0x38, 0xd3, 0xcc, 0x82, 0x7c, 0x03,
-	0xab, 0x11, 0x0f, 0xcf, 0x3c, 0x87, 0x33, 0x3b, 0xe7, 0xb9, 0x51, 0xdc, 0x2a, 0x3d, 0xa8, 0x6d,
-	0xff, 0xcf, 0x2c, 0x4f, 0x7d, 0x89, 0xcf, 0x4f, 0x84, 0xae, 0x44, 0x97, 0x85, 0xea, 0xbf, 0x8a,
-	0xb0, 0x32, 0x03, 0x4c, 0x3e, 0x84, 0x46, 0x14, 0xdb, 0x61, 0x3c, 0x89, 0x2b, 0x0b, 0x79, 0x14,
-	0x87, 0x9e, 0x13, 0xe3, 0x0a, 0x4a, 0x74, 0x0d, 0xf5, 0x59, 0x6c, 0x69, 0xa2, 0x25, 0xef, 0xc1,
-	0x1a, 0xf7, 0xdd, 0x59, 0x76, 0x45, 0xb4, 0x5b, 0xe5, 0xbe, 0x7b, 0xd9, 0xea, 0x5d, 0x58, 0x1d,
-	0xf2, 0xd0, 0x39, 0xb5, 0xfd, 0x98, 0x79, 0xee, 0xc4, 0x46, 0x9c, 0x86, 0x2a, 0x25, 0xa9, 0x4e,
-	0x77, 0x33, 0x8b, 0x26, 0xa4, 0x0b, 0x9a, 0x32, 0x98, 0x43, 0x83, 0xe5, 0x44, 0x95, 0xc3, 0x77,
-	0x81, 0x84, 0x3c, 0x0a, 0xc6, 0xa1, 0xc3, 0xa3, 0x09, 0xfc, 0x36, 0xee, 0xc6, 0xbd, 0x59, 0x31,
-	0xa4, 0x29, 0x9a, 0x2e, 0x67, 0x86, 0x99, 0xb7, 0x0e, 0xd4, 0xa7, 0xf6, 0x62, 0x1e, 0xf7, 0x62,
-	0xe6, 0xae, 0x4e, 0x6d, 0xc2, 0x94, 0x95, 0xfa, 0xcf, 0x0a, 0xd4, 0xa7, 0xc2, 0x7e, 0x1f, 0x6a,
-	0xb9, 0x30, 0x60, 0xa4, 0xab, 0x14, 0x26, 0xab, 0x27, 0xf7, 0x00, 0x26, 0xab, 0xc6, 0x88, 0x56,
-	0x69, 0x35, 0x5b, 0x2c, 0xb9, 0x0b, 0x55, 0xb9, 0x6d, 0x11, 0x77, 0x30, 0x76, 0x25, 0x5a, 0x41,
-	0x41, 0x9f, 0x3b, 0x22, 0xd3, 0xdc, 0x71, 0x92, 0x2e, 0x42, 0x2f, 0x13, 0xa5, 0x96, 0xca, 0x04,
-	0xe4, 0x3e, 0xd4, 0xa2, 0x51, 0x10, 0x47, 0x0c, 0xd3, 0x0f, 0xf3, 0xad, 0x44, 0x01, 0x45, 0x96,
-	0x90, 0xe0, 0xf8, 0x08, 0x08, 0x46, 0xdc, 0xc7, 0xe8, 0x95, 0x68, 0x15, 0x25, 0xc6, 0x88, 0xfb,
-	0xe4, 0x7f, 0x41, 0xc9, 0x2f, 0x90, 0xc5, 0xf6, 0x49, 0xa3, 0x8c, 0x93, 0x5c, 0xca, 0xcb, 0x2d,
-	0xfb, 0x84, 0x7c, 0x04, 0xd5, 0x2c, 0xac, 0x8d, 0xca, 0x4d, 0xb6, 0x61, 0x82, 0x27, 0x0f, 0x61,
-	0x79, 0x64, 0x9f, 0x0f, 0xb9, 0x1f, 0xb3, 0x60, 0x84, 0x0b, 0xf2, 0xdc, 0x46, 0x75, 0xab, 0x24,
-	0x06, 0x4a, 0x14, 0x06, 0xca, 0x75, 0x97, 0x3c, 0x05, 0x08, 0xb9, 0x33, 0x0e, 0x43, 0x2e, 0x28,
-	0x04, 0x70, 0xa4, 0x47, 0xd7, 0x6d, 0x54, 0x93, 0x66, 0x26, 0x34, 0x67, 0x4e, 0x6c, 0x20, 0x91,
-	0x73, 0xca, 0xdd, 0xf1, 0x80, 0x33, 0xfe, 0xd2, 0xe1, 0x38, 0x48, 0xa3, 0x86, 0xbb, 0xbf, 0x7d,
-	0xad, 0xd3, 0x7e, 0x62, 0xaa, 0xa5, 0x96, 0x74, 0x39, 0xba, 0x28, 0x22, 0xef, 0x43, 0xd9, 0xe5,
-	0xa3, 0x20, 0xf2, 0xe2, 0x46, 0x1d, 0x27, 0x7b, 0x77, 0x96, 0xdf, 0x8e, 0x84, 0xd0, 0x14, 0x4b,
-	0x3e, 0x81, 0x9a, 0x1f, 0xb0, 0xe8, 0x34, 0x78, 0xc1, 0x8e, 0x39, 0x6f, 0x2c, 0x5c, 0x1d, 0xd1,
-	0x5e, 0xd0, 0x3f, 0x0d, 0x5e, 0xec, 0x72, 0x4e, 0xab, 0x7e, 0xfa, 0x48, 0x0e, 0x60, 0x25, 0xe4,
-	0xbf, 0x1e, 0x7b, 0x21, 0x67, 0x4e, 0xc8, 0x5d, 0x2f, 0x66, 0x8e, 0x1d, 0xba, 0x8d, 0x45, 0xac,
-	0x0a, 0x6f, 0xcd, 0xde, 0x18, 0x84, 0xb7, 0x11, 0xdd, 0xb6, 0x43, 0x57, 0xe4, 0xc9, 0x05, 0x11,
-	0xf9, 0x2f, 0x58, 0x8c, 0x3d, 0xe7, 0x39, 0x8f, 0x59, 0x7c, 0x3e, 0xc2, 0x33, 0xbb, 0x84, 0xbb,
-	0x54, 0x97, 0x52, 0xeb, 0x7c, 0x24, 0x8e, 0x6d, 0x0c, 0x1b, 0x49, 0x1c, 0x44, 0x55, 0x0a, 0x45,
-	0x70, 0x83, 0x33, 0x1e, 0x86, 0x9e, 0xcb, 0xa3, 0x86, 0x82, 0x2b, 0xf9, 0xf0, 0xa6, 0xc1, 0xf5,
-	0xfc, 0x13, 0x3a, 0x1e, 0x70, 0x23, 0xb5, 0xa7, 0xeb, 0xd1, 0x6c, 0xc5, 0xe6, 0xb7, 0x00, 0x93,
-	0x5d, 0x26, 0x0f, 0x40, 0x09, 0xf9, 0x88, 0xdb, 0x31, 0x1b, 0xfb, 0xb1, 0x37, 0xc0, 0x0c, 0x91,
-	0x4c, 0xb7, 0x28, 0xe5, 0x07, 0x42, 0x2c, 0x92, 0x64, 0x82, 0xe4, 0x67, 0x3c, 0x3c, 0x47, 0xa4,
-	0x2c, 0x6c, 0x09, 0x52, 0x13, 0xe2, 0x3e, 0x77, 0x36, 0xbf, 0x84, 0xe5, 0x4b, 0x5b, 0x4e, 0x3e,
-	0x06, 0x10, 0xe4, 0xc8, 0x42, 0xdb, 0x3f, 0xe1, 0x49, 0x39, 0x98, 0xb9, 0x4f, 0x82, 0x25, 0xa9,
-	0x00, 0xd1, 0x6a, 0x9c, 0x3e, 0x6e, 0x6a, 0xb0, 0x7e, 0xc5, 0x42, 0x45, 0x52, 0x0c, 0xec, 0x28,
-	0x66, 0xc2, 0x8b, 0x7d, 0x34, 0xe0, 0xb9, 0x25, 0x2c, 0x09, 0xc5, 0x4e, 0x22, 0xef, 0x73, 0x47,
-	0xfd, 0x43, 0x01, 0xaa, 0x59, 0x66, 0x91, 0x0d, 0x10, 0x2c, 0x71, 0x7c, 0x3c, 0xe1, 0x9c, 0x32,
-	0xbe, 0x27, 0x84, 0x83, 0x2a, 0xdf, 0x1e, 0xf2, 0x8c, 0x70, 0x84, 0xa4, 0x67, 0x0f, 0x39, 0x59,
-	0x87, 0x72, 0x18, 0x04, 0x43, 0x61, 0x28, 0xa9, 0xfa, 0xb6, 0x78, 0x95, 0x4c, 0x84, 0x0a, 0x34,
-	0x93, 0xa4, 0x5c, 0x11, 0x02, 0xb4, 0xba, 0x07, 0x30, 0xb2, 0xc3, 0xf8, 0x9c, 0x45, 0xde, 0x77,
-	0xb2, 0xaa, 0xcf, 0xd3, 0x2a, 0x4a, 0xfa, 0xde, 0x77, 0x5c, 0x6d, 0x41, 0x35, 0x5b, 0xbb, 0x70,
-	0x74, 0xc4, 0x4f, 0x3c, 0x3f, 0xb7, 0x9a, 0x0a, 0x0a, 0xc4, 0x56, 0xac, 0x43, 0x59, 0x14, 0x9b,
-	0x74, 0x07, 0x4a, 0xf4, 0x36, 0xf7, 0x5d, 0xb1, 0xbe, 0xdf, 0x16, 0xa0, 0x96, 0xd4, 0xb5, 0x5f,
-	0xa0, 0x02, 0xbf, 0x0f, 0xe5, 0x84, 0x63, 0x93, 0xa2, 0x7b, 0xf7, 0x15, 0x45, 0x97, 0xa6, 0x58,
-	0xf5, 0x8f, 0x75, 0x28, 0x27, 0xc2, 0x9f, 0xcd, 0xec, 0x04, 0xe6, 0x30, 0x94, 0x32, 0xca, 0xf8,
-	0x4c, 0xb6, 0xa0, 0xe6, 0xf2, 0xc8, 0x09, 0x3d, 0xc9, 0x42, 0x32, 0xca, 0x79, 0x11, 0x79, 0x07,
-	0xe6, 0x47, 0xa1, 0x97, 0x74, 0x4e, 0xb5, 0xed, 0x8d, 0x59, 0xd3, 0x36, 0x05, 0x80, 0x4a, 0x1c,
-	0xf9, 0x7f, 0x98, 0x17, 0xe9, 0x17, 0x25, 0x85, 0xf1, 0xcd, 0x99, 0xeb, 0x9c, 0x3a, 0x7f, 0x11,
-	0x95, 0x16, 0xe4, 0x13, 0x98, 0x3b, 0x0e, 0xc2, 0x61, 0xa3, 0x8c, 0x11, 0x7a, 0xeb, 0x15, 0x11,
-	0xd2, 0xfd, 0xd8, 0x7e, 0xce, 0x77, 0x83, 0x70, 0xb8, 0x53, 0x6c, 0x14, 0x28, 0x9a, 0x91, 0x5d,
-	0xa8, 0x79, 0x28, 0x67, 0xe8, 0x65, 0x15, 0xc7, 0xbf, 0x99, 0x17, 0x0a, 0x5e, 0xf6, 0x4c, 0xbe,
-	0x81, 0xb5, 0x11, 0x0f, 0x59, 0xc2, 0x3a, 0x79, 0x97, 0x77, 0x7e, 0x8a, 0xcb, 0x95, 0x11, 0x0f,
-	0x2d, 0xf4, 0x31, 0x11, 0x92, 0x3e, 0x2c, 0x8d, 0x42, 0x9e, 0x56, 0x1e, 0xc1, 0x68, 0x58, 0xb9,
-	0x16, 0xb7, 0x1f, 0xbe, 0xc2, 0x69, 0xd3, 0xcc, 0x4c, 0x04, 0xdd, 0xd1, 0xc5, 0xd1, 0xd4, 0x3b,
-	0xf9, 0x00, 0x2a, 0xb1, 0xfd, 0x92, 0x85, 0x76, 0xcc, 0x1b, 0xd5, 0xab, 0x09, 0xdf, 0xb2, 0x5f,
-	0x52, 0x3b, 0xe6, 0xb4, 0x1c, 0xcb, 0x87, 0xd9, 0x35, 0x10, 0x66, 0xd7, 0xc0, 0x5c, 0x4d, 0xa9,
-	0xfd, 0xe7, 0x35, 0xa5, 0xfe, 0xcb, 0xd4, 0x94, 0x85, 0x9f, 0x59, 0x53, 0x3e, 0x83, 0x9a, 0x8d,
-	0x6d, 0x3b, 0x1b, 0x78, 0xfe, 0xf3, 0xc6, 0x22, 0x9e, 0xb7, 0xd7, 0x67, 0xd6, 0x07, 0x84, 0x75,
-	0x3d, 0xff, 0x39, 0x05, 0x3b, 0x7b, 0x26, 0x1f, 0xc1, 0x1c, 0xee, 0xdd, 0x12, 0x4e, 0xe4, 0x55,
-	0x0d, 0x74, 0xfa, 0x17, 0x37, 0x0e, 0x8d, 0xc4, 0xe8, 0xb9, 0x8a, 0xd6, 0x50, 0xae, 0x1e, 0xdd,
-	0xca, 0x4a, 0x1c, 0x85, 0x49, 0xb9, 0x23, 0x1a, 0x2c, 0x84, 0x7c, 0x60, 0xc7, 0xdc, 0x65, 0x43,
-	0xee, 0x7a, 0x76, 0x63, 0xf9, 0xea, 0xde, 0x91, 0x4a, 0xe0, 0xbe, 0xc0, 0xd1, 0x7a, 0x98, 0x7b,
-	0x23, 0xa7, 0xb0, 0x99, 0xdd, 0x0a, 0xe2, 0x38, 0xf4, 0x8e, 0xc6, 0x31, 0x67, 0x67, 0xf6, 0x60,
-	0x8c, 0xfc, 0x41, 0xd0, 0xe7, 0xa3, 0x57, 0xdd, 0x0d, 0x52, 0xa3, 0xaf, 0x84, 0x8d, 0xee, 0xd2,
-	0xf5, 0x68, 0xb6, 0x82, 0xec, 0xc1, 0xe2, 0x0b, 0xdb, 0x8b, 0x07, 0x5e, 0x14, 0x33, 0x49, 0x0e,
-	0x2b, 0x78, 0x10, 0xde, 0x98, 0xe5, 0xfd, 0x30, 0x41, 0x4a, 0x6a, 0x58, 0x78, 0x91, 0x7f, 0x55,
-	0xbf, 0x85, 0xc5, 0xe9, 0x64, 0x20, 0xf7, 0xe1, 0xae, 0x49, 0x35, 0xb3, 0xf5, 0x4c, 0x5c, 0xa0,
-	0x98, 0xf5, 0xcc, 0xd4, 0xd8, 0x41, 0xaf, 0x6f, 0x6a, 0x6d, 0x7d, 0x57, 0xd7, 0x3a, 0xca, 0x2d,
-	0x52, 0x87, 0x0a, 0xd5, 0xbe, 0x3c, 0xd0, 0xa9, 0xd6, 0x51, 0x0a, 0xe2, 0xcd, 0x30, 0x2d, 0xdd,
-	0xe8, 0x89, 0xbb, 0x16, 0x59, 0x86, 0x85, 0x9e, 0x61, 0xb1, 0xfe, 0x81, 0x69, 0x1a, 0xd4, 0xd2,
-	0x3a, 0x4a, 0x49, 0xfd, 0xf3, 0x84, 0xf7, 0xd1, 0xff, 0x6b, 0xd0, 0xe8, 0x6b, 0xf4, 0x2b, 0xbd,
-	0xad, 0xcd, 0x72, 0xfe, 0x26, 0xdc, 0x9f, 0xd2, 0x76, 0xf4, 0x9e, 0xde, 0xfb, 0x82, 0x51, 0x4d,
-	0x48, 0x5b, 0x62, 0x1c, 0xa5, 0x40, 0x5e, 0x87, 0xcd, 0x29, 0xd0, 0xae, 0x61, 0x74, 0x98, 0x41,
-	0x3b, 0x1a, 0xd5, 0x7b, 0x5f, 0x28, 0x45, 0x72, 0x0f, 0x36, 0xa6, 0xf4, 0xda, 0x57, 0xb8, 0x14,
-	0xbd, 0xfd, 0x54, 0xb3, 0x94, 0x92, 0xb8, 0x2c, 0x4e, 0xa9, 0x2d, 0xaa, 0x9b, 0xcc, 0x32, 0x0e,
-	0xa8, 0x32, 0xa7, 0x7e, 0x0f, 0xf3, 0xc8, 0xbe, 0xa2, 0x35, 0x47, 0xfe, 0x65, 0x43, 0xcf, 0x09,
-	0x83, 0x28, 0xa9, 0x73, 0x35, 0x94, 0xed, 0xa3, 0x88, 0xbc, 0x09, 0x0b, 0x49, 0xaf, 0x72, 0xce,
-	0x9c, 0xc0, 0x4d, 0x6b, 0x71, 0x3d, 0x15, 0xb6, 0x03, 0x97, 0x93, 0xc7, 0x40, 0x84, 0x8d, 0xe8,
-	0xa2, 0x12, 0x4e, 0x10, 0x1d, 0xb8, 0xac, 0x19, 0x4a, 0xa2, 0x91, 0xa4, 0x60, 0xd9, 0x27, 0xea,
-	0xdf, 0xe7, 0x60, 0xe9, 0x02, 0x99, 0x93, 0x77, 0x61, 0x65, 0xe8, 0xf9, 0xcc, 0x76, 0xcf, 0x6c,
-	0xdf, 0xe1, 0x2c, 0xd9, 0x5c, 0x39, 0xa1, 0xbd, 0x5b, 0x74, 0x79, 0xe8, 0xf9, 0x2d, 0xa9, 0xdb,
-	0x91, 0x2a, 0xf2, 0x14, 0x54, 0x61, 0x91, 0x20, 0xd9, 0xd1, 0xf8, 0xf8, 0x98, 0x87, 0xec, 0x88,
-	0x1f, 0x07, 0x21, 0x67, 0xe9, 0x55, 0x50, 0x5e, 0x15, 0xf6, 0x6e, 0xd1, 0x7b, 0x43, 0xcf, 0x4f,
-	0x2c, 0x77, 0x10, 0xb9, 0x83, 0x40, 0x4d, 0x5e, 0x0a, 0xc9, 0x67, 0xf0, 0x5a, 0x7e, 0xf8, 0xc0,
-	0x1f, 0x78, 0x3e, 0x67, 0x8e, 0x78, 0x11, 0x73, 0x4c, 0xaa, 0xfc, 0xc6, 0x64, 0x16, 0x06, 0x22,
-	0xda, 0x29, 0x80, 0x7c, 0x09, 0x77, 0x44, 0x92, 0x24, 0x26, 0x03, 0x79, 0xdb, 0x11, 0xe4, 0x55,
-	0xba, 0xa6, 0x02, 0x62, 0x29, 0x5a, 0x11, 0xb6, 0xed, 0x9c, 0xa9, 0xa0, 0xb1, 0x8f, 0x01, 0xfc,
-	0x20, 0x23, 0xc1, 0xb9, 0x9b, 0xf8, 0xa9, 0x4a, 0x03, 0x61, 0xfd, 0x2b, 0x50, 0x6c, 0x77, 0xe8,
-	0x45, 0x91, 0x98, 0xc8, 0x28, 0x18, 0x78, 0xce, 0x39, 0x56, 0xe3, 0xc5, 0xed, 0x27, 0x37, 0x28,
-	0xae, 0xcd, 0x56, 0x6a, 0x6b, 0xa2, 0x29, 0x5d, 0xb2, 0xa7, 0x05, 0xea, 0x6f, 0x60, 0xe9, 0x02,
-	0x86, 0x6c, 0xc1, 0x6b, 0xad, 0xce, 0xbe, 0xde, 0xef, 0xeb, 0x46, 0x8f, 0x99, 0x46, 0x57, 0x6f,
-	0x3f, 0xbb, 0x70, 0xf0, 0x97, 0xa0, 0x66, 0xe9, 0xfb, 0x1a, 0xeb, 0x5b, 0x54, 0x6f, 0x5b, 0x4a,
-	0x41, 0xa4, 0x12, 0x0a, 0x76, 0xbb, 0xda, 0xd7, 0xfa, 0x4e, 0x57, 0x53, 0x8a, 0xe4, 0xbf, 0x41,
-	0x15, 0xa2, 0x0e, 0xd3, 0x7a, 0x16, 0x7d, 0xc6, 0x0e, 0x75, 0x6b, 0x2f, 0x53, 0xb3, 0xce, 0x01,
-	0x95, 0xf9, 0x51, 0xda, 0x59, 0x05, 0x72, 0x79, 0xff, 0xd5, 0x26, 0x94, 0x93, 0x8a, 0x25, 0x4e,
-	0x2e, 0x1e, 0x6b, 0x36, 0xe2, 0xa1, 0xc3, 0x7d, 0xf9, 0x01, 0x61, 0x9e, 0xd6, 0x51, 0x68, 0x4a,
-	0x99, 0xfa, 0xb7, 0x22, 0xac, 0x5d, 0xaa, 0xc2, 0xbb, 0x1e, 0x1f, 0xb8, 0x64, 0x11, 0x8a, 0x9e,
-	0x8b, 0x31, 0xab, 0xd2, 0xa2, 0x27, 0xf8, 0x48, 0xd2, 0xb7, 0xfc, 0x62, 0xf5, 0xde, 0x8d, 0xea,
-	0x39, 0x7a, 0x6a, 0xe2, 0x6f, 0x8e, 0xcb, 0x57, 0x61, 0x7e, 0x60, 0x1f, 0xf1, 0x41, 0x92, 0x4b,
-	0xf2, 0x45, 0x48, 0x91, 0x47, 0x1b, 0x25, 0x2c, 0xa6, 0xf2, 0x45, 0x34, 0x70, 0x5e, 0xc4, 0x92,
-	0x6a, 0xe4, 0xe2, 0x31, 0xa8, 0x50, 0xf0, 0xa2, 0xa4, 0x64, 0xb9, 0xea, 0xef, 0x0a, 0x50, 0xcd,
-	0x06, 0x10, 0x69, 0xbf, 0xab, 0x6b, 0xdd, 0xce, 0x2c, 0xda, 0x51, 0xa0, 0xde, 0xdf, 0x33, 0xa8,
-	0xc5, 0x5a, 0xbd, 0xfe, 0xa1, 0x46, 0x95, 0x02, 0x59, 0x80, 0xaa, 0xd9, 0xa2, 0xad, 0x2f, 0x68,
-	0xcb, 0xdc, 0x53, 0x8a, 0x64, 0x05, 0x96, 0xf6, 0x0f, 0xba, 0x96, 0x6e, 0x76, 0x35, 0xd6, 0xde,
-	0x33, 0xf4, 0xb6, 0xa6, 0x94, 0xc8, 0x22, 0x40, 0x7b, 0x4f, 0x6b, 0x3f, 0xdd, 0x31, 0xbe, 0xd6,
-	0xfa, 0xca, 0x9c, 0xe0, 0xc2, 0x0e, 0x35, 0xcc, 0x8e, 0x71, 0xd8, 0x53, 0xe6, 0x49, 0x0d, 0xca,
-	0x3b, 0x86, 0xd1, 0xd5, 0x5a, 0x3d, 0xe5, 0xb6, 0xfa, 0x97, 0x02, 0x2c, 0x5f, 0x0a, 0x01, 0xf9,
-	0x1c, 0xe6, 0x8f, 0xc5, 0xfc, 0x1a, 0x05, 0x2c, 0x0e, 0x0f, 0x6f, 0x1e, 0x38, 0x2a, 0x0d, 0xc9,
-	0x7b, 0xb0, 0x7a, 0xec, 0x85, 0x91, 0xfc, 0x2a, 0xc4, 0x9c, 0x71, 0x14, 0x07, 0x43, 0x1e, 0x46,
-	0x18, 0xbe, 0x0a, 0x1e, 0x7c, 0x82, 0x7a, 0x91, 0xca, 0xed, 0x54, 0x4b, 0x9e, 0x88, 0x36, 0x20,
-	0x1e, 0x87, 0xbe, 0x38, 0x1e, 0x13, 0xa3, 0xd2, 0xc4, 0x28, 0x53, 0x67, 0x46, 0xea, 0x5f, 0x0b,
-	0x50, 0x4e, 0xfa, 0x11, 0xf2, 0x64, 0xd2, 0xbd, 0x14, 0xae, 0xeb, 0x63, 0xb3, 0xde, 0xe5, 0x02,
-	0x93, 0x4c, 0xf1, 0xc1, 0xe4, 0xbe, 0x90, 0x63, 0x92, 0x7c, 0xda, 0x8b, 0xbb, 0xc5, 0xe7, 0x50,
-	0x4f, 0x7c, 0xc9, 0x4a, 0x5f, 0xc2, 0xe3, 0x76, 0xef, 0xca, 0xa1, 0xf1, 0x5c, 0xd5, 0x12, 0x13,
-	0xf1, 0xa2, 0x86, 0x50, 0xcd, 0xfa, 0x22, 0xf2, 0x08, 0x4a, 0x82, 0x3e, 0xae, 0x5d, 0x80, 0x40,
-	0x91, 0x0f, 0xa1, 0x72, 0xcc, 0xf9, 0x4f, 0x18, 0xb7, 0x7c, 0xcc, 0xf1, 0x41, 0xfd, 0x53, 0x01,
-	0x60, 0xd2, 0xf6, 0x10, 0x05, 0x4a, 0xe3, 0x70, 0x90, 0x5c, 0x37, 0xc4, 0x23, 0xd9, 0x84, 0xca,
-	0xc0, 0xf6, 0x4f, 0xc6, 0xf6, 0x49, 0x5a, 0x42, 0xb2, 0x77, 0xf2, 0x36, 0x7e, 0x23, 0xc3, 0x2f,
-	0x5c, 0xdc, 0x65, 0x4e, 0x30, 0xf6, 0xe3, 0xf0, 0x3c, 0x49, 0x83, 0xe5, 0x89, 0xa6, 0x2d, 0x15,
-	0xe4, 0x53, 0xa8, 0x8c, 0x06, 0x76, 0x8c, 0xcd, 0xf5, 0x1c, 0xce, 0x52, 0xbd, 0xba, 0x0b, 0x33,
-	0x13, 0x24, 0xcd, 0x6c, 0xd4, 0xdf, 0x17, 0x00, 0x26, 0x4d, 0xd2, 0x8c, 0x6f, 0x05, 0x72, 0xda,
-	0xd3, 0xdf, 0x0a, 0x1e, 0xc1, 0x72, 0x74, 0x1a, 0x84, 0x31, 0xcb, 0x5f, 0x7d, 0xe4, 0x42, 0x14,
-	0x54, 0x74, 0x66, 0xdd, 0x7f, 0x4a, 0x37, 0xbb, 0xff, 0xa8, 0x3f, 0x14, 0xa1, 0x9e, 0x6f, 0xba,
-	0x66, 0x04, 0xf0, 0xd3, 0x84, 0x7e, 0x8a, 0x57, 0x77, 0xfe, 0x79, 0x0f, 0x4d, 0xfc, 0xcd, 0x91,
-	0x4e, 0x03, 0xca, 0x8e, 0x2d, 0xa7, 0x2d, 0x0b, 0x73, 0xfa, 0x4a, 0x7a, 0x50, 0x4b, 0x5b, 0xb9,
-	0xf4, 0x3e, 0x57, 0xdb, 0x7e, 0x7c, 0xed, 0x00, 0xad, 0x89, 0x0d, 0xcd, 0x3b, 0xd8, 0x7c, 0x03,
-	0x6a, 0x39, 0x9d, 0xb8, 0x42, 0xc6, 0xfc, 0x65, 0x9c, 0xac, 0x05, 0x9f, 0xd5, 0xc7, 0x50, 0xcd,
-	0xe6, 0x47, 0x56, 0x41, 0x99, 0xc1, 0x56, 0x55, 0x98, 0x37, 0xf7, 0x0c, 0xcb, 0x50, 0x0a, 0xea,
-	0x21, 0xac, 0x5f, 0xd1, 0x3d, 0x8a, 0x0e, 0x66, 0xd2, 0x86, 0x66, 0x5b, 0x97, 0x4d, 0x47, 0x40,
-	0x36, 0xa0, 0x92, 0xf5, 0xa7, 0x72, 0xc3, 0xca, 0x67, 0xd2, 0x5a, 0xfd, 0xa1, 0x00, 0x0b, 0x53,
-	0x9d, 0xa3, 0x38, 0x0c, 0x22, 0x7d, 0x73, 0x9f, 0x09, 0xb2, 0xaa, 0xe1, 0x9b, 0xe9, 0x97, 0x02,
-	0x44, 0xd9, 0x2f, 0xf3, 0xa8, 0x62, 0x82, 0xb2, 0x5f, 0x4e, 0x50, 0x9f, 0xc2, 0xdd, 0x68, 0x3c,
-	0x1a, 0x05, 0x61, 0x1c, 0x31, 0xdb, 0x75, 0x3d, 0x11, 0x0d, 0x7b, 0x80, 0x5c, 0xce, 0x23, 0xf9,
-	0x8d, 0xb9, 0x42, 0x37, 0x52, 0x48, 0x2b, 0x43, 0x50, 0x09, 0x78, 0xf8, 0x04, 0xaa, 0x59, 0xa6,
-	0x91, 0x35, 0x20, 0xbb, 0xfa, 0xd7, 0x5a, 0x87, 0xd1, 0x96, 0xa5, 0xb1, 0x8e, 0xb6, 0xdb, 0x3a,
-	0xe8, 0x5a, 0xca, 0x2d, 0x41, 0xcf, 0xa6, 0x46, 0x99, 0xa9, 0xd1, 0xbe, 0x68, 0x1b, 0x1f, 0x7e,
-	0x0f, 0xcb, 0x97, 0x6e, 0x33, 0xa2, 0xe1, 0x4c, 0xba, 0x59, 0xd6, 0xa6, 0x5a, 0x47, 0xb7, 0x58,
-	0xbb, 0x45, 0x3b, 0x97, 0xbb, 0xd2, 0x59, 0xa0, 0xb6, 0xd1, 0xeb, 0xe8, 0x49, 0xef, 0x8b, 0x5d,
-	0xe9, 0x2c, 0x50, 0xab, 0x7b, 0xd8, 0x7a, 0xd6, 0x57, 0x8a, 0x0f, 0x7f, 0x2c, 0xc0, 0xe2, 0x74,
-	0xe2, 0x89, 0x5e, 0xbb, 0xd5, 0xb6, 0xb0, 0x27, 0xe8, 0xb6, 0xac, 0x5d, 0x83, 0xee, 0x5f, 0x1e,
-	0xf8, 0x22, 0xe0, 0x50, 0xdb, 0x61, 0x2d, 0xd3, 0xec, 0xea, 0xed, 0x5c, 0x3b, 0x7c, 0x11, 0xb4,
-	0x6f, 0xec, 0xe8, 0x5d, 0x4d, 0x60, 0x95, 0x22, 0xb9, 0x0b, 0xeb, 0x17, 0xf5, 0xad, 0x5e, 0x87,
-	0x1a, 0x7a, 0x47, 0x29, 0x91, 0x75, 0x58, 0xb9, 0xa8, 0xd4, 0x8d, 0xbe, 0x32, 0x77, 0x74, 0x1b,
-	0xff, 0x87, 0xf5, 0xe4, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x88, 0x76, 0xcd, 0xf3, 0x1a,
-	0x00, 0x00,
+var fileDescriptor_7aa923a38d4cd9d3 = []byte{
+	// 2773 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0xdf, 0x72, 0xdb, 0xc6,
+	0xd5, 0x37, 0x49, 0xc9, 0x24, 0x0f, 0x29, 0x09, 0x5c, 0xc9, 0x16, 0x2d, 0x47, 0xb1, 0x8c, 0x7c,
+	0xf9, 0xea, 0xda, 0x89, 0x9a, 0xc8, 0x49, 0x26, 0x9d, 0xfc, 0xa5, 0x48, 0x28, 0xc2, 0x98, 0x22,
+	0x90, 0x25, 0x14, 0xc5, 0xb9, 0xc8, 0x06, 0x02, 0x56, 0x12, 0xc6, 0x24, 0xc0, 0x02, 0xa0, 0x6c,
+	0x65, 0x9a, 0xe9, 0x4c, 0xaf, 0xfa, 0x0c, 0xcd, 0x4c, 0xef, 0x3b, 0xcd, 0x3b, 0xb4, 0xbd, 0xed,
+	0x7d, 0x2f, 0xfa, 0x14, 0x7d, 0x80, 0xde, 0x74, 0xf6, 0x2c, 0x08, 0x82, 0x12, 0x64, 0x29, 0x4d,
+	0x6e, 0x28, 0xec, 0x39, 0xbf, 0x73, 0x76, 0xf7, 0xec, 0xee, 0xf9, 0x9d, 0x5d, 0x41, 0xed, 0x88,
+	0x73, 0x37, 0xda, 0x1c, 0x85, 0x41, 0x1c, 0x10, 0x32, 0xb4, 0x47, 0xd1, 0xe6, 0x61, 0x10, 0x3c,
+	0xf3, 0xfc, 0xe3, 0x4d, 0xd4, 0xa8, 0xff, 0x2e, 0x42, 0x7d, 0x87, 0x73, 0x77, 0x8f, 0xc7, 0xb6,
+	0x6b, 0xc7, 0x36, 0x19, 0xc2, 0xed, 0x51, 0x18, 0x38, 0x3c, 0x8a, 0x3c, 0xff, 0x98, 0x79, 0x7e,
+	0x14, 0x87, 0x63, 0x27, 0xf6, 0x02, 0xbf, 0x59, 0xd8, 0x28, 0x3c, 0x58, 0xdc, 0x7a, 0x6f, 0xf3,
+	0xa2, 0x97, 0xcd, 0xac, 0x87, 0x4d, 0x33, 0x35, 0xd7, 0xa7, 0xd6, 0xf4, 0xd6, 0x28, 0x4f, 0x4c,
+	0xee, 0x43, 0x3d, 0x3a, 0xb1, 0x43, 0x97, 0xf9, 0xe3, 0xe1, 0x21, 0x0f, 0x9b, 0xc5, 0x8d, 0xc2,
+	0x83, 0x79, 0x5a, 0x43, 0x59, 0x0f, 0x45, 0x02, 0x12, 0x07, 0xb1, 0x3d, 0x60, 0x28, 0x8c, 0x9a,
+	0x25, 0x09, 0x41, 0x59, 0x1f, 0x45, 0x64, 0x05, 0xe6, 0xfd, 0xc0, 0x77, 0x78, 0x73, 0x7e, 0xa3,
+	0xf0, 0x60, 0x8e, 0xca, 0x06, 0x79, 0x1b, 0x56, 0x8e, 0xb9, 0xcf, 0x43, 0x5b, 0xf4, 0xc4, 0x62,
+	0x6f, 0xc8, 0xa3, 0xd8, 0x1e, 0x8e, 0x9a, 0x73, 0x1b, 0x85, 0x07, 0x25, 0xba, 0x3c, 0xd5, 0x59,
+	0x13, 0x95, 0x6a, 0xc3, 0xad, 0xdc, 0xe1, 0x93, 0x65, 0x58, 0x32, 0xa9, 0xd1, 0xd6, 0xfa, 0x7d,
+	0xb6, 0xdf, 0x7b, 0xd2, 0x33, 0x0e, 0x7a, 0xca, 0x0d, 0xb2, 0x0a, 0xcb, 0x13, 0x61, 0xab, 0xcf,
+	0xda, 0xc6, 0x9e, 0xd9, 0xd5, 0x2c, 0x4d, 0x29, 0x90, 0x35, 0xb8, 0x9d, 0x51, 0xe8, 0xbd, 0x36,
+	0xd5, 0xf6, 0xb4, 0x9e, 0xd5, 0xea, 0x2a, 0x45, 0xf5, 0x87, 0x02, 0x28, 0xad, 0x53, 0xdb, 0x1b,
+	0xd8, 0x87, 0xde, 0xc0, 0x8b, 0xcf, 0x44, 0xec, 0xc8, 0x87, 0x50, 0x19, 0x26, 0xf1, 0xc3, 0x38,
+	0xd7, 0xb6, 0x36, 0xae, 0x8a, 0x33, 0x4d, 0x2d, 0xc8, 0x57, 0xb0, 0x12, 0xf1, 0xf0, 0xd4, 0x73,
+	0x38, 0xb3, 0x33, 0x9e, 0x9b, 0xc5, 0x8d, 0xd2, 0x83, 0xda, 0xd6, 0x2f, 0xf2, 0x3c, 0xf5, 0x25,
+	0x3e, 0x3b, 0x10, 0xba, 0x1c, 0x5d, 0x14, 0xaa, 0xff, 0x29, 0xc2, 0x72, 0x0e, 0x98, 0xbc, 0x0f,
+	0xcd, 0x28, 0xb6, 0xc3, 0x78, 0x1a, 0x57, 0x16, 0xf2, 0x28, 0x0e, 0x3d, 0x27, 0xc6, 0x19, 0x94,
+	0xe8, 0x6d, 0xd4, 0xa7, 0xb1, 0xa5, 0x89, 0x96, 0xbc, 0x03, 0xb7, 0xb9, 0xef, 0xe6, 0xd9, 0x15,
+	0xd1, 0x6e, 0x85, 0xfb, 0xee, 0x45, 0xab, 0xb7, 0x60, 0x65, 0xc8, 0x43, 0xe7, 0xc4, 0xf6, 0x63,
+	0xe6, 0xb9, 0x53, 0x1b, 0xb1, 0x1b, 0xaa, 0x94, 0x4c, 0x74, 0xba, 0x9b, 0x5a, 0x6c, 0xc2, 0x64,
+	0x42, 0x33, 0x06, 0x73, 0x68, 0xd0, 0x48, 0x54, 0x19, 0x7c, 0x17, 0x48, 0xc8, 0xa3, 0x60, 0x1c,
+	0x3a, 0x3c, 0x9a, 0xc2, 0x6f, 0xe2, 0x6a, 0xac, 0xe7, 0xc5, 0x90, 0x4e, 0xd0, 0xb4, 0x91, 0x1a,
+	0xa6, 0xde, 0x3a, 0x50, 0x9f, 0x59, 0x8b, 0x79, 0x5c, 0x8b, 0xdc, 0x55, 0x9d, 0x59, 0x84, 0x19,
+	0x2b, 0xf5, 0x9f, 0x00, 0xf5, 0x99, 0xb0, 0xdf, 0x83, 0x5a, 0x26, 0x0c, 0x18, 0xe9, 0x2a, 0x85,
+	0xe9, 0xec, 0xc9, 0x3a, 0xc0, 0x74, 0xd6, 0x18, 0xd1, 0x2a, 0xad, 0xa6, 0x93, 0x25, 0x77, 0xa1,
+	0x2a, 0x97, 0x2d, 0xe2, 0x0e, 0xc6, 0xae, 0x44, 0x2b, 0x28, 0xe8, 0x73, 0x47, 0x9c, 0x34, 0x77,
+	0x9c, 0x1c, 0x17, 0xa1, 0x97, 0x07, 0xa5, 0x36, 0x91, 0x09, 0xc8, 0x3d, 0xa8, 0x45, 0xa3, 0x20,
+	0x8e, 0x18, 0x1e, 0x3f, 0x3c, 0x6f, 0x25, 0x0a, 0x28, 0xb2, 0x84, 0x04, 0xfb, 0x47, 0x40, 0x30,
+	0xe2, 0x3e, 0x46, 0xaf, 0x44, 0xab, 0x28, 0x31, 0x46, 0xdc, 0x27, 0xbf, 0x04, 0x25, 0x3b, 0x41,
+	0x16, 0xdb, 0xc7, 0xcd, 0x32, 0x0e, 0x72, 0x29, 0x2b, 0xb7, 0xec, 0x63, 0xf2, 0x01, 0x54, 0xd3,
+	0xb0, 0x36, 0x2b, 0xd7, 0x59, 0x86, 0x29, 0x9e, 0x3c, 0x84, 0xc6, 0xc8, 0x3e, 0x1b, 0x72, 0x3f,
+	0x66, 0xc1, 0x08, 0x27, 0xe4, 0xb9, 0xcd, 0xea, 0x46, 0x49, 0x74, 0x94, 0x28, 0x0c, 0x94, 0xeb,
+	0x2e, 0x79, 0x02, 0x10, 0x72, 0x67, 0x1c, 0x86, 0x5c, 0xa4, 0x10, 0xc0, 0x9e, 0x1e, 0x5d, 0xb5,
+	0x50, 0x9b, 0x34, 0x35, 0xa1, 0x19, 0x73, 0x62, 0x03, 0x89, 0x9c, 0x13, 0xee, 0x8e, 0x07, 0x9c,
+	0xf1, 0x17, 0x0e, 0xc7, 0x4e, 0x9a, 0x35, 0x5c, 0xfd, 0xad, 0x2b, 0x9d, 0xf6, 0x13, 0x53, 0x6d,
+	0x62, 0x49, 0x1b, 0xd1, 0x79, 0x11, 0x79, 0x17, 0xca, 0x2e, 0x1f, 0x05, 0x91, 0x17, 0x37, 0xeb,
+	0x38, 0xd8, 0xbb, 0x79, 0x7e, 0x3b, 0x12, 0x42, 0x27, 0x58, 0xf2, 0x11, 0xd4, 0xfc, 0x80, 0x45,
+	0x27, 0xc1, 0x73, 0x76, 0xc4, 0x79, 0x73, 0xe1, 0xf2, 0x88, 0xf6, 0x82, 0xfe, 0x49, 0xf0, 0x7c,
+	0x87, 0x73, 0x5a, 0xf5, 0x27, 0x9f, 0x64, 0x1f, 0x96, 0x43, 0xfe, 0x9b, 0xb1, 0x17, 0x72, 0xe6,
+	0x84, 0xdc, 0xf5, 0x62, 0xe6, 0xd8, 0xa1, 0xdb, 0x5c, 0x44, 0x56, 0x78, 0x3d, 0x7f, 0x61, 0x10,
+	0xde, 0x46, 0x74, 0xdb, 0x0e, 0x5d, 0x71, 0x4e, 0xce, 0x89, 0xc8, 0xff, 0xc1, 0x62, 0xec, 0x39,
+	0xcf, 0x78, 0xcc, 0xe2, 0xb3, 0x11, 0xee, 0xd9, 0x25, 0x5c, 0xa5, 0xba, 0x94, 0x5a, 0x67, 0x23,
+	0xb1, 0x6d, 0x63, 0xb8, 0x93, 0xc4, 0x41, 0xb0, 0x52, 0x28, 0x82, 0x1b, 0x9c, 0xf2, 0x30, 0xf4,
+	0x5c, 0x1e, 0x35, 0x15, 0x9c, 0xc9, 0xfb, 0xd7, 0x0d, 0xae, 0xe7, 0x1f, 0xd3, 0xf1, 0x80, 0x1b,
+	0x13, 0x7b, 0xba, 0x1a, 0xe5, 0x2b, 0xc8, 0xd7, 0xd0, 0x70, 0x02, 0xff, 0xc8, 0x0b, 0x87, 0xf2,
+	0x4c, 0x0c, 0x03, 0x97, 0x37, 0x1b, 0x38, 0xe1, 0xb7, 0xaf, 0xec, 0xad, 0x9d, 0xb1, 0xdc, 0x0b,
+	0x5c, 0x4e, 0x15, 0xe7, 0x9c, 0x64, 0xed, 0x1b, 0x80, 0xe9, 0x2e, 0x22, 0x0f, 0x40, 0x09, 0xf9,
+	0x88, 0xdb, 0x31, 0x1b, 0xfb, 0xb1, 0x37, 0xc0, 0x13, 0x28, 0x33, 0xe9, 0xa2, 0x94, 0xef, 0x0b,
+	0xb1, 0x38, 0x84, 0x53, 0x24, 0x3f, 0xe5, 0xe1, 0x19, 0x22, 0x25, 0x71, 0x26, 0x48, 0x4d, 0x88,
+	0xfb, 0xdc, 0x59, 0xfb, 0x1c, 0x1a, 0x17, 0xb6, 0x14, 0xf9, 0x10, 0x40, 0x24, 0x5f, 0x16, 0xda,
+	0xfe, 0x31, 0x4f, 0xe8, 0x26, 0x77, 0x1f, 0x88, 0x2c, 0x4c, 0x05, 0x88, 0x56, 0xe3, 0xc9, 0xe7,
+	0x9a, 0x06, 0xab, 0x97, 0x04, 0x52, 0x1c, 0xba, 0x81, 0x1d, 0xc5, 0x4c, 0x78, 0xb1, 0x0f, 0x07,
+	0x3c, 0x33, 0x85, 0x25, 0xa1, 0xd8, 0x4e, 0xe4, 0x7d, 0xee, 0xa8, 0xbf, 0x05, 0xe5, 0x7c, 0x84,
+	0xc8, 0x7d, 0x58, 0x6f, 0x1b, 0xbd, 0x1d, 0x9d, 0xee, 0xb5, 0x2c, 0xdd, 0xe8, 0xb1, 0x3d, 0xa3,
+	0xa3, 0xb1, 0xfd, 0x5e, 0xdf, 0xd4, 0xda, 0xfa, 0x8e, 0xae, 0x75, 0x94, 0x1b, 0xf9, 0x90, 0xfe,
+	0xd3, 0x5e, 0x7b, 0x97, 0x1a, 0x3d, 0x63, 0xbf, 0xaf, 0x14, 0x88, 0x0a, 0xaf, 0x5e, 0x84, 0xb4,
+	0xb2, 0x98, 0xa2, 0xfa, 0xc7, 0x02, 0x54, 0xd3, 0xbc, 0x41, 0xee, 0x80, 0xc8, 0x81, 0x47, 0x47,
+	0xd3, 0x8c, 0x5a, 0xc6, 0x76, 0x92, 0x4e, 0x51, 0xe5, 0xdb, 0x43, 0x9e, 0xa6, 0x53, 0x21, 0xe9,
+	0xd9, 0x43, 0x4e, 0x56, 0xa1, 0x1c, 0x06, 0xc1, 0x50, 0x18, 0x4a, 0x22, 0xba, 0x29, 0x9a, 0x32,
+	0xcf, 0xa2, 0x02, 0xcd, 0x24, 0xe5, 0x54, 0x84, 0x00, 0xad, 0xd6, 0x01, 0x46, 0x76, 0x18, 0x9f,
+	0xb1, 0xc8, 0xfb, 0x56, 0xd6, 0x2c, 0xf3, 0xb4, 0x8a, 0x92, 0xbe, 0xf7, 0x2d, 0x57, 0x5b, 0x50,
+	0x4d, 0x23, 0x2f, 0x1c, 0x1d, 0xf2, 0x63, 0xcf, 0xcf, 0xc4, 0xb2, 0x82, 0x02, 0xb1, 0x11, 0x56,
+	0xa1, 0x2c, 0xa8, 0x74, 0xb2, 0xfe, 0x25, 0x7a, 0x93, 0xfb, 0xae, 0x88, 0xee, 0xef, 0x0b, 0x50,
+	0x4b, 0x58, 0xfb, 0x67, 0xa8, 0x2f, 0xde, 0x85, 0x72, 0xc2, 0x20, 0x49, 0x49, 0x71, 0xf7, 0x25,
+	0x25, 0x05, 0x9d, 0x60, 0xd5, 0x3f, 0xd5, 0xa1, 0x9c, 0x08, 0x7f, 0x32, 0x6f, 0x11, 0x98, 0xc3,
+	0x50, 0xca, 0x28, 0xe3, 0x37, 0xd9, 0x80, 0x9a, 0xcb, 0x23, 0x27, 0xf4, 0x64, 0x8e, 0x95, 0x51,
+	0xce, 0x8a, 0xc8, 0xaf, 0x60, 0x7e, 0x14, 0x7a, 0x49, 0x5d, 0x58, 0xdb, 0xba, 0x93, 0x37, 0x6c,
+	0x53, 0x00, 0xa8, 0xc4, 0x91, 0x5f, 0xc3, 0xbc, 0x48, 0x2e, 0x51, 0x42, 0xfb, 0xaf, 0xe5, 0xce,
+	0x73, 0x66, 0xf7, 0x47, 0x54, 0x5a, 0x90, 0x8f, 0x60, 0xee, 0x28, 0x08, 0x87, 0xcd, 0x32, 0x46,
+	0xe8, 0xf5, 0x97, 0x44, 0x48, 0xf7, 0x63, 0xfb, 0x19, 0xdf, 0x09, 0xc2, 0xe1, 0x76, 0xb1, 0x59,
+	0xa0, 0x68, 0x46, 0x76, 0xa0, 0xe6, 0xa1, 0x9c, 0xa1, 0x97, 0x15, 0xec, 0xff, 0x7a, 0x5e, 0x28,
+	0x78, 0xe9, 0x37, 0xf9, 0x0a, 0x6e, 0x8f, 0x78, 0xc8, 0x92, 0x9c, 0x9a, 0x75, 0x79, 0xeb, 0xc7,
+	0xb8, 0x5c, 0x1e, 0xf1, 0xd0, 0x42, 0x1f, 0x53, 0x21, 0xe9, 0xc3, 0xd2, 0x28, 0xe4, 0x13, 0x5e,
+	0x15, 0xf9, 0x1a, 0x79, 0x79, 0x71, 0xeb, 0xe1, 0x4b, 0x9c, 0x6e, 0x9a, 0xa9, 0x89, 0x48, 0xe6,
+	0x74, 0x71, 0x34, 0xd3, 0x26, 0xef, 0x41, 0x25, 0xb6, 0x5f, 0xb0, 0xd0, 0x8e, 0x79, 0xb3, 0x7a,
+	0x39, 0x9d, 0x59, 0xf6, 0x0b, 0x6a, 0xc7, 0x9c, 0x96, 0x63, 0xf9, 0x91, 0xcf, 0xf0, 0x90, 0xcf,
+	0xf0, 0x19, 0xc6, 0xac, 0xfd, 0xef, 0x8c, 0x59, 0xff, 0x79, 0x18, 0x73, 0xe1, 0x27, 0x32, 0xe6,
+	0x27, 0x50, 0xb3, 0xf1, 0x52, 0xc2, 0x06, 0x9e, 0xff, 0xac, 0xb9, 0x88, 0xfb, 0xed, 0xd5, 0x5c,
+	0x3e, 0x42, 0x58, 0xd7, 0xf3, 0x9f, 0x51, 0xb0, 0xd3, 0x6f, 0xf2, 0x01, 0xcc, 0xe1, 0xda, 0x2d,
+	0xe1, 0x40, 0x5e, 0x76, 0x3d, 0x98, 0xfc, 0xc5, 0x85, 0x43, 0x23, 0xd1, 0x7b, 0x86, 0xaf, 0x9b,
+	0xca, 0xe5, 0xbd, 0x5b, 0x29, 0x81, 0x53, 0x98, 0x92, 0x39, 0xd1, 0x60, 0x21, 0xe4, 0x03, 0x3b,
+	0xe6, 0x2e, 0x1b, 0x72, 0xd7, 0xb3, 0x9b, 0x8d, 0xcb, 0x2b, 0x63, 0x2a, 0x81, 0x7b, 0x02, 0x47,
+	0xeb, 0x61, 0xa6, 0x45, 0x4e, 0x60, 0x2d, 0xbd, 0xf3, 0xc4, 0x71, 0xe8, 0x1d, 0x8e, 0x63, 0xce,
+	0x4e, 0xed, 0xc1, 0x18, 0xf3, 0x07, 0x41, 0x9f, 0x8f, 0x5e, 0x76, 0xf3, 0x99, 0x18, 0x7d, 0x21,
+	0x6c, 0x74, 0x97, 0xae, 0x46, 0xf9, 0x0a, 0xb2, 0x0b, 0x8b, 0xcf, 0x6d, 0x2f, 0x1e, 0x78, 0x51,
+	0xcc, 0x64, 0x72, 0x58, 0xc6, 0x8d, 0x70, 0x3f, 0xcf, 0xfb, 0x41, 0x82, 0x94, 0xa9, 0x61, 0xe1,
+	0x79, 0xb6, 0xa9, 0x7e, 0x03, 0x8b, 0xb3, 0x87, 0x81, 0xdc, 0x83, 0xbb, 0x26, 0xd5, 0xcc, 0xd6,
+	0x53, 0x71, 0x3d, 0x64, 0xd6, 0x53, 0xf3, 0x3c, 0xdf, 0xd5, 0xa1, 0x42, 0xb5, 0xcf, 0xf7, 0x75,
+	0xaa, 0x75, 0x94, 0x82, 0x68, 0x19, 0xa6, 0x20, 0x35, 0x71, 0x93, 0x24, 0x0d, 0x58, 0xe8, 0x19,
+	0x16, 0xeb, 0xef, 0x9b, 0xa6, 0x41, 0x2d, 0xad, 0xa3, 0x94, 0xd4, 0xbf, 0x4c, 0xf3, 0x3e, 0xfa,
+	0x7f, 0x05, 0x9a, 0x7d, 0x8d, 0x7e, 0xa1, 0xb7, 0xb5, 0x3c, 0xe7, 0xaf, 0xc1, 0xbd, 0x19, 0x6d,
+	0x47, 0xef, 0xe9, 0xbd, 0xcf, 0x18, 0xd5, 0x84, 0x14, 0xc9, 0x53, 0x29, 0x90, 0x57, 0x61, 0x6d,
+	0x06, 0xb4, 0x63, 0x18, 0x1d, 0x66, 0xd0, 0x8e, 0x46, 0xf5, 0xde, 0x67, 0x4a, 0x91, 0xac, 0xc3,
+	0x9d, 0x19, 0xbd, 0xf6, 0x05, 0x4e, 0x45, 0x6f, 0x3f, 0xd1, 0x2c, 0xa5, 0x24, 0xae, 0xc2, 0x33,
+	0x6a, 0x8b, 0xea, 0x26, 0xb3, 0x8c, 0x7d, 0xaa, 0xcc, 0xa9, 0xdf, 0xc1, 0x3c, 0x66, 0x5f, 0x71,
+	0xf1, 0xc0, 0xfc, 0xcb, 0x86, 0x9e, 0x13, 0x06, 0x51, 0xc2, 0x73, 0x35, 0x94, 0xed, 0xa1, 0x88,
+	0xbc, 0x06, 0x0b, 0x49, 0xa5, 0x74, 0xc6, 0x1c, 0x51, 0x87, 0x49, 0x8a, 0xa8, 0x4f, 0x84, 0x6d,
+	0x51, 0x40, 0xbc, 0x01, 0x44, 0xd8, 0x88, 0x1a, 0x31, 0xc9, 0x09, 0xe2, 0x7e, 0x21, 0x39, 0x43,
+	0x49, 0x34, 0x32, 0x29, 0x58, 0xf6, 0xb1, 0xfa, 0xaf, 0x39, 0x58, 0x3a, 0x97, 0xcc, 0xc9, 0x5b,
+	0xb0, 0x3c, 0xf4, 0x7c, 0x66, 0xbb, 0xa7, 0xb6, 0xef, 0x70, 0x96, 0x2c, 0xae, 0x1c, 0xd0, 0xee,
+	0x0d, 0xda, 0x18, 0x7a, 0x7e, 0x4b, 0xea, 0xb6, 0xa5, 0x8a, 0x3c, 0x01, 0x55, 0x58, 0x24, 0x48,
+	0x76, 0x38, 0x3e, 0x3a, 0xe2, 0x21, 0x3b, 0xe4, 0x47, 0x41, 0xc8, 0xd9, 0xe4, 0xa2, 0x2b, 0x2f,
+	0x42, 0xbb, 0x37, 0xe8, 0xfa, 0xd0, 0xf3, 0x13, 0xcb, 0x6d, 0x44, 0x6e, 0x23, 0x50, 0x93, 0x57,
+	0x5e, 0xf2, 0x09, 0xbc, 0x92, 0xed, 0x3e, 0xf0, 0x07, 0x9e, 0xcf, 0x99, 0x23, 0x1a, 0x62, 0x8c,
+	0x09, 0xcb, 0xdf, 0x99, 0x8e, 0xc2, 0x40, 0x44, 0x7b, 0x02, 0x20, 0x9f, 0xc3, 0x2d, 0x71, 0x48,
+	0x12, 0x93, 0x81, 0xac, 0x5b, 0x45, 0xf2, 0x2a, 0x5d, 0xc1, 0x80, 0x48, 0x45, 0xcb, 0xc2, 0xb6,
+	0x9d, 0x31, 0x15, 0x69, 0xec, 0x43, 0x00, 0x3f, 0x48, 0x93, 0xe0, 0xdc, 0x75, 0xfc, 0x54, 0xa5,
+	0x81, 0xb0, 0xfe, 0x1a, 0x14, 0xdb, 0x1d, 0x7a, 0x51, 0x24, 0x06, 0x32, 0x0a, 0x06, 0x9e, 0x73,
+	0x86, 0x6c, 0xbc, 0xb8, 0xf5, 0xf8, 0x1a, 0xe4, 0xba, 0xd9, 0x9a, 0xd8, 0x9a, 0x68, 0x4a, 0x97,
+	0xec, 0x59, 0x81, 0xfa, 0x3b, 0x58, 0x3a, 0x87, 0x21, 0x1b, 0xf0, 0x4a, 0xab, 0xb3, 0xa7, 0xf7,
+	0xfb, 0xa2, 0xfa, 0x33, 0x8d, 0xae, 0xde, 0x7e, 0x7a, 0x6e, 0xe3, 0x2f, 0x41, 0xcd, 0xd2, 0xf7,
+	0x34, 0xd6, 0xb7, 0xa8, 0xde, 0xb6, 0x94, 0x82, 0x38, 0x4a, 0x28, 0xd8, 0xe9, 0x6a, 0x5f, 0xea,
+	0xdb, 0x5d, 0x4d, 0x29, 0x92, 0xff, 0x07, 0x55, 0x88, 0x3a, 0x4c, 0xeb, 0x59, 0xf4, 0x29, 0x3b,
+	0xd0, 0xad, 0xdd, 0x54, 0xcd, 0x3a, 0xfb, 0x54, 0x9e, 0x8f, 0xd2, 0xf6, 0x0a, 0x90, 0x8b, 0xeb,
+	0xaf, 0x6e, 0x42, 0x39, 0x61, 0x2c, 0xb1, 0x73, 0x71, 0x5b, 0xb3, 0x11, 0x0f, 0x1d, 0xee, 0xcb,
+	0xe7, 0x91, 0x79, 0x5a, 0x47, 0xa1, 0x29, 0x65, 0xea, 0x3f, 0x8a, 0x70, 0xfb, 0x02, 0x0b, 0xef,
+	0x78, 0x7c, 0xe0, 0x92, 0x45, 0x28, 0x7a, 0x2e, 0xc6, 0xac, 0x4a, 0x8b, 0x9e, 0xc8, 0x47, 0x32,
+	0x7d, 0xcb, 0xf7, 0xb8, 0x77, 0xae, 0xc5, 0xe7, 0xe8, 0x69, 0x13, 0x7f, 0x33, 0xb9, 0x7c, 0x05,
+	0xe6, 0x07, 0xf6, 0x21, 0x1f, 0x24, 0x67, 0x49, 0x36, 0x84, 0x14, 0xf3, 0x68, 0xb3, 0x84, 0x64,
+	0x2a, 0x1b, 0xa2, 0x80, 0xf3, 0x22, 0x96, 0xb0, 0x91, 0x8b, 0xdb, 0xa0, 0x42, 0xc1, 0x8b, 0x12,
+	0xca, 0x72, 0xd5, 0x3f, 0x14, 0xa0, 0x9a, 0x76, 0x20, 0x8e, 0xfd, 0x8e, 0xae, 0x75, 0x3b, 0x79,
+	0x69, 0x47, 0x81, 0x7a, 0x7f, 0xd7, 0xa0, 0x16, 0x6b, 0xf5, 0xfa, 0x07, 0x1a, 0x55, 0x0a, 0x64,
+	0x01, 0xaa, 0x66, 0x8b, 0xb6, 0x3e, 0xa3, 0x2d, 0x73, 0x57, 0x29, 0x92, 0x65, 0x58, 0xda, 0xdb,
+	0xef, 0x5a, 0xba, 0xd9, 0xd5, 0x58, 0x7b, 0xd7, 0xd0, 0xdb, 0x9a, 0x52, 0x22, 0x8b, 0x00, 0xed,
+	0x5d, 0xad, 0xfd, 0x64, 0xdb, 0xf8, 0x52, 0xeb, 0x2b, 0x73, 0x22, 0x17, 0x76, 0xa8, 0x61, 0x76,
+	0x8c, 0x83, 0x9e, 0x32, 0x4f, 0x6a, 0x50, 0xde, 0x36, 0x8c, 0xae, 0xd6, 0xea, 0x29, 0x37, 0xd5,
+	0xbf, 0x15, 0xa0, 0x71, 0x21, 0x04, 0xe4, 0x53, 0x98, 0x3f, 0x12, 0xe3, 0x6b, 0x16, 0x90, 0x1c,
+	0x1e, 0x5e, 0x3f, 0x70, 0x54, 0x1a, 0x92, 0x77, 0x60, 0xe5, 0xc8, 0x0b, 0x23, 0xf9, 0xe6, 0xc5,
+	0x9c, 0x71, 0x14, 0x07, 0x43, 0x1e, 0x46, 0x18, 0xbe, 0x0a, 0x6e, 0x7c, 0x82, 0x7a, 0x71, 0x94,
+	0xdb, 0x13, 0x2d, 0x79, 0x2c, 0xca, 0x80, 0x78, 0x1c, 0xfa, 0x62, 0x7b, 0x4c, 0x8d, 0x4a, 0x53,
+	0xa3, 0x54, 0x9d, 0x1a, 0xa9, 0x7f, 0x2f, 0x40, 0x39, 0xa9, 0x47, 0xc8, 0xe3, 0x69, 0xf5, 0x52,
+	0xb8, 0xaa, 0x8e, 0x4d, 0x6b, 0x97, 0x73, 0x99, 0x64, 0x26, 0x1f, 0x4c, 0xef, 0x0b, 0x99, 0x4c,
+	0x92, 0x3d, 0xf6, 0xe2, 0x6e, 0xf1, 0x29, 0xd4, 0x13, 0x5f, 0x92, 0xe9, 0x4b, 0xb8, 0xdd, 0xd6,
+	0x2f, 0xed, 0x1a, 0xf7, 0x55, 0x2d, 0x31, 0x11, 0x0d, 0x35, 0x84, 0x6a, 0x5a, 0x17, 0x91, 0x47,
+	0x50, 0x12, 0xe9, 0xe3, 0xca, 0x09, 0x08, 0x14, 0x79, 0x1f, 0x2a, 0x47, 0x9c, 0xff, 0x88, 0x7e,
+	0xcb, 0x47, 0x1c, 0x3f, 0xd4, 0x3f, 0x17, 0x00, 0xa6, 0x65, 0x0f, 0x51, 0xa0, 0x34, 0x0e, 0x07,
+	0xc9, 0x75, 0x43, 0x7c, 0x92, 0x35, 0xa8, 0x0c, 0x6c, 0xff, 0x78, 0x6c, 0x1f, 0x4f, 0x28, 0x24,
+	0x6d, 0x93, 0x37, 0xf1, 0x05, 0x10, 0xdf, 0xef, 0xb8, 0xcb, 0x9c, 0x60, 0xec, 0xc7, 0xe1, 0x59,
+	0x72, 0x0c, 0x1a, 0x53, 0x4d, 0x5b, 0x2a, 0xc8, 0xc7, 0x50, 0x19, 0x0d, 0xec, 0x18, 0x8b, 0xeb,
+	0x39, 0x1c, 0xa5, 0x7a, 0x79, 0x15, 0x66, 0x26, 0x48, 0x9a, 0xda, 0xa8, 0x7f, 0x2d, 0x00, 0x4c,
+	0x8b, 0xa4, 0x9c, 0x97, 0x10, 0x39, 0xec, 0xd9, 0x97, 0x90, 0x47, 0xd0, 0x88, 0x4e, 0x82, 0x30,
+	0x66, 0xd9, 0xab, 0x8f, 0x9c, 0x88, 0x82, 0x8a, 0x4e, 0xde, 0xfd, 0xa7, 0x74, 0xcd, 0xfb, 0xcf,
+	0x9b, 0x40, 0x12, 0xe2, 0xbc, 0x78, 0xb3, 0x6a, 0x48, 0x4d, 0xc6, 0xbf, 0xfa, 0x7d, 0x11, 0xea,
+	0xd9, 0x1a, 0x2d, 0x27, 0xde, 0x1f, 0x27, 0xd9, 0xaa, 0x78, 0xf9, 0x45, 0x21, 0xeb, 0x61, 0x13,
+	0x7f, 0x33, 0x39, 0xaa, 0x09, 0x65, 0xc7, 0x96, 0xc3, 0x90, 0x3c, 0x3e, 0x69, 0x92, 0x1e, 0xd4,
+	0x26, 0x95, 0xdf, 0x64, 0x90, 0xb5, 0xad, 0x37, 0xae, 0xec, 0xa0, 0x35, 0xb5, 0xa1, 0x59, 0x07,
+	0x6b, 0xf7, 0xa1, 0x96, 0xd1, 0x89, 0x1b, 0x67, 0xcc, 0x5f, 0xc4, 0xc9, 0x5c, 0xf0, 0x5b, 0x7d,
+	0x03, 0xaa, 0xe9, 0xf8, 0xc8, 0x0a, 0x28, 0x39, 0xc9, 0xad, 0x0a, 0xf3, 0xe6, 0xae, 0x61, 0x19,
+	0x4a, 0x41, 0x3d, 0x80, 0xd5, 0x4b, 0x8a, 0x4d, 0x51, 0xf0, 0x4c, 0xab, 0xd6, 0x74, 0xa5, 0xd3,
+	0xe1, 0x08, 0xc8, 0x1d, 0xa8, 0xa4, 0xe5, 0xac, 0x5c, 0xdf, 0xf2, 0xa9, 0xb4, 0x56, 0xbf, 0x2f,
+	0xc0, 0xc2, 0x4c, 0xa1, 0x29, 0xf6, 0x8e, 0x38, 0xed, 0x99, 0x57, 0x85, 0x94, 0x64, 0x7c, 0x73,
+	0xf2, 0xb0, 0x80, 0x28, 0xfb, 0x45, 0x16, 0x55, 0x4c, 0x50, 0xf6, 0x8b, 0x29, 0xea, 0x63, 0xb8,
+	0x1b, 0x8d, 0x47, 0xa3, 0x20, 0x8c, 0x23, 0x66, 0xbb, 0xae, 0x27, 0xa2, 0x61, 0x0f, 0x30, 0xf5,
+	0xf3, 0x48, 0x3e, 0xb8, 0x57, 0xe8, 0x9d, 0x09, 0xa4, 0x95, 0x22, 0xa8, 0x04, 0x3c, 0x7c, 0x0c,
+	0xd5, 0xf4, 0x60, 0x92, 0xdb, 0x40, 0x76, 0xf4, 0x2f, 0xb5, 0x0e, 0xa3, 0x2d, 0x4b, 0x63, 0x1d,
+	0x6d, 0xa7, 0xb5, 0xdf, 0xb5, 0x94, 0x1b, 0x22, 0x9b, 0x9b, 0x1a, 0x65, 0xa6, 0x46, 0xfb, 0xa2,
+	0xca, 0x7c, 0xf8, 0x1d, 0x34, 0x2e, 0x5c, 0x7e, 0x44, 0x7d, 0x9a, 0x14, 0xbf, 0xac, 0x4d, 0xb5,
+	0x8e, 0x6e, 0xb1, 0x76, 0x8b, 0x76, 0x2e, 0x16, 0xb1, 0x79, 0xa0, 0xb6, 0xd1, 0xeb, 0xe8, 0x49,
+	0xa9, 0x8c, 0x45, 0x6c, 0x1e, 0xa8, 0xd5, 0x3d, 0x68, 0x3d, 0xed, 0x2b, 0xc5, 0x87, 0x3f, 0x14,
+	0x60, 0x71, 0xf6, 0x9c, 0x8a, 0xd2, 0xbc, 0xd5, 0xc6, 0x07, 0x24, 0xb3, 0xdb, 0xb2, 0x76, 0x0c,
+	0xba, 0x77, 0xb1, 0xe3, 0xf3, 0x80, 0x03, 0x6d, 0x9b, 0xb5, 0x4c, 0xb3, 0xab, 0xb7, 0x33, 0xd5,
+	0xf3, 0x79, 0xd0, 0x9e, 0xb1, 0xad, 0x77, 0x35, 0x81, 0x55, 0x8a, 0xe4, 0x2e, 0xac, 0x9e, 0xd7,
+	0xb7, 0x7a, 0x1d, 0x6a, 0xe8, 0x1d, 0xa5, 0x44, 0x56, 0x61, 0xf9, 0xbc, 0x52, 0x37, 0xfa, 0xca,
+	0xdc, 0xe1, 0x4d, 0xfc, 0x87, 0xde, 0xe3, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x85, 0x5f, 0xfa,
+	0x7b, 0xdf, 0x1b, 0x00, 0x00,
 }
diff --git a/feeds/feeds.proto b/feeds/feeds.proto
index 5b8b9f5..e86f85b 100644
--- a/feeds/feeds.proto
+++ b/feeds/feeds.proto
@@ -289,6 +289,25 @@
   // Availability scheduling rules. If fields are populated, they will override
   // any corresponding scheduling rules on the service-level SchedulingRules.
   SchedulingRuleOverrides scheduling_rule_overrides = 16;
+
+  // The confirmation modes used when booking availabilities.
+  enum ConfirmationMode {
+    // The confirmation mode was not specified.
+    // Synchronous confirmation will be assumed.
+    CONFIRMATION_MODE_UNSPECIFIED = 0;
+    // Bookings for this availability will be confirmed synchronously.
+    CONFIRMATION_MODE_SYNCHRONOUS = 1;
+    // Bookings for this availability will be confirmed asynchronously.
+    CONFIRMATION_MODE_ASYNCHRONOUS = 2;
+  }
+
+  // The confirmation mode that will be used when booking this availability.
+  // Attempts to create bookings for availabilities with a confirmation mode
+  // of CONFIRMATION_MODE_SYNCHRONOUS must be immediatlely confirmed or denied.
+  // Attempts to create bookings for availabilities with confirmation mode
+  // of CONFIRMATION_MODE_ASYNCHRONOUS must be either immediately denied
+  // or created with status PENDING.
+  ConfirmationMode confirmation_mode = 17;
 }
 
 // A resource is used to disambiguate availability slots from one another when
diff --git a/proto/v3.proto b/proto/v3.proto
index 81e40dd..0ad686c 100644
--- a/proto/v3.proto
+++ b/proto/v3.proto
@@ -92,10 +92,13 @@
 
 // BatchAvailabilityLookup method
 
-// Identifies a Slot start time and optionally, the Slot duration, for a =
-// specific service and merchant. Note that this differs from the definition of
-// Slot, as it does not include merchant_id and service_id identifiers.
+// Identifies a Slot service_id and start time and optionally, the Slot duration
+// and resources, for a specific merchant. Note that this differs from the
+// definition of Slot, as it does not include merchant_id identifier.
 message SlotTime {
+  // ID of the service. (required)
+  string service_id = 5;
+
   // Start time of the appointment slot in seconds of UTC time since Unix epoch
   // (required)
   int64 start_sec = 1;
@@ -127,12 +130,11 @@
   // ID of the merchant.
   string merchant_id = 1;
 
-  // ID of the service.
-  string service_id = 2;
-
   // Multiple slot times to be checked for availability. All queried times apply
   // to the same merchant_id and service_id.
   repeated SlotTime slot_time = 3;
+
+  reserved 2;
 }
 
 // Response for the BatchAvailabilityLookupRequest RPC with the availabilities
@@ -424,7 +426,7 @@
 // Updating booking status does not change the status of the associated payment.
 // Prepayment status updates should be done using the PrepaymentStatus enum.
 //
-// nextID: 6
+// nextID: 8
 enum BookingStatus {
   // Not specified.
   BOOKING_STATUS_UNSPECIFIED = 0;
@@ -441,6 +443,10 @@
   // User did not show for the appointment in violation of the cancellation
   // policy.
   NO_SHOW_PENALIZED = 5;
+  // Booking could not be completed by the backend due to a failure.
+  FAILED = 6;
+  // Booking was asynchronously declined by the merchant.
+  DECLINED_BY_MERCHANT = 7;
 }
 
 // BookingFailure specification
@@ -510,6 +516,17 @@
   JCB = 5;
 }
 
+// Mode by which bookings for an availability slot are confirmed.
+enum ConfirmationMode {
+  // The confirmation mode was not specified.
+  // Synchronous confirmation will be assumed.
+  CONFIRMATION_MODE_UNSPECIFIED = 0;
+  // Bookings for this availability will be confirmed synchronously.
+  CONFIRMATION_MODE_SYNCHRONOUS = 1;
+  // Bookings for this availability will be confirmed asynchronously.
+  CONFIRMATION_MODE_ASYNCHRONOUS = 2;
+}
+
 // Order specification
 
 // An order for service appointments with a merchant.
@@ -1030,6 +1047,11 @@
   // The set of resources that disambiguates the appointment slot, e.g. by
   // indicating the staff member and room selected by the user (optional)
   ResourceIds resources = 6;
+
+  // Indicates whether bookings of this slot will be confirmed
+  // synchronously or asynchronously. An UNSPECIFIED value will be interpreted
+  // as synchronous.
+  ConfirmationMode confirmation_mode = 7;
 }
 
 // User specification
diff --git a/proto/waitlist.proto b/proto/waitlist.proto
index 47975a5..218e868 100644
--- a/proto/waitlist.proto
+++ b/proto/waitlist.proto
@@ -186,9 +186,11 @@
   // 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.
+  // The waitlist entry has been canceled by the user. Cancellation for no-shows
+  // should use the NO_SHOW state.
   CANCELED = 2;
+  // The waitlist entry has been declined by the merchant.
+  DECLINED_BY_MERCHANT = 7;
   // 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.
@@ -276,6 +278,14 @@
     // The waitlist is at capacity and new users are not being accepted at this
     // time.
     WAITLIST_FULL = 6;
+
+    // The country of the phone number is not supported.
+    PHONE_NUMBER_COUNTRY_UNSUPPORTED = 7;
+
+    // The waitlist is closed and not accepting new users. This is expected when
+    // the waitlist enters state CLOSED_OTHER after the user has already seen a
+    // wait estimate.
+    WAITLIST_CLOSED = 8;
   }
   // Required. The reason why the booking failed.
   Cause cause = 1;
diff --git a/utils/utils.go b/utils/utils.go
index 1016dd0..d355832 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -267,8 +267,13 @@
 	if diff := cmp.Diff(got.GetPaymentInformation(), want.GetPaymentInformation(), cmp.Comparer(proto.Equal)); diff != "" {
 		return fmt.Errorf("payment information differs (-got +want)\n%s", diff)
 	}
-	// BookingStatus_CONFIRMED is the default case unless want overrides it.
+	// BookingStatus_CONFIRMED is the default case unless the slot is async, in which
+	// case the default is BookingStatus_PENDING_MERCHANT_CONFIRMATION.
 	wantStatus := mpb.BookingStatus_CONFIRMED
+	if want.GetSlot().GetConfirmationMode() == mpb.ConfirmationMode_CONFIRMATION_MODE_ASYNCHRONOUS {
+		wantStatus = mpb.BookingStatus_PENDING_MERCHANT_CONFIRMATION
+	}
+	// If an alternate status is specified, we compare against it instead of the default.
 	if want.GetStatus() != mpb.BookingStatus_BOOKING_STATUS_UNSPECIFIED {
 		wantStatus = want.GetStatus()
 	}
@@ -411,12 +416,19 @@
 // BuildSlotFrom creates a bookingservice slot from an feed availability record.
 func BuildSlotFrom(a *fpb.Availability) (*mpb.Slot, error) {
 	r := a.GetResources()
+	confirmationMode := mpb.ConfirmationMode_CONFIRMATION_MODE_UNSPECIFIED
+	if a.GetConfirmationMode() == fpb.Availability_CONFIRMATION_MODE_SYNCHRONOUS {
+		confirmationMode = mpb.ConfirmationMode_CONFIRMATION_MODE_SYNCHRONOUS
+	} else if a.GetConfirmationMode() == fpb.Availability_CONFIRMATION_MODE_ASYNCHRONOUS {
+		confirmationMode = mpb.ConfirmationMode_CONFIRMATION_MODE_ASYNCHRONOUS
+	}
 	return &mpb.Slot{
-		MerchantId:      a.GetMerchantId(),
-		ServiceId:       a.GetServiceId(),
-		StartSec:        a.GetStartSec(),
-		DurationSec:     a.GetDurationSec(),
-		AvailabilityTag: a.GetAvailabilityTag(),
+		MerchantId:       a.GetMerchantId(),
+		ServiceId:        a.GetServiceId(),
+		StartSec:         a.GetStartSec(),
+		DurationSec:      a.GetDurationSec(),
+		AvailabilityTag:  a.GetAvailabilityTag(),
+		ConfirmationMode: confirmationMode,
 		Resources: &mpb.ResourceIds{
 			StaffId:   r.GetStaffId(),
 			RoomId:    r.GetRoomId(),
@@ -441,6 +453,7 @@
 		}
 		r := a.GetResources()
 		st = append(st, &mpb.SlotTime{
+			ServiceId:       s,
 			StartSec:        a.GetStartSec(),
 			DurationSec:     a.GetDurationSec(),
 			AvailabilityTag: a.GetAvailabilityTag(),
@@ -453,7 +466,6 @@
 	}
 	return &mpb.BatchAvailabilityLookupRequest{
 		MerchantId: m,
-		ServiceId:  s,
 		SlotTime:   st,
 	}, nil
 }
diff --git a/v3/v3.pb.go b/v3/v3.pb.go
index 53f8064..abca0c1 100644
--- a/v3/v3.pb.go
+++ b/v3/v3.pb.go
@@ -1,64 +1,13 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: v3.proto
 
-/*
-Package ext_maps_booking_partner_v3 is a generated protocol buffer package.
-
-It is generated from these files:
-	v3.proto
-
-It has these top-level messages:
-	CheckAvailabilityRequest
-	CheckAvailabilityResponse
-	AvailabilityUpdate
-	SlotAvailability
-	SlotTime
-	SlotTimeAvailability
-	BatchAvailabilityLookupRequest
-	BatchAvailabilityLookupResponse
-	CheckOrderFulfillabilityRequest
-	CheckOrderFulfillabilityResponse
-	GetBookingStatusRequest
-	GetBookingStatusResponse
-	CreateBookingRequest
-	CreateBookingResponse
-	CreateLeaseRequest
-	CreateLeaseResponse
-	Lease
-	LeaseReference
-	CreateOrderRequest
-	CreateOrderResponse
-	ListBookingsRequest
-	ListBookingsResponse
-	ListOrdersRequest
-	ListOrdersResponse
-	UpdateBookingRequest
-	UpdateBookingResponse
-	Booking
-	BookingFailure
-	Order
-	LineItem
-	OrderFailure
-	OrderFulfillability
-	LineItemFulfillability
-	TicketType
-	ResourceIds
-	TokenizationConfig
-	PaymentProcessingParameters
-	UserPaymentOption
-	PaymentInformation
-	Price
-	NoShowFee
-	Deposit
-	Slot
-	UserInformation
-	PostalAddress
-*/
 package ext_maps_booking_partner_v3
 
-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
@@ -69,14 +18,14 @@
 // 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
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 // Status of a booking.
 //
 // Updating booking status does not change the status of the associated payment.
 // Prepayment status updates should be done using the PrepaymentStatus enum.
 //
-// nextID: 6
+// nextID: 8
 type BookingStatus int32
 
 const (
@@ -95,6 +44,10 @@
 	// User did not show for the appointment in violation of the cancellation
 	// policy.
 	BookingStatus_NO_SHOW_PENALIZED BookingStatus = 5
+	// Booking could not be completed by the backend due to a failure.
+	BookingStatus_FAILED BookingStatus = 6
+	// Booking was asynchronously declined by the merchant.
+	BookingStatus_DECLINED_BY_MERCHANT BookingStatus = 7
 )
 
 var BookingStatus_name = map[int32]string{
@@ -104,7 +57,10 @@
 	3: "CANCELED",
 	4: "NO_SHOW",
 	5: "NO_SHOW_PENALIZED",
+	6: "FAILED",
+	7: "DECLINED_BY_MERCHANT",
 }
+
 var BookingStatus_value = map[string]int32{
 	"BOOKING_STATUS_UNSPECIFIED":    0,
 	"CONFIRMED":                     1,
@@ -112,12 +68,17 @@
 	"CANCELED":                      3,
 	"NO_SHOW":                       4,
 	"NO_SHOW_PENALIZED":             5,
+	"FAILED":                        6,
+	"DECLINED_BY_MERCHANT":          7,
 }
 
 func (x BookingStatus) String() string {
 	return proto.EnumName(BookingStatus_name, int32(x))
 }
-func (BookingStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (BookingStatus) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{0}
+}
 
 // Used when booking/order failure cause is PAYMENT_ERROR_CARD_TYPE_REJECTED to
 // indicate the type of credit card that was rejected.
@@ -141,19 +102,56 @@
 	4: "DISCOVER",
 	5: "JCB",
 }
+
 var CreditCardType_value = map[string]int32{
 	"CREDIT_CARD_TYPE_UNSPECIFIED": 0,
-	"VISA":             1,
-	"MASTERCARD":       2,
-	"AMERICAN_EXPRESS": 3,
-	"DISCOVER":         4,
-	"JCB":              5,
+	"VISA":                         1,
+	"MASTERCARD":                   2,
+	"AMERICAN_EXPRESS":             3,
+	"DISCOVER":                     4,
+	"JCB":                          5,
 }
 
 func (x CreditCardType) String() string {
 	return proto.EnumName(CreditCardType_name, int32(x))
 }
-func (CreditCardType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (CreditCardType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{1}
+}
+
+// Mode by which bookings for an availability slot are confirmed.
+type ConfirmationMode int32
+
+const (
+	// The confirmation mode was not specified.
+	// Synchronous confirmation will be assumed.
+	ConfirmationMode_CONFIRMATION_MODE_UNSPECIFIED ConfirmationMode = 0
+	// Bookings for this availability will be confirmed synchronously.
+	ConfirmationMode_CONFIRMATION_MODE_SYNCHRONOUS ConfirmationMode = 1
+	// Bookings for this availability will be confirmed asynchronously.
+	ConfirmationMode_CONFIRMATION_MODE_ASYNCHRONOUS ConfirmationMode = 2
+)
+
+var ConfirmationMode_name = map[int32]string{
+	0: "CONFIRMATION_MODE_UNSPECIFIED",
+	1: "CONFIRMATION_MODE_SYNCHRONOUS",
+	2: "CONFIRMATION_MODE_ASYNCHRONOUS",
+}
+
+var ConfirmationMode_value = map[string]int32{
+	"CONFIRMATION_MODE_UNSPECIFIED":  0,
+	"CONFIRMATION_MODE_SYNCHRONOUS":  1,
+	"CONFIRMATION_MODE_ASYNCHRONOUS": 2,
+}
+
+func (x ConfirmationMode) String() string {
+	return proto.EnumName(ConfirmationMode_name, int32(x))
+}
+
+func (ConfirmationMode) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{2}
+}
 
 type PaymentOptionType int32
 
@@ -170,6 +168,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,
@@ -180,7 +179,10 @@
 func (x PaymentOptionType) String() string {
 	return proto.EnumName(PaymentOptionType_name, int32(x))
 }
-func (PaymentOptionType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (PaymentOptionType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{3}
+}
 
 // Prepayment status of a booking.
 // Updating payment status will trigger an update on the payment status of the
@@ -213,6 +215,7 @@
 	3: "PREPAYMENT_REFUNDED",
 	4: "PREPAYMENT_CREDITED",
 }
+
 var PrepaymentStatus_value = map[string]int32{
 	"PREPAYMENT_STATUS_UNSPECIFIED": 0,
 	"PREPAYMENT_PROVIDED":           1,
@@ -224,7 +227,10 @@
 func (x PrepaymentStatus) String() string {
 	return proto.EnumName(PrepaymentStatus_name, int32(x))
 }
-func (PrepaymentStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (PrepaymentStatus) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{4}
+}
 
 // Defines how a total price is determined from an availability.
 type PriceType int32
@@ -245,6 +251,7 @@
 	0: "FIXED_RATE_DEFAULT",
 	1: "PER_PERSON",
 }
+
 var PriceType_value = map[string]int32{
 	"FIXED_RATE_DEFAULT": 0,
 	"PER_PERSON":         1,
@@ -253,7 +260,10 @@
 func (x PriceType) String() string {
 	return proto.EnumName(PriceType_name, int32(x))
 }
-func (PriceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (PriceType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{5}
+}
 
 // This enum indicates what requirements exist for the user to acknowledge or
 // view the requested slots duration/end time.
@@ -274,6 +284,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,
@@ -283,8 +294,9 @@
 func (x CheckAvailabilityResponse_DurationRequirement) String() string {
 	return proto.EnumName(CheckAvailabilityResponse_DurationRequirement_name, int32(x))
 }
+
 func (CheckAvailabilityResponse_DurationRequirement) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{1, 0}
+	return fileDescriptor_1820d8e1a9fad753, []int{1, 0}
 }
 
 type BookingFailure_Cause int32
@@ -343,6 +355,7 @@
 	11: "BOOKING_NOT_CANCELLABLE",
 	12: "OVERLAPPING_RESERVATION",
 }
+
 var BookingFailure_Cause_value = map[string]int32{
 	"CAUSE_UNSPECIFIED":                0,
 	"SLOT_UNAVAILABLE":                 1,
@@ -362,7 +375,10 @@
 func (x BookingFailure_Cause) String() string {
 	return proto.EnumName(BookingFailure_Cause_name, int32(x))
 }
-func (BookingFailure_Cause) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{27, 0} }
+
+func (BookingFailure_Cause) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{27, 0}
+}
 
 type OrderFailure_Cause int32
 
@@ -391,6 +407,7 @@
 	3: "PAYMENT_ERROR_CARD_DECLINED",
 	4: "PAYMENT_ERROR",
 }
+
 var OrderFailure_Cause_value = map[string]int32{
 	"CAUSE_UNSPECIFIED":                0,
 	"ORDER_UNFULFILLABLE":              1,
@@ -402,7 +419,10 @@
 func (x OrderFailure_Cause) String() string {
 	return proto.EnumName(OrderFailure_Cause_name, int32(x))
 }
-func (OrderFailure_Cause) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{30, 0} }
+
+func (OrderFailure_Cause) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{30, 0}
+}
 
 // The result of an order fulfillability check.
 type OrderFulfillability_OrderFulfillabilityResult int32
@@ -429,19 +449,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 fileDescriptor0, []int{31, 0}
+	return fileDescriptor_1820d8e1a9fad753, []int{31, 0}
 }
 
 // The result of a line item fulfillability check.
@@ -474,6 +496,7 @@
 	4: "INCORRECT_PRICE",
 	5: "ITEM_UNFULFILLABLE_OTHER_REASON",
 }
+
 var LineItemFulfillability_ItemFulfillabilityResult_value = map[string]int32{
 	"ITEM_FULFILLABILITY_RESULT_UNSPECIFIED": 0,
 	"CAN_FULFILL":                            1,
@@ -487,8 +510,9 @@
 func (x LineItemFulfillability_ItemFulfillabilityResult) String() string {
 	return proto.EnumName(LineItemFulfillability_ItemFulfillabilityResult_name, int32(x))
 }
+
 func (LineItemFulfillability_ItemFulfillabilityResult) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{32, 0}
+	return fileDescriptor_1820d8e1a9fad753, []int{32, 0}
 }
 
 // Control how much billing information to include in the
@@ -509,17 +533,19 @@
 	1: "MIN",
 	2: "FULL",
 }
+
 var TokenizationConfig_BillingInformationFormat_value = map[string]int32{
 	"BILLING_INFORMATION_FORMAT_UNSPECIFIED": 0,
-	"MIN":  1,
-	"FULL": 2,
+	"MIN":                                    1,
+	"FULL":                                   2,
 }
 
 func (x TokenizationConfig_BillingInformationFormat) String() string {
 	return proto.EnumName(TokenizationConfig_BillingInformationFormat_name, int32(x))
 }
+
 func (TokenizationConfig_BillingInformationFormat) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{35, 0}
+	return fileDescriptor_1820d8e1a9fad753, []int{35, 0}
 }
 
 type PaymentProcessingParameters_PaymentProcessor int32
@@ -535,6 +561,7 @@
 	1: "PROCESSOR_STRIPE",
 	2: "PROCESSOR_BRAINTREE",
 }
+
 var PaymentProcessingParameters_PaymentProcessor_value = map[string]int32{
 	"PAYMENT_PROCESSOR_UNSPECIFIED": 0,
 	"PROCESSOR_STRIPE":              1,
@@ -544,8 +571,9 @@
 func (x PaymentProcessingParameters_PaymentProcessor) String() string {
 	return proto.EnumName(PaymentProcessingParameters_PaymentProcessor_name, int32(x))
 }
+
 func (PaymentProcessingParameters_PaymentProcessor) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{36, 0}
+	return fileDescriptor_1820d8e1a9fad753, []int{36, 0}
 }
 
 // Who handles payment processing?
@@ -565,6 +593,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,
@@ -574,20 +603,44 @@
 func (x PaymentInformation_PaymentProcessedBy) String() string {
 	return proto.EnumName(PaymentInformation_PaymentProcessedBy_name, int32(x))
 }
+
 func (PaymentInformation_PaymentProcessedBy) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{38, 0}
+	return fileDescriptor_1820d8e1a9fad753, []int{38, 0}
 }
 
 // Request to check availability for a Slot.
 type CheckAvailabilityRequest struct {
 	// The appointment slot that is being checked (required)
-	Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"`
+	Slot                 *Slot    `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *CheckAvailabilityRequest) Reset()                    { *m = CheckAvailabilityRequest{} }
-func (m *CheckAvailabilityRequest) String() string            { return proto.CompactTextString(m) }
-func (*CheckAvailabilityRequest) ProtoMessage()               {}
-func (*CheckAvailabilityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (m *CheckAvailabilityRequest) Reset()         { *m = CheckAvailabilityRequest{} }
+func (m *CheckAvailabilityRequest) String() string { return proto.CompactTextString(m) }
+func (*CheckAvailabilityRequest) ProtoMessage()    {}
+func (*CheckAvailabilityRequest) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *CheckAvailabilityRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CheckAvailabilityRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CheckAvailabilityRequest proto.InternalMessageInfo
 
 func (m *CheckAvailabilityRequest) GetSlot() *Slot {
 	if m != nil {
@@ -600,26 +653,49 @@
 // appointment slot.
 type CheckAvailabilityResponse struct {
 	// The requested slot. (required)
-	Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"`
+	Slot *Slot `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"`
 	// Number of available spots.
 	// 0 indicates that the appointment slot is not available. (required)
-	CountAvailable int32 `protobuf:"varint,2,opt,name=count_available,json=countAvailable" json:"count_available,omitempty"`
+	CountAvailable int32 `protobuf:"varint,2,opt,name=count_available,json=countAvailable,proto3" json:"count_available,omitempty"`
 	// The requirement to show the slots duration and/or endtime. This field will
 	// be ignored if the slot is unavailable. (optional)
-	DurationRequirement CheckAvailabilityResponse_DurationRequirement `protobuf:"varint,3,opt,name=duration_requirement,json=durationRequirement,enum=ext.maps.booking.partner.v3.CheckAvailabilityResponse_DurationRequirement" json:"duration_requirement,omitempty"`
+	DurationRequirement CheckAvailabilityResponse_DurationRequirement `protobuf:"varint,3,opt,name=duration_requirement,json=durationRequirement,proto3,enum=ext.maps.booking.partner.v3.CheckAvailabilityResponse_DurationRequirement" json:"duration_requirement,omitempty"`
 	// Optionally, the partner can return additional updated information about the
 	// availability for this merchant if this information is present when
 	// responding to the CheckAvailabilityRequest and if there is no negative
 	// impact on the CheckAvailability request latency.
 	// For instance an entire day of merchant availability for a superset of
 	// resources can be returned here.
-	AvailabilityUpdate *AvailabilityUpdate `protobuf:"bytes,4,opt,name=availability_update,json=availabilityUpdate" json:"availability_update,omitempty"`
+	AvailabilityUpdate   *AvailabilityUpdate `protobuf:"bytes,4,opt,name=availability_update,json=availabilityUpdate,proto3" json:"availability_update,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
 }
 
-func (m *CheckAvailabilityResponse) Reset()                    { *m = CheckAvailabilityResponse{} }
-func (m *CheckAvailabilityResponse) String() string            { return proto.CompactTextString(m) }
-func (*CheckAvailabilityResponse) ProtoMessage()               {}
-func (*CheckAvailabilityResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+func (m *CheckAvailabilityResponse) Reset()         { *m = CheckAvailabilityResponse{} }
+func (m *CheckAvailabilityResponse) String() string { return proto.CompactTextString(m) }
+func (*CheckAvailabilityResponse) ProtoMessage()    {}
+func (*CheckAvailabilityResponse) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *CheckAvailabilityResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CheckAvailabilityResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CheckAvailabilityResponse proto.InternalMessageInfo
 
 func (m *CheckAvailabilityResponse) GetSlot() *Slot {
 	if m != nil {
@@ -652,13 +728,36 @@
 // An update to one ore more slots indicating that the availability for the
 // associated time has potentially changed.
 type AvailabilityUpdate struct {
-	SlotAvailability []*SlotAvailability `protobuf:"bytes,1,rep,name=slot_availability,json=slotAvailability" json:"slot_availability,omitempty"`
+	SlotAvailability     []*SlotAvailability `protobuf:"bytes,1,rep,name=slot_availability,json=slotAvailability,proto3" json:"slot_availability,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
 }
 
-func (m *AvailabilityUpdate) Reset()                    { *m = AvailabilityUpdate{} }
-func (m *AvailabilityUpdate) String() string            { return proto.CompactTextString(m) }
-func (*AvailabilityUpdate) ProtoMessage()               {}
-func (*AvailabilityUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (m *AvailabilityUpdate) Reset()         { *m = AvailabilityUpdate{} }
+func (m *AvailabilityUpdate) String() string { return proto.CompactTextString(m) }
+func (*AvailabilityUpdate) ProtoMessage()    {}
+func (*AvailabilityUpdate) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *AvailabilityUpdate) XXX_DiscardUnknown() {
+	xxx_messageInfo_AvailabilityUpdate.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AvailabilityUpdate proto.InternalMessageInfo
 
 func (m *AvailabilityUpdate) GetSlotAvailability() []*SlotAvailability {
 	if m != nil {
@@ -669,16 +768,39 @@
 
 // An inventory slot and associated count of open spots.
 type SlotAvailability struct {
-	Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"`
+	Slot *Slot `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"`
 	// Number of available spots.
 	// 0 indicates that the appointment slot is not available. (required)
-	CountAvailable int32 `protobuf:"varint,2,opt,name=count_available,json=countAvailable" json:"count_available,omitempty"`
+	CountAvailable       int32    `protobuf:"varint,2,opt,name=count_available,json=countAvailable,proto3" json:"count_available,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *SlotAvailability) Reset()                    { *m = SlotAvailability{} }
-func (m *SlotAvailability) String() string            { return proto.CompactTextString(m) }
-func (*SlotAvailability) ProtoMessage()               {}
-func (*SlotAvailability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+func (m *SlotAvailability) Reset()         { *m = SlotAvailability{} }
+func (m *SlotAvailability) String() string { return proto.CompactTextString(m) }
+func (*SlotAvailability) ProtoMessage()    {}
+func (*SlotAvailability) Descriptor() ([]byte, []int) {
+	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 (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)
+}
+func (m *SlotAvailability) XXX_DiscardUnknown() {
+	xxx_messageInfo_SlotAvailability.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SlotAvailability proto.InternalMessageInfo
 
 func (m *SlotAvailability) GetSlot() *Slot {
 	if m != nil {
@@ -694,28 +816,60 @@
 	return 0
 }
 
-// Identifies a Slot start time and optionally, the Slot duration, for a =
-// specific service and merchant. Note that this differs from the definition of
-// Slot, as it does not include merchant_id and service_id identifiers.
+// Identifies a Slot service_id and start time and optionally, the Slot duration
+// and resources, for a specific merchant. Note that this differs from the
+// definition of Slot, as it does not include merchant_id identifier.
 type SlotTime struct {
+	// ID of the service. (required)
+	ServiceId string `protobuf:"bytes,5,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
 	// Start time of the appointment slot in seconds of UTC time since Unix epoch
 	// (required)
-	StartSec int64 `protobuf:"varint,1,opt,name=start_sec,json=startSec" json:"start_sec,omitempty"`
+	StartSec int64 `protobuf:"varint,1,opt,name=start_sec,json=startSec,proto3" json:"start_sec,omitempty"`
 	// Duration of the appointment slot in seconds (optional)
-	DurationSec int64 `protobuf:"varint,2,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
+	DurationSec int64 `protobuf:"varint,2,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
 	// Opaque tag that identifies the availability slot and matches the value
 	// provided in the availability feed (optional)
-	AvailabilityTag string `protobuf:"bytes,3,opt,name=availability_tag,json=availabilityTag" json:"availability_tag,omitempty"`
+	AvailabilityTag string `protobuf:"bytes,3,opt,name=availability_tag,json=availabilityTag,proto3" json:"availability_tag,omitempty"`
 	// The set of resources that specifies the appointment slot, e.g. by
 	// indicating the staff member and room selected by the user, or party size
 	// for dining slots (optional)
-	ResourceIds *ResourceIds `protobuf:"bytes,4,opt,name=resource_ids,json=resourceIds" json:"resource_ids,omitempty"`
+	ResourceIds          *ResourceIds `protobuf:"bytes,4,opt,name=resource_ids,json=resourceIds,proto3" json:"resource_ids,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
 }
 
-func (m *SlotTime) Reset()                    { *m = SlotTime{} }
-func (m *SlotTime) String() string            { return proto.CompactTextString(m) }
-func (*SlotTime) ProtoMessage()               {}
-func (*SlotTime) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+func (m *SlotTime) Reset()         { *m = SlotTime{} }
+func (m *SlotTime) String() string { return proto.CompactTextString(m) }
+func (*SlotTime) ProtoMessage()    {}
+func (*SlotTime) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{4}
+}
+
+func (m *SlotTime) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SlotTime.Unmarshal(m, b)
+}
+func (m *SlotTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SlotTime.Marshal(b, m, deterministic)
+}
+func (m *SlotTime) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SlotTime.Merge(m, src)
+}
+func (m *SlotTime) XXX_Size() int {
+	return xxx_messageInfo_SlotTime.Size(m)
+}
+func (m *SlotTime) XXX_DiscardUnknown() {
+	xxx_messageInfo_SlotTime.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SlotTime proto.InternalMessageInfo
+
+func (m *SlotTime) GetServiceId() string {
+	if m != nil {
+		return m.ServiceId
+	}
+	return ""
+}
 
 func (m *SlotTime) GetStartSec() int64 {
 	if m != nil {
@@ -747,15 +901,38 @@
 
 type SlotTimeAvailability struct {
 	// The SlotTime for which availability was checked.
-	SlotTime *SlotTime `protobuf:"bytes,1,opt,name=slot_time,json=slotTime" json:"slot_time,omitempty"`
+	SlotTime *SlotTime `protobuf:"bytes,1,opt,name=slot_time,json=slotTime,proto3" json:"slot_time,omitempty"`
 	// Whether the requested SlotTime is available
-	Available bool `protobuf:"varint,2,opt,name=available" json:"available,omitempty"`
+	Available            bool     `protobuf:"varint,2,opt,name=available,proto3" json:"available,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *SlotTimeAvailability) Reset()                    { *m = SlotTimeAvailability{} }
-func (m *SlotTimeAvailability) String() string            { return proto.CompactTextString(m) }
-func (*SlotTimeAvailability) ProtoMessage()               {}
-func (*SlotTimeAvailability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+func (m *SlotTimeAvailability) Reset()         { *m = SlotTimeAvailability{} }
+func (m *SlotTimeAvailability) String() string { return proto.CompactTextString(m) }
+func (*SlotTimeAvailability) ProtoMessage()    {}
+func (*SlotTimeAvailability) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{5}
+}
+
+func (m *SlotTimeAvailability) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SlotTimeAvailability.Unmarshal(m, b)
+}
+func (m *SlotTimeAvailability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SlotTimeAvailability.Marshal(b, m, deterministic)
+}
+func (m *SlotTimeAvailability) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SlotTimeAvailability.Merge(m, src)
+}
+func (m *SlotTimeAvailability) XXX_Size() int {
+	return xxx_messageInfo_SlotTimeAvailability.Size(m)
+}
+func (m *SlotTimeAvailability) XXX_DiscardUnknown() {
+	xxx_messageInfo_SlotTimeAvailability.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SlotTimeAvailability proto.InternalMessageInfo
 
 func (m *SlotTimeAvailability) GetSlotTime() *SlotTime {
 	if m != nil {
@@ -775,18 +952,39 @@
 // given merchant/service.
 type BatchAvailabilityLookupRequest struct {
 	// ID of the merchant.
-	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"`
-	// ID of the service.
-	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId" json:"service_id,omitempty"`
+	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
 	// Multiple slot times to be checked for availability. All queried times apply
 	// to the same merchant_id and service_id.
-	SlotTime []*SlotTime `protobuf:"bytes,3,rep,name=slot_time,json=slotTime" json:"slot_time,omitempty"`
+	SlotTime             []*SlotTime `protobuf:"bytes,3,rep,name=slot_time,json=slotTime,proto3" json:"slot_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
 }
 
-func (m *BatchAvailabilityLookupRequest) Reset()                    { *m = BatchAvailabilityLookupRequest{} }
-func (m *BatchAvailabilityLookupRequest) String() string            { return proto.CompactTextString(m) }
-func (*BatchAvailabilityLookupRequest) ProtoMessage()               {}
-func (*BatchAvailabilityLookupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+func (m *BatchAvailabilityLookupRequest) Reset()         { *m = BatchAvailabilityLookupRequest{} }
+func (m *BatchAvailabilityLookupRequest) String() string { return proto.CompactTextString(m) }
+func (*BatchAvailabilityLookupRequest) ProtoMessage()    {}
+func (*BatchAvailabilityLookupRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{6}
+}
+
+func (m *BatchAvailabilityLookupRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchAvailabilityLookupRequest.Unmarshal(m, b)
+}
+func (m *BatchAvailabilityLookupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchAvailabilityLookupRequest.Marshal(b, m, deterministic)
+}
+func (m *BatchAvailabilityLookupRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchAvailabilityLookupRequest.Merge(m, src)
+}
+func (m *BatchAvailabilityLookupRequest) XXX_Size() int {
+	return xxx_messageInfo_BatchAvailabilityLookupRequest.Size(m)
+}
+func (m *BatchAvailabilityLookupRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchAvailabilityLookupRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchAvailabilityLookupRequest proto.InternalMessageInfo
 
 func (m *BatchAvailabilityLookupRequest) GetMerchantId() string {
 	if m != nil {
@@ -795,13 +993,6 @@
 	return ""
 }
 
-func (m *BatchAvailabilityLookupRequest) GetServiceId() string {
-	if m != nil {
-		return m.ServiceId
-	}
-	return ""
-}
-
 func (m *BatchAvailabilityLookupRequest) GetSlotTime() []*SlotTime {
 	if m != nil {
 		return m.SlotTime
@@ -815,13 +1006,36 @@
 	// The availabilities for the requested SlotTime entries. There must be
 	// exactly one slot_time_availability for each SlotTime entry in the
 	// [ext.maps.booking.partner.v3.BatchAvailabilityLookupRequest].
-	SlotTimeAvailability []*SlotTimeAvailability `protobuf:"bytes,1,rep,name=slot_time_availability,json=slotTimeAvailability" json:"slot_time_availability,omitempty"`
+	SlotTimeAvailability []*SlotTimeAvailability `protobuf:"bytes,1,rep,name=slot_time_availability,json=slotTimeAvailability,proto3" json:"slot_time_availability,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
+	XXX_unrecognized     []byte                  `json:"-"`
+	XXX_sizecache        int32                   `json:"-"`
 }
 
-func (m *BatchAvailabilityLookupResponse) Reset()                    { *m = BatchAvailabilityLookupResponse{} }
-func (m *BatchAvailabilityLookupResponse) String() string            { return proto.CompactTextString(m) }
-func (*BatchAvailabilityLookupResponse) ProtoMessage()               {}
-func (*BatchAvailabilityLookupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+func (m *BatchAvailabilityLookupResponse) Reset()         { *m = BatchAvailabilityLookupResponse{} }
+func (m *BatchAvailabilityLookupResponse) String() string { return proto.CompactTextString(m) }
+func (*BatchAvailabilityLookupResponse) ProtoMessage()    {}
+func (*BatchAvailabilityLookupResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{7}
+}
+
+func (m *BatchAvailabilityLookupResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchAvailabilityLookupResponse.Unmarshal(m, b)
+}
+func (m *BatchAvailabilityLookupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchAvailabilityLookupResponse.Marshal(b, m, deterministic)
+}
+func (m *BatchAvailabilityLookupResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchAvailabilityLookupResponse.Merge(m, src)
+}
+func (m *BatchAvailabilityLookupResponse) XXX_Size() int {
+	return xxx_messageInfo_BatchAvailabilityLookupResponse.Size(m)
+}
+func (m *BatchAvailabilityLookupResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchAvailabilityLookupResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchAvailabilityLookupResponse proto.InternalMessageInfo
 
 func (m *BatchAvailabilityLookupResponse) GetSlotTimeAvailability() []*SlotTimeAvailability {
 	if m != nil {
@@ -833,16 +1047,39 @@
 // Request to check the fulfillability of an order.
 type CheckOrderFulfillabilityRequest struct {
 	// The merchant that this order is intended for. (required)
-	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"`
+	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
 	// The line items in this order. All services requested must belong to the
 	// specified merchant. (required)
-	Item []*LineItem `protobuf:"bytes,2,rep,name=item" json:"item,omitempty"`
+	Item                 []*LineItem `protobuf:"bytes,2,rep,name=item,proto3" json:"item,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
 }
 
-func (m *CheckOrderFulfillabilityRequest) Reset()                    { *m = CheckOrderFulfillabilityRequest{} }
-func (m *CheckOrderFulfillabilityRequest) String() string            { return proto.CompactTextString(m) }
-func (*CheckOrderFulfillabilityRequest) ProtoMessage()               {}
-func (*CheckOrderFulfillabilityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+func (m *CheckOrderFulfillabilityRequest) Reset()         { *m = CheckOrderFulfillabilityRequest{} }
+func (m *CheckOrderFulfillabilityRequest) String() string { return proto.CompactTextString(m) }
+func (*CheckOrderFulfillabilityRequest) ProtoMessage()    {}
+func (*CheckOrderFulfillabilityRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{8}
+}
+
+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 (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)
+}
+func (m *CheckOrderFulfillabilityRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CheckOrderFulfillabilityRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CheckOrderFulfillabilityRequest proto.InternalMessageInfo
 
 func (m *CheckOrderFulfillabilityRequest) GetMerchantId() string {
 	if m != nil {
@@ -862,19 +1099,40 @@
 type CheckOrderFulfillabilityResponse struct {
 	// Fulfillability status of the order, potentially contains updated
 	// availabilities and prices of the requested line item. (required)
-	Fulfillability *OrderFulfillability `protobuf:"bytes,1,opt,name=fulfillability" json:"fulfillability,omitempty"`
+	Fulfillability *OrderFulfillability `protobuf:"bytes,1,opt,name=fulfillability,proto3" json:"fulfillability,omitempty"`
 	// Total processing fees & taxes that need to be paid for this order.
 	// (required)
-	FeesAndTaxes *Price `protobuf:"bytes,2,opt,name=fees_and_taxes,json=feesAndTaxes" json:"fees_and_taxes,omitempty"`
+	FeesAndTaxes         *Price   `protobuf:"bytes,2,opt,name=fees_and_taxes,json=feesAndTaxes,proto3" json:"fees_and_taxes,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *CheckOrderFulfillabilityResponse) Reset()         { *m = CheckOrderFulfillabilityResponse{} }
 func (m *CheckOrderFulfillabilityResponse) String() string { return proto.CompactTextString(m) }
 func (*CheckOrderFulfillabilityResponse) ProtoMessage()    {}
 func (*CheckOrderFulfillabilityResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{9}
+	return fileDescriptor_1820d8e1a9fad753, []int{9}
 }
 
+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 (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)
+}
+func (m *CheckOrderFulfillabilityResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CheckOrderFulfillabilityResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CheckOrderFulfillabilityResponse proto.InternalMessageInfo
+
 func (m *CheckOrderFulfillabilityResponse) GetFulfillability() *OrderFulfillability {
 	if m != nil {
 		return m.Fulfillability
@@ -892,13 +1150,36 @@
 // Request to get booking status and prepayment status for a Booking.
 type GetBookingStatusRequest struct {
 	// ID of the existing booking (required)
-	BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId" json:"booking_id,omitempty"`
+	BookingId            string   `protobuf:"bytes,1,opt,name=booking_id,json=bookingId,proto3" json:"booking_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *GetBookingStatusRequest) Reset()                    { *m = GetBookingStatusRequest{} }
-func (m *GetBookingStatusRequest) String() string            { return proto.CompactTextString(m) }
-func (*GetBookingStatusRequest) ProtoMessage()               {}
-func (*GetBookingStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+func (m *GetBookingStatusRequest) Reset()         { *m = GetBookingStatusRequest{} }
+func (m *GetBookingStatusRequest) String() string { return proto.CompactTextString(m) }
+func (*GetBookingStatusRequest) ProtoMessage()    {}
+func (*GetBookingStatusRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{10}
+}
+
+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 (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)
+}
+func (m *GetBookingStatusRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetBookingStatusRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetBookingStatusRequest proto.InternalMessageInfo
 
 func (m *GetBookingStatusRequest) GetBookingId() string {
 	if m != nil {
@@ -911,17 +1192,40 @@
 // status.
 type GetBookingStatusResponse struct {
 	// ID of the booking (required)
-	BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId" json:"booking_id,omitempty"`
+	BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId,proto3" json:"booking_id,omitempty"`
 	// Status of the booking (required)
-	BookingStatus BookingStatus `protobuf:"varint,2,opt,name=booking_status,json=bookingStatus,enum=ext.maps.booking.partner.v3.BookingStatus" json:"booking_status,omitempty"`
+	BookingStatus BookingStatus `protobuf:"varint,2,opt,name=booking_status,json=bookingStatus,proto3,enum=ext.maps.booking.partner.v3.BookingStatus" json:"booking_status,omitempty"`
 	// Prepayment status of the booking (required)
-	PrepaymentStatus PrepaymentStatus `protobuf:"varint,3,opt,name=prepayment_status,json=prepaymentStatus,enum=ext.maps.booking.partner.v3.PrepaymentStatus" json:"prepayment_status,omitempty"`
+	PrepaymentStatus     PrepaymentStatus `protobuf:"varint,3,opt,name=prepayment_status,json=prepaymentStatus,proto3,enum=ext.maps.booking.partner.v3.PrepaymentStatus" json:"prepayment_status,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
 }
 
-func (m *GetBookingStatusResponse) Reset()                    { *m = GetBookingStatusResponse{} }
-func (m *GetBookingStatusResponse) String() string            { return proto.CompactTextString(m) }
-func (*GetBookingStatusResponse) ProtoMessage()               {}
-func (*GetBookingStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+func (m *GetBookingStatusResponse) Reset()         { *m = GetBookingStatusResponse{} }
+func (m *GetBookingStatusResponse) String() string { return proto.CompactTextString(m) }
+func (*GetBookingStatusResponse) ProtoMessage()    {}
+func (*GetBookingStatusResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{11}
+}
+
+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 (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)
+}
+func (m *GetBookingStatusResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetBookingStatusResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetBookingStatusResponse proto.InternalMessageInfo
 
 func (m *GetBookingStatusResponse) GetBookingId() string {
 	if m != nil {
@@ -951,32 +1255,55 @@
 	// If lease_ref is provided, slot must match the lease; slot is provided for
 	// the partner to verify the lease information.
 	// If lease_ref is absent, then create the booking for the slot. (required)
-	Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"`
+	Slot *Slot `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"`
 	// The lease that is being confirmed to make this booking.
 	// If lease_ref is provided, then create the booking using the lease.
 	// (optional)
-	LeaseRef *LeaseReference `protobuf:"bytes,2,opt,name=lease_ref,json=leaseRef" json:"lease_ref,omitempty"`
+	LeaseRef *LeaseReference `protobuf:"bytes,2,opt,name=lease_ref,json=leaseRef,proto3" json:"lease_ref,omitempty"`
 	// Personal information of the user making the appointment (required)
-	UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation" json:"user_information,omitempty"`
+	UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation,proto3" json:"user_information,omitempty"`
 	// Information about payments. When payment authorizations are handled by
 	// Google, if the booking request does not succeed, payment authorizations are
 	// automatically canceled. (optional)
-	PaymentInformation *PaymentInformation `protobuf:"bytes,4,opt,name=payment_information,json=paymentInformation" json:"payment_information,omitempty"`
+	PaymentInformation *PaymentInformation `protobuf:"bytes,4,opt,name=payment_information,json=paymentInformation,proto3" json:"payment_information,omitempty"`
 	// 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 *PaymentProcessingParameters `protobuf:"bytes,5,opt,name=payment_processing_parameters,json=paymentProcessingParameters" json:"payment_processing_parameters,omitempty"`
+	PaymentProcessingParameters *PaymentProcessingParameters `protobuf:"bytes,5,opt,name=payment_processing_parameters,json=paymentProcessingParameters,proto3" json:"payment_processing_parameters,omitempty"`
 	// Idempotency token for CreateBooking requests. (required)
-	IdempotencyToken string `protobuf:"bytes,6,opt,name=idempotency_token,json=idempotencyToken" json:"idempotency_token,omitempty"`
+	IdempotencyToken string `protobuf:"bytes,6,opt,name=idempotency_token,json=idempotencyToken,proto3" json:"idempotency_token,omitempty"`
 	// A string from the user which contains any special requests or additional
 	// information that they would like to notify the merchant about. (optional)
-	AdditionalRequest string `protobuf:"bytes,7,opt,name=additional_request,json=additionalRequest" json:"additional_request,omitempty"`
+	AdditionalRequest    string   `protobuf:"bytes,7,opt,name=additional_request,json=additionalRequest,proto3" json:"additional_request,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *CreateBookingRequest) Reset()                    { *m = CreateBookingRequest{} }
-func (m *CreateBookingRequest) String() string            { return proto.CompactTextString(m) }
-func (*CreateBookingRequest) ProtoMessage()               {}
-func (*CreateBookingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+func (m *CreateBookingRequest) Reset()         { *m = CreateBookingRequest{} }
+func (m *CreateBookingRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateBookingRequest) ProtoMessage()    {}
+func (*CreateBookingRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{12}
+}
+
+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 (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)
+}
+func (m *CreateBookingRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateBookingRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateBookingRequest proto.InternalMessageInfo
 
 func (m *CreateBookingRequest) GetSlot() *Slot {
 	if m != nil {
@@ -1030,25 +1357,48 @@
 // Response with the created Booking for an inventory slot.
 type CreateBookingResponse struct {
 	// The created booking (required)
-	Booking *Booking `protobuf:"bytes,1,opt,name=booking" json:"booking,omitempty"`
+	Booking *Booking `protobuf:"bytes,1,opt,name=booking,proto3" json:"booking,omitempty"`
 	// The updated user payment option used in this booking.
 	// If a new payment option was purchased to pay for the booking, this should
 	// be a newly created user payment option.
 	// If an already purchased user payment option was used for this booking,
 	// this should reflect an updated version of that user payment option.
 	// (optional)
-	UserPaymentOption *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption" json:"user_payment_option,omitempty"`
+	UserPaymentOption *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption,proto3" json:"user_payment_option,omitempty"`
 	// If creating a booking fails, this field should reflect the business logic
 	// error (e.g., slot has become unavailable) and all other fields in the
 	// CreateBookingResponse message are expected to be unset. (required if
 	// failure occurs)
-	BookingFailure *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure" json:"booking_failure,omitempty"`
+	BookingFailure       *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure,proto3" json:"booking_failure,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
 }
 
-func (m *CreateBookingResponse) Reset()                    { *m = CreateBookingResponse{} }
-func (m *CreateBookingResponse) String() string            { return proto.CompactTextString(m) }
-func (*CreateBookingResponse) ProtoMessage()               {}
-func (*CreateBookingResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+func (m *CreateBookingResponse) Reset()         { *m = CreateBookingResponse{} }
+func (m *CreateBookingResponse) String() string { return proto.CompactTextString(m) }
+func (*CreateBookingResponse) ProtoMessage()    {}
+func (*CreateBookingResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{13}
+}
+
+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 (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)
+}
+func (m *CreateBookingResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateBookingResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateBookingResponse proto.InternalMessageInfo
 
 func (m *CreateBookingResponse) GetBooking() *Booking {
 	if m != nil {
@@ -1077,13 +1427,36 @@
 type CreateLeaseRequest struct {
 	// The lease to be created with information about the appointment slot
 	// (required)
-	Lease *Lease `protobuf:"bytes,1,opt,name=lease" json:"lease,omitempty"`
+	Lease                *Lease   `protobuf:"bytes,1,opt,name=lease,proto3" json:"lease,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *CreateLeaseRequest) Reset()                    { *m = CreateLeaseRequest{} }
-func (m *CreateLeaseRequest) String() string            { return proto.CompactTextString(m) }
-func (*CreateLeaseRequest) ProtoMessage()               {}
-func (*CreateLeaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+func (m *CreateLeaseRequest) Reset()         { *m = CreateLeaseRequest{} }
+func (m *CreateLeaseRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateLeaseRequest) ProtoMessage()    {}
+func (*CreateLeaseRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{14}
+}
+
+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 (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)
+}
+func (m *CreateLeaseRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateLeaseRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateLeaseRequest proto.InternalMessageInfo
 
 func (m *CreateLeaseRequest) GetLease() *Lease {
 	if m != nil {
@@ -1095,17 +1468,40 @@
 // Response for the CreateLease RPC with the created Lease.
 type CreateLeaseResponse struct {
 	// The created Lease (required)
-	Lease *Lease `protobuf:"bytes,1,opt,name=lease" json:"lease,omitempty"`
+	Lease *Lease `protobuf:"bytes,1,opt,name=lease,proto3" json:"lease,omitempty"`
 	// If creating a lease fails, this field should reflect the business logic
 	// error (e.g., slot has become unavailable) and lease field is expected to be
 	// unset. (required if failure occurs)
-	BookingFailure *BookingFailure `protobuf:"bytes,2,opt,name=booking_failure,json=bookingFailure" json:"booking_failure,omitempty"`
+	BookingFailure       *BookingFailure `protobuf:"bytes,2,opt,name=booking_failure,json=bookingFailure,proto3" json:"booking_failure,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
 }
 
-func (m *CreateLeaseResponse) Reset()                    { *m = CreateLeaseResponse{} }
-func (m *CreateLeaseResponse) String() string            { return proto.CompactTextString(m) }
-func (*CreateLeaseResponse) ProtoMessage()               {}
-func (*CreateLeaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+func (m *CreateLeaseResponse) Reset()         { *m = CreateLeaseResponse{} }
+func (m *CreateLeaseResponse) String() string { return proto.CompactTextString(m) }
+func (*CreateLeaseResponse) ProtoMessage()    {}
+func (*CreateLeaseResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{15}
+}
+
+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 (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)
+}
+func (m *CreateLeaseResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateLeaseResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateLeaseResponse proto.InternalMessageInfo
 
 func (m *CreateLeaseResponse) GetLease() *Lease {
 	if m != nil {
@@ -1126,20 +1522,43 @@
 	// ID of the lease.
 	// Not populated in CreateLeaseRequest. The value is chosen by the partner and
 	// has to be returned in the response of CreateLease. (required)
-	LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId" json:"lease_id,omitempty"`
+	LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"`
 	// The appointment slot that the lease is created for. (required)
-	Slot *Slot `protobuf:"bytes,2,opt,name=slot" json:"slot,omitempty"`
+	Slot *Slot `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"`
 	// Unique identifier for this lease, chosen by Reserve with Google. Serves as
 	// an idempotency token for CreateLease requests. (required)
-	UserReference string `protobuf:"bytes,3,opt,name=user_reference,json=userReference" json:"user_reference,omitempty"`
+	UserReference string `protobuf:"bytes,3,opt,name=user_reference,json=userReference,proto3" json:"user_reference,omitempty"`
 	// Expiration time of the lease in UTC Timestamp (required)
-	LeaseExpirationTimeSec int64 `protobuf:"varint,4,opt,name=lease_expiration_time_sec,json=leaseExpirationTimeSec" json:"lease_expiration_time_sec,omitempty"`
+	LeaseExpirationTimeSec int64    `protobuf:"varint,4,opt,name=lease_expiration_time_sec,json=leaseExpirationTimeSec,proto3" json:"lease_expiration_time_sec,omitempty"`
+	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
+	XXX_unrecognized       []byte   `json:"-"`
+	XXX_sizecache          int32    `json:"-"`
 }
 
-func (m *Lease) Reset()                    { *m = Lease{} }
-func (m *Lease) String() string            { return proto.CompactTextString(m) }
-func (*Lease) ProtoMessage()               {}
-func (*Lease) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+func (m *Lease) Reset()         { *m = Lease{} }
+func (m *Lease) String() string { return proto.CompactTextString(m) }
+func (*Lease) ProtoMessage()    {}
+func (*Lease) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{16}
+}
+
+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 (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)
+}
+func (m *Lease) XXX_DiscardUnknown() {
+	xxx_messageInfo_Lease.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Lease proto.InternalMessageInfo
 
 func (m *Lease) GetLeaseId() string {
 	if m != nil {
@@ -1172,13 +1591,36 @@
 // Reference to a Lease that has been created via CreateLease.
 type LeaseReference struct {
 	// Lease ID (required)
-	LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId" json:"lease_id,omitempty"`
+	LeaseId              string   `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *LeaseReference) Reset()                    { *m = LeaseReference{} }
-func (m *LeaseReference) String() string            { return proto.CompactTextString(m) }
-func (*LeaseReference) ProtoMessage()               {}
-func (*LeaseReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+func (m *LeaseReference) Reset()         { *m = LeaseReference{} }
+func (m *LeaseReference) String() string { return proto.CompactTextString(m) }
+func (*LeaseReference) ProtoMessage()    {}
+func (*LeaseReference) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{17}
+}
+
+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 (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)
+}
+func (m *LeaseReference) XXX_DiscardUnknown() {
+	xxx_messageInfo_LeaseReference.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LeaseReference proto.InternalMessageInfo
 
 func (m *LeaseReference) GetLeaseId() string {
 	if m != nil {
@@ -1190,19 +1632,42 @@
 // Request to create an order.
 type CreateOrderRequest struct {
 	// The order to create. (required)
-	Order *Order `protobuf:"bytes,1,opt,name=order" json:"order,omitempty"`
+	Order *Order `protobuf:"bytes,1,opt,name=order,proto3" json:"order,omitempty"`
 	// The parameters to be used if the payment is processed by the partner
 	// (i.e. order.payment_information.payment_processed_by is equal to
 	// PROCESSED_BY_PARTNER). (required if payment is processed by the partner)
-	PaymentProcessingParameters *PaymentProcessingParameters `protobuf:"bytes,2,opt,name=payment_processing_parameters,json=paymentProcessingParameters" json:"payment_processing_parameters,omitempty"`
+	PaymentProcessingParameters *PaymentProcessingParameters `protobuf:"bytes,2,opt,name=payment_processing_parameters,json=paymentProcessingParameters,proto3" json:"payment_processing_parameters,omitempty"`
 	// Idempotency token for CreateOrder requests. (required)
-	IdempotencyToken string `protobuf:"bytes,3,opt,name=idempotency_token,json=idempotencyToken" json:"idempotency_token,omitempty"`
+	IdempotencyToken     string   `protobuf:"bytes,3,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 *CreateOrderRequest) Reset()                    { *m = CreateOrderRequest{} }
-func (m *CreateOrderRequest) String() string            { return proto.CompactTextString(m) }
-func (*CreateOrderRequest) ProtoMessage()               {}
-func (*CreateOrderRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+func (m *CreateOrderRequest) Reset()         { *m = CreateOrderRequest{} }
+func (m *CreateOrderRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateOrderRequest) ProtoMessage()    {}
+func (*CreateOrderRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{18}
+}
+
+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 (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)
+}
+func (m *CreateOrderRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateOrderRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateOrderRequest proto.InternalMessageInfo
 
 func (m *CreateOrderRequest) GetOrder() *Order {
 	if m != nil {
@@ -1235,26 +1700,51 @@
 	// Types that are valid to be assigned to Result:
 	//	*CreateOrderResponse_Order
 	//	*CreateOrderResponse_OrderFailure
-	Result isCreateOrderResponse_Result `protobuf_oneof:"result"`
+	Result               isCreateOrderResponse_Result `protobuf_oneof:"result"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
 }
 
-func (m *CreateOrderResponse) Reset()                    { *m = CreateOrderResponse{} }
-func (m *CreateOrderResponse) String() string            { return proto.CompactTextString(m) }
-func (*CreateOrderResponse) ProtoMessage()               {}
-func (*CreateOrderResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+func (m *CreateOrderResponse) Reset()         { *m = CreateOrderResponse{} }
+func (m *CreateOrderResponse) String() string { return proto.CompactTextString(m) }
+func (*CreateOrderResponse) ProtoMessage()    {}
+func (*CreateOrderResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{19}
+}
+
+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 (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)
+}
+func (m *CreateOrderResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateOrderResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateOrderResponse proto.InternalMessageInfo
 
 type isCreateOrderResponse_Result interface {
 	isCreateOrderResponse_Result()
 }
 
 type CreateOrderResponse_Order struct {
-	Order *Order `protobuf:"bytes,1,opt,name=order,oneof"`
-}
-type CreateOrderResponse_OrderFailure struct {
-	OrderFailure *OrderFailure `protobuf:"bytes,2,opt,name=order_failure,json=orderFailure,oneof"`
+	Order *Order `protobuf:"bytes,1,opt,name=order,proto3,oneof"`
 }
 
-func (*CreateOrderResponse_Order) isCreateOrderResponse_Result()        {}
+type CreateOrderResponse_OrderFailure struct {
+	OrderFailure *OrderFailure `protobuf:"bytes,2,opt,name=order_failure,json=orderFailure,proto3,oneof"`
+}
+
+func (*CreateOrderResponse_Order) isCreateOrderResponse_Result() {}
+
 func (*CreateOrderResponse_OrderFailure) isCreateOrderResponse_Result() {}
 
 func (m *CreateOrderResponse) GetResult() isCreateOrderResponse_Result {
@@ -1278,90 +1768,47 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*CreateOrderResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _CreateOrderResponse_OneofMarshaler, _CreateOrderResponse_OneofUnmarshaler, _CreateOrderResponse_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*CreateOrderResponse) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*CreateOrderResponse_Order)(nil),
 		(*CreateOrderResponse_OrderFailure)(nil),
 	}
 }
 
-func _CreateOrderResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*CreateOrderResponse)
-	// result
-	switch x := m.Result.(type) {
-	case *CreateOrderResponse_Order:
-		b.EncodeVarint(1<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Order); err != nil {
-			return err
-		}
-	case *CreateOrderResponse_OrderFailure:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OrderFailure); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("CreateOrderResponse.Result has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _CreateOrderResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*CreateOrderResponse)
-	switch tag {
-	case 1: // result.order
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Order)
-		err := b.DecodeMessage(msg)
-		m.Result = &CreateOrderResponse_Order{msg}
-		return true, err
-	case 2: // result.order_failure
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OrderFailure)
-		err := b.DecodeMessage(msg)
-		m.Result = &CreateOrderResponse_OrderFailure{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _CreateOrderResponse_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*CreateOrderResponse)
-	// result
-	switch x := m.Result.(type) {
-	case *CreateOrderResponse_Order:
-		s := proto.Size(x.Order)
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *CreateOrderResponse_OrderFailure:
-		s := proto.Size(x.OrderFailure)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Request to list all bookings for a user
 type ListBookingsRequest struct {
 	// ID of the user (required)
-	UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId" json:"user_id,omitempty"`
+	UserId               string   `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ListBookingsRequest) Reset()                    { *m = ListBookingsRequest{} }
-func (m *ListBookingsRequest) String() string            { return proto.CompactTextString(m) }
-func (*ListBookingsRequest) ProtoMessage()               {}
-func (*ListBookingsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
+func (m *ListBookingsRequest) Reset()         { *m = ListBookingsRequest{} }
+func (m *ListBookingsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListBookingsRequest) ProtoMessage()    {}
+func (*ListBookingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{20}
+}
+
+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 (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)
+}
+func (m *ListBookingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListBookingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListBookingsRequest proto.InternalMessageInfo
 
 func (m *ListBookingsRequest) GetUserId() string {
 	if m != nil {
@@ -1373,13 +1820,36 @@
 // Response for the ListBookings RPC with all bookings for the requested user.
 type ListBookingsResponse struct {
 	// All bookings of the user (required)
-	Bookings []*Booking `protobuf:"bytes,1,rep,name=bookings" json:"bookings,omitempty"`
+	Bookings             []*Booking `protobuf:"bytes,1,rep,name=bookings,proto3" json:"bookings,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
 }
 
-func (m *ListBookingsResponse) Reset()                    { *m = ListBookingsResponse{} }
-func (m *ListBookingsResponse) String() string            { return proto.CompactTextString(m) }
-func (*ListBookingsResponse) ProtoMessage()               {}
-func (*ListBookingsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+func (m *ListBookingsResponse) Reset()         { *m = ListBookingsResponse{} }
+func (m *ListBookingsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListBookingsResponse) ProtoMessage()    {}
+func (*ListBookingsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{21}
+}
+
+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 (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)
+}
+func (m *ListBookingsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListBookingsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListBookingsResponse proto.InternalMessageInfo
 
 func (m *ListBookingsResponse) GetBookings() []*Booking {
 	if m != nil {
@@ -1395,26 +1865,51 @@
 	// Types that are valid to be assigned to Ids:
 	//	*ListOrdersRequest_UserId
 	//	*ListOrdersRequest_OrderIds_
-	Ids isListOrdersRequest_Ids `protobuf_oneof:"ids"`
+	Ids                  isListOrdersRequest_Ids `protobuf_oneof:"ids"`
+	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
+	XXX_unrecognized     []byte                  `json:"-"`
+	XXX_sizecache        int32                   `json:"-"`
 }
 
-func (m *ListOrdersRequest) Reset()                    { *m = ListOrdersRequest{} }
-func (m *ListOrdersRequest) String() string            { return proto.CompactTextString(m) }
-func (*ListOrdersRequest) ProtoMessage()               {}
-func (*ListOrdersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
+func (m *ListOrdersRequest) Reset()         { *m = ListOrdersRequest{} }
+func (m *ListOrdersRequest) String() string { return proto.CompactTextString(m) }
+func (*ListOrdersRequest) ProtoMessage()    {}
+func (*ListOrdersRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{22}
+}
+
+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 (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)
+}
+func (m *ListOrdersRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListOrdersRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListOrdersRequest proto.InternalMessageInfo
 
 type isListOrdersRequest_Ids interface {
 	isListOrdersRequest_Ids()
 }
 
 type ListOrdersRequest_UserId struct {
-	UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,oneof"`
-}
-type ListOrdersRequest_OrderIds_ struct {
-	OrderIds *ListOrdersRequest_OrderIds `protobuf:"bytes,2,opt,name=order_ids,json=orderIds,oneof"`
+	UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3,oneof"`
 }
 
-func (*ListOrdersRequest_UserId) isListOrdersRequest_Ids()    {}
+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_OrderIds_) isListOrdersRequest_Ids() {}
 
 func (m *ListOrdersRequest) GetIds() isListOrdersRequest_Ids {
@@ -1438,84 +1933,45 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*ListOrdersRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _ListOrdersRequest_OneofMarshaler, _ListOrdersRequest_OneofUnmarshaler, _ListOrdersRequest_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*ListOrdersRequest) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*ListOrdersRequest_UserId)(nil),
 		(*ListOrdersRequest_OrderIds_)(nil),
 	}
 }
 
-func _ListOrdersRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*ListOrdersRequest)
-	// ids
-	switch x := m.Ids.(type) {
-	case *ListOrdersRequest_UserId:
-		b.EncodeVarint(1<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.UserId)
-	case *ListOrdersRequest_OrderIds_:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OrderIds); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("ListOrdersRequest.Ids has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _ListOrdersRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*ListOrdersRequest)
-	switch tag {
-	case 1: // ids.user_id
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Ids = &ListOrdersRequest_UserId{x}
-		return true, err
-	case 2: // ids.order_ids
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(ListOrdersRequest_OrderIds)
-		err := b.DecodeMessage(msg)
-		m.Ids = &ListOrdersRequest_OrderIds_{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _ListOrdersRequest_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*ListOrdersRequest)
-	// ids
-	switch x := m.Ids.(type) {
-	case *ListOrdersRequest_UserId:
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.UserId)))
-		n += len(x.UserId)
-	case *ListOrdersRequest_OrderIds_:
-		s := proto.Size(x.OrderIds)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type ListOrdersRequest_OrderIds struct {
-	OrderId []string `protobuf:"bytes,1,rep,name=order_id,json=orderId" json:"order_id,omitempty"`
+	OrderId              []string `protobuf:"bytes,1,rep,name=order_id,json=orderId,proto3" json:"order_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ListOrdersRequest_OrderIds) Reset()                    { *m = ListOrdersRequest_OrderIds{} }
-func (m *ListOrdersRequest_OrderIds) String() string            { return proto.CompactTextString(m) }
-func (*ListOrdersRequest_OrderIds) ProtoMessage()               {}
-func (*ListOrdersRequest_OrderIds) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22, 0} }
+func (m *ListOrdersRequest_OrderIds) Reset()         { *m = ListOrdersRequest_OrderIds{} }
+func (m *ListOrdersRequest_OrderIds) String() string { return proto.CompactTextString(m) }
+func (*ListOrdersRequest_OrderIds) ProtoMessage()    {}
+func (*ListOrdersRequest_OrderIds) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{22, 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 (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)
+}
+func (m *ListOrdersRequest_OrderIds) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListOrdersRequest_OrderIds.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListOrdersRequest_OrderIds proto.InternalMessageInfo
 
 func (m *ListOrdersRequest_OrderIds) GetOrderId() []string {
 	if m != nil {
@@ -1527,13 +1983,36 @@
 // Response for the ListOrders RPC.
 type ListOrdersResponse struct {
 	// All requested orders (required)
-	Order []*Order `protobuf:"bytes,1,rep,name=order" json:"order,omitempty"`
+	Order                []*Order `protobuf:"bytes,1,rep,name=order,proto3" json:"order,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ListOrdersResponse) Reset()                    { *m = ListOrdersResponse{} }
-func (m *ListOrdersResponse) String() string            { return proto.CompactTextString(m) }
-func (*ListOrdersResponse) ProtoMessage()               {}
-func (*ListOrdersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
+func (m *ListOrdersResponse) Reset()         { *m = ListOrdersResponse{} }
+func (m *ListOrdersResponse) String() string { return proto.CompactTextString(m) }
+func (*ListOrdersResponse) ProtoMessage()    {}
+func (*ListOrdersResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{23}
+}
+
+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 (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)
+}
+func (m *ListOrdersResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListOrdersResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListOrdersResponse proto.InternalMessageInfo
 
 func (m *ListOrdersResponse) GetOrder() []*Order {
 	if m != nil {
@@ -1544,13 +2023,36 @@
 
 // Request to update a Booking.
 type UpdateBookingRequest struct {
-	Booking *Booking `protobuf:"bytes,1,opt,name=booking" json:"booking,omitempty"`
+	Booking              *Booking `protobuf:"bytes,1,opt,name=booking,proto3" json:"booking,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *UpdateBookingRequest) Reset()                    { *m = UpdateBookingRequest{} }
-func (m *UpdateBookingRequest) String() string            { return proto.CompactTextString(m) }
-func (*UpdateBookingRequest) ProtoMessage()               {}
-func (*UpdateBookingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
+func (m *UpdateBookingRequest) Reset()         { *m = UpdateBookingRequest{} }
+func (m *UpdateBookingRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateBookingRequest) ProtoMessage()    {}
+func (*UpdateBookingRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{24}
+}
+
+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 (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)
+}
+func (m *UpdateBookingRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UpdateBookingRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UpdateBookingRequest proto.InternalMessageInfo
 
 func (m *UpdateBookingRequest) GetBooking() *Booking {
 	if m != nil {
@@ -1562,7 +2064,7 @@
 // Response with the updated Booking.
 type UpdateBookingResponse struct {
 	// The updated booking (required)
-	Booking *Booking `protobuf:"bytes,1,opt,name=booking" json:"booking,omitempty"`
+	Booking *Booking `protobuf:"bytes,1,opt,name=booking,proto3" json:"booking,omitempty"`
 	// The updated user payment option originally used to pay for this booking.
 	// This should be set if the UpdateBookingRequest results in a change to
 	// the UserPaymentOption.
@@ -1572,16 +2074,39 @@
 	// allow the user to create another booking with this payment option. In the
 	// case of a single-use payment option, a new single-use user payment option
 	// should be returned. (required if altered in update)
-	UserPaymentOption *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption" json:"user_payment_option,omitempty"`
+	UserPaymentOption *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption,proto3" json:"user_payment_option,omitempty"`
 	// If updating a booking fails, this field should reflect the business logic
 	// error (e.g., booking is not cancellable) (required if failure occurs)
-	BookingFailure *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure" json:"booking_failure,omitempty"`
+	BookingFailure       *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure,proto3" json:"booking_failure,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
 }
 
-func (m *UpdateBookingResponse) Reset()                    { *m = UpdateBookingResponse{} }
-func (m *UpdateBookingResponse) String() string            { return proto.CompactTextString(m) }
-func (*UpdateBookingResponse) ProtoMessage()               {}
-func (*UpdateBookingResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
+func (m *UpdateBookingResponse) Reset()         { *m = UpdateBookingResponse{} }
+func (m *UpdateBookingResponse) String() string { return proto.CompactTextString(m) }
+func (*UpdateBookingResponse) ProtoMessage()    {}
+func (*UpdateBookingResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{25}
+}
+
+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 (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)
+}
+func (m *UpdateBookingResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_UpdateBookingResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UpdateBookingResponse proto.InternalMessageInfo
 
 func (m *UpdateBookingResponse) GetBooking() *Booking {
 	if m != nil {
@@ -1607,22 +2132,45 @@
 // A booking for an inventory slot
 type Booking struct {
 	// ID of this booking (required)
-	BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId" json:"booking_id,omitempty"`
+	BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId,proto3" json:"booking_id,omitempty"`
 	// The appointment slot of this booking (required)
-	Slot *Slot `protobuf:"bytes,2,opt,name=slot" json:"slot,omitempty"`
+	Slot *Slot `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"`
 	// Personal information of the user making the appointment (required)
-	UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation" json:"user_information,omitempty"`
+	UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation,proto3" json:"user_information,omitempty"`
 	// Status of the booking (required)
-	Status BookingStatus `protobuf:"varint,4,opt,name=status,enum=ext.maps.booking.partner.v3.BookingStatus" json:"status,omitempty"`
+	Status BookingStatus `protobuf:"varint,4,opt,name=status,proto3,enum=ext.maps.booking.partner.v3.BookingStatus" json:"status,omitempty"`
 	// Information about payment transactions that relate to the booking.
 	// (optional)
-	PaymentInformation *PaymentInformation `protobuf:"bytes,5,opt,name=payment_information,json=paymentInformation" json:"payment_information,omitempty"`
+	PaymentInformation   *PaymentInformation `protobuf:"bytes,5,opt,name=payment_information,json=paymentInformation,proto3" json:"payment_information,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
 }
 
-func (m *Booking) Reset()                    { *m = Booking{} }
-func (m *Booking) String() string            { return proto.CompactTextString(m) }
-func (*Booking) ProtoMessage()               {}
-func (*Booking) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
+func (m *Booking) Reset()         { *m = Booking{} }
+func (m *Booking) String() string { return proto.CompactTextString(m) }
+func (*Booking) ProtoMessage()    {}
+func (*Booking) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{26}
+}
+
+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 (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)
+}
+func (m *Booking) XXX_DiscardUnknown() {
+	xxx_messageInfo_Booking.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Booking proto.InternalMessageInfo
 
 func (m *Booking) GetBookingId() string {
 	if m != nil {
@@ -1664,18 +2212,41 @@
 // BookingFailure is intended to primarily capture business logic errors.
 type BookingFailure struct {
 	// The reason why the booking failed. (required)
-	Cause BookingFailure_Cause `protobuf:"varint,1,opt,name=cause,enum=ext.maps.booking.partner.v3.BookingFailure_Cause" json:"cause,omitempty"`
+	Cause BookingFailure_Cause `protobuf:"varint,1,opt,name=cause,proto3,enum=ext.maps.booking.partner.v3.BookingFailure_Cause" json:"cause,omitempty"`
 	// (required only if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED)
-	RejectedCardType CreditCardType `protobuf:"varint,2,opt,name=rejected_card_type,json=rejectedCardType,enum=ext.maps.booking.partner.v3.CreditCardType" json:"rejected_card_type,omitempty"`
+	RejectedCardType CreditCardType `protobuf:"varint,2,opt,name=rejected_card_type,json=rejectedCardType,proto3,enum=ext.maps.booking.partner.v3.CreditCardType" json:"rejected_card_type,omitempty"`
 	// This optional field is used for the partner to include additional
 	// information for debugging purpose only. (optional)
-	Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
+	Description          string   `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *BookingFailure) Reset()                    { *m = BookingFailure{} }
-func (m *BookingFailure) String() string            { return proto.CompactTextString(m) }
-func (*BookingFailure) ProtoMessage()               {}
-func (*BookingFailure) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
+func (m *BookingFailure) Reset()         { *m = BookingFailure{} }
+func (m *BookingFailure) String() string { return proto.CompactTextString(m) }
+func (*BookingFailure) ProtoMessage()    {}
+func (*BookingFailure) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{27}
+}
+
+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 (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)
+}
+func (m *BookingFailure) XXX_DiscardUnknown() {
+	xxx_messageInfo_BookingFailure.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BookingFailure proto.InternalMessageInfo
 
 func (m *BookingFailure) GetCause() BookingFailure_Cause {
 	if m != nil {
@@ -1703,22 +2274,45 @@
 	// ID of this Order, chosen by the booking partner who handles the order
 	// (required in CreateOrderResponse and ListOrdersResponse, must not be set in
 	// CreateOrderRequest)
-	OrderId string `protobuf:"bytes,1,opt,name=order_id,json=orderId" json:"order_id,omitempty"`
+	OrderId string `protobuf:"bytes,1,opt,name=order_id,json=orderId,proto3" json:"order_id,omitempty"`
 	// Personal information of the user making the order (required)
-	UserInformation *UserInformation `protobuf:"bytes,2,opt,name=user_information,json=userInformation" json:"user_information,omitempty"`
+	UserInformation *UserInformation `protobuf:"bytes,2,opt,name=user_information,json=userInformation,proto3" json:"user_information,omitempty"`
 	// Information about payment transactions that relate to the Order.
 	// (optional)
-	PaymentInformation *PaymentInformation `protobuf:"bytes,3,opt,name=payment_information,json=paymentInformation" json:"payment_information,omitempty"`
+	PaymentInformation *PaymentInformation `protobuf:"bytes,3,opt,name=payment_information,json=paymentInformation,proto3" json:"payment_information,omitempty"`
 	// The merchant that all services in this Order belong to.
-	MerchantId string `protobuf:"bytes,4,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"`
+	MerchantId string `protobuf:"bytes,4,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
 	// Line items in this order.
-	Item []*LineItem `protobuf:"bytes,5,rep,name=item" json:"item,omitempty"`
+	Item                 []*LineItem `protobuf:"bytes,5,rep,name=item,proto3" json:"item,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
 }
 
-func (m *Order) Reset()                    { *m = Order{} }
-func (m *Order) String() string            { return proto.CompactTextString(m) }
-func (*Order) ProtoMessage()               {}
-func (*Order) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
+func (m *Order) Reset()         { *m = Order{} }
+func (m *Order) String() string { return proto.CompactTextString(m) }
+func (*Order) ProtoMessage()    {}
+func (*Order) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{28}
+}
+
+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 (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)
+}
+func (m *Order) XXX_DiscardUnknown() {
+	xxx_messageInfo_Order.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Order proto.InternalMessageInfo
 
 func (m *Order) GetOrderId() string {
 	if m != nil {
@@ -1759,30 +2353,53 @@
 // slot.
 type LineItem struct {
 	// ID of the merchant Service. (required)
-	ServiceId string `protobuf:"bytes,1,opt,name=service_id,json=serviceId" json:"service_id,omitempty"`
+	ServiceId string `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
 	// Start time of the appointment slot in seconds of UTC time since Unix epoch.
 	// (required)
-	StartSec int64 `protobuf:"varint,2,opt,name=start_sec,json=startSec" json:"start_sec,omitempty"`
+	StartSec int64 `protobuf:"varint,2,opt,name=start_sec,json=startSec,proto3" json:"start_sec,omitempty"`
 	// Duration of the appointment slot in seconds. (required)
-	DurationSec int64 `protobuf:"varint,3,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
+	DurationSec int64 `protobuf:"varint,3,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
 	// Number of tickets ordered by Ticket Type.
-	Tickets []*LineItem_OrderedTickets `protobuf:"bytes,4,rep,name=tickets" json:"tickets,omitempty"`
+	Tickets []*LineItem_OrderedTickets `protobuf:"bytes,4,rep,name=tickets,proto3" json:"tickets,omitempty"`
 	// In handling CreateOrderRequest and CheckOrderFulfillabilityRequest,
 	// the total price (excluding taxes) of the item must be verified to guard
 	// against price changes. In CreateOrderResponse and
 	// CheckOrderFulfillabilityResponse, the price should be updated to the
 	// correct value if the value from the request was incorrect or outdated.
 	// (reqired)
-	Price *Price `protobuf:"bytes,5,opt,name=price" json:"price,omitempty"`
+	Price *Price `protobuf:"bytes,5,opt,name=price,proto3" json:"price,omitempty"`
 	// Status of the Line Item. (required in CreateOrderResponse and
 	// ListOrdersResponse; should not be set in requests)
-	Status BookingStatus `protobuf:"varint,6,opt,name=status,enum=ext.maps.booking.partner.v3.BookingStatus" json:"status,omitempty"`
+	Status               BookingStatus `protobuf:"varint,6,opt,name=status,proto3,enum=ext.maps.booking.partner.v3.BookingStatus" json:"status,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
 }
 
-func (m *LineItem) Reset()                    { *m = LineItem{} }
-func (m *LineItem) String() string            { return proto.CompactTextString(m) }
-func (*LineItem) ProtoMessage()               {}
-func (*LineItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
+func (m *LineItem) Reset()         { *m = LineItem{} }
+func (m *LineItem) String() string { return proto.CompactTextString(m) }
+func (*LineItem) ProtoMessage()    {}
+func (*LineItem) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{29}
+}
+
+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 (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)
+}
+func (m *LineItem) XXX_DiscardUnknown() {
+	xxx_messageInfo_LineItem.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LineItem proto.InternalMessageInfo
 
 func (m *LineItem) GetServiceId() string {
 	if m != nil {
@@ -1827,14 +2444,37 @@
 }
 
 type LineItem_OrderedTickets struct {
-	TicketId string `protobuf:"bytes,1,opt,name=ticket_id,json=ticketId" json:"ticket_id,omitempty"`
-	Count    int32  `protobuf:"varint,2,opt,name=count" json:"count,omitempty"`
+	TicketId             string   `protobuf:"bytes,1,opt,name=ticket_id,json=ticketId,proto3" json:"ticket_id,omitempty"`
+	Count                int32    `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *LineItem_OrderedTickets) Reset()                    { *m = LineItem_OrderedTickets{} }
-func (m *LineItem_OrderedTickets) String() string            { return proto.CompactTextString(m) }
-func (*LineItem_OrderedTickets) ProtoMessage()               {}
-func (*LineItem_OrderedTickets) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29, 0} }
+func (m *LineItem_OrderedTickets) Reset()         { *m = LineItem_OrderedTickets{} }
+func (m *LineItem_OrderedTickets) String() string { return proto.CompactTextString(m) }
+func (*LineItem_OrderedTickets) ProtoMessage()    {}
+func (*LineItem_OrderedTickets) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{29, 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 (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)
+}
+func (m *LineItem_OrderedTickets) XXX_DiscardUnknown() {
+	xxx_messageInfo_LineItem_OrderedTickets.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LineItem_OrderedTickets proto.InternalMessageInfo
 
 func (m *LineItem_OrderedTickets) GetTicketId() string {
 	if m != nil {
@@ -1854,20 +2494,43 @@
 // OrderFailure is intended to primarily capture business logic errors.
 type OrderFailure struct {
 	// The reason why the order failed. (required)
-	Cause OrderFailure_Cause `protobuf:"varint,1,opt,name=cause,enum=ext.maps.booking.partner.v3.OrderFailure_Cause" json:"cause,omitempty"`
+	Cause OrderFailure_Cause `protobuf:"varint,1,opt,name=cause,proto3,enum=ext.maps.booking.partner.v3.OrderFailure_Cause" json:"cause,omitempty"`
 	// (required only if cause is ORDER_UNFULFILLABLE)
-	Fulfillability *OrderFulfillability `protobuf:"bytes,2,opt,name=fulfillability" json:"fulfillability,omitempty"`
+	Fulfillability *OrderFulfillability `protobuf:"bytes,2,opt,name=fulfillability,proto3" json:"fulfillability,omitempty"`
 	// (required only if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED)
-	RejectedCardType CreditCardType `protobuf:"varint,3,opt,name=rejected_card_type,json=rejectedCardType,enum=ext.maps.booking.partner.v3.CreditCardType" json:"rejected_card_type,omitempty"`
+	RejectedCardType CreditCardType `protobuf:"varint,3,opt,name=rejected_card_type,json=rejectedCardType,proto3,enum=ext.maps.booking.partner.v3.CreditCardType" json:"rejected_card_type,omitempty"`
 	// This optional field is used for the partner to include additional
 	// information for debugging purpose only. (optional)
-	Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
+	Description          string   `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *OrderFailure) Reset()                    { *m = OrderFailure{} }
-func (m *OrderFailure) String() string            { return proto.CompactTextString(m) }
-func (*OrderFailure) ProtoMessage()               {}
-func (*OrderFailure) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
+func (m *OrderFailure) Reset()         { *m = OrderFailure{} }
+func (m *OrderFailure) String() string { return proto.CompactTextString(m) }
+func (*OrderFailure) ProtoMessage()    {}
+func (*OrderFailure) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{30}
+}
+
+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 (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)
+}
+func (m *OrderFailure) XXX_DiscardUnknown() {
+	xxx_messageInfo_OrderFailure.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OrderFailure proto.InternalMessageInfo
 
 func (m *OrderFailure) GetCause() OrderFailure_Cause {
 	if m != nil {
@@ -1898,18 +2561,41 @@
 }
 
 type OrderFulfillability struct {
-	Result OrderFulfillability_OrderFulfillabilityResult `protobuf:"varint,1,opt,name=result,enum=ext.maps.booking.partner.v3.OrderFulfillability_OrderFulfillabilityResult" json:"result,omitempty"`
+	Result OrderFulfillability_OrderFulfillabilityResult `protobuf:"varint,1,opt,name=result,proto3,enum=ext.maps.booking.partner.v3.OrderFulfillability_OrderFulfillabilityResult" json:"result,omitempty"`
 	// Fulfillability results of all line items in this order (required).
-	ItemFulfillability []*LineItemFulfillability `protobuf:"bytes,2,rep,name=item_fulfillability,json=itemFulfillability" json:"item_fulfillability,omitempty"`
+	ItemFulfillability []*LineItemFulfillability `protobuf:"bytes,2,rep,name=item_fulfillability,json=itemFulfillability,proto3" json:"item_fulfillability,omitempty"`
 	// Additional description of the reason if the item is unfulfillable.
 	// (optional)
-	UnfulfillableReason string `protobuf:"bytes,3,opt,name=unfulfillable_reason,json=unfulfillableReason" json:"unfulfillable_reason,omitempty"`
+	UnfulfillableReason  string   `protobuf:"bytes,3,opt,name=unfulfillable_reason,json=unfulfillableReason,proto3" json:"unfulfillable_reason,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *OrderFulfillability) Reset()                    { *m = OrderFulfillability{} }
-func (m *OrderFulfillability) String() string            { return proto.CompactTextString(m) }
-func (*OrderFulfillability) ProtoMessage()               {}
-func (*OrderFulfillability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
+func (m *OrderFulfillability) Reset()         { *m = OrderFulfillability{} }
+func (m *OrderFulfillability) String() string { return proto.CompactTextString(m) }
+func (*OrderFulfillability) ProtoMessage()    {}
+func (*OrderFulfillability) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{31}
+}
+
+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 (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)
+}
+func (m *OrderFulfillability) XXX_DiscardUnknown() {
+	xxx_messageInfo_OrderFulfillability.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OrderFulfillability proto.InternalMessageInfo
 
 func (m *OrderFulfillability) GetResult() OrderFulfillability_OrderFulfillabilityResult {
 	if m != nil {
@@ -1935,25 +2621,48 @@
 // Fulfillability of a line item.
 type LineItemFulfillability struct {
 	// The line item of question. (required)
-	Item *LineItem `protobuf:"bytes,1,opt,name=item" json:"item,omitempty"`
+	Item *LineItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"`
 	// (required)
-	Result LineItemFulfillability_ItemFulfillabilityResult `protobuf:"varint,2,opt,name=result,enum=ext.maps.booking.partner.v3.LineItemFulfillability_ItemFulfillabilityResult" json:"result,omitempty"`
+	Result LineItemFulfillability_ItemFulfillabilityResult `protobuf:"varint,2,opt,name=result,proto3,enum=ext.maps.booking.partner.v3.LineItemFulfillability_ItemFulfillabilityResult" json:"result,omitempty"`
 	// Additional description of the reason if the item is unfulfillable.
 	// (optional)
-	UnfulfillableReason string `protobuf:"bytes,3,opt,name=unfulfillable_reason,json=unfulfillableReason" json:"unfulfillable_reason,omitempty"`
+	UnfulfillableReason string `protobuf:"bytes,3,opt,name=unfulfillable_reason,json=unfulfillableReason,proto3" json:"unfulfillable_reason,omitempty"`
 	// (optional)
-	Availability *LineItemFulfillability_UpdatedAvailability `protobuf:"bytes,4,opt,name=availability" json:"availability,omitempty"`
+	Availability *LineItemFulfillability_UpdatedAvailability `protobuf:"bytes,4,opt,name=availability,proto3" json:"availability,omitempty"`
 	// Updated ticket types can be piggybacked in
 	// CheckOrderFulfillabilityResponse. If non-empty, all available ticket types
 	// for this slot with up-to-date prices should be listed without omitting any.
 	// (optional)
-	TicketType []*TicketType `protobuf:"bytes,5,rep,name=ticket_type,json=ticketType" json:"ticket_type,omitempty"`
+	TicketType           []*TicketType `protobuf:"bytes,5,rep,name=ticket_type,json=ticketType,proto3" json:"ticket_type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
 }
 
-func (m *LineItemFulfillability) Reset()                    { *m = LineItemFulfillability{} }
-func (m *LineItemFulfillability) String() string            { return proto.CompactTextString(m) }
-func (*LineItemFulfillability) ProtoMessage()               {}
-func (*LineItemFulfillability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
+func (m *LineItemFulfillability) Reset()         { *m = LineItemFulfillability{} }
+func (m *LineItemFulfillability) String() string { return proto.CompactTextString(m) }
+func (*LineItemFulfillability) ProtoMessage()    {}
+func (*LineItemFulfillability) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{32}
+}
+
+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 (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)
+}
+func (m *LineItemFulfillability) XXX_DiscardUnknown() {
+	xxx_messageInfo_LineItemFulfillability.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LineItemFulfillability proto.InternalMessageInfo
 
 func (m *LineItemFulfillability) GetItem() *LineItem {
 	if m != nil {
@@ -1995,7 +2704,10 @@
 type LineItemFulfillability_UpdatedAvailability struct {
 	// Number of available spots for the given slot. 0 indicates no
 	// availability. (required)
-	SpotsOpen int32 `protobuf:"varint,1,opt,name=spots_open,json=spotsOpen" json:"spots_open,omitempty"`
+	SpotsOpen            int32    `protobuf:"varint,1,opt,name=spots_open,json=spotsOpen,proto3" json:"spots_open,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *LineItemFulfillability_UpdatedAvailability) Reset() {
@@ -2006,9 +2718,27 @@
 }
 func (*LineItemFulfillability_UpdatedAvailability) ProtoMessage() {}
 func (*LineItemFulfillability_UpdatedAvailability) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{32, 0}
+	return fileDescriptor_1820d8e1a9fad753, []int{32, 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 (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)
+}
+func (m *LineItemFulfillability_UpdatedAvailability) XXX_DiscardUnknown() {
+	xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LineItemFulfillability_UpdatedAvailability proto.InternalMessageInfo
+
 func (m *LineItemFulfillability_UpdatedAvailability) GetSpotsOpen() int32 {
 	if m != nil {
 		return m.SpotsOpen
@@ -2025,15 +2755,15 @@
 type TicketType struct {
 	// The ticket id is used to differentiate among different ticket types of the
 	// same service, and is only expected to be unique within a service.
-	TicketTypeId string `protobuf:"bytes,1,opt,name=ticket_type_id,json=ticketTypeId" json:"ticket_type_id,omitempty"`
+	TicketTypeId string `protobuf:"bytes,1,opt,name=ticket_type_id,json=ticketTypeId,proto3" json:"ticket_type_id,omitempty"`
 	// A short description to this TicketType.
 	//
 	// This can be user visible, e.g., “adult”, "child", “veteran”, “Row J”, etc.
 	// Required, each ticket type should have a description to be user visible.
-	ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription" json:"short_description,omitempty"`
+	ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"`
 	// The price of a single ticket of this type, exclusive of any taxes. The tax
 	// rate of Service is applied to its tickets.
-	Price *Price `protobuf:"bytes,3,opt,name=price" json:"price,omitempty"`
+	Price *Price `protobuf:"bytes,3,opt,name=price,proto3" json:"price,omitempty"`
 	// Description of any additional option which this ticket type represents, if
 	// any.
 	//
@@ -2067,13 +2797,36 @@
 	// option_description could be used). E.g.
 	// [{ticket_type_1, adult, english}, {ticket_type_1, adult, ''}] is not a
 	// valid list.
-	OptionDescription string `protobuf:"bytes,4,opt,name=option_description,json=optionDescription" json:"option_description,omitempty"`
+	OptionDescription    string   `protobuf:"bytes,4,opt,name=option_description,json=optionDescription,proto3" json:"option_description,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *TicketType) Reset()                    { *m = TicketType{} }
-func (m *TicketType) String() string            { return proto.CompactTextString(m) }
-func (*TicketType) ProtoMessage()               {}
-func (*TicketType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
+func (m *TicketType) Reset()         { *m = TicketType{} }
+func (m *TicketType) String() string { return proto.CompactTextString(m) }
+func (*TicketType) ProtoMessage()    {}
+func (*TicketType) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{33}
+}
+
+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 (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)
+}
+func (m *TicketType) XXX_DiscardUnknown() {
+	xxx_messageInfo_TicketType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TicketType proto.InternalMessageInfo
 
 func (m *TicketType) GetTicketTypeId() string {
 	if m != nil {
@@ -2107,19 +2860,42 @@
 type ResourceIds struct {
 	// The staff ID as provided in the feed or empty if not applicable or no staff
 	// was selected. (optional)
-	StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId" json:"staff_id,omitempty"`
+	StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"`
 	// The room ID as provided in the feed or empty if not applicable or no room
 	// was selected. (optional)
-	RoomId string `protobuf:"bytes,2,opt,name=room_id,json=roomId" json:"room_id,omitempty"`
+	RoomId string `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
 	// For Dining Reservations only: the number of seats requested in the booking.
 	// (optional)
-	PartySize int32 `protobuf:"varint,3,opt,name=party_size,json=partySize" json:"party_size,omitempty"`
+	PartySize            int32    `protobuf:"varint,3,opt,name=party_size,json=partySize,proto3" json:"party_size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ResourceIds) Reset()                    { *m = ResourceIds{} }
-func (m *ResourceIds) String() string            { return proto.CompactTextString(m) }
-func (*ResourceIds) ProtoMessage()               {}
-func (*ResourceIds) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
+func (m *ResourceIds) Reset()         { *m = ResourceIds{} }
+func (m *ResourceIds) String() string { return proto.CompactTextString(m) }
+func (*ResourceIds) ProtoMessage()    {}
+func (*ResourceIds) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{34}
+}
+
+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 (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)
+}
+func (m *ResourceIds) XXX_DiscardUnknown() {
+	xxx_messageInfo_ResourceIds.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ResourceIds proto.InternalMessageInfo
 
 func (m *ResourceIds) GetStaffId() string {
 	if m != nil {
@@ -2148,16 +2924,39 @@
 	// A tokenization configuration will typically have one
 	// tokenization_parameter whose key is "gateway" and whose value is the
 	// name of the processor.
-	TokenizationParameter map[string]string `protobuf:"bytes,1,rep,name=tokenization_parameter,json=tokenizationParameter" json:"tokenization_parameter,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	TokenizationParameter map[string]string `protobuf:"bytes,1,rep,name=tokenization_parameter,json=tokenizationParameter,proto3" json:"tokenization_parameter,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	// Include in the payment token the user's billing information as entered into
 	// Google Pay with their FOP (see above).
-	BillingInformationFormat TokenizationConfig_BillingInformationFormat `protobuf:"varint,2,opt,name=billing_information_format,json=billingInformationFormat,enum=ext.maps.booking.partner.v3.TokenizationConfig_BillingInformationFormat" json:"billing_information_format,omitempty"`
+	BillingInformationFormat TokenizationConfig_BillingInformationFormat `protobuf:"varint,2,opt,name=billing_information_format,json=billingInformationFormat,proto3,enum=ext.maps.booking.partner.v3.TokenizationConfig_BillingInformationFormat" json:"billing_information_format,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{}                                    `json:"-"`
+	XXX_unrecognized         []byte                                      `json:"-"`
+	XXX_sizecache            int32                                       `json:"-"`
 }
 
-func (m *TokenizationConfig) Reset()                    { *m = TokenizationConfig{} }
-func (m *TokenizationConfig) String() string            { return proto.CompactTextString(m) }
-func (*TokenizationConfig) ProtoMessage()               {}
-func (*TokenizationConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
+func (m *TokenizationConfig) Reset()         { *m = TokenizationConfig{} }
+func (m *TokenizationConfig) String() string { return proto.CompactTextString(m) }
+func (*TokenizationConfig) ProtoMessage()    {}
+func (*TokenizationConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{35}
+}
+
+func (m *TokenizationConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TokenizationConfig.Unmarshal(m, b)
+}
+func (m *TokenizationConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TokenizationConfig.Marshal(b, m, deterministic)
+}
+func (m *TokenizationConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TokenizationConfig.Merge(m, src)
+}
+func (m *TokenizationConfig) XXX_Size() int {
+	return xxx_messageInfo_TokenizationConfig.Size(m)
+}
+func (m *TokenizationConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_TokenizationConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TokenizationConfig proto.InternalMessageInfo
 
 func (m *TokenizationConfig) GetTokenizationParameter() map[string]string {
 	if m != nil {
@@ -2178,7 +2977,7 @@
 	// (required)
 	//
 	// Replaced by the payment_processor field.
-	Processor PaymentProcessingParameters_PaymentProcessor `protobuf:"varint,1,opt,name=processor,enum=ext.maps.booking.partner.v3.PaymentProcessingParameters_PaymentProcessor" json:"processor,omitempty"`
+	Processor PaymentProcessingParameters_PaymentProcessor `protobuf:"varint,1,opt,name=processor,proto3,enum=ext.maps.booking.partner.v3.PaymentProcessingParameters_PaymentProcessor" json:"processor,omitempty"` // Deprecated: Do not use.
 	// The token representing the payment method that will be used to pay
 	// for this booking. This token can be only used once. This token can be
 	// only used for the merchant associated with this booking.
@@ -2191,7 +2990,7 @@
 	// For example, for Stripe, unparsed_payment_method_token is a serialized
 	// JSON object documented at https://stripe.com/docs/api#token_object.
 	// payment_method_token is the 'id' field parsed out of that.
-	PaymentMethodToken string `protobuf:"bytes,2,opt,name=payment_method_token,json=paymentMethodToken" json:"payment_method_token,omitempty"`
+	PaymentMethodToken string `protobuf:"bytes,2,opt,name=payment_method_token,json=paymentMethodToken,proto3" json:"payment_method_token,omitempty"` // Deprecated: Do not use.
 	// The full token received from Google Payments.  This is typically a
 	// serialized JSON object.  See documentation from Google Payments and your
 	// payment processor for the JSON format of the token for your processor.
@@ -2199,28 +2998,52 @@
 	//
 	// This token can only be used once, and only for the merchant associated with
 	// this booking.
-	UnparsedPaymentMethodToken string `protobuf:"bytes,5,opt,name=unparsed_payment_method_token,json=unparsedPaymentMethodToken" json:"unparsed_payment_method_token,omitempty"`
+	UnparsedPaymentMethodToken string `protobuf:"bytes,5,opt,name=unparsed_payment_method_token,json=unparsedPaymentMethodToken,proto3" json:"unparsed_payment_method_token,omitempty"`
 	// The payment processor API version that the given payment token is valid
 	// for.
 	//
 	// Each processor may choose its own format for this field.
 	// Stripe uses a date (e.g. "2017-06-15"). (required)
 	// This is deprecated in favor of tokenization_parameters.
-	Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"`
+	Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` // Deprecated: Do not use.
 	// The payment processor whose configuration was used to generate this token.
 	// (required)
 	// This is deprecated in favor of tokenization_parameters.
-	PaymentProcessor string `protobuf:"bytes,4,opt,name=payment_processor,json=paymentProcessor" json:"payment_processor,omitempty"`
+	PaymentProcessor string `protobuf:"bytes,4,opt,name=payment_processor,json=paymentProcessor,proto3" json:"payment_processor,omitempty"` // Deprecated: Do not use.
 	// The tokenization_config supplied in the Merchant feed that was used
 	// to generate unparsed_payment_method_token.
-	TokenizationConfig *TokenizationConfig `protobuf:"bytes,6,opt,name=tokenization_config,json=tokenizationConfig" json:"tokenization_config,omitempty"`
+	TokenizationConfig   *TokenizationConfig `protobuf:"bytes,6,opt,name=tokenization_config,json=tokenizationConfig,proto3" json:"tokenization_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
 }
 
-func (m *PaymentProcessingParameters) Reset()                    { *m = PaymentProcessingParameters{} }
-func (m *PaymentProcessingParameters) String() string            { return proto.CompactTextString(m) }
-func (*PaymentProcessingParameters) ProtoMessage()               {}
-func (*PaymentProcessingParameters) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
+func (m *PaymentProcessingParameters) Reset()         { *m = PaymentProcessingParameters{} }
+func (m *PaymentProcessingParameters) String() string { return proto.CompactTextString(m) }
+func (*PaymentProcessingParameters) ProtoMessage()    {}
+func (*PaymentProcessingParameters) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{36}
+}
 
+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 (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)
+}
+func (m *PaymentProcessingParameters) XXX_DiscardUnknown() {
+	xxx_messageInfo_PaymentProcessingParameters.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PaymentProcessingParameters proto.InternalMessageInfo
+
+// Deprecated: Do not use.
 func (m *PaymentProcessingParameters) GetProcessor() PaymentProcessingParameters_PaymentProcessor {
 	if m != nil {
 		return m.Processor
@@ -2228,6 +3051,7 @@
 	return PaymentProcessingParameters_PAYMENT_PROCESSOR_UNSPECIFIED
 }
 
+// Deprecated: Do not use.
 func (m *PaymentProcessingParameters) GetPaymentMethodToken() string {
 	if m != nil {
 		return m.PaymentMethodToken
@@ -2242,6 +3066,7 @@
 	return ""
 }
 
+// Deprecated: Do not use.
 func (m *PaymentProcessingParameters) GetVersion() string {
 	if m != nil {
 		return m.Version
@@ -2249,6 +3074,7 @@
 	return ""
 }
 
+// Deprecated: Do not use.
 func (m *PaymentProcessingParameters) GetPaymentProcessor() string {
 	if m != nil {
 		return m.PaymentProcessor
@@ -2270,32 +3096,55 @@
 type UserPaymentOption struct {
 	// A unique identifier for the user payment option. This Id MUST be unique
 	// for all UserPaymentOptions across all merchants and users. (required)
-	UserPaymentOptionId string `protobuf:"bytes,1,opt,name=user_payment_option_id,json=userPaymentOptionId" json:"user_payment_option_id,omitempty"`
+	UserPaymentOptionId string `protobuf:"bytes,1,opt,name=user_payment_option_id,json=userPaymentOptionId,proto3" json:"user_payment_option_id,omitempty"`
 	// The user payment option will be valid (usable) between start_time and
 	// end_time set in UTC. Attempts to use a user payment option to make a
 	// booking outside of this interval will fail. (both optional)
-	ValidStartTimeSec int64 `protobuf:"varint,2,opt,name=valid_start_time_sec,json=validStartTimeSec" json:"valid_start_time_sec,omitempty"`
-	ValidEndTimeSec   int64 `protobuf:"varint,3,opt,name=valid_end_time_sec,json=validEndTimeSec" json:"valid_end_time_sec,omitempty"`
+	ValidStartTimeSec int64 `protobuf:"varint,2,opt,name=valid_start_time_sec,json=validStartTimeSec,proto3" json:"valid_start_time_sec,omitempty"`
+	ValidEndTimeSec   int64 `protobuf:"varint,3,opt,name=valid_end_time_sec,json=validEndTimeSec,proto3" json:"valid_end_time_sec,omitempty"`
 	// The type of the payment option associated with this user payment option.
 	// This can be unlimited for a membership or subscription, multi-use for a
 	// pack, or single-use. (required)
-	Type PaymentOptionType `protobuf:"varint,4,opt,name=type,enum=ext.maps.booking.partner.v3.PaymentOptionType" json:"type,omitempty"`
+	Type PaymentOptionType `protobuf:"varint,4,opt,name=type,proto3,enum=ext.maps.booking.partner.v3.PaymentOptionType" json:"type,omitempty"`
 	// The original number of uses for this user payment option when it was
 	// purchased. This value is ignored for unlimited payment options. (required)
-	OriginalCount int32 `protobuf:"varint,5,opt,name=original_count,json=originalCount" json:"original_count,omitempty"`
+	OriginalCount int32 `protobuf:"varint,5,opt,name=original_count,json=originalCount,proto3" json:"original_count,omitempty"`
 	// The number of uses remaining for this user payment option. If this number
 	// is 0 for a pack, attempts to use this payment option to make a booking will
 	// fail. (required)
-	CurrentCount int32 `protobuf:"varint,6,opt,name=current_count,json=currentCount" json:"current_count,omitempty"`
+	CurrentCount int32 `protobuf:"varint,6,opt,name=current_count,json=currentCount,proto3" json:"current_count,omitempty"`
 	// The id of the payment option that has been used to purchase this user
 	// payment option. (required)
-	PaymentOptionId string `protobuf:"bytes,7,opt,name=payment_option_id,json=paymentOptionId" json:"payment_option_id,omitempty"`
+	PaymentOptionId      string   `protobuf:"bytes,7,opt,name=payment_option_id,json=paymentOptionId,proto3" json:"payment_option_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *UserPaymentOption) Reset()                    { *m = UserPaymentOption{} }
-func (m *UserPaymentOption) String() string            { return proto.CompactTextString(m) }
-func (*UserPaymentOption) ProtoMessage()               {}
-func (*UserPaymentOption) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
+func (m *UserPaymentOption) Reset()         { *m = UserPaymentOption{} }
+func (m *UserPaymentOption) String() string { return proto.CompactTextString(m) }
+func (*UserPaymentOption) ProtoMessage()    {}
+func (*UserPaymentOption) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{37}
+}
+
+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 (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)
+}
+func (m *UserPaymentOption) XXX_DiscardUnknown() {
+	xxx_messageInfo_UserPaymentOption.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UserPaymentOption proto.InternalMessageInfo
 
 func (m *UserPaymentOption) GetUserPaymentOptionId() string {
 	if m != nil {
@@ -2355,13 +3204,13 @@
 	// If the prepayment status is PREPAYMENT_REFUNDED, then
 	// payment_transaction_id contains the associated unique transaction id for
 	// the refund. (required)
-	PrepaymentStatus PrepaymentStatus `protobuf:"varint,1,opt,name=prepayment_status,json=prepaymentStatus,enum=ext.maps.booking.partner.v3.PrepaymentStatus" json:"prepayment_status,omitempty"`
+	PrepaymentStatus PrepaymentStatus `protobuf:"varint,1,opt,name=prepayment_status,json=prepaymentStatus,proto3,enum=ext.maps.booking.partner.v3.PrepaymentStatus" json:"prepayment_status,omitempty"`
 	// Unique identifier for a payment transaction associated with the booking.
 	// If the payment is PROCESSED_BY_GOOGLE, this field will be set by Google.
 	// If the payment is PROCESSED_BY_PARTNER, this field will be left empty in
 	// Google's CreateBooking or CreateOrder requests to the partner, and it must
 	// be set by the partner in their responses.
-	PaymentTransactionId string `protobuf:"bytes,2,opt,name=payment_transaction_id,json=paymentTransactionId" json:"payment_transaction_id,omitempty"`
+	PaymentTransactionId string `protobuf:"bytes,2,opt,name=payment_transaction_id,json=paymentTransactionId,proto3" json:"payment_transaction_id,omitempty"`
 	// These fields must match the service price (specified in the Services feed)
 	// or the PaymentOption corresponding with this service.
 	// They are included in the booking request and response to verify that
@@ -2371,15 +3220,15 @@
 	// The price of the booking or order, exclusive of any taxes.
 	// Existence of price or taxes does not imply that they have been paid,
 	// prepayment_state should be used for that purpose. (required)
-	Price *Price `protobuf:"bytes,3,opt,name=price" json:"price,omitempty"`
+	Price *Price `protobuf:"bytes,3,opt,name=price,proto3" json:"price,omitempty"`
 	// Taxes that are calculated to be paid for this booking.
 	// This field can only be absent in one of the following cases:
 	// (1) the price is exempt from or already inclusive of applicable taxes; or
 	// (2) the break down between taxes and fees is not available.
 	// (required when neither of the above holds)
-	TaxAmount *Price `protobuf:"bytes,4,opt,name=tax_amount,json=taxAmount" json:"tax_amount,omitempty"`
+	TaxAmount *Price `protobuf:"bytes,4,opt,name=tax_amount,json=taxAmount,proto3" json:"tax_amount,omitempty"`
 	// Whether the partner or Google processed the payment. (required)
-	PaymentProcessedBy PaymentInformation_PaymentProcessedBy `protobuf:"varint,5,opt,name=payment_processed_by,json=paymentProcessedBy,enum=ext.maps.booking.partner.v3.PaymentInformation_PaymentProcessedBy" json:"payment_processed_by,omitempty"`
+	PaymentProcessedBy PaymentInformation_PaymentProcessedBy `protobuf:"varint,5,opt,name=payment_processed_by,json=paymentProcessedBy,proto3,enum=ext.maps.booking.partner.v3.PaymentInformation_PaymentProcessedBy" json:"payment_processed_by,omitempty"`
 	// The id of the payment option or user payment option associated with the
 	// booking.
 	// If a payment option is purchased as part of a booking, payment_option_id
@@ -2398,41 +3247,43 @@
 	PaymentId isPaymentInformation_PaymentId `protobuf_oneof:"payment_id"`
 	// Defines how a deposit may be charged to the user. If there is a deposit,
 	// this field should be set. (optional)
-	Deposit *Deposit `protobuf:"bytes,8,opt,name=deposit" json:"deposit,omitempty"`
+	Deposit *Deposit `protobuf:"bytes,8,opt,name=deposit,proto3" json:"deposit,omitempty"`
 	// Defines a no show fee that may be charged to the user. If the user can be
 	// charged a no show fee, this field should be set. (optional)
-	NoShowFee *NoShowFee `protobuf:"bytes,9,opt,name=no_show_fee,json=noShowFee" json:"no_show_fee,omitempty"`
+	NoShowFee *NoShowFee `protobuf:"bytes,9,opt,name=no_show_fee,json=noShowFee,proto3" json:"no_show_fee,omitempty"`
 	// Total processing fees & taxes that the user needs to pay for the order;
 	// only applicable to partners that handle order based booking (e.g., with
 	// CreateOrder method). (optional)
-	FeesAndTaxes *Price `protobuf:"bytes,10,opt,name=fees_and_taxes,json=feesAndTaxes" json:"fees_and_taxes,omitempty"`
+	FeesAndTaxes         *Price   `protobuf:"bytes,10,opt,name=fees_and_taxes,json=feesAndTaxes,proto3" json:"fees_and_taxes,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *PaymentInformation) Reset()                    { *m = PaymentInformation{} }
-func (m *PaymentInformation) String() string            { return proto.CompactTextString(m) }
-func (*PaymentInformation) ProtoMessage()               {}
-func (*PaymentInformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
-
-type isPaymentInformation_PaymentId interface {
-	isPaymentInformation_PaymentId()
+func (m *PaymentInformation) Reset()         { *m = PaymentInformation{} }
+func (m *PaymentInformation) String() string { return proto.CompactTextString(m) }
+func (*PaymentInformation) ProtoMessage()    {}
+func (*PaymentInformation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{38}
 }
 
-type PaymentInformation_PaymentOptionId struct {
-	PaymentOptionId string `protobuf:"bytes,6,opt,name=payment_option_id,json=paymentOptionId,oneof"`
+func (m *PaymentInformation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PaymentInformation.Unmarshal(m, b)
 }
-type PaymentInformation_UserPaymentOptionId struct {
-	UserPaymentOptionId string `protobuf:"bytes,7,opt,name=user_payment_option_id,json=userPaymentOptionId,oneof"`
+func (m *PaymentInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PaymentInformation.Marshal(b, m, deterministic)
+}
+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)
+}
+func (m *PaymentInformation) XXX_DiscardUnknown() {
+	xxx_messageInfo_PaymentInformation.DiscardUnknown(m)
 }
 
-func (*PaymentInformation_PaymentOptionId) isPaymentInformation_PaymentId()     {}
-func (*PaymentInformation_UserPaymentOptionId) isPaymentInformation_PaymentId() {}
-
-func (m *PaymentInformation) GetPaymentId() isPaymentInformation_PaymentId {
-	if m != nil {
-		return m.PaymentId
-	}
-	return nil
-}
+var xxx_messageInfo_PaymentInformation proto.InternalMessageInfo
 
 func (m *PaymentInformation) GetPrepaymentStatus() PrepaymentStatus {
 	if m != nil {
@@ -2469,6 +3320,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
@@ -2504,72 +3378,14 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*PaymentInformation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _PaymentInformation_OneofMarshaler, _PaymentInformation_OneofUnmarshaler, _PaymentInformation_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*PaymentInformation) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*PaymentInformation_PaymentOptionId)(nil),
 		(*PaymentInformation_UserPaymentOptionId)(nil),
 	}
 }
 
-func _PaymentInformation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*PaymentInformation)
-	// payment_id
-	switch x := m.PaymentId.(type) {
-	case *PaymentInformation_PaymentOptionId:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.PaymentOptionId)
-	case *PaymentInformation_UserPaymentOptionId:
-		b.EncodeVarint(7<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.UserPaymentOptionId)
-	case nil:
-	default:
-		return fmt.Errorf("PaymentInformation.PaymentId has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _PaymentInformation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*PaymentInformation)
-	switch tag {
-	case 6: // payment_id.payment_option_id
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.PaymentId = &PaymentInformation_PaymentOptionId{x}
-		return true, err
-	case 7: // payment_id.user_payment_option_id
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.PaymentId = &PaymentInformation_UserPaymentOptionId{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _PaymentInformation_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*PaymentInformation)
-	// payment_id
-	switch x := m.PaymentId.(type) {
-	case *PaymentInformation_PaymentOptionId:
-		n += proto.SizeVarint(6<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.PaymentOptionId)))
-		n += len(x.PaymentOptionId)
-	case *PaymentInformation_UserPaymentOptionId:
-		n += proto.SizeVarint(7<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.UserPaymentOptionId)))
-		n += len(x.UserPaymentOptionId)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // The price of a service or a fee.
 type Price struct {
 	// The price in micro-units of the currency.
@@ -2577,18 +3393,41 @@
 	// rounding. (e.g. For USD 2.5 cents rounded to 2 cents, 3.5 cents rounded to
 	// 4 cents, 0.5 cents rounded to 0 cents, 2.51 cents rounded to 3 cents).
 	// (required)
-	PriceMicros int64 `protobuf:"varint,1,opt,name=price_micros,json=priceMicros" json:"price_micros,omitempty"`
+	PriceMicros int64 `protobuf:"varint,1,opt,name=price_micros,json=priceMicros,proto3" json:"price_micros,omitempty"`
 	// The currency of the price that is defined in ISO 4217. (required)
-	CurrencyCode string `protobuf:"bytes,2,opt,name=currency_code,json=currencyCode" json:"currency_code,omitempty"`
+	CurrencyCode string `protobuf:"bytes,2,opt,name=currency_code,json=currencyCode,proto3" json:"currency_code,omitempty"`
 	// An optional and opaque string that identifies the pricing option that is
 	// associated with the extended price. (optional)
-	PricingOptionTag string `protobuf:"bytes,3,opt,name=pricing_option_tag,json=pricingOptionTag" json:"pricing_option_tag,omitempty"`
+	PricingOptionTag     string   `protobuf:"bytes,3,opt,name=pricing_option_tag,json=pricingOptionTag,proto3" json:"pricing_option_tag,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Price) Reset()                    { *m = Price{} }
-func (m *Price) String() string            { return proto.CompactTextString(m) }
-func (*Price) ProtoMessage()               {}
-func (*Price) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }
+func (m *Price) Reset()         { *m = Price{} }
+func (m *Price) String() string { return proto.CompactTextString(m) }
+func (*Price) ProtoMessage()    {}
+func (*Price) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{39}
+}
+
+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 (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)
+}
+func (m *Price) XXX_DiscardUnknown() {
+	xxx_messageInfo_Price.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Price proto.InternalMessageInfo
 
 func (m *Price) GetPriceMicros() int64 {
 	if m != nil {
@@ -2616,15 +3455,38 @@
 type NoShowFee struct {
 	// The amount the user may be charged if they do not show up for their
 	// reservation.
-	Fee *Price `protobuf:"bytes,1,opt,name=fee" json:"fee,omitempty"`
+	Fee *Price `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"`
 	// Defines how the fee is determined from the availability.
-	FeeType PriceType `protobuf:"varint,3,opt,name=fee_type,json=feeType,enum=ext.maps.booking.partner.v3.PriceType" json:"fee_type,omitempty"`
+	FeeType              PriceType `protobuf:"varint,3,opt,name=fee_type,json=feeType,proto3,enum=ext.maps.booking.partner.v3.PriceType" json:"fee_type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
 }
 
-func (m *NoShowFee) Reset()                    { *m = NoShowFee{} }
-func (m *NoShowFee) String() string            { return proto.CompactTextString(m) }
-func (*NoShowFee) ProtoMessage()               {}
-func (*NoShowFee) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }
+func (m *NoShowFee) Reset()         { *m = NoShowFee{} }
+func (m *NoShowFee) String() string { return proto.CompactTextString(m) }
+func (*NoShowFee) ProtoMessage()    {}
+func (*NoShowFee) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{40}
+}
+
+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 (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)
+}
+func (m *NoShowFee) XXX_DiscardUnknown() {
+	xxx_messageInfo_NoShowFee.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NoShowFee proto.InternalMessageInfo
 
 func (m *NoShowFee) GetFee() *Price {
 	if m != nil {
@@ -2644,17 +3506,40 @@
 // for.
 type Deposit struct {
 	// Deposit amount.
-	Deposit *Price `protobuf:"bytes,1,opt,name=deposit" json:"deposit,omitempty"`
+	Deposit *Price `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"`
 	// Minimum advance cancellation for the deposit.
-	MinAdvanceCancellationSec int64 `protobuf:"varint,2,opt,name=min_advance_cancellation_sec,json=minAdvanceCancellationSec" json:"min_advance_cancellation_sec,omitempty"`
+	MinAdvanceCancellationSec int64 `protobuf:"varint,2,opt,name=min_advance_cancellation_sec,json=minAdvanceCancellationSec,proto3" json:"min_advance_cancellation_sec,omitempty"`
 	// Defines how the deposit is determined from the availability.
-	DepositType PriceType `protobuf:"varint,3,opt,name=deposit_type,json=depositType,enum=ext.maps.booking.partner.v3.PriceType" json:"deposit_type,omitempty"`
+	DepositType          PriceType `protobuf:"varint,3,opt,name=deposit_type,json=depositType,proto3,enum=ext.maps.booking.partner.v3.PriceType" json:"deposit_type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
 }
 
-func (m *Deposit) Reset()                    { *m = Deposit{} }
-func (m *Deposit) String() string            { return proto.CompactTextString(m) }
-func (*Deposit) ProtoMessage()               {}
-func (*Deposit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }
+func (m *Deposit) Reset()         { *m = Deposit{} }
+func (m *Deposit) String() string { return proto.CompactTextString(m) }
+func (*Deposit) ProtoMessage()    {}
+func (*Deposit) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{41}
+}
+
+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 (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)
+}
+func (m *Deposit) XXX_DiscardUnknown() {
+	xxx_messageInfo_Deposit.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Deposit proto.InternalMessageInfo
 
 func (m *Deposit) GetDeposit() *Price {
 	if m != nil {
@@ -2680,26 +3565,53 @@
 // An inventory slot
 type Slot struct {
 	// ID of the merchant for the slot (required)
-	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"`
+	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
 	// ID of the merchant Service (required)
-	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId" json:"service_id,omitempty"`
+	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
 	// Start time of the appointment slot in seconds of UTC time since Unix epoch.
 	// (required)
-	StartSec int64 `protobuf:"varint,3,opt,name=start_sec,json=startSec" json:"start_sec,omitempty"`
+	StartSec int64 `protobuf:"varint,3,opt,name=start_sec,json=startSec,proto3" json:"start_sec,omitempty"`
 	// Duration of the appointment slot (required)
-	DurationSec int64 `protobuf:"varint,4,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
+	DurationSec int64 `protobuf:"varint,4,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
 	// Opaque tag that identifies the availability slot and matches the value
 	// provided in the availability feed (optional)
-	AvailabilityTag string `protobuf:"bytes,5,opt,name=availability_tag,json=availabilityTag" json:"availability_tag,omitempty"`
+	AvailabilityTag string `protobuf:"bytes,5,opt,name=availability_tag,json=availabilityTag,proto3" json:"availability_tag,omitempty"`
 	// The set of resources that disambiguates the appointment slot, e.g. by
 	// indicating the staff member and room selected by the user (optional)
-	Resources *ResourceIds `protobuf:"bytes,6,opt,name=resources" json:"resources,omitempty"`
+	Resources *ResourceIds `protobuf:"bytes,6,opt,name=resources,proto3" json:"resources,omitempty"`
+	// Indicates whether bookings of this slot will be confirmed
+	// synchronously or asynchronously. An UNSPECIFIED value will be interpreted
+	// as synchronous.
+	ConfirmationMode     ConfirmationMode `protobuf:"varint,7,opt,name=confirmation_mode,json=confirmationMode,proto3,enum=ext.maps.booking.partner.v3.ConfirmationMode" json:"confirmation_mode,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
 }
 
-func (m *Slot) Reset()                    { *m = Slot{} }
-func (m *Slot) String() string            { return proto.CompactTextString(m) }
-func (*Slot) ProtoMessage()               {}
-func (*Slot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }
+func (m *Slot) Reset()         { *m = Slot{} }
+func (m *Slot) String() string { return proto.CompactTextString(m) }
+func (*Slot) ProtoMessage()    {}
+func (*Slot) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1820d8e1a9fad753, []int{42}
+}
+
+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 (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)
+}
+func (m *Slot) XXX_DiscardUnknown() {
+	xxx_messageInfo_Slot.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Slot proto.InternalMessageInfo
 
 func (m *Slot) GetMerchantId() string {
 	if m != nil {
@@ -2743,27 +3655,57 @@
 	return nil
 }
 
+func (m *Slot) GetConfirmationMode() ConfirmationMode {
+	if m != nil {
+		return m.ConfirmationMode
+	}
+	return ConfirmationMode_CONFIRMATION_MODE_UNSPECIFIED
+}
+
 // 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" json:"user_id,omitempty"`
+	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" json:"given_name,omitempty"`
+	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" json:"family_name,omitempty"`
+	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" json:"address,omitempty"`
+	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" json:"telephone,omitempty"`
+	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" json:"email,omitempty"`
+	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 fileDescriptor0, []int{43} }
+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_1820d8e1a9fad753, []int{43}
+}
+
+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 {
@@ -2810,21 +3752,44 @@
 // The postal address for a merchant.
 type PostalAddress struct {
 	// The country, e.g. "USA". (required)
-	Country string `protobuf:"bytes,1,opt,name=country" json:"country,omitempty"`
+	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" json:"locality,omitempty"`
+	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" json:"region,omitempty"`
+	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" json:"postal_code,omitempty"`
+	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" json:"street_address,omitempty"`
+	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 fileDescriptor0, []int{44} }
+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_1820d8e1a9fad753, []int{44}
+}
+
+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 {
@@ -2862,6 +3827,20 @@
 }
 
 func init() {
+	proto.RegisterEnum("ext.maps.booking.partner.v3.BookingStatus", BookingStatus_name, BookingStatus_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.CreditCardType", CreditCardType_name, CreditCardType_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.ConfirmationMode", ConfirmationMode_name, ConfirmationMode_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentOptionType", PaymentOptionType_name, PaymentOptionType_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.PrepaymentStatus", PrepaymentStatus_name, PrepaymentStatus_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.PriceType", PriceType_name, PriceType_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.CheckAvailabilityResponse_DurationRequirement", CheckAvailabilityResponse_DurationRequirement_name, CheckAvailabilityResponse_DurationRequirement_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.BookingFailure_Cause", BookingFailure_Cause_name, BookingFailure_Cause_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.OrderFailure_Cause", OrderFailure_Cause_name, OrderFailure_Cause_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.OrderFulfillability_OrderFulfillabilityResult", OrderFulfillability_OrderFulfillabilityResult_name, OrderFulfillability_OrderFulfillabilityResult_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.LineItemFulfillability_ItemFulfillabilityResult", LineItemFulfillability_ItemFulfillabilityResult_name, LineItemFulfillability_ItemFulfillabilityResult_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.TokenizationConfig_BillingInformationFormat", TokenizationConfig_BillingInformationFormat_name, TokenizationConfig_BillingInformationFormat_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentProcessingParameters_PaymentProcessor", PaymentProcessingParameters_PaymentProcessor_name, PaymentProcessingParameters_PaymentProcessor_value)
+	proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentInformation_PaymentProcessedBy", PaymentInformation_PaymentProcessedBy_name, PaymentInformation_PaymentProcessedBy_value)
 	proto.RegisterType((*CheckAvailabilityRequest)(nil), "ext.maps.booking.partner.v3.CheckAvailabilityRequest")
 	proto.RegisterType((*CheckAvailabilityResponse)(nil), "ext.maps.booking.partner.v3.CheckAvailabilityResponse")
 	proto.RegisterType((*AvailabilityUpdate)(nil), "ext.maps.booking.partner.v3.AvailabilityUpdate")
@@ -2901,6 +3880,7 @@
 	proto.RegisterType((*TicketType)(nil), "ext.maps.booking.partner.v3.TicketType")
 	proto.RegisterType((*ResourceIds)(nil), "ext.maps.booking.partner.v3.ResourceIds")
 	proto.RegisterType((*TokenizationConfig)(nil), "ext.maps.booking.partner.v3.TokenizationConfig")
+	proto.RegisterMapType((map[string]string)(nil), "ext.maps.booking.partner.v3.TokenizationConfig.TokenizationParameterEntry")
 	proto.RegisterType((*PaymentProcessingParameters)(nil), "ext.maps.booking.partner.v3.PaymentProcessingParameters")
 	proto.RegisterType((*UserPaymentOption)(nil), "ext.maps.booking.partner.v3.UserPaymentOption")
 	proto.RegisterType((*PaymentInformation)(nil), "ext.maps.booking.partner.v3.PaymentInformation")
@@ -2910,251 +3890,244 @@
 	proto.RegisterType((*Slot)(nil), "ext.maps.booking.partner.v3.Slot")
 	proto.RegisterType((*UserInformation)(nil), "ext.maps.booking.partner.v3.UserInformation")
 	proto.RegisterType((*PostalAddress)(nil), "ext.maps.booking.partner.v3.PostalAddress")
-	proto.RegisterEnum("ext.maps.booking.partner.v3.BookingStatus", BookingStatus_name, BookingStatus_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.CreditCardType", CreditCardType_name, CreditCardType_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentOptionType", PaymentOptionType_name, PaymentOptionType_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.PrepaymentStatus", PrepaymentStatus_name, PrepaymentStatus_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.PriceType", PriceType_name, PriceType_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.CheckAvailabilityResponse_DurationRequirement", CheckAvailabilityResponse_DurationRequirement_name, CheckAvailabilityResponse_DurationRequirement_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.BookingFailure_Cause", BookingFailure_Cause_name, BookingFailure_Cause_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.OrderFailure_Cause", OrderFailure_Cause_name, OrderFailure_Cause_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.OrderFulfillability_OrderFulfillabilityResult", OrderFulfillability_OrderFulfillabilityResult_name, OrderFulfillability_OrderFulfillabilityResult_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.LineItemFulfillability_ItemFulfillabilityResult", LineItemFulfillability_ItemFulfillabilityResult_name, LineItemFulfillability_ItemFulfillabilityResult_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.TokenizationConfig_BillingInformationFormat", TokenizationConfig_BillingInformationFormat_name, TokenizationConfig_BillingInformationFormat_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentProcessingParameters_PaymentProcessor", PaymentProcessingParameters_PaymentProcessor_name, PaymentProcessingParameters_PaymentProcessor_value)
-	proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentInformation_PaymentProcessedBy", PaymentInformation_PaymentProcessedBy_name, PaymentInformation_PaymentProcessedBy_value)
 }
 
-func init() { proto.RegisterFile("v3.proto", fileDescriptor0) }
+func init() { proto.RegisterFile("v3.proto", fileDescriptor_1820d8e1a9fad753) }
 
-var fileDescriptor0 = []byte{
-	// 3636 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3a, 0x4b, 0x6c, 0x1b, 0x59,
-	0x72, 0x6e, 0x7e, 0x44, 0xb2, 0x24, 0xd1, 0xad, 0x27, 0x8d, 0x4c, 0xcb, 0xf6, 0x58, 0xee, 0x1d,
-	0xcf, 0x78, 0xed, 0x19, 0x4d, 0xd6, 0xf6, 0x22, 0xb3, 0x8b, 0x60, 0x93, 0x26, 0xf9, 0x64, 0xf5,
-	0x0c, 0xd5, 0xe4, 0x3c, 0x36, 0x65, 0x7b, 0x0f, 0xe9, 0x6d, 0xb3, 0x9f, 0xe4, 0x8e, 0x49, 0x36,
-	0xb7, 0xbb, 0xa9, 0xb5, 0x06, 0x99, 0x43, 0x80, 0x20, 0x87, 0x00, 0x39, 0x04, 0x39, 0x04, 0x08,
-	0x90, 0x5b, 0xf6, 0x96, 0xdc, 0x72, 0x09, 0x72, 0x09, 0x12, 0x60, 0x11, 0x24, 0xc8, 0x29, 0x87,
-	0xe4, 0x94, 0x43, 0x90, 0x43, 0x4e, 0xb9, 0x2f, 0x10, 0x04, 0xc1, 0xfb, 0x34, 0xc9, 0x6e, 0x52,
-	0x14, 0x25, 0xcf, 0xe4, 0x92, 0x0b, 0xc1, 0xae, 0xdf, 0xab, 0x57, 0x55, 0xaf, 0xaa, 0x5e, 0x75,
-	0x43, 0xf1, 0xf4, 0xc9, 0xde, 0x30, 0xf0, 0x23, 0x1f, 0xdd, 0xa2, 0x6f, 0xa3, 0xbd, 0xbe, 0x33,
-	0x0c, 0xf7, 0x5e, 0xf9, 0xfe, 0x1b, 0x6f, 0x70, 0xb2, 0x37, 0x74, 0x82, 0x68, 0x40, 0x83, 0xbd,
-	0xd3, 0x27, 0xda, 0x97, 0x50, 0xa9, 0xbd, 0xa6, 0xdd, 0x37, 0xfa, 0xa9, 0xe3, 0xf5, 0x9c, 0x57,
-	0x5e, 0xcf, 0x8b, 0xce, 0x08, 0xfd, 0xe9, 0x88, 0x86, 0x11, 0xfa, 0x3e, 0xe4, 0xc2, 0x9e, 0x1f,
-	0x55, 0x94, 0x5d, 0xe5, 0xc1, 0xea, 0xe3, 0x7b, 0x7b, 0x0b, 0xe4, 0xec, 0xb5, 0x7b, 0x7e, 0x44,
-	0x38, 0xb9, 0xf6, 0x8f, 0x59, 0xb8, 0x39, 0x47, 0x66, 0x38, 0xf4, 0x07, 0x21, 0xbd, 0xa2, 0x50,
-	0xf4, 0x11, 0x5c, 0xef, 0xfa, 0xa3, 0x41, 0x64, 0x3b, 0x42, 0x68, 0x8f, 0x56, 0x32, 0xbb, 0xca,
-	0x83, 0x3c, 0x29, 0x73, 0xb0, 0x1e, 0x43, 0xd1, 0xd7, 0xb0, 0xe5, 0x8e, 0x02, 0x27, 0xf2, 0xfc,
-	0x81, 0x1d, 0xd0, 0x9f, 0x8e, 0xbc, 0x80, 0xf6, 0xe9, 0x20, 0xaa, 0x64, 0x77, 0x95, 0x07, 0xe5,
-	0xc7, 0x9f, 0x2f, 0x5c, 0xef, 0x5c, 0xad, 0xf7, 0xea, 0x52, 0x24, 0x99, 0x48, 0x24, 0x9b, 0xee,
-	0x2c, 0x10, 0xfd, 0x04, 0x36, 0x9d, 0x29, 0x01, 0xf6, 0x68, 0xe8, 0x3a, 0x11, 0xad, 0xe4, 0xf8,
-	0x6e, 0x3f, 0x5d, 0xb8, 0xfa, 0xf4, 0xc2, 0x1d, 0xce, 0x46, 0x90, 0x33, 0x03, 0xd3, 0xfa, 0xb0,
-	0x39, 0x47, 0x1b, 0xf4, 0x01, 0xec, 0xd6, 0x3b, 0x44, 0xb7, 0x8c, 0xa6, 0x69, 0x13, 0xfc, 0x65,
-	0xc7, 0x20, 0xf8, 0x10, 0x9b, 0x96, 0xdd, 0x31, 0xdb, 0x2d, 0x5c, 0x33, 0xf6, 0x0d, 0x5c, 0x57,
-	0xaf, 0xa1, 0x0a, 0x6c, 0xd5, 0x9b, 0xb6, 0xd9, 0xb4, 0xec, 0xf6, 0x41, 0xf3, 0xb9, 0x1d, 0x73,
-	0xa8, 0x0a, 0xda, 0x06, 0x74, 0xd8, 0x69, 0xa7, 0xe1, 0x19, 0x6d, 0x08, 0x68, 0x56, 0x31, 0xf4,
-	0x63, 0xd8, 0x60, 0x6e, 0xb1, 0xa7, 0xf5, 0xab, 0x28, 0xbb, 0xd9, 0x07, 0xab, 0x8f, 0x3f, 0xb9,
-	0xd0, 0xa5, 0x09, 0x0b, 0xab, 0x61, 0x0a, 0xa2, 0x05, 0xa0, 0xa6, 0xa9, 0xbe, 0xed, 0xa8, 0xd1,
-	0xfe, 0x56, 0x81, 0x22, 0xe3, 0xb3, 0xbc, 0x3e, 0x45, 0xb7, 0xa0, 0x14, 0x46, 0x4e, 0x10, 0xd9,
-	0x21, 0xed, 0xf2, 0x15, 0xb3, 0xa4, 0xc8, 0x01, 0x6d, 0xda, 0x45, 0xf7, 0x60, 0x6d, 0x1c, 0x5f,
-	0x0c, 0x9f, 0xe1, 0xf8, 0xd5, 0x18, 0xc6, 0x48, 0xbe, 0x0b, 0x6a, 0x22, 0x06, 0x22, 0xe7, 0x84,
-	0x87, 0x5f, 0x89, 0x5c, 0x9f, 0x86, 0x5b, 0xce, 0x09, 0xfa, 0x02, 0xd6, 0x02, 0x1a, 0xfa, 0xa3,
-	0xa0, 0x4b, 0x6d, 0xcf, 0x0d, 0x65, 0x9c, 0x3c, 0x58, 0xb8, 0x3f, 0x22, 0x19, 0x0c, 0x37, 0x24,
-	0xab, 0xc1, 0xe4, 0x41, 0x7b, 0x0b, 0x5b, 0xf1, 0x1e, 0x12, 0xc6, 0xab, 0x42, 0x89, 0x3b, 0x2b,
-	0xf2, 0xfa, 0x54, 0x5a, 0xf0, 0xfe, 0x85, 0x16, 0x64, 0x52, 0x48, 0x31, 0x8c, 0x6d, 0x72, 0x1b,
-	0x4a, 0x49, 0x1b, 0x16, 0xc9, 0x04, 0xa0, 0xfd, 0x99, 0x02, 0xef, 0x57, 0x9d, 0xa8, 0xfb, 0x7a,
-	0x7a, 0xdd, 0x86, 0xef, 0xbf, 0x19, 0x0d, 0xe3, 0x64, 0x72, 0x17, 0x56, 0xfb, 0x34, 0xe8, 0xbe,
-	0x76, 0x06, 0x91, 0xed, 0xb9, 0x5c, 0x8d, 0x12, 0x81, 0x18, 0x64, 0xb8, 0xe8, 0x0e, 0x40, 0x48,
-	0x83, 0x53, 0x8f, 0x5b, 0x82, 0x2f, 0x51, 0x22, 0x25, 0x09, 0x31, 0xdc, 0xe4, 0x26, 0xb2, 0x3c,
-	0xd2, 0x2e, 0xbb, 0x09, 0xed, 0xf7, 0x15, 0xb8, 0x7b, 0xae, 0x9a, 0x32, 0x3f, 0x9d, 0xc0, 0xf6,
-	0x78, 0x9d, 0x79, 0xe1, 0xfd, 0xbd, 0xa5, 0x16, 0x4d, 0x84, 0xf8, 0x56, 0x38, 0x07, 0xaa, 0x7d,
-	0x0d, 0x77, 0x79, 0xbe, 0x69, 0x06, 0x2e, 0x0d, 0xf6, 0x47, 0xbd, 0x63, 0xaf, 0x97, 0x4e, 0xc0,
-	0x17, 0xda, 0xec, 0x07, 0x90, 0xf3, 0x22, 0xda, 0xaf, 0x64, 0x96, 0xb0, 0x47, 0xc3, 0x1b, 0x50,
-	0x23, 0xa2, 0x7d, 0xc2, 0x59, 0xb4, 0x5f, 0x28, 0xb0, 0x7b, 0xfe, 0xfa, 0xd2, 0x18, 0x2f, 0xa0,
-	0x7c, 0x9c, 0xc0, 0xc8, 0xf0, 0xf9, 0x95, 0x85, 0x2b, 0xcd, 0x93, 0x98, 0x92, 0x83, 0x0e, 0xa0,
-	0x7c, 0x4c, 0x69, 0x68, 0x3b, 0x03, 0xd7, 0x8e, 0x9c, 0xb7, 0x34, 0xe4, 0x1e, 0x5f, 0x7d, 0xac,
-	0x2d, 0x94, 0xdc, 0x0a, 0xbc, 0x2e, 0x25, 0x6b, 0x8c, 0x53, 0x1f, 0xb8, 0x16, 0xe3, 0xd3, 0x3e,
-	0x83, 0x1b, 0xcf, 0x68, 0x54, 0x15, 0xc4, 0xed, 0xc8, 0x89, 0x46, 0x61, 0x6c, 0xbf, 0x3b, 0x00,
-	0x52, 0xc8, 0xc4, 0x7c, 0x25, 0x09, 0x31, 0x5c, 0xed, 0x3f, 0x15, 0xa8, 0xcc, 0xb2, 0xca, 0xad,
-	0x2f, 0xe6, 0x45, 0x5f, 0x42, 0x39, 0x46, 0x87, 0x9c, 0x91, 0xeb, 0x5f, 0x7e, 0xfc, 0x70, 0xa1,
-	0xfe, 0xc9, 0xa5, 0xd6, 0x5f, 0x4d, 0x3f, 0xb2, 0x9c, 0x3a, 0x0c, 0xe8, 0xd0, 0x39, 0x63, 0xf9,
-	0x3c, 0x96, 0x2a, 0xca, 0xd6, 0x27, 0x17, 0x58, 0x25, 0xe6, 0x92, 0x82, 0xd5, 0x61, 0x0a, 0xa2,
-	0xfd, 0x79, 0x0e, 0xb6, 0x6a, 0x01, 0x75, 0x22, 0x2a, 0x55, 0x78, 0xb7, 0x1a, 0x8f, 0x0e, 0xa0,
-	0xd4, 0xa3, 0x4e, 0x48, 0xed, 0x80, 0x1e, 0x4b, 0xcf, 0x3d, 0x5a, 0x1c, 0x7d, 0x8c, 0x9a, 0xd0,
-	0x63, 0x1a, 0xd0, 0x41, 0x97, 0x92, 0x62, 0x4f, 0x3e, 0xa3, 0xe7, 0xa0, 0x8e, 0x42, 0x1a, 0xd8,
-	0xde, 0xe0, 0xd8, 0x0f, 0xfa, 0x3c, 0x87, 0xf2, 0x4d, 0xaf, 0x3e, 0xfe, 0x78, 0xa1, 0xc0, 0x4e,
-	0x48, 0x03, 0x63, 0xc2, 0x43, 0xae, 0x8f, 0x92, 0x00, 0x56, 0x89, 0x63, 0x5b, 0x4e, 0xcb, 0x5e,
-	0xa6, 0x12, 0xb7, 0x04, 0xdf, 0xb4, 0x78, 0x34, 0x9c, 0x81, 0xa1, 0xdf, 0x86, 0x3b, 0xf1, 0x0a,
-	0xc3, 0xc0, 0xef, 0xd2, 0x30, 0x64, 0xe1, 0x30, 0x74, 0x02, 0xa7, 0x4f, 0x23, 0x1a, 0x84, 0x95,
-	0x3c, 0x5f, 0xeb, 0xb3, 0x65, 0xd6, 0x6a, 0x8d, 0x05, 0xb4, 0xc6, 0xfc, 0xe4, 0xd6, 0xf0, 0x7c,
-	0x24, 0x7a, 0x04, 0x1b, 0x9e, 0x4b, 0xfb, 0x43, 0x3f, 0xa2, 0x83, 0xee, 0x99, 0x1d, 0xf9, 0x6f,
-	0xe8, 0xa0, 0xb2, 0xc2, 0xe3, 0x54, 0x9d, 0x42, 0x58, 0x0c, 0x8e, 0x3e, 0x01, 0xe4, 0xb8, 0xae,
-	0xc7, 0xd4, 0x76, 0x7a, 0xbc, 0x2f, 0xa2, 0x61, 0x54, 0x29, 0x70, 0xea, 0x8d, 0x09, 0x46, 0x46,
-	0x85, 0xf6, 0x07, 0x19, 0x78, 0x2f, 0x15, 0x2e, 0xf2, 0x58, 0xfc, 0x08, 0x0a, 0x72, 0x13, 0x32,
-	0x64, 0x3e, 0x58, 0x26, 0xe0, 0x49, 0xcc, 0x84, 0x7e, 0x13, 0x36, 0xb9, 0xbb, 0x63, 0xc3, 0xf9,
-	0x43, 0xee, 0x15, 0x11, 0x42, 0x7b, 0x17, 0x7a, 0x5c, 0x5a, 0xab, 0xc9, 0xb9, 0xc8, 0xc6, 0x28,
-	0x0d, 0x42, 0x16, 0x5c, 0x8f, 0xcf, 0xe5, 0xb1, 0xe3, 0xf5, 0x46, 0x01, 0x95, 0xd1, 0xf4, 0x68,
-	0x19, 0x3d, 0xf7, 0x05, 0x0b, 0x89, 0xcf, 0xb6, 0x7c, 0xd6, 0x4c, 0x40, 0xc2, 0x1c, 0x32, 0x8c,
-	0xc5, 0xd9, 0xf9, 0x0c, 0xf2, 0x3c, 0x8c, 0xa5, 0x25, 0xb4, 0x25, 0x0e, 0x80, 0x60, 0xd0, 0x7e,
-	0xae, 0xc0, 0x66, 0x42, 0xa0, 0xb4, 0xee, 0x95, 0x25, 0xce, 0xdb, 0x77, 0xe6, 0xdd, 0xf7, 0xfd,
-	0xd7, 0x0a, 0xe4, 0xf9, 0x32, 0xe8, 0x26, 0x88, 0x23, 0x3b, 0x49, 0x86, 0x05, 0xfe, 0x6c, 0xb8,
-	0xe3, 0x14, 0x92, 0xb9, 0x5c, 0x0a, 0xb9, 0x0f, 0x65, 0x1e, 0x09, 0x41, 0x9c, 0x14, 0x64, 0x8f,
-	0xb4, 0xce, 0xa0, 0xe3, 0x4c, 0x81, 0x7e, 0x00, 0x37, 0xc5, 0xc2, 0xf4, 0xed, 0xd0, 0x93, 0x7d,
-	0x17, 0xaf, 0xcd, 0xac, 0xf9, 0xca, 0xf1, 0xe6, 0x6b, 0x9b, 0x13, 0xe0, 0x31, 0x9e, 0x95, 0xda,
-	0x36, 0xed, 0x6a, 0x8f, 0xa0, 0x9c, 0x4c, 0x3b, 0x0b, 0x76, 0xa1, 0xfd, 0x52, 0x89, 0x7d, 0xcc,
-	0xcb, 0xd7, 0x94, 0x8f, 0x7d, 0xf6, 0xbc, 0x94, 0x47, 0x04, 0xa7, 0x60, 0xb8, 0x38, 0x3b, 0x64,
-	0xfe, 0xcf, 0xb3, 0x43, 0x76, 0x7e, 0x76, 0xd0, 0xfe, 0x62, 0x1c, 0x8e, 0x72, 0xef, 0x32, 0x1c,
-	0x7f, 0x78, 0xe9, 0xcd, 0x1f, 0x5c, 0x8b, 0xb7, 0xdf, 0x82, 0x75, 0xfe, 0x27, 0x15, 0x8e, 0xdf,
-	0x5d, 0xa2, 0x73, 0x10, 0x0c, 0x07, 0xd7, 0xc8, 0x9a, 0x3f, 0xf5, 0x5c, 0x2d, 0xc2, 0x4a, 0x40,
-	0xc3, 0x51, 0x2f, 0xd2, 0xf6, 0x60, 0xb3, 0xe1, 0x85, 0x71, 0xe1, 0x1e, 0x97, 0xfb, 0x1b, 0x50,
-	0x10, 0xa5, 0x24, 0x76, 0xee, 0x0a, 0xaf, 0x09, 0xae, 0xf6, 0x02, 0xb6, 0x92, 0xf4, 0x72, 0x7f,
-	0xbf, 0x01, 0x45, 0xa9, 0x44, 0x28, 0xbb, 0xbb, 0xe5, 0xb2, 0xd9, 0x98, 0x4b, 0xfb, 0x4b, 0x05,
-	0x36, 0x98, 0x68, 0xae, 0xf8, 0x58, 0x91, 0x9b, 0x29, 0x45, 0x0e, 0xae, 0xc5, 0xaa, 0xa0, 0x23,
-	0x28, 0x09, 0xb3, 0xb0, 0x6e, 0x5f, 0x98, 0xe4, 0x57, 0x2f, 0x68, 0xdb, 0x52, 0xd2, 0x85, 0x91,
-	0x0c, 0x37, 0x3c, 0xb8, 0x46, 0x8a, 0xbe, 0xfc, 0xbf, 0x73, 0x1f, 0x8a, 0x31, 0x9c, 0x45, 0x79,
-	0xbc, 0x06, 0xdf, 0x56, 0x89, 0x14, 0x24, 0x5d, 0x35, 0x0f, 0x59, 0xcf, 0x0d, 0x59, 0x3e, 0x9b,
-	0x96, 0x3b, 0xc9, 0x3e, 0xb1, 0xbb, 0xb3, 0x97, 0x8a, 0x75, 0xed, 0x08, 0xb6, 0xc4, 0xc5, 0x30,
-	0xd5, 0x5d, 0xbc, 0x63, 0xb5, 0xe0, 0x75, 0x28, 0x25, 0xf8, 0xff, 0x75, 0x1d, 0xfa, 0xb7, 0x0c,
-	0x14, 0x24, 0xc9, 0x45, 0x0d, 0xea, 0x15, 0xb3, 0xf2, 0xb7, 0xd6, 0x8e, 0x55, 0x61, 0x45, 0xb6,
-	0xb4, 0xb9, 0x4b, 0x37, 0xca, 0x92, 0xf3, 0xbc, 0x96, 0x2e, 0xff, 0x8d, 0xb5, 0x74, 0xda, 0xbf,
-	0xe4, 0xa0, 0x9c, 0xf4, 0x01, 0x7a, 0x06, 0xf9, 0xae, 0x33, 0x92, 0x35, 0xb9, 0x7c, 0xc1, 0xfd,
-	0x2f, 0xc9, 0xbb, 0x57, 0x63, 0x8c, 0x44, 0xf0, 0xa3, 0x97, 0x80, 0x02, 0xfa, 0x5b, 0xb4, 0x1b,
-	0x51, 0xd7, 0xee, 0x3a, 0x81, 0x6b, 0x47, 0x67, 0x43, 0x2a, 0xaf, 0x0d, 0x8b, 0xa3, 0xa2, 0x16,
-	0x50, 0xd7, 0x8b, 0x6a, 0x4e, 0xe0, 0x5a, 0x67, 0x43, 0x4a, 0xd4, 0x58, 0x4c, 0x0c, 0x41, 0xbb,
-	0xb0, 0xea, 0xd2, 0xb0, 0x1b, 0x78, 0xc3, 0xb1, 0xc3, 0x4a, 0x64, 0x1a, 0xa4, 0xfd, 0x4f, 0x06,
-	0xf2, 0x5c, 0x1b, 0xf4, 0x1e, 0x6c, 0xd4, 0xf4, 0x4e, 0x1b, 0xa7, 0x26, 0x43, 0x5b, 0xa0, 0xb6,
-	0x1b, 0x4d, 0xcb, 0xee, 0x98, 0xfa, 0x91, 0x6e, 0x34, 0xf4, 0x6a, 0x03, 0xab, 0x0a, 0xba, 0x0b,
-	0xb7, 0x38, 0x54, 0x6f, 0x10, 0xac, 0xd7, 0x5f, 0xda, 0xd5, 0x66, 0xf3, 0x0b, 0x5c, 0xb7, 0xab,
-	0x2f, 0xed, 0x4e, 0x1b, 0x13, 0x35, 0x83, 0x36, 0x60, 0xbd, 0x81, 0xf5, 0x36, 0xb6, 0xf1, 0x8b,
-	0x96, 0x41, 0x70, 0x5d, 0xcd, 0x32, 0x9e, 0x66, 0xc7, 0x6a, 0x1b, 0x75, 0x6c, 0xd7, 0x74, 0xb3,
-	0x86, 0x1b, 0x0d, 0x31, 0x95, 0x7a, 0x6e, 0x98, 0xf5, 0xe6, 0x73, 0x35, 0x87, 0x3e, 0x80, 0xdd,
-	0x96, 0xfe, 0x92, 0x4f, 0xa7, 0x30, 0x21, 0x4d, 0x62, 0xd7, 0x74, 0x52, 0xb7, 0xad, 0x97, 0x2d,
-	0x6c, 0x13, 0xfc, 0x39, 0xae, 0x59, 0xb8, 0xae, 0xe6, 0x99, 0x98, 0x39, 0x54, 0x75, 0x5c, 0x6b,
-	0x18, 0x26, 0xae, 0xab, 0x2b, 0xe8, 0x36, 0x54, 0x62, 0x82, 0x66, 0x8b, 0xaf, 0x60, 0x36, 0x2d,
-	0xfb, 0x48, 0x6f, 0x18, 0x75, 0xb5, 0xc0, 0x14, 0x4b, 0xb0, 0xab, 0x45, 0xa4, 0xc1, 0xfb, 0x4c,
-	0x6b, 0xa6, 0x15, 0xa3, 0x64, 0x36, 0x48, 0x0a, 0x50, 0x4b, 0xe8, 0x0e, 0xdc, 0x64, 0x7b, 0x34,
-	0xcc, 0x67, 0xe3, 0x3d, 0xcb, 0x4d, 0xe0, 0xba, 0x0a, 0xe8, 0x16, 0xdc, 0x88, 0xd1, 0x4c, 0x44,
-	0xbc, 0x3f, 0x66, 0xac, 0x55, 0x86, 0x6c, 0x1e, 0x61, 0xd2, 0xd0, 0x5b, 0x2d, 0x46, 0x40, 0x70,
-	0x1b, 0x93, 0x23, 0x31, 0x47, 0x5b, 0xd3, 0xfe, 0x2a, 0x03, 0x79, 0x9e, 0x33, 0x53, 0xe9, 0x59,
-	0x99, 0x4a, 0xcf, 0x73, 0x4f, 0x5f, 0xe6, 0x5b, 0xbc, 0x0c, 0x65, 0xbf, 0xb9, 0xcb, 0x50, 0x6a,
-	0x56, 0x91, 0x3b, 0x77, 0x56, 0x91, 0xbf, 0xfc, 0xac, 0xe2, 0xbf, 0x33, 0x50, 0x8c, 0x41, 0xa9,
-	0x39, 0x91, 0x92, 0x9e, 0x13, 0x25, 0x86, 0x77, 0x99, 0x0b, 0x86, 0x77, 0xd9, 0xd9, 0xe1, 0x9d,
-	0x09, 0x85, 0xc8, 0xeb, 0xbe, 0xa1, 0x11, 0x4b, 0x54, 0x4c, 0xd3, 0xa7, 0x4b, 0x69, 0x2a, 0xea,
-	0x21, 0x75, 0x2d, 0xc1, 0x4b, 0x62, 0x21, 0xac, 0xa8, 0x0e, 0x03, 0xaf, 0x4b, 0x65, 0x96, 0x5a,
-	0x66, 0xbe, 0x21, 0x18, 0xa6, 0x32, 0xe6, 0xca, 0x55, 0x33, 0xe6, 0x4e, 0x0d, 0xca, 0x49, 0xc5,
-	0x98, 0x7d, 0x84, 0x6a, 0x13, 0xeb, 0x15, 0x05, 0xc0, 0x70, 0xd1, 0x16, 0xe4, 0xf9, 0x60, 0x54,
-	0x4e, 0x49, 0xc5, 0x83, 0xf6, 0x37, 0x59, 0x58, 0x9b, 0xee, 0xcc, 0x10, 0x4e, 0xa6, 0xc4, 0x4f,
-	0x97, 0xee, 0xe9, 0x92, 0x09, 0x71, 0x76, 0xba, 0x94, 0xf9, 0x86, 0xa6, 0x4b, 0xf3, 0x53, 0x6d,
-	0xf6, 0x5b, 0x48, 0xb5, 0xb9, 0xd9, 0x54, 0xfb, 0x87, 0xca, 0x05, 0xa9, 0xf6, 0x06, 0x6c, 0x36,
-	0x49, 0x1d, 0x13, 0xbb, 0x63, 0xee, 0x77, 0x1a, 0xfb, 0x46, 0x23, 0xce, 0xb6, 0xcb, 0x24, 0xc6,
-	0xcc, 0x45, 0x89, 0x31, 0x3b, 0x9b, 0xfa, 0x72, 0xda, 0xbf, 0x66, 0x61, 0x73, 0x8e, 0xe1, 0xd0,
-	0xab, 0xb8, 0xa7, 0x96, 0xae, 0xfc, 0xfc, 0xb2, 0xa6, 0xdf, 0x9b, 0x3f, 0x3e, 0x1c, 0xf5, 0x22,
-	0x22, 0x25, 0x23, 0x17, 0x36, 0xd9, 0x29, 0xb6, 0x67, 0x7c, 0xcd, 0x4e, 0xd7, 0x93, 0xa5, 0x4e,
-	0x57, 0x4a, 0x3e, 0xf2, 0x66, 0x60, 0xe8, 0x7b, 0xb0, 0x35, 0x1a, 0x8c, 0x97, 0xe8, 0x51, 0x3b,
-	0xa0, 0x4e, 0x38, 0xae, 0x85, 0x9b, 0x09, 0x1c, 0xe1, 0x28, 0xed, 0xef, 0x14, 0xb8, 0x79, 0xae,
-	0xfa, 0xe8, 0x11, 0x7c, 0x24, 0xbc, 0x34, 0xf6, 0x91, 0xd1, 0x30, 0xac, 0x97, 0x2c, 0xad, 0x77,
-	0x1a, 0xe9, 0xf7, 0x2a, 0xd7, 0x61, 0xb5, 0xa6, 0x9b, 0x31, 0xa9, 0xaa, 0xb0, 0x5a, 0x90, 0xf0,
-	0xae, 0xcd, 0x9c, 0x63, 0x1b, 0x16, 0x3e, 0x54, 0x33, 0xe8, 0x3e, 0xdc, 0x4b, 0x22, 0x59, 0xa1,
-	0x30, 0x6a, 0xd8, 0xae, 0x35, 0x0f, 0xab, 0x86, 0x29, 0x4a, 0x46, 0x96, 0x85, 0xc3, 0x9c, 0x38,
-	0xb1, 0x9b, 0xd6, 0x01, 0x26, 0x36, 0xc1, 0x7a, 0xbb, 0x69, 0xaa, 0x39, 0xed, 0x1f, 0xf2, 0xb0,
-	0x3d, 0xdf, 0x4e, 0xe3, 0x94, 0xbb, 0xcc, 0xcc, 0x3f, 0x99, 0x72, 0x91, 0x3b, 0x0e, 0x0c, 0xd1,
-	0xa0, 0x34, 0xae, 0xe0, 0xa7, 0xbd, 0x39, 0xae, 0x4b, 0x86, 0xc6, 0xe5, 0x9d, 0x86, 0xde, 0xc0,
-	0x5a, 0x62, 0x2a, 0x2f, 0xe6, 0x79, 0xcf, 0xae, 0xa2, 0x9e, 0xb8, 0x59, 0xb8, 0x89, 0x59, 0x7d,
-	0x42, 0x38, 0x3a, 0x80, 0x55, 0x99, 0x2c, 0x79, 0x02, 0x11, 0xa5, 0xeb, 0xa3, 0x85, 0x6b, 0x89,
-	0x3c, 0xcb, 0x93, 0x07, 0x44, 0xe3, 0xff, 0x3b, 0x4f, 0x61, 0x73, 0xce, 0x72, 0xbc, 0x98, 0x0d,
-	0xfd, 0x28, 0xb4, 0xfd, 0x21, 0x1d, 0x70, 0x3f, 0xe5, 0x49, 0x89, 0x43, 0x9a, 0x43, 0x3a, 0xd0,
-	0xfe, 0x4b, 0x81, 0xca, 0x79, 0x46, 0x44, 0x0f, 0xe1, 0x43, 0x16, 0x4f, 0x57, 0x8b, 0xcf, 0x79,
-	0xed, 0x1e, 0x4f, 0x2d, 0xb5, 0x03, 0xa3, 0x51, 0xb7, 0x2d, 0xa3, 0xf6, 0x05, 0xb6, 0xda, 0xf6,
-	0x73, 0xc3, 0x3a, 0x68, 0x76, 0x2c, 0x5b, 0xaf, 0x77, 0x1a, 0x96, 0xba, 0xc2, 0x42, 0x32, 0x19,
-	0x8c, 0x82, 0x30, 0x15, 0xb8, 0x9b, 0x70, 0xdd, 0x30, 0x6b, 0x4d, 0x42, 0x70, 0xcd, 0xb2, 0x5b,
-	0xc4, 0xa8, 0x61, 0x35, 0x87, 0xbe, 0x03, 0x77, 0xb9, 0xba, 0x0b, 0x82, 0x39, 0xaf, 0xfd, 0xbd,
-	0x02, 0x30, 0xb1, 0x20, 0xfa, 0x00, 0xca, 0x53, 0xf6, 0x9f, 0x54, 0xac, 0xb5, 0x89, 0x65, 0x0d,
-	0x17, 0x3d, 0x82, 0x8d, 0xf0, 0xb5, 0x1f, 0x44, 0xf6, 0x74, 0x62, 0x16, 0x2f, 0x90, 0x54, 0x8e,
-	0xa8, 0x4f, 0xe0, 0x93, 0x7a, 0x9c, 0xbd, 0x6c, 0x3d, 0xfe, 0x04, 0x90, 0xb8, 0x25, 0xda, 0xb3,
-	0x05, 0x60, 0x43, 0x60, 0xa6, 0x16, 0xd2, 0x7e, 0x02, 0xab, 0x53, 0x6f, 0xea, 0x58, 0xd7, 0x17,
-	0x46, 0xce, 0xf1, 0xf1, 0x54, 0xd7, 0xc7, 0x9f, 0x0d, 0x17, 0xdd, 0x80, 0x42, 0xe0, 0xfb, 0xfd,
-	0xc9, 0x6b, 0xaf, 0x15, 0xf6, 0x28, 0x5e, 0x89, 0x31, 0x65, 0xce, 0xec, 0xd0, 0xfb, 0x4a, 0x28,
-	0x9c, 0x27, 0x25, 0x0e, 0x69, 0x7b, 0x5f, 0x51, 0xed, 0x17, 0x59, 0x40, 0x7c, 0x80, 0xe3, 0x7d,
-	0xc5, 0xdb, 0x97, 0x9a, 0x3f, 0x38, 0xf6, 0x4e, 0xd0, 0xef, 0x28, 0xb0, 0x1d, 0x4d, 0x81, 0x27,
-	0x33, 0x27, 0x79, 0xb1, 0x5f, 0x9c, 0xe4, 0x67, 0x25, 0x26, 0x40, 0xe3, 0x19, 0x13, 0x1e, 0x44,
-	0xc1, 0x19, 0x79, 0x2f, 0x9a, 0x87, 0x43, 0xbf, 0xa7, 0xc0, 0xce, 0x2b, 0xaf, 0xd7, 0xe3, 0xb7,
-	0xd3, 0x49, 0x97, 0x68, 0x8b, 0x7f, 0x32, 0xa7, 0x1c, 0x5c, 0x56, 0x8f, 0xaa, 0x90, 0x38, 0xd5,
-	0x76, 0xee, 0xf3, 0x3f, 0xa4, 0xf2, 0xea, 0x1c, 0xcc, 0xce, 0x01, 0xec, 0x9c, 0xaf, 0x3d, 0x52,
-	0x21, 0xfb, 0x86, 0x9e, 0x49, 0x7f, 0xb0, 0xbf, 0xac, 0x03, 0x3a, 0x75, 0x7a, 0x23, 0x2a, 0x3d,
-	0x21, 0x1e, 0x7e, 0x98, 0xf9, 0x4c, 0xd1, 0x5e, 0x42, 0xe5, 0xbc, 0xf5, 0xd9, 0x51, 0xac, 0x1a,
-	0x8d, 0x06, 0xeb, 0xfa, 0x0d, 0x73, 0xbf, 0x49, 0x0e, 0xc5, 0x8d, 0x47, 0xfc, 0x4b, 0x1d, 0xc5,
-	0x02, 0x64, 0x0f, 0x0d, 0x53, 0x55, 0x50, 0x11, 0x72, 0xfb, 0x9d, 0x46, 0x43, 0xcd, 0x68, 0x7f,
-	0x92, 0x83, 0x5b, 0x0b, 0x26, 0x7d, 0xe8, 0x0d, 0x94, 0xe4, 0x08, 0xd1, 0x0f, 0x64, 0xa1, 0x36,
-	0xae, 0x3a, 0x36, 0x4c, 0xe1, 0xfc, 0xa0, 0x9a, 0xa9, 0x28, 0x64, 0x22, 0x1f, 0x3d, 0x85, 0xad,
-	0xf8, 0xaa, 0xd0, 0xa7, 0xd1, 0x6b, 0xdf, 0x95, 0xc3, 0x43, 0x6e, 0x10, 0x4e, 0x1c, 0xb7, 0xff,
-	0x87, 0x1c, 0x2d, 0x5e, 0x30, 0xe8, 0x70, 0x67, 0x34, 0x18, 0x3a, 0x41, 0x48, 0x5d, 0x7b, 0x2e,
-	0x7b, 0x9e, 0xdb, 0x73, 0x27, 0x26, 0x6a, 0xcd, 0x8a, 0xb8, 0x0d, 0x85, 0x53, 0x1a, 0x84, 0xe3,
-	0x0b, 0x2c, 0x5f, 0x2b, 0x06, 0xa1, 0x4f, 0x61, 0x23, 0x35, 0x4e, 0xf5, 0x03, 0x71, 0xf8, 0x38,
-	0x9d, 0x3a, 0x4c, 0x6d, 0x8b, 0x5d, 0x79, 0x12, 0xa7, 0xa0, 0xcb, 0x63, 0x88, 0xf7, 0xd2, 0x17,
-	0x5d, 0x79, 0x66, 0x43, 0x8f, 0xa0, 0x68, 0x06, 0xa6, 0xb9, 0xa0, 0xa6, 0x8d, 0x89, 0xee, 0xc1,
-	0x9d, 0xb8, 0xf7, 0x6a, 0x91, 0x66, 0x0d, 0xb7, 0xdb, 0x4d, 0x32, 0x7b, 0xd3, 0x9e, 0xa0, 0xda,
-	0x16, 0x31, 0x5a, 0xac, 0xf7, 0xbb, 0x01, 0x9b, 0x13, 0x68, 0x95, 0xe8, 0x86, 0x69, 0x11, 0x8c,
-	0xd5, 0x8c, 0xf6, 0xef, 0x19, 0xd8, 0x98, 0x19, 0x39, 0xa1, 0x27, 0xb0, 0x3d, 0x67, 0x7e, 0x35,
-	0x49, 0x2e, 0x9b, 0x33, 0x23, 0x29, 0xc3, 0x45, 0x9f, 0xc2, 0xd6, 0xa9, 0xd3, 0xf3, 0x5c, 0x5b,
-	0xdc, 0x90, 0xc6, 0x63, 0x74, 0x71, 0x4d, 0xda, 0xe0, 0xb8, 0x36, 0x43, 0xc9, 0x09, 0x3a, 0x7a,
-	0x04, 0x48, 0x30, 0xd0, 0x81, 0x3b, 0x21, 0x17, 0xb7, 0xa6, 0xeb, 0x1c, 0x83, 0x07, 0x6e, 0x4c,
-	0x5c, 0x85, 0x1c, 0xaf, 0x92, 0x62, 0xbe, 0xb3, 0xb7, 0x4c, 0x80, 0x0a, 0xcd, 0x78, 0xb1, 0xe4,
-	0xbc, 0xe8, 0x3e, 0x94, 0xfd, 0xc0, 0x3b, 0xf1, 0x06, 0x4e, 0xcf, 0x16, 0x37, 0x91, 0x3c, 0xcf,
-	0x7a, 0xeb, 0x31, 0xb4, 0xc6, 0x80, 0xe8, 0x3b, 0xb0, 0xde, 0x1d, 0x05, 0x01, 0xdb, 0xb8, 0xa0,
-	0x5a, 0xe1, 0x54, 0x6b, 0x12, 0x28, 0x88, 0x1e, 0x4e, 0x22, 0x66, 0x62, 0x1d, 0xf1, 0xca, 0xeb,
-	0xfa, 0x30, 0x69, 0x19, 0xed, 0x9f, 0x56, 0x00, 0xcd, 0x5e, 0x74, 0xe7, 0xbf, 0x92, 0x55, 0xbe,
-	0x91, 0x57, 0xb2, 0xe8, 0x29, 0x6c, 0xc7, 0x82, 0xa3, 0xc0, 0x19, 0x84, 0x4e, 0x37, 0xd6, 0x51,
-	0xa4, 0x9e, 0xf8, 0x14, 0x5a, 0x13, 0xa4, 0xe1, 0xbe, 0x43, 0xf9, 0xd2, 0x01, 0x22, 0xe7, 0xad,
-	0xed, 0xf4, 0xb9, 0xc1, 0x72, 0x4b, 0xb3, 0x97, 0x22, 0xe7, 0xad, 0xce, 0x99, 0x50, 0x34, 0x49,
-	0x0d, 0xf2, 0x0c, 0x52, 0xd7, 0x7e, 0x75, 0xc6, 0x7d, 0x54, 0x7e, 0x5c, 0xbd, 0xe4, 0x18, 0x21,
-	0x95, 0x89, 0xa8, 0x5b, 0x3d, 0x1b, 0xa7, 0x96, 0x29, 0x18, 0xfa, 0x78, 0x9e, 0x1f, 0x57, 0xe4,
-	0x5c, 0x3d, 0xed, 0x49, 0xf4, 0xfd, 0x73, 0x0f, 0x46, 0x41, 0xb2, 0xcc, 0x3d, 0x1a, 0x3f, 0x82,
-	0x82, 0x4b, 0x87, 0x7e, 0xe8, 0x45, 0x95, 0xe2, 0x12, 0xf3, 0xe4, 0xba, 0xa0, 0x25, 0x31, 0x13,
-	0xda, 0x87, 0xd5, 0x81, 0x6f, 0x87, 0xaf, 0xfd, 0x9f, 0xd9, 0xc7, 0x94, 0x56, 0x4a, 0x5c, 0xc6,
-	0x87, 0x0b, 0x65, 0x98, 0x7e, 0xfb, 0xb5, 0xff, 0xb3, 0x7d, 0x4a, 0x49, 0x69, 0x10, 0xff, 0x9d,
-	0xf3, 0x5d, 0x04, 0x5c, 0xf1, 0xbb, 0x88, 0xfe, 0x38, 0xa2, 0xa7, 0x8d, 0x39, 0x75, 0xc5, 0x94,
-	0xe9, 0x46, 0x8e, 0xf3, 0xd2, 0x37, 0xd4, 0x04, 0xf6, 0x59, 0xb3, 0xf9, 0x8c, 0xdf, 0x50, 0x2b,
-	0xb0, 0x95, 0x40, 0xb4, 0x74, 0x62, 0x99, 0x98, 0xa8, 0x99, 0xea, 0x1a, 0xeb, 0x55, 0xe4, 0x84,
-	0xc9, 0xd5, 0xbe, 0x86, 0x3c, 0xd7, 0x09, 0xdd, 0x83, 0x35, 0x1e, 0x7e, 0x76, 0xdf, 0xeb, 0x06,
-	0x7e, 0x28, 0x3f, 0xa7, 0x5a, 0xe5, 0xb0, 0x43, 0x0e, 0x9a, 0x1c, 0xe6, 0xee, 0x99, 0xdd, 0xf5,
-	0xdd, 0xb8, 0xf4, 0xae, 0xc5, 0xc0, 0x9a, 0xef, 0x52, 0xf4, 0x31, 0x20, 0xc6, 0xc3, 0xfa, 0x09,
-	0xe9, 0xd1, 0xc9, 0x57, 0x55, 0xaa, 0xc4, 0xc8, 0x6c, 0xe2, 0x9c, 0x68, 0xbf, 0xab, 0x40, 0x69,
-	0x6c, 0x5e, 0xf4, 0x14, 0xb2, 0xcc, 0x27, 0xca, 0xd2, 0x86, 0x64, 0xe4, 0x48, 0x87, 0xe2, 0x31,
-	0xa5, 0xd3, 0x93, 0x83, 0x0f, 0x2f, 0x66, 0xe5, 0xa9, 0xac, 0x70, 0x4c, 0xf9, 0x1f, 0xed, 0x9f,
-	0x15, 0x28, 0xc8, 0x48, 0x41, 0xbf, 0x36, 0x09, 0xb0, 0xe5, 0x15, 0x19, 0x87, 0xd7, 0xaf, 0xc3,
-	0xed, 0xbe, 0x37, 0xb0, 0x1d, 0xf7, 0xd4, 0x19, 0x74, 0xa9, 0xdd, 0x65, 0xbf, 0xbd, 0x5e, 0xfa,
-	0x2b, 0xb4, 0x9b, 0x7d, 0x6f, 0xa0, 0x0b, 0x92, 0xda, 0x14, 0x05, 0x4b, 0xce, 0x06, 0xac, 0x49,
-	0x59, 0x57, 0xd9, 0xd1, 0xaa, 0xe4, 0xe5, 0xbb, 0xfa, 0xa5, 0x02, 0xb9, 0x76, 0xcf, 0x7f, 0xf7,
-	0x4f, 0xba, 0x12, 0xa3, 0xba, 0xec, 0x05, 0xa3, 0xba, 0xdc, 0x72, 0xdf, 0xd9, 0xe5, 0xe7, 0x7f,
-	0x67, 0xb7, 0x0f, 0xa5, 0xf8, 0x4b, 0xb9, 0x50, 0xb6, 0x00, 0xcb, 0x7f, 0x64, 0x37, 0x61, 0xd5,
-	0xfe, 0x43, 0x81, 0xeb, 0xa9, 0x61, 0xeb, 0xb9, 0xaf, 0x1d, 0xd9, 0xf6, 0x4f, 0xbc, 0x53, 0x3a,
-	0xb0, 0x07, 0x4e, 0x3f, 0x8e, 0xea, 0x12, 0x87, 0x98, 0x4e, 0x9f, 0x32, 0xf3, 0x1d, 0x3b, 0x7d,
-	0xaf, 0x77, 0x26, 0xf0, 0x22, 0x96, 0x41, 0x80, 0x38, 0x41, 0x1d, 0x0a, 0x8e, 0xeb, 0x06, 0x34,
-	0x8c, 0xbf, 0x0b, 0x5c, 0x3c, 0x01, 0x6c, 0xf9, 0x61, 0xe4, 0xf4, 0x74, 0xc1, 0x41, 0x62, 0x56,
-	0x74, 0x1b, 0x4a, 0x11, 0xed, 0xd1, 0xe1, 0x6b, 0x7f, 0x40, 0xa5, 0x79, 0x26, 0x00, 0xd6, 0xef,
-	0xd2, 0xbe, 0xe3, 0xf5, 0xe4, 0x97, 0x23, 0xe2, 0x41, 0xfb, 0xb9, 0x02, 0xeb, 0x09, 0x71, 0xa8,
-	0x02, 0x05, 0x5e, 0x69, 0x83, 0xb8, 0x5b, 0x8e, 0x1f, 0xd1, 0x0e, 0x14, 0x7b, 0x7e, 0xd7, 0x19,
-	0xcf, 0xef, 0x4a, 0x64, 0xfc, 0x8c, 0xb6, 0x61, 0x25, 0xa0, 0x27, 0x93, 0x57, 0x12, 0xf2, 0x89,
-	0x6d, 0x7d, 0xc8, 0xc5, 0x8b, 0x03, 0x2f, 0x87, 0xc5, 0x02, 0xc4, 0x8f, 0xfb, 0x7d, 0x28, 0x87,
-	0x51, 0x40, 0x69, 0x64, 0xc7, 0x16, 0x10, 0x9a, 0xaf, 0x0b, 0xa8, 0xd4, 0xea, 0xe1, 0x1f, 0x29,
-	0xb0, 0x9e, 0x18, 0x7c, 0xa2, 0xf7, 0x61, 0x27, 0x1e, 0xd0, 0xb7, 0x2d, 0xdd, 0xea, 0xb4, 0x53,
-	0x99, 0x6d, 0x1d, 0x4a, 0xb5, 0xa6, 0xb9, 0x6f, 0x90, 0x43, 0x5c, 0x57, 0x15, 0xde, 0xae, 0x61,
-	0xb3, 0xce, 0xc8, 0x0f, 0x31, 0xa9, 0x1d, 0xe8, 0x26, 0xbb, 0xcb, 0x72, 0xbc, 0xfc, 0x00, 0x16,
-	0xad, 0x41, 0x51, 0x8c, 0xf9, 0xf9, 0x6c, 0x6d, 0x15, 0x0a, 0x66, 0x93, 0x7f, 0x24, 0xab, 0xe6,
-	0xd0, 0x7b, 0xb0, 0x21, 0x1f, 0xec, 0x16, 0x36, 0xf5, 0x86, 0xf1, 0x63, 0x5c, 0x57, 0xf3, 0x0f,
-	0xcf, 0xa0, 0x9c, 0x1c, 0x23, 0xa2, 0x5d, 0xb8, 0x5d, 0x23, 0xb8, 0x6e, 0x58, 0x53, 0x13, 0xbd,
-	0xa4, 0x5e, 0x45, 0xc8, 0x1d, 0x19, 0x6d, 0x5d, 0x55, 0x50, 0x19, 0xe0, 0x50, 0x6f, 0x5b, 0x98,
-	0x30, 0x52, 0x35, 0xc3, 0xda, 0x45, 0xfd, 0x10, 0x13, 0x83, 0xdd, 0xdf, 0xf1, 0x8b, 0x16, 0xc1,
-	0xed, 0xb6, 0x9a, 0x65, 0x5a, 0xd5, 0x8d, 0x76, 0xad, 0x79, 0x84, 0x89, 0x9a, 0x63, 0x77, 0x8a,
-	0xcf, 0x6b, 0x55, 0x35, 0xff, 0xf0, 0x8f, 0x15, 0xd8, 0x98, 0xe9, 0xad, 0xd8, 0xd5, 0x3b, 0xf5,
-	0xa6, 0x64, 0x8e, 0x06, 0x77, 0xe0, 0x66, 0x8a, 0xa8, 0x6d, 0x98, 0xcf, 0x1a, 0xd8, 0xee, 0xb4,
-	0x59, 0xe6, 0x9f, 0x7d, 0xdb, 0x72, 0xd8, 0x69, 0x58, 0x06, 0xc7, 0x66, 0xd8, 0x06, 0x53, 0xd8,
-	0x8e, 0xd9, 0x30, 0x0e, 0x0d, 0x0b, 0xd7, 0x39, 0x45, 0xf6, 0xe1, 0x9f, 0x2a, 0xa0, 0xa6, 0xbb,
-	0x22, 0x6e, 0x7e, 0x82, 0x63, 0xce, 0xb9, 0x0e, 0xe3, 0xa5, 0x08, 0x4f, 0xd5, 0xac, 0x23, 0xa3,
-	0xce, 0x5d, 0x77, 0x0b, 0x6e, 0x4c, 0x21, 0xcc, 0xe6, 0x14, 0x32, 0x93, 0xe2, 0x22, 0x78, 0xbf,
-	0x63, 0xd6, 0xb9, 0xff, 0x92, 0x08, 0xe1, 0x14, 0x5c, 0x57, 0x73, 0x0f, 0x9f, 0x40, 0x69, 0x9c,
-	0xef, 0xd0, 0x36, 0xa0, 0x7d, 0xe3, 0x05, 0xae, 0xdb, 0x44, 0xb7, 0xb0, 0x5d, 0xc7, 0xfb, 0x7a,
-	0xa7, 0x61, 0xa9, 0xd7, 0x98, 0x6f, 0x5a, 0x98, 0xd8, 0x2d, 0x4c, 0xda, 0x4d, 0x53, 0x55, 0x5e,
-	0xad, 0xf0, 0x2f, 0xec, 0x9f, 0xfc, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xe0, 0x89, 0xee,
-	0x6d, 0x2f, 0x00, 0x00,
+var fileDescriptor_1820d8e1a9fad753 = []byte{
+	// 3729 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3b, 0x4d, 0x6c, 0xdb, 0x68,
+	0x76, 0xa1, 0x7e, 0x2c, 0xe9, 0xf9, 0x8f, 0xfe, 0xec, 0x71, 0x14, 0x27, 0x99, 0x78, 0x38, 0x93,
+	0x99, 0xac, 0x33, 0xe3, 0xe9, 0x26, 0x59, 0x74, 0x76, 0x51, 0x6c, 0x4b, 0x49, 0x74, 0xcc, 0x8c,
+	0x4c, 0x6a, 0x3e, 0x51, 0x4e, 0xb2, 0x87, 0x72, 0x19, 0xf1, 0xb3, 0xc3, 0x46, 0x12, 0xb5, 0x24,
+	0xe5, 0x8d, 0x07, 0x3b, 0x87, 0x02, 0x45, 0x0f, 0x2d, 0x7a, 0xe8, 0xa9, 0x40, 0x81, 0x1e, 0xf7,
+	0xd6, 0xde, 0x7a, 0x59, 0xf4, 0x52, 0xa0, 0xc0, 0xa2, 0x68, 0xd1, 0x53, 0x51, 0xb4, 0xa7, 0x02,
+	0x2d, 0x7a, 0xe8, 0xa9, 0xf7, 0x02, 0x45, 0x51, 0x7c, 0x3f, 0x94, 0x48, 0x4a, 0x96, 0x65, 0xcf,
+	0x4c, 0x2f, 0x7b, 0x31, 0xc4, 0xf7, 0xf7, 0xbd, 0xef, 0xbd, 0xf7, 0xbd, 0xf7, 0xbe, 0x47, 0x1a,
+	0xca, 0x67, 0x8f, 0xf7, 0x87, 0x81, 0x1f, 0xf9, 0xe8, 0x36, 0x79, 0x1b, 0xed, 0xf7, 0x9d, 0x61,
+	0xb8, 0xff, 0xca, 0xf7, 0xdf, 0x78, 0x83, 0xd3, 0xfd, 0xa1, 0x13, 0x44, 0x03, 0x12, 0xec, 0x9f,
+	0x3d, 0x56, 0xbe, 0x80, 0x6a, 0xfd, 0x35, 0xe9, 0xbe, 0x51, 0xcf, 0x1c, 0xaf, 0xe7, 0xbc, 0xf2,
+	0x7a, 0x5e, 0x74, 0x8e, 0xc9, 0x4f, 0x46, 0x24, 0x8c, 0xd0, 0xf7, 0xa0, 0x10, 0xf6, 0xfc, 0xa8,
+	0x2a, 0xed, 0x4a, 0x0f, 0x96, 0x1f, 0xbd, 0xb7, 0x3f, 0x47, 0xce, 0x7e, 0xbb, 0xe7, 0x47, 0x98,
+	0x91, 0x2b, 0x7f, 0x9f, 0x87, 0x5b, 0x33, 0x64, 0x86, 0x43, 0x7f, 0x10, 0x92, 0x6b, 0x0a, 0x45,
+	0x1f, 0xc1, 0x7a, 0xd7, 0x1f, 0x0d, 0x22, 0xdb, 0xe1, 0x42, 0x7b, 0xa4, 0x9a, 0xdb, 0x95, 0x1e,
+	0x14, 0xf1, 0x1a, 0x03, 0xab, 0x31, 0x14, 0x7d, 0x05, 0x5b, 0xee, 0x28, 0x70, 0x22, 0xcf, 0x1f,
+	0xd8, 0x01, 0xf9, 0xc9, 0xc8, 0x0b, 0x48, 0x9f, 0x0c, 0xa2, 0x6a, 0x7e, 0x57, 0x7a, 0xb0, 0xf6,
+	0xe8, 0xd9, 0xdc, 0xf5, 0x2e, 0xd4, 0x7a, 0xbf, 0x21, 0x44, 0xe2, 0x89, 0x44, 0xbc, 0xe9, 0x4e,
+	0x03, 0xd1, 0x8f, 0x61, 0xd3, 0x49, 0x08, 0xb0, 0x47, 0x43, 0xd7, 0x89, 0x48, 0xb5, 0xc0, 0x76,
+	0xfb, 0xe9, 0xdc, 0xd5, 0x93, 0x0b, 0x77, 0x18, 0x1b, 0x46, 0xce, 0x14, 0x4c, 0xe9, 0xc3, 0xe6,
+	0x0c, 0x6d, 0xd0, 0x07, 0xb0, 0xdb, 0xe8, 0x60, 0xd5, 0xd2, 0x4d, 0xc3, 0xc6, 0xda, 0x17, 0x1d,
+	0x1d, 0x6b, 0x47, 0x9a, 0x61, 0xd9, 0x1d, 0xa3, 0xdd, 0xd2, 0xea, 0xfa, 0x81, 0xae, 0x35, 0xe4,
+	0x1b, 0xa8, 0x0a, 0x5b, 0x0d, 0xd3, 0x36, 0x4c, 0xcb, 0x6e, 0x1f, 0x9a, 0xcf, 0xed, 0x98, 0x43,
+	0x96, 0xd0, 0x36, 0xa0, 0xa3, 0x4e, 0x3b, 0x0b, 0xcf, 0x29, 0x43, 0x40, 0xd3, 0x8a, 0xa1, 0x1f,
+	0xc1, 0x06, 0x75, 0x8b, 0x9d, 0xd4, 0xaf, 0x2a, 0xed, 0xe6, 0x1f, 0x2c, 0x3f, 0xfa, 0xe4, 0x52,
+	0x97, 0xa6, 0x2c, 0x2c, 0x87, 0x19, 0x88, 0x12, 0x80, 0x9c, 0xa5, 0xfa, 0xb6, 0xa3, 0x46, 0xf9,
+	0x37, 0x09, 0xca, 0x94, 0xcf, 0xf2, 0xfa, 0x04, 0xdd, 0x05, 0x08, 0x49, 0x70, 0xe6, 0x75, 0x89,
+	0xed, 0xb9, 0xd5, 0xe2, 0xae, 0xf4, 0xa0, 0x82, 0x2b, 0x02, 0xa2, 0xbb, 0xe8, 0x36, 0x54, 0xc2,
+	0xc8, 0x09, 0x22, 0x3b, 0x24, 0x5d, 0xa6, 0x50, 0x1e, 0x97, 0x19, 0xa0, 0x4d, 0xba, 0xe8, 0x3d,
+	0x58, 0x19, 0x87, 0x1f, 0xc5, 0xe7, 0x18, 0x7e, 0x39, 0x86, 0x51, 0x92, 0xef, 0x80, 0x9c, 0x0a,
+	0x91, 0xc8, 0x39, 0x65, 0xd1, 0x59, 0xc1, 0xeb, 0x49, 0xb8, 0xe5, 0x9c, 0xa2, 0xcf, 0x61, 0x25,
+	0x20, 0xa1, 0x3f, 0x0a, 0x98, 0x2a, 0xa1, 0x08, 0xa3, 0x07, 0x73, 0xb7, 0x8f, 0x05, 0x83, 0xee,
+	0x86, 0x78, 0x39, 0x98, 0x3c, 0x28, 0x6f, 0x61, 0x2b, 0xde, 0x62, 0xca, 0xb6, 0x35, 0xa8, 0x30,
+	0x5f, 0x46, 0x5e, 0x9f, 0x08, 0x03, 0xdf, 0xbf, 0xd4, 0xc0, 0x54, 0x0a, 0x2e, 0x87, 0xb1, 0xc9,
+	0xee, 0x40, 0x25, 0x6d, 0xe2, 0x32, 0x9e, 0x00, 0x94, 0x3f, 0x94, 0xe0, 0xdd, 0x9a, 0x13, 0x75,
+	0x5f, 0x27, 0xd7, 0x6d, 0xfa, 0xfe, 0x9b, 0xd1, 0x30, 0xce, 0x35, 0xf7, 0x60, 0xb9, 0x4f, 0x82,
+	0xee, 0x6b, 0x67, 0x10, 0x51, 0xa3, 0x4b, 0xcc, 0x1e, 0x10, 0x83, 0x74, 0x37, 0xad, 0x65, 0x9e,
+	0x45, 0xda, 0x55, 0xb5, 0x7c, 0x56, 0x28, 0xe7, 0xe4, 0xbc, 0xf2, 0x07, 0x12, 0xdc, 0xbb, 0x50,
+	0x1b, 0x91, 0xa5, 0x4e, 0x61, 0x7b, 0xbc, 0xda, 0xac, 0x20, 0xff, 0xee, 0x42, 0x4b, 0xa7, 0x02,
+	0x7d, 0x2b, 0x9c, 0x01, 0x55, 0xbe, 0x82, 0x7b, 0x2c, 0xeb, 0x98, 0x81, 0x4b, 0x82, 0x83, 0x51,
+	0xef, 0xc4, 0xeb, 0x65, 0xd3, 0xf0, 0xa5, 0xa6, 0xf9, 0x3e, 0x14, 0xbc, 0x88, 0xf4, 0xab, 0xb9,
+	0x05, 0xac, 0xd2, 0xf4, 0x06, 0x44, 0x8f, 0x48, 0x1f, 0x33, 0x16, 0xe5, 0x97, 0x12, 0xec, 0x5e,
+	0xbc, 0xbe, 0x30, 0xc6, 0x0b, 0x58, 0x3b, 0x49, 0x61, 0x44, 0x94, 0xfc, 0xda, 0xdc, 0x95, 0x66,
+	0x49, 0xcc, 0xc8, 0x41, 0x87, 0xb0, 0x76, 0x42, 0x48, 0x68, 0x3b, 0x03, 0xd7, 0x8e, 0x9c, 0xb7,
+	0x24, 0x64, 0xb1, 0xb3, 0xfc, 0x48, 0x99, 0x2b, 0xb9, 0x15, 0x78, 0x5d, 0x82, 0x57, 0x28, 0xa7,
+	0x3a, 0x70, 0x2d, 0xca, 0xa7, 0x7c, 0x06, 0x37, 0x9f, 0x92, 0xa8, 0xc6, 0x89, 0xdb, 0x91, 0x13,
+	0x8d, 0xc2, 0xd8, 0x7e, 0x77, 0x01, 0x84, 0x90, 0x89, 0xf9, 0x2a, 0x02, 0xa2, 0xbb, 0xca, 0x7f,
+	0x4a, 0x50, 0x9d, 0x66, 0x15, 0x5b, 0x9f, 0xcf, 0x8b, 0xbe, 0x80, 0xb5, 0x18, 0x1d, 0x32, 0x46,
+	0xa6, 0xff, 0xda, 0xa3, 0xbd, 0xb9, 0xfa, 0xa7, 0x97, 0x5a, 0x7d, 0x95, 0x7c, 0xa4, 0x99, 0x75,
+	0x18, 0x90, 0xa1, 0x73, 0x4e, 0xb3, 0x7a, 0x2c, 0x95, 0x17, 0xaf, 0x4f, 0x2e, 0xb1, 0x4a, 0xcc,
+	0x25, 0x04, 0xcb, 0xc3, 0x0c, 0x44, 0xf9, 0xf3, 0x02, 0x6c, 0xd5, 0x03, 0xe2, 0x44, 0x44, 0xa8,
+	0xf0, 0xf5, 0x2a, 0x3d, 0x3a, 0x84, 0x4a, 0x8f, 0x38, 0x21, 0xb1, 0x03, 0x72, 0x22, 0x3c, 0xf7,
+	0x70, 0x7e, 0xf4, 0x51, 0x6a, 0x4c, 0x4e, 0x48, 0x40, 0x06, 0x5d, 0x82, 0xcb, 0x3d, 0xf1, 0x8c,
+	0x9e, 0x83, 0x3c, 0x0a, 0x49, 0x60, 0x7b, 0x83, 0x13, 0x3f, 0xe8, 0xb3, 0x54, 0xc9, 0x36, 0xbd,
+	0xfc, 0xe8, 0xe3, 0xb9, 0x02, 0x3b, 0x21, 0x09, 0xf4, 0x09, 0x0f, 0x5e, 0x1f, 0xa5, 0x01, 0xb4,
+	0x1e, 0xc7, 0xb6, 0x4c, 0xca, 0x5e, 0xa4, 0x1e, 0xb7, 0x38, 0x5f, 0x52, 0x3c, 0x1a, 0x4e, 0xc1,
+	0xd0, 0xcf, 0xe0, 0x6e, 0xbc, 0xc2, 0x30, 0xf0, 0xbb, 0x24, 0x0c, 0x69, 0x38, 0x0c, 0x9d, 0xc0,
+	0xe9, 0x93, 0x88, 0x04, 0x21, 0x2b, 0x20, 0xcb, 0x8f, 0x3e, 0x5b, 0x64, 0xad, 0xd6, 0x58, 0x40,
+	0x6b, 0xcc, 0x8f, 0x6f, 0x0f, 0x2f, 0x46, 0xa2, 0x87, 0xb0, 0xe1, 0xb9, 0xa4, 0x3f, 0xf4, 0x23,
+	0x32, 0xe8, 0x9e, 0xdb, 0x91, 0xff, 0x86, 0x0c, 0xaa, 0x4b, 0x2c, 0x4e, 0xe5, 0x04, 0xc2, 0xa2,
+	0x70, 0xf4, 0x09, 0x20, 0xc7, 0x75, 0x3d, 0xaa, 0xb6, 0xd3, 0x63, 0xdd, 0x11, 0x09, 0xa3, 0x6a,
+	0x89, 0x51, 0x6f, 0x4c, 0x30, 0x22, 0x2a, 0x94, 0x3f, 0xca, 0xc1, 0x3b, 0x99, 0x70, 0x11, 0xc7,
+	0xe2, 0x87, 0x50, 0x12, 0x9b, 0x10, 0x21, 0xf3, 0xc1, 0x22, 0x01, 0x8f, 0x63, 0x26, 0xf4, 0xdb,
+	0xb0, 0xc9, 0xdc, 0x1d, 0x1b, 0xce, 0x1f, 0x32, 0xaf, 0xf0, 0x10, 0xda, 0xbf, 0xd4, 0xe3, 0xc2,
+	0x5a, 0x26, 0xe3, 0xc2, 0x1b, 0xa3, 0x2c, 0x08, 0x59, 0xb0, 0x1e, 0x9f, 0xcb, 0x13, 0xc7, 0xeb,
+	0x8d, 0x02, 0x22, 0xa2, 0xe9, 0xe1, 0x22, 0x7a, 0x1e, 0x70, 0x16, 0x1c, 0x9f, 0x6d, 0xf1, 0xac,
+	0x18, 0x80, 0xb8, 0x39, 0x44, 0x18, 0xf3, 0xb3, 0xf3, 0x19, 0x14, 0x59, 0x18, 0x0b, 0x4b, 0x28,
+	0x0b, 0x1c, 0x00, 0xce, 0xa0, 0xfc, 0x5c, 0x82, 0xcd, 0x94, 0x40, 0x61, 0xdd, 0x6b, 0x4b, 0x9c,
+	0xb5, 0xef, 0xdc, 0xd7, 0xdf, 0xf7, 0x5f, 0x49, 0x50, 0x64, 0xcb, 0xa0, 0x5b, 0xc0, 0x8f, 0xec,
+	0x24, 0x19, 0x96, 0xd8, 0xb3, 0xee, 0x8e, 0x53, 0x48, 0xee, 0x6a, 0x29, 0xe4, 0x3e, 0xac, 0xb1,
+	0x48, 0x08, 0xe2, 0xa4, 0x20, 0x5a, 0xa1, 0x55, 0x0a, 0x1d, 0x67, 0x0a, 0xf4, 0x7d, 0xb8, 0xc5,
+	0x17, 0x26, 0x6f, 0x87, 0x9e, 0x68, 0xaf, 0x58, 0x6d, 0xa6, 0x3d, 0x56, 0x81, 0xf5, 0x58, 0xdb,
+	0x8c, 0x40, 0x1b, 0xe3, 0x69, 0xa9, 0x6d, 0x93, 0xae, 0xf2, 0x10, 0xd6, 0xd2, 0x69, 0x67, 0xce,
+	0x2e, 0x94, 0xff, 0x96, 0x62, 0x1f, 0xb3, 0xf2, 0x95, 0xf0, 0xb1, 0x4f, 0x9f, 0x17, 0xf2, 0x08,
+	0xe7, 0xe4, 0x0c, 0x97, 0x67, 0x87, 0xdc, 0xff, 0x7b, 0x76, 0xc8, 0xcf, 0xce, 0x0e, 0xca, 0x5f,
+	0x8c, 0xc3, 0x51, 0xec, 0x5d, 0x84, 0xe3, 0x0f, 0xae, 0xbc, 0xf9, 0xc3, 0x1b, 0xf1, 0xf6, 0x5b,
+	0xb0, 0xca, 0x7e, 0x64, 0xc2, 0xf1, 0x3b, 0x0b, 0x74, 0x0e, 0x9c, 0xe1, 0xf0, 0x06, 0x5e, 0xf1,
+	0x13, 0xcf, 0xb5, 0x32, 0x2c, 0x05, 0x24, 0x1c, 0xf5, 0x22, 0x65, 0x1f, 0x36, 0x9b, 0x5e, 0x18,
+	0x17, 0xee, 0x71, 0xb9, 0xbf, 0x09, 0x25, 0x5e, 0x4a, 0x62, 0xe7, 0x2e, 0xb1, 0x9a, 0xe0, 0x2a,
+	0x2f, 0x60, 0x2b, 0x4d, 0x2f, 0xf6, 0xf7, 0x5b, 0x50, 0x16, 0x4a, 0x84, 0xa2, 0xbb, 0x5b, 0x2c,
+	0x9b, 0x8d, 0xb9, 0x94, 0xbf, 0x94, 0x60, 0x83, 0x8a, 0x66, 0x8a, 0x8f, 0x15, 0xb9, 0x95, 0x51,
+	0xe4, 0xf0, 0x46, 0xac, 0x0a, 0x3a, 0x86, 0x0a, 0x37, 0x0b, 0x6d, 0xea, 0xb9, 0x49, 0x7e, 0xfd,
+	0x92, 0xb6, 0x2d, 0x23, 0x9d, 0x1b, 0x49, 0x77, 0xc3, 0xc3, 0x1b, 0xb8, 0xec, 0x8b, 0xdf, 0x3b,
+	0xf7, 0xa1, 0x1c, 0xc3, 0x69, 0x94, 0xc7, 0x6b, 0xb0, 0x6d, 0x55, 0x70, 0x49, 0xd0, 0xd5, 0x8a,
+	0x90, 0xf7, 0xdc, 0x90, 0xe6, 0xb3, 0xa4, 0xdc, 0x49, 0xf6, 0x89, 0xdd, 0x9d, 0xbf, 0x52, 0xac,
+	0x2b, 0xc7, 0xb0, 0xc5, 0xaf, 0x87, 0x99, 0xee, 0xe2, 0x6b, 0x56, 0x0b, 0x56, 0x87, 0x32, 0x82,
+	0x7f, 0xa5, 0xeb, 0xd0, 0xbf, 0xe6, 0xa0, 0x24, 0x48, 0x2e, 0x6b, 0x50, 0xaf, 0x99, 0x95, 0xbf,
+	0xb5, 0x76, 0xac, 0x06, 0x4b, 0xa2, 0xa5, 0x2d, 0x5c, 0xb9, 0x51, 0x16, 0x9c, 0x17, 0xb5, 0x74,
+	0xc5, 0x6f, 0xac, 0xa5, 0x53, 0xfe, 0xb9, 0x00, 0x6b, 0x69, 0x1f, 0xa0, 0xa7, 0x50, 0xec, 0x3a,
+	0x23, 0x51, 0x93, 0xd7, 0x2e, 0xb9, 0xff, 0xa5, 0x79, 0xf7, 0xeb, 0x94, 0x11, 0x73, 0x7e, 0xf4,
+	0x12, 0x50, 0x40, 0x7e, 0x87, 0x74, 0x23, 0xe2, 0xda, 0x5d, 0x27, 0x70, 0xed, 0xe8, 0x7c, 0x48,
+	0xc4, 0xb5, 0x61, 0x7e, 0x54, 0xd4, 0x03, 0xe2, 0x7a, 0x51, 0xdd, 0x09, 0x5c, 0xeb, 0x7c, 0x48,
+	0xb0, 0x1c, 0x8b, 0x89, 0x21, 0x68, 0x17, 0x96, 0x5d, 0x12, 0x76, 0x03, 0x6f, 0x38, 0x76, 0x58,
+	0x05, 0x27, 0x41, 0xca, 0xff, 0xe6, 0xa0, 0xc8, 0xb4, 0x41, 0xef, 0xc0, 0x46, 0x5d, 0xed, 0xb4,
+	0xb5, 0xcc, 0x7c, 0x68, 0x0b, 0xe4, 0x76, 0xd3, 0xb4, 0xec, 0x8e, 0xa1, 0x1e, 0xab, 0x7a, 0x53,
+	0xad, 0x35, 0x35, 0x59, 0x42, 0xf7, 0xe0, 0x36, 0x83, 0xaa, 0x4d, 0xac, 0xa9, 0x8d, 0x97, 0x76,
+	0xcd, 0x34, 0x3f, 0xd7, 0x1a, 0x76, 0xed, 0xa5, 0xdd, 0x69, 0x6b, 0x58, 0xce, 0xa1, 0x0d, 0x58,
+	0x6d, 0x6a, 0x6a, 0x5b, 0xb3, 0xb5, 0x17, 0x2d, 0x1d, 0x6b, 0x0d, 0x39, 0x4f, 0x79, 0xcc, 0x8e,
+	0xd5, 0xd6, 0x1b, 0x9a, 0x5d, 0x57, 0x8d, 0xba, 0xd6, 0x6c, 0xf2, 0xd9, 0xd4, 0x73, 0xdd, 0x68,
+	0x98, 0xcf, 0xe5, 0x02, 0xfa, 0x00, 0x76, 0x5b, 0xea, 0x4b, 0x36, 0xa3, 0xd2, 0x30, 0x36, 0xb1,
+	0x5d, 0x57, 0x71, 0xc3, 0xb6, 0x5e, 0xb6, 0x34, 0x1b, 0x6b, 0xcf, 0xb4, 0xba, 0xa5, 0x35, 0xe4,
+	0x22, 0x15, 0x33, 0x83, 0xaa, 0xa1, 0xd5, 0x9b, 0xba, 0xa1, 0x35, 0xe4, 0x25, 0x74, 0x07, 0xaa,
+	0x31, 0x81, 0xd9, 0x62, 0x2b, 0x18, 0xa6, 0x65, 0x1f, 0xab, 0x4d, 0xbd, 0x21, 0x97, 0xa8, 0x62,
+	0x29, 0x76, 0xb9, 0x8c, 0x14, 0x78, 0x97, 0x6a, 0x4d, 0xb5, 0xa2, 0x94, 0xd4, 0x06, 0x69, 0x01,
+	0x72, 0x05, 0xdd, 0x85, 0x5b, 0x74, 0x8f, 0xba, 0xf1, 0x74, 0xbc, 0x67, 0xb1, 0x09, 0xad, 0x21,
+	0x03, 0xba, 0x0d, 0x37, 0x63, 0x34, 0x15, 0x11, 0xef, 0x8f, 0x1a, 0x6b, 0x99, 0x22, 0xcd, 0x63,
+	0x0d, 0x37, 0xd5, 0x56, 0x8b, 0x12, 0x60, 0xad, 0xad, 0xe1, 0x63, 0x3e, 0x4d, 0x5b, 0x51, 0x7e,
+	0x91, 0x83, 0x22, 0xcb, 0x99, 0x99, 0xf4, 0x2c, 0x25, 0xd2, 0xf3, 0xcc, 0xd3, 0x97, 0xfb, 0x16,
+	0x2f, 0x43, 0xf9, 0x6f, 0xee, 0x32, 0x94, 0x99, 0x55, 0x14, 0x2e, 0x9c, 0x55, 0x14, 0xaf, 0x3e,
+	0xab, 0xf8, 0x9f, 0x1c, 0x94, 0x63, 0x50, 0x66, 0x46, 0x27, 0xcd, 0x9d, 0xd1, 0xe5, 0x2e, 0x99,
+	0xd1, 0xe5, 0xa7, 0x67, 0x74, 0x06, 0x94, 0x22, 0xaf, 0xfb, 0x86, 0x44, 0x34, 0x51, 0x51, 0x4d,
+	0x9f, 0x2c, 0xa4, 0x29, 0xaf, 0x87, 0xc4, 0xb5, 0x38, 0x2f, 0x8e, 0x85, 0xd0, 0xa2, 0x3a, 0x0c,
+	0xbc, 0x2e, 0x11, 0x59, 0x6a, 0x91, 0xf9, 0x06, 0x67, 0x48, 0x64, 0xcc, 0xa5, 0xeb, 0x66, 0xcc,
+	0x9d, 0x3a, 0xac, 0xa5, 0x15, 0xa3, 0xf6, 0xe1, 0xaa, 0x4d, 0xac, 0x57, 0xe6, 0x00, 0xdd, 0x45,
+	0x5b, 0x50, 0x64, 0xe3, 0x51, 0x31, 0x2b, 0xe5, 0x0f, 0xca, 0x5f, 0xe7, 0x61, 0x25, 0xd9, 0x99,
+	0x21, 0x2d, 0x9d, 0x12, 0x3f, 0x5d, 0xb8, 0xa7, 0x4b, 0x27, 0xc4, 0xe9, 0xe9, 0x52, 0xee, 0x1b,
+	0x9a, 0x2e, 0xcd, 0x4e, 0xb5, 0xf9, 0x6f, 0x21, 0xd5, 0x16, 0xa6, 0x53, 0xed, 0x1f, 0x4b, 0x97,
+	0xa4, 0xda, 0x9b, 0xb0, 0x69, 0xe2, 0x86, 0x86, 0xed, 0x8e, 0x71, 0xd0, 0x69, 0x1e, 0xe8, 0xcd,
+	0x38, 0xdb, 0x2e, 0x92, 0x18, 0x73, 0x97, 0x25, 0xc6, 0xfc, 0x74, 0xea, 0x2b, 0x28, 0xff, 0x92,
+	0x87, 0xcd, 0x19, 0x86, 0x43, 0xaf, 0xe2, 0x9e, 0x5a, 0xb8, 0xf2, 0xd9, 0x55, 0x4d, 0xbf, 0x3f,
+	0x7b, 0x7c, 0x38, 0xea, 0x45, 0x58, 0x48, 0x46, 0x2e, 0x6c, 0xd2, 0x53, 0x6c, 0x4f, 0xf9, 0x9a,
+	0x9e, 0xae, 0xc7, 0x0b, 0x9d, 0xae, 0x8c, 0x7c, 0xe4, 0x4d, 0xc1, 0xd0, 0x77, 0x61, 0x6b, 0x34,
+	0x18, 0x2f, 0xd1, 0x23, 0x76, 0x40, 0x9c, 0x70, 0x5c, 0x0b, 0x37, 0x53, 0x38, 0xcc, 0x50, 0xca,
+	0xdf, 0x48, 0x70, 0xeb, 0x42, 0xf5, 0xd1, 0x43, 0xf8, 0x88, 0x7b, 0x69, 0xec, 0x23, 0xbd, 0xa9,
+	0x5b, 0x2f, 0x69, 0x5a, 0xef, 0x34, 0xb3, 0x6f, 0x57, 0xd6, 0x61, 0xb9, 0xae, 0x1a, 0x31, 0xa9,
+	0x2c, 0xd1, 0x5a, 0x90, 0xf2, 0xae, 0x4d, 0x9d, 0x63, 0xeb, 0x96, 0x76, 0x24, 0xe7, 0xd0, 0x7d,
+	0x78, 0x2f, 0x8d, 0xa4, 0x85, 0x42, 0xaf, 0x6b, 0x76, 0xdd, 0x3c, 0xaa, 0xe9, 0x06, 0x2f, 0x19,
+	0x79, 0x1a, 0x0e, 0x33, 0xe2, 0xc4, 0x36, 0xad, 0x43, 0x0d, 0xdb, 0x58, 0x53, 0xdb, 0xa6, 0x21,
+	0x17, 0x94, 0xbf, 0x2b, 0xc2, 0xf6, 0x6c, 0x3b, 0x8d, 0x53, 0xee, 0x22, 0xa3, 0xfd, 0x74, 0xca,
+	0x45, 0xee, 0x38, 0x30, 0x78, 0x83, 0xd2, 0xbc, 0x86, 0x9f, 0xf6, 0x67, 0xb8, 0x2e, 0x1d, 0x1a,
+	0x57, 0x77, 0x1a, 0x7a, 0x03, 0x2b, 0xa9, 0xa9, 0x3c, 0x9f, 0xe7, 0x3d, 0xbd, 0x8e, 0x7a, 0xfc,
+	0x66, 0xe1, 0xa6, 0x66, 0xf5, 0x29, 0xe1, 0xe8, 0x10, 0x96, 0x45, 0xb2, 0x64, 0x09, 0x84, 0x97,
+	0xae, 0x8f, 0xe6, 0xae, 0xc5, 0xf3, 0x2c, 0x4b, 0x1e, 0x10, 0x8d, 0x7f, 0xef, 0x3c, 0x81, 0xcd,
+	0x19, 0xcb, 0xb1, 0x62, 0x36, 0xf4, 0xa3, 0xd0, 0xf6, 0x87, 0x64, 0xc0, 0xfc, 0x54, 0xc4, 0x15,
+	0x06, 0x31, 0x87, 0x64, 0xa0, 0xfc, 0x97, 0x04, 0xd5, 0x8b, 0x8c, 0x88, 0xf6, 0xe0, 0x43, 0x1a,
+	0x4f, 0xd7, 0x8b, 0xcf, 0x59, 0xed, 0x1e, 0x4b, 0x2d, 0xf5, 0x43, 0xbd, 0xd9, 0xb0, 0x2d, 0xbd,
+	0xfe, 0xb9, 0x66, 0xb5, 0xed, 0xe7, 0xba, 0x75, 0x68, 0x76, 0x2c, 0x5b, 0x6d, 0x74, 0x9a, 0x96,
+	0xbc, 0x44, 0x43, 0x32, 0x1d, 0x8c, 0x9c, 0x30, 0x13, 0xb8, 0x9b, 0xb0, 0xae, 0x1b, 0x75, 0x13,
+	0x63, 0xad, 0x6e, 0xd9, 0x2d, 0xac, 0xd7, 0x35, 0xb9, 0x80, 0xde, 0x87, 0x7b, 0x4c, 0xdd, 0x39,
+	0xc1, 0x5c, 0x54, 0xfe, 0x56, 0x02, 0x98, 0x58, 0x10, 0x7d, 0x00, 0x6b, 0x09, 0xfb, 0x4f, 0x2a,
+	0xd6, 0xca, 0xc4, 0xb2, 0xba, 0x8b, 0x1e, 0xc2, 0x46, 0xf8, 0xda, 0x0f, 0x22, 0x3b, 0x99, 0x98,
+	0x73, 0x7c, 0xd6, 0xc1, 0x10, 0x8d, 0x09, 0x7c, 0x52, 0x8f, 0xf3, 0x57, 0xad, 0xc7, 0x9f, 0x00,
+	0xe2, 0xb7, 0x44, 0x7b, 0xba, 0x00, 0x6c, 0x70, 0x4c, 0x62, 0x21, 0xe5, 0xc7, 0xb0, 0x9c, 0x78,
+	0x21, 0x47, 0xbb, 0xbe, 0x30, 0x72, 0x4e, 0x4e, 0x12, 0x5d, 0x1f, 0x7b, 0xd6, 0x5d, 0x74, 0x13,
+	0x4a, 0x81, 0xef, 0xf7, 0x29, 0x86, 0x6b, 0xbd, 0x44, 0x1f, 0x75, 0x97, 0x46, 0x07, 0x55, 0xe6,
+	0xdc, 0x0e, 0xbd, 0x2f, 0xb9, 0xc2, 0x45, 0x5c, 0x61, 0x90, 0xb6, 0xf7, 0x25, 0x51, 0x7e, 0x99,
+	0x07, 0xc4, 0x06, 0x38, 0xde, 0x97, 0xac, 0x7d, 0xa9, 0xfb, 0x83, 0x13, 0xef, 0x14, 0xfd, 0xae,
+	0x04, 0xdb, 0x51, 0x02, 0x3c, 0x99, 0x39, 0x89, 0x8b, 0xfd, 0xfc, 0x24, 0x3f, 0x2d, 0x31, 0x05,
+	0x1a, 0xcf, 0x98, 0xb4, 0x41, 0x14, 0x9c, 0xe3, 0x77, 0xa2, 0x59, 0x38, 0xf4, 0xfb, 0x12, 0xec,
+	0xbc, 0xf2, 0x7a, 0x3d, 0x76, 0x3b, 0x9d, 0x74, 0x89, 0x36, 0xff, 0x25, 0x72, 0xca, 0xe1, 0x55,
+	0xf5, 0xa8, 0x71, 0x89, 0x89, 0xb6, 0xf3, 0x80, 0xfd, 0xc0, 0xd5, 0x57, 0x17, 0x60, 0x76, 0x0e,
+	0x61, 0xe7, 0x62, 0xed, 0x91, 0x0c, 0xf9, 0x37, 0xe4, 0x5c, 0xf8, 0x83, 0xfe, 0xa4, 0x1d, 0xd0,
+	0x99, 0xd3, 0x1b, 0x11, 0xe1, 0x09, 0xfe, 0xf0, 0x83, 0xdc, 0x67, 0x92, 0xf2, 0x12, 0xaa, 0x17,
+	0xad, 0x4f, 0x8f, 0x62, 0x4d, 0x6f, 0x36, 0x69, 0xd7, 0xaf, 0x1b, 0x07, 0x26, 0x3e, 0xe2, 0x37,
+	0x1e, 0xfe, 0x2b, 0x73, 0x14, 0x4b, 0x90, 0x3f, 0xd2, 0x0d, 0x59, 0x42, 0x65, 0x28, 0x1c, 0x74,
+	0x9a, 0x4d, 0x39, 0xa7, 0xfc, 0x69, 0x01, 0x6e, 0xcf, 0x99, 0xf4, 0xa1, 0x37, 0x50, 0x11, 0x23,
+	0x44, 0x3f, 0x10, 0x85, 0x5a, 0xbf, 0xee, 0xd8, 0x30, 0x83, 0xf3, 0x83, 0x5a, 0xae, 0x2a, 0xe1,
+	0x89, 0x7c, 0xf4, 0x04, 0xb6, 0xe2, 0xab, 0x42, 0x9f, 0x44, 0xaf, 0x7d, 0x57, 0x0c, 0x0f, 0x99,
+	0x41, 0x18, 0x71, 0xdc, 0xfe, 0x1f, 0x31, 0x34, 0x7f, 0xc1, 0xa0, 0xc2, 0xdd, 0xd1, 0x60, 0xe8,
+	0x04, 0x21, 0x71, 0xed, 0x99, 0xec, 0xfc, 0x65, 0xfa, 0x4e, 0x4c, 0xd4, 0x9a, 0x16, 0x71, 0x07,
+	0x4a, 0x67, 0x24, 0x08, 0xc7, 0x17, 0x58, 0xb6, 0x56, 0x0c, 0x42, 0x9f, 0xc2, 0x46, 0x66, 0x9c,
+	0xea, 0x07, 0xfc, 0xf0, 0x31, 0x3a, 0x79, 0x98, 0xd9, 0x16, 0xbd, 0xf2, 0xa4, 0x4e, 0x41, 0x97,
+	0xc5, 0x10, 0xeb, 0xa5, 0x2f, 0xbb, 0xf2, 0x4c, 0x87, 0x1e, 0x46, 0xd1, 0x14, 0x4c, 0x71, 0x41,
+	0xce, 0x1a, 0x13, 0xbd, 0x07, 0x77, 0xe3, 0xde, 0xab, 0x85, 0xcd, 0xba, 0xd6, 0x6e, 0x9b, 0x78,
+	0xfa, 0xa6, 0x3d, 0x41, 0xb5, 0x2d, 0xac, 0xb7, 0x68, 0xef, 0x77, 0x13, 0x36, 0x27, 0xd0, 0x1a,
+	0x56, 0x75, 0xc3, 0xc2, 0x9a, 0x26, 0xe7, 0x94, 0x7f, 0xcf, 0xc1, 0xc6, 0xd4, 0xc8, 0x09, 0x3d,
+	0x86, 0xed, 0x19, 0xf3, 0xab, 0x49, 0x72, 0xd9, 0x9c, 0x1a, 0x49, 0xe9, 0x2e, 0xfa, 0x14, 0xb6,
+	0xce, 0x9c, 0x9e, 0xe7, 0xda, 0xfc, 0x86, 0x34, 0x1e, 0xa3, 0xf3, 0x6b, 0xd2, 0x06, 0xc3, 0xb5,
+	0x29, 0x4a, 0x4c, 0xd0, 0xd1, 0x43, 0x40, 0x9c, 0x81, 0x0c, 0xdc, 0x09, 0x39, 0xbf, 0x35, 0xad,
+	0x33, 0x8c, 0x36, 0x70, 0x63, 0xe2, 0x1a, 0x14, 0x58, 0x95, 0xe4, 0xf3, 0x9d, 0xfd, 0x45, 0x02,
+	0x94, 0x6b, 0xc6, 0x8a, 0x25, 0xe3, 0x45, 0xf7, 0x61, 0xcd, 0x0f, 0xbc, 0x53, 0x6f, 0xe0, 0xf4,
+	0x6c, 0x7e, 0x13, 0x29, 0xb2, 0xac, 0xb7, 0x1a, 0x43, 0xeb, 0x14, 0x88, 0xde, 0x87, 0xd5, 0xee,
+	0x28, 0x08, 0xe8, 0xc6, 0x39, 0xd5, 0x12, 0xa3, 0x5a, 0x11, 0x40, 0x4e, 0xb4, 0x37, 0x89, 0x98,
+	0x89, 0x75, 0xf8, 0x2b, 0xaf, 0xf5, 0x61, 0xda, 0x32, 0xca, 0x3f, 0x2c, 0x01, 0x9a, 0xbe, 0xe8,
+	0xce, 0x7e, 0x25, 0x2b, 0x7d, 0x23, 0xaf, 0x64, 0xd1, 0x13, 0xd8, 0x8e, 0x05, 0x47, 0x81, 0x33,
+	0x08, 0x9d, 0x6e, 0xac, 0x23, 0x4f, 0x3d, 0xf1, 0x29, 0xb4, 0x26, 0x48, 0xdd, 0xfd, 0x1a, 0xe5,
+	0x4b, 0x05, 0x88, 0x9c, 0xb7, 0xb6, 0xd3, 0x67, 0x06, 0x2b, 0x2c, 0xcc, 0x5e, 0x89, 0x9c, 0xb7,
+	0x2a, 0x63, 0x42, 0xd1, 0x24, 0x35, 0x88, 0x33, 0x48, 0x5c, 0xfb, 0xd5, 0x39, 0xf3, 0xd1, 0xda,
+	0xa3, 0xda, 0x15, 0xc7, 0x08, 0x99, 0x4c, 0x44, 0xdc, 0xda, 0xf9, 0x38, 0xb5, 0x24, 0x60, 0xe8,
+	0xe3, 0x59, 0x7e, 0x5c, 0x12, 0x73, 0xf5, 0xac, 0x27, 0xd1, 0xf7, 0x2e, 0x3c, 0x18, 0x25, 0xc1,
+	0x32, 0xf3, 0x68, 0xfc, 0x10, 0x4a, 0x2e, 0x19, 0xfa, 0xa1, 0x17, 0x55, 0xcb, 0x0b, 0xcc, 0x93,
+	0x1b, 0x9c, 0x16, 0xc7, 0x4c, 0xe8, 0x00, 0x96, 0x07, 0xbe, 0x1d, 0xbe, 0xf6, 0x7f, 0x6a, 0x9f,
+	0x10, 0x52, 0xad, 0x30, 0x19, 0x1f, 0xce, 0x95, 0x61, 0xf8, 0xed, 0xd7, 0xfe, 0x4f, 0x0f, 0x08,
+	0xc1, 0x95, 0x41, 0xfc, 0x73, 0xc6, 0x77, 0x11, 0x70, 0xcd, 0xef, 0x22, 0xfa, 0xe3, 0x88, 0x4e,
+	0x1a, 0x33, 0x71, 0xc5, 0x14, 0xe9, 0x46, 0x8c, 0xf3, 0xb2, 0x37, 0xd4, 0x14, 0xf6, 0xa9, 0x69,
+	0x3e, 0x65, 0x37, 0xd4, 0x2a, 0x6c, 0xa5, 0x10, 0x2d, 0x15, 0x5b, 0x86, 0x86, 0xe5, 0x5c, 0x6d,
+	0x85, 0xf6, 0x2a, 0x62, 0xc2, 0xe4, 0x2a, 0x5f, 0x41, 0x91, 0xe9, 0x84, 0xde, 0x83, 0x15, 0x16,
+	0x7e, 0x76, 0xdf, 0xeb, 0x06, 0x7e, 0x28, 0xbe, 0x9a, 0x5a, 0x66, 0xb0, 0x23, 0x06, 0x9a, 0x1c,
+	0xe6, 0xee, 0xb9, 0xdd, 0xf5, 0xdd, 0xb8, 0xf4, 0xae, 0xc4, 0xc0, 0xba, 0xef, 0x12, 0xf4, 0x31,
+	0x20, 0xca, 0x43, 0xfb, 0x09, 0xe1, 0xd1, 0xc9, 0xc7, 0x53, 0xb2, 0xc0, 0x88, 0x6c, 0xe2, 0x9c,
+	0x2a, 0xbf, 0x27, 0x41, 0x65, 0x6c, 0x5e, 0xf4, 0x04, 0xf2, 0xd4, 0x27, 0xd2, 0xc2, 0x86, 0xa4,
+	0xe4, 0x48, 0x85, 0xf2, 0x09, 0x21, 0xc9, 0xc9, 0xc1, 0x87, 0x97, 0xb3, 0xb2, 0x54, 0x56, 0x3a,
+	0x21, 0xec, 0x87, 0xf2, 0x8f, 0x12, 0x94, 0x44, 0xa4, 0xa0, 0xdf, 0x98, 0x04, 0xd8, 0xe2, 0x8a,
+	0x8c, 0xc3, 0xeb, 0x37, 0xe1, 0x4e, 0xdf, 0x1b, 0xd8, 0x8e, 0x7b, 0xe6, 0x0c, 0xba, 0xc4, 0xee,
+	0xd2, 0xbf, 0xbd, 0x5e, 0xf6, 0x63, 0xb3, 0x5b, 0x7d, 0x6f, 0xa0, 0x72, 0x92, 0x7a, 0x82, 0x82,
+	0x26, 0x67, 0x1d, 0x56, 0x84, 0xac, 0xeb, 0xec, 0x68, 0x59, 0xf0, 0xb2, 0x5d, 0xfd, 0x53, 0x0e,
+	0x0a, 0xed, 0x9e, 0xbf, 0xc0, 0xe7, 0x49, 0xe9, 0x51, 0x5d, 0x6e, 0xee, 0xa8, 0x2e, 0x7f, 0xc9,
+	0xa8, 0xae, 0xb0, 0xd8, 0xe7, 0x74, 0xc5, 0xd9, 0x9f, 0xd3, 0x1d, 0x40, 0x25, 0xfe, 0x20, 0x2e,
+	0x14, 0x2d, 0xc0, 0xe2, 0xdf, 0xd2, 0x4d, 0x58, 0x69, 0x41, 0x60, 0x7d, 0x44, 0xdc, 0xcf, 0xf6,
+	0x69, 0xbc, 0x96, 0x16, 0x28, 0x08, 0xf5, 0x04, 0xd7, 0x91, 0xef, 0x12, 0x2c, 0x77, 0x33, 0x10,
+	0xe5, 0x3f, 0x24, 0x58, 0xcf, 0x0c, 0x72, 0x2f, 0x7c, 0xa5, 0x49, 0x4d, 0x7b, 0xea, 0x9d, 0x91,
+	0x81, 0x3d, 0x70, 0xfa, 0xf1, 0x89, 0xa9, 0x30, 0x88, 0xe1, 0xf4, 0x09, 0x75, 0xcd, 0x89, 0xd3,
+	0xf7, 0x7a, 0xe7, 0x1c, 0xcf, 0xcf, 0x09, 0x70, 0x10, 0x23, 0x68, 0x40, 0xc9, 0x71, 0xdd, 0x80,
+	0x84, 0xf1, 0xa7, 0x85, 0xf3, 0xa7, 0x8b, 0x2d, 0x3f, 0x8c, 0x9c, 0x9e, 0xca, 0x39, 0x70, 0xcc,
+	0x8a, 0xee, 0x40, 0x25, 0x22, 0x3d, 0x32, 0x7c, 0xed, 0x0f, 0x48, 0xfc, 0xb9, 0xe4, 0x18, 0x40,
+	0x7b, 0x69, 0xd2, 0x77, 0xbc, 0x9e, 0xf8, 0x2a, 0x85, 0x3f, 0x28, 0x3f, 0x97, 0x60, 0x35, 0x25,
+	0x0e, 0x55, 0xa1, 0xc4, 0xaa, 0x78, 0x10, 0x77, 0xe2, 0xf1, 0x23, 0xda, 0x81, 0x72, 0xcf, 0xef,
+	0x3a, 0xe3, 0xd9, 0x60, 0x05, 0x8f, 0x9f, 0xd1, 0x36, 0x2c, 0x05, 0xe4, 0x74, 0xf2, 0xba, 0x43,
+	0x3c, 0xd1, 0xad, 0x0f, 0x99, 0x78, 0x9e, 0x4c, 0xc4, 0x20, 0x9a, 0x83, 0x58, 0x2a, 0xb9, 0x0f,
+	0x6b, 0x61, 0x14, 0x10, 0x12, 0xd9, 0xb1, 0x05, 0xb8, 0xe6, 0xab, 0x1c, 0x2a, 0xb4, 0xda, 0xfb,
+	0x85, 0x04, 0xab, 0xa9, 0xa1, 0x2a, 0x7a, 0x17, 0x76, 0xe2, 0xe1, 0x7f, 0xdb, 0x52, 0xad, 0x4e,
+	0x3b, 0x93, 0x35, 0x57, 0xa1, 0x52, 0x37, 0x8d, 0x03, 0x1d, 0x1f, 0x69, 0x0d, 0x59, 0x62, 0xad,
+	0xa0, 0x66, 0x34, 0x28, 0xf9, 0x91, 0x86, 0xeb, 0x87, 0xaa, 0x41, 0xef, 0xc9, 0x0c, 0x2f, 0x3e,
+	0xb1, 0x45, 0x2b, 0x50, 0xe6, 0xaf, 0x10, 0xd8, 0xdc, 0x6e, 0x19, 0x4a, 0x86, 0xc9, 0x3e, 0xc3,
+	0x95, 0x0b, 0xe8, 0x1d, 0xd8, 0x10, 0x0f, 0x76, 0x4b, 0x33, 0xd4, 0xa6, 0xfe, 0x23, 0xf6, 0x56,
+	0x04, 0x60, 0xe9, 0x40, 0xd5, 0x9b, 0xec, 0x05, 0x48, 0x15, 0xb6, 0xe2, 0xa9, 0x1f, 0xcd, 0xc5,
+	0xf1, 0x22, 0x72, 0x69, 0xef, 0x1c, 0xd6, 0xd2, 0x83, 0x4c, 0xb4, 0x0b, 0x77, 0xea, 0x58, 0x6b,
+	0xe8, 0x56, 0x62, 0xa6, 0x98, 0xd6, 0xbe, 0x0c, 0x85, 0x63, 0xbd, 0xad, 0xca, 0x12, 0x5a, 0x03,
+	0x38, 0x52, 0xdb, 0x96, 0x86, 0x29, 0xa9, 0x9c, 0xa3, 0x0d, 0xab, 0x7a, 0xa4, 0x61, 0xbd, 0xae,
+	0x1a, 0xb6, 0xf6, 0xa2, 0x85, 0xb5, 0x76, 0x5b, 0xce, 0x53, 0xdd, 0x1b, 0x7a, 0xbb, 0x6e, 0x1e,
+	0x6b, 0x58, 0x2e, 0xd0, 0x5b, 0xcd, 0xb3, 0x7a, 0x4d, 0x2e, 0xee, 0xfd, 0x0c, 0xe4, 0x6c, 0xac,
+	0x53, 0x4b, 0x24, 0x37, 0x6e, 0x1f, 0x99, 0x8d, 0xec, 0xea, 0x33, 0x49, 0xda, 0x2f, 0x8d, 0xfa,
+	0x21, 0x36, 0x0d, 0xb3, 0xd3, 0x96, 0x25, 0xa4, 0xc0, 0xbb, 0xd3, 0x24, 0x6a, 0x92, 0x26, 0xb7,
+	0xf7, 0x27, 0x12, 0x6c, 0x4c, 0xf5, 0x96, 0xe8, 0x7d, 0xb8, 0x97, 0x79, 0x53, 0x34, 0x63, 0xff,
+	0x77, 0xe1, 0x56, 0x86, 0xa8, 0xad, 0x1b, 0x4f, 0x9b, 0x9a, 0xdd, 0x69, 0xd3, 0xca, 0x37, 0xfd,
+	0xb6, 0xe9, 0xa8, 0xd3, 0xb4, 0x74, 0x86, 0xcd, 0x51, 0xf3, 0x66, 0xb0, 0x1d, 0xa3, 0xa9, 0x1f,
+	0xe9, 0x96, 0xd6, 0x60, 0x14, 0xf9, 0xbd, 0x3f, 0x93, 0x40, 0xce, 0x76, 0x85, 0x2c, 0x44, 0xb0,
+	0x16, 0x73, 0xce, 0x0c, 0x2a, 0x56, 0x8a, 0xb5, 0x44, 0xcd, 0x3e, 0xd6, 0x1b, 0x2c, 0xbc, 0x6e,
+	0xc3, 0xcd, 0x04, 0xc2, 0x30, 0x13, 0xc8, 0x5c, 0x86, 0x0b, 0x6b, 0x07, 0x1d, 0xa3, 0xc1, 0x62,
+	0x2c, 0x8d, 0xe0, 0x21, 0xa1, 0x35, 0xe4, 0xc2, 0xde, 0x63, 0xa8, 0x8c, 0xf3, 0x3d, 0xda, 0x06,
+	0x74, 0xa0, 0xbf, 0xd0, 0x1a, 0x36, 0x56, 0x2d, 0xcd, 0x6e, 0x68, 0x07, 0x6a, 0xa7, 0x69, 0xc9,
+	0x37, 0x68, 0x64, 0xb4, 0x34, 0x6c, 0xb7, 0x34, 0xdc, 0x36, 0x0d, 0x59, 0x7a, 0xb5, 0xc4, 0xfe,
+	0xcf, 0xe0, 0xf1, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x73, 0x40, 0x5b, 0x91, 0x73, 0x30, 0x00,
+	0x00,
 }