// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.32.0 // protoc v4.25.2 // source: google/cloud/bigquery/analyticshub/v1/analyticshub.proto package analyticshubpb import ( context "context" reflect "reflect" sync "sync" iampb "cloud.google.com/go/iam/apiv1/iampb" longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // State of the listing. type Listing_State int32 const ( // Default value. This value is unused. Listing_STATE_UNSPECIFIED Listing_State = 0 // Subscribable state. Users with dataexchange.listings.subscribe permission // can subscribe to this listing. Listing_ACTIVE Listing_State = 1 ) // Enum value maps for Listing_State. var ( Listing_State_name = map[int32]string{ 0: "STATE_UNSPECIFIED", 1: "ACTIVE", } Listing_State_value = map[string]int32{ "STATE_UNSPECIFIED": 0, "ACTIVE": 1, } ) func (x Listing_State) Enum() *Listing_State { p := new(Listing_State) *p = x return p } func (x Listing_State) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Listing_State) Descriptor() protoreflect.EnumDescriptor { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes[0].Descriptor() } func (Listing_State) Type() protoreflect.EnumType { return &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes[0] } func (x Listing_State) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Listing_State.Descriptor instead. func (Listing_State) EnumDescriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6, 0} } // Listing categories. type Listing_Category int32 const ( Listing_CATEGORY_UNSPECIFIED Listing_Category = 0 Listing_CATEGORY_OTHERS Listing_Category = 1 Listing_CATEGORY_ADVERTISING_AND_MARKETING Listing_Category = 2 Listing_CATEGORY_COMMERCE Listing_Category = 3 Listing_CATEGORY_CLIMATE_AND_ENVIRONMENT Listing_Category = 4 Listing_CATEGORY_DEMOGRAPHICS Listing_Category = 5 Listing_CATEGORY_ECONOMICS Listing_Category = 6 Listing_CATEGORY_EDUCATION Listing_Category = 7 Listing_CATEGORY_ENERGY Listing_Category = 8 Listing_CATEGORY_FINANCIAL Listing_Category = 9 Listing_CATEGORY_GAMING Listing_Category = 10 Listing_CATEGORY_GEOSPATIAL Listing_Category = 11 Listing_CATEGORY_HEALTHCARE_AND_LIFE_SCIENCE Listing_Category = 12 Listing_CATEGORY_MEDIA Listing_Category = 13 Listing_CATEGORY_PUBLIC_SECTOR Listing_Category = 14 Listing_CATEGORY_RETAIL Listing_Category = 15 Listing_CATEGORY_SPORTS Listing_Category = 16 Listing_CATEGORY_SCIENCE_AND_RESEARCH Listing_Category = 17 Listing_CATEGORY_TRANSPORTATION_AND_LOGISTICS Listing_Category = 18 Listing_CATEGORY_TRAVEL_AND_TOURISM Listing_Category = 19 ) // Enum value maps for Listing_Category. var ( Listing_Category_name = map[int32]string{ 0: "CATEGORY_UNSPECIFIED", 1: "CATEGORY_OTHERS", 2: "CATEGORY_ADVERTISING_AND_MARKETING", 3: "CATEGORY_COMMERCE", 4: "CATEGORY_CLIMATE_AND_ENVIRONMENT", 5: "CATEGORY_DEMOGRAPHICS", 6: "CATEGORY_ECONOMICS", 7: "CATEGORY_EDUCATION", 8: "CATEGORY_ENERGY", 9: "CATEGORY_FINANCIAL", 10: "CATEGORY_GAMING", 11: "CATEGORY_GEOSPATIAL", 12: "CATEGORY_HEALTHCARE_AND_LIFE_SCIENCE", 13: "CATEGORY_MEDIA", 14: "CATEGORY_PUBLIC_SECTOR", 15: "CATEGORY_RETAIL", 16: "CATEGORY_SPORTS", 17: "CATEGORY_SCIENCE_AND_RESEARCH", 18: "CATEGORY_TRANSPORTATION_AND_LOGISTICS", 19: "CATEGORY_TRAVEL_AND_TOURISM", } Listing_Category_value = map[string]int32{ "CATEGORY_UNSPECIFIED": 0, "CATEGORY_OTHERS": 1, "CATEGORY_ADVERTISING_AND_MARKETING": 2, "CATEGORY_COMMERCE": 3, "CATEGORY_CLIMATE_AND_ENVIRONMENT": 4, "CATEGORY_DEMOGRAPHICS": 5, "CATEGORY_ECONOMICS": 6, "CATEGORY_EDUCATION": 7, "CATEGORY_ENERGY": 8, "CATEGORY_FINANCIAL": 9, "CATEGORY_GAMING": 10, "CATEGORY_GEOSPATIAL": 11, "CATEGORY_HEALTHCARE_AND_LIFE_SCIENCE": 12, "CATEGORY_MEDIA": 13, "CATEGORY_PUBLIC_SECTOR": 14, "CATEGORY_RETAIL": 15, "CATEGORY_SPORTS": 16, "CATEGORY_SCIENCE_AND_RESEARCH": 17, "CATEGORY_TRANSPORTATION_AND_LOGISTICS": 18, "CATEGORY_TRAVEL_AND_TOURISM": 19, } ) func (x Listing_Category) Enum() *Listing_Category { p := new(Listing_Category) *p = x return p } func (x Listing_Category) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Listing_Category) Descriptor() protoreflect.EnumDescriptor { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes[1].Descriptor() } func (Listing_Category) Type() protoreflect.EnumType { return &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes[1] } func (x Listing_Category) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Listing_Category.Descriptor instead. func (Listing_Category) EnumDescriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6, 1} } // State of the subscription. type Subscription_State int32 const ( // Default value. This value is unused. Subscription_STATE_UNSPECIFIED Subscription_State = 0 // This subscription is active and the data is accessible. Subscription_STATE_ACTIVE Subscription_State = 1 // The data referenced by this subscription is out of date and should be // refreshed. This can happen when a data provider adds or removes datasets. Subscription_STATE_STALE Subscription_State = 2 // This subscription has been cancelled or revoked and the data is no longer // accessible. Subscription_STATE_INACTIVE Subscription_State = 3 ) // Enum value maps for Subscription_State. var ( Subscription_State_name = map[int32]string{ 0: "STATE_UNSPECIFIED", 1: "STATE_ACTIVE", 2: "STATE_STALE", 3: "STATE_INACTIVE", } Subscription_State_value = map[string]int32{ "STATE_UNSPECIFIED": 0, "STATE_ACTIVE": 1, "STATE_STALE": 2, "STATE_INACTIVE": 3, } ) func (x Subscription_State) Enum() *Subscription_State { p := new(Subscription_State) *p = x return p } func (x Subscription_State) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Subscription_State) Descriptor() protoreflect.EnumDescriptor { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes[2].Descriptor() } func (Subscription_State) Type() protoreflect.EnumType { return &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes[2] } func (x Subscription_State) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Subscription_State.Descriptor instead. func (Subscription_State) EnumDescriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{7, 0} } // A data exchange is a container that lets you share data. Along with the // descriptive information about the data exchange, it contains listings that // reference shared datasets. type DataExchange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Output only. The resource name of the data exchange. // e.g. `projects/myproject/locations/US/dataExchanges/123`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. Human-readable display name of the data exchange. The display // name must contain only Unicode letters, numbers (0-9), underscores (_), // dashes (-), spaces ( ), ampersands (&) and must not start or end with // spaces. Default value is an empty string. Max length: 63 bytes. DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // Optional. Description of the data exchange. The description must not // contain Unicode non-characters as well as C0 and C1 control codes except // tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). // Default value is an empty string. // Max length: 2000 bytes. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // Optional. Email or URL of the primary point of contact of the data // exchange. Max Length: 1000 bytes. PrimaryContact string `protobuf:"bytes,4,opt,name=primary_contact,json=primaryContact,proto3" json:"primary_contact,omitempty"` // Optional. Documentation describing the data exchange. Documentation string `protobuf:"bytes,5,opt,name=documentation,proto3" json:"documentation,omitempty"` // Output only. Number of listings contained in the data exchange. ListingCount int32 `protobuf:"varint,6,opt,name=listing_count,json=listingCount,proto3" json:"listing_count,omitempty"` // Optional. Base64 encoded image representing the data exchange. Max // Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API // only performs validation on size of the encoded data. Note: For byte // fields, the content of the fields are base64-encoded (which increases the // size of the data by 33-36%) when using JSON on the wire. Icon []byte `protobuf:"bytes,7,opt,name=icon,proto3" json:"icon,omitempty"` // Optional. Configurable data sharing environment option for a data exchange. SharingEnvironmentConfig *SharingEnvironmentConfig `protobuf:"bytes,8,opt,name=sharing_environment_config,json=sharingEnvironmentConfig,proto3" json:"sharing_environment_config,omitempty"` } func (x *DataExchange) Reset() { *x = DataExchange{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DataExchange) String() string { return protoimpl.X.MessageStringOf(x) } func (*DataExchange) ProtoMessage() {} func (x *DataExchange) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DataExchange.ProtoReflect.Descriptor instead. func (*DataExchange) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{0} } func (x *DataExchange) GetName() string { if x != nil { return x.Name } return "" } func (x *DataExchange) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *DataExchange) GetDescription() string { if x != nil { return x.Description } return "" } func (x *DataExchange) GetPrimaryContact() string { if x != nil { return x.PrimaryContact } return "" } func (x *DataExchange) GetDocumentation() string { if x != nil { return x.Documentation } return "" } func (x *DataExchange) GetListingCount() int32 { if x != nil { return x.ListingCount } return 0 } func (x *DataExchange) GetIcon() []byte { if x != nil { return x.Icon } return nil } func (x *DataExchange) GetSharingEnvironmentConfig() *SharingEnvironmentConfig { if x != nil { return x.SharingEnvironmentConfig } return nil } // Sharing environment is a behavior model for sharing data within a // data exchange. This option is configurable for a data exchange. type SharingEnvironmentConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Environment: // // *SharingEnvironmentConfig_DefaultExchangeConfig_ // *SharingEnvironmentConfig_DcrExchangeConfig_ Environment isSharingEnvironmentConfig_Environment `protobuf_oneof:"environment"` } func (x *SharingEnvironmentConfig) Reset() { *x = SharingEnvironmentConfig{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SharingEnvironmentConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*SharingEnvironmentConfig) ProtoMessage() {} func (x *SharingEnvironmentConfig) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SharingEnvironmentConfig.ProtoReflect.Descriptor instead. func (*SharingEnvironmentConfig) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{1} } func (m *SharingEnvironmentConfig) GetEnvironment() isSharingEnvironmentConfig_Environment { if m != nil { return m.Environment } return nil } func (x *SharingEnvironmentConfig) GetDefaultExchangeConfig() *SharingEnvironmentConfig_DefaultExchangeConfig { if x, ok := x.GetEnvironment().(*SharingEnvironmentConfig_DefaultExchangeConfig_); ok { return x.DefaultExchangeConfig } return nil } func (x *SharingEnvironmentConfig) GetDcrExchangeConfig() *SharingEnvironmentConfig_DcrExchangeConfig { if x, ok := x.GetEnvironment().(*SharingEnvironmentConfig_DcrExchangeConfig_); ok { return x.DcrExchangeConfig } return nil } type isSharingEnvironmentConfig_Environment interface { isSharingEnvironmentConfig_Environment() } type SharingEnvironmentConfig_DefaultExchangeConfig_ struct { // Default Analytics Hub data exchange, used for secured data sharing. DefaultExchangeConfig *SharingEnvironmentConfig_DefaultExchangeConfig `protobuf:"bytes,1,opt,name=default_exchange_config,json=defaultExchangeConfig,proto3,oneof"` } type SharingEnvironmentConfig_DcrExchangeConfig_ struct { // Data Clean Room (DCR), used for privacy-safe and secured data sharing. DcrExchangeConfig *SharingEnvironmentConfig_DcrExchangeConfig `protobuf:"bytes,2,opt,name=dcr_exchange_config,json=dcrExchangeConfig,proto3,oneof"` } func (*SharingEnvironmentConfig_DefaultExchangeConfig_) isSharingEnvironmentConfig_Environment() {} func (*SharingEnvironmentConfig_DcrExchangeConfig_) isSharingEnvironmentConfig_Environment() {} // Contains details of the data provider. type DataProvider struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Optional. Name of the data provider. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. Email or URL of the data provider. // Max Length: 1000 bytes. PrimaryContact string `protobuf:"bytes,2,opt,name=primary_contact,json=primaryContact,proto3" json:"primary_contact,omitempty"` } func (x *DataProvider) Reset() { *x = DataProvider{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DataProvider) String() string { return protoimpl.X.MessageStringOf(x) } func (*DataProvider) ProtoMessage() {} func (x *DataProvider) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DataProvider.ProtoReflect.Descriptor instead. func (*DataProvider) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{2} } func (x *DataProvider) GetName() string { if x != nil { return x.Name } return "" } func (x *DataProvider) GetPrimaryContact() string { if x != nil { return x.PrimaryContact } return "" } // Contains details of the listing publisher. type Publisher struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Optional. Name of the listing publisher. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. Email or URL of the listing publisher. // Max Length: 1000 bytes. PrimaryContact string `protobuf:"bytes,2,opt,name=primary_contact,json=primaryContact,proto3" json:"primary_contact,omitempty"` } func (x *Publisher) Reset() { *x = Publisher{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Publisher) String() string { return protoimpl.X.MessageStringOf(x) } func (*Publisher) ProtoMessage() {} func (x *Publisher) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Publisher.ProtoReflect.Descriptor instead. func (*Publisher) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{3} } func (x *Publisher) GetName() string { if x != nil { return x.Name } return "" } func (x *Publisher) GetPrimaryContact() string { if x != nil { return x.PrimaryContact } return "" } // Contains the reference that identifies a destination bigquery dataset. type DestinationDatasetReference struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. A unique ID for this dataset, without the project name. The ID // must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). // The maximum length is 1,024 characters. DatasetId string `protobuf:"bytes,1,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"` // Required. The ID of the project containing this dataset. ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` } func (x *DestinationDatasetReference) Reset() { *x = DestinationDatasetReference{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DestinationDatasetReference) String() string { return protoimpl.X.MessageStringOf(x) } func (*DestinationDatasetReference) ProtoMessage() {} func (x *DestinationDatasetReference) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DestinationDatasetReference.ProtoReflect.Descriptor instead. func (*DestinationDatasetReference) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{4} } func (x *DestinationDatasetReference) GetDatasetId() string { if x != nil { return x.DatasetId } return "" } func (x *DestinationDatasetReference) GetProjectId() string { if x != nil { return x.ProjectId } return "" } // Defines the destination bigquery dataset. type DestinationDataset struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. A reference that identifies the destination dataset. DatasetReference *DestinationDatasetReference `protobuf:"bytes,1,opt,name=dataset_reference,json=datasetReference,proto3" json:"dataset_reference,omitempty"` // Optional. A descriptive name for the dataset. FriendlyName *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=friendly_name,json=friendlyName,proto3" json:"friendly_name,omitempty"` // Optional. A user-friendly description of the dataset. Description *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // Optional. The labels associated with this dataset. You can use these // to organize and group your datasets. // You can set this property when inserting or updating a dataset. // See https://cloud.google.com/resource-manager/docs/creating-managing-labels // for more information. Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Required. The geographic location where the dataset should reside. See // https://cloud.google.com/bigquery/docs/locations for supported // locations. Location string `protobuf:"bytes,5,opt,name=location,proto3" json:"location,omitempty"` } func (x *DestinationDataset) Reset() { *x = DestinationDataset{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DestinationDataset) String() string { return protoimpl.X.MessageStringOf(x) } func (*DestinationDataset) ProtoMessage() {} func (x *DestinationDataset) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DestinationDataset.ProtoReflect.Descriptor instead. func (*DestinationDataset) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{5} } func (x *DestinationDataset) GetDatasetReference() *DestinationDatasetReference { if x != nil { return x.DatasetReference } return nil } func (x *DestinationDataset) GetFriendlyName() *wrapperspb.StringValue { if x != nil { return x.FriendlyName } return nil } func (x *DestinationDataset) GetDescription() *wrapperspb.StringValue { if x != nil { return x.Description } return nil } func (x *DestinationDataset) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } func (x *DestinationDataset) GetLocation() string { if x != nil { return x.Location } return "" } // A listing is what gets published into a data exchange that a subscriber can // subscribe to. It contains a reference to the data source along with // descriptive information that will help subscribers find and subscribe the // data. type Listing struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Listing source. // // Types that are assignable to Source: // // *Listing_BigqueryDataset Source isListing_Source `protobuf_oneof:"source"` // Output only. The resource name of the listing. // e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. Human-readable display name of the listing. The display name must // contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), // spaces ( ), ampersands (&) and can't start or end with spaces. Default // value is an empty string. Max length: 63 bytes. DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // Optional. Short description of the listing. The description must not // contain Unicode non-characters and C0 and C1 control codes except tabs // (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default // value is an empty string. Max length: 2000 bytes. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // Optional. Email or URL of the primary point of contact of the listing. // Max Length: 1000 bytes. PrimaryContact string `protobuf:"bytes,4,opt,name=primary_contact,json=primaryContact,proto3" json:"primary_contact,omitempty"` // Optional. Documentation describing the listing. Documentation string `protobuf:"bytes,5,opt,name=documentation,proto3" json:"documentation,omitempty"` // Output only. Current state of the listing. State Listing_State `protobuf:"varint,7,opt,name=state,proto3,enum=google.cloud.bigquery.analyticshub.v1.Listing_State" json:"state,omitempty"` // Optional. Base64 encoded image representing the listing. Max Size: 3.0MiB // Expected image dimensions are 512x512 pixels, however the API only // performs validation on size of the encoded data. // Note: For byte fields, the contents of the field are base64-encoded (which // increases the size of the data by 33-36%) when using JSON on the wire. Icon []byte `protobuf:"bytes,8,opt,name=icon,proto3" json:"icon,omitempty"` // Optional. Details of the data provider who owns the source data. DataProvider *DataProvider `protobuf:"bytes,9,opt,name=data_provider,json=dataProvider,proto3" json:"data_provider,omitempty"` // Optional. Categories of the listing. Up to two categories are allowed. Categories []Listing_Category `protobuf:"varint,10,rep,packed,name=categories,proto3,enum=google.cloud.bigquery.analyticshub.v1.Listing_Category" json:"categories,omitempty"` // Optional. Details of the publisher who owns the listing and who can share // the source data. Publisher *Publisher `protobuf:"bytes,11,opt,name=publisher,proto3" json:"publisher,omitempty"` // Optional. Email or URL of the request access of the listing. // Subscribers can use this reference to request access. // Max Length: 1000 bytes. RequestAccess string `protobuf:"bytes,12,opt,name=request_access,json=requestAccess,proto3" json:"request_access,omitempty"` // Optional. If set, restricted export configuration will be propagated and // enforced on the linked dataset. RestrictedExportConfig *Listing_RestrictedExportConfig `protobuf:"bytes,13,opt,name=restricted_export_config,json=restrictedExportConfig,proto3" json:"restricted_export_config,omitempty"` } func (x *Listing) Reset() { *x = Listing{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Listing) String() string { return protoimpl.X.MessageStringOf(x) } func (*Listing) ProtoMessage() {} func (x *Listing) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Listing.ProtoReflect.Descriptor instead. func (*Listing) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6} } func (m *Listing) GetSource() isListing_Source { if m != nil { return m.Source } return nil } func (x *Listing) GetBigqueryDataset() *Listing_BigQueryDatasetSource { if x, ok := x.GetSource().(*Listing_BigqueryDataset); ok { return x.BigqueryDataset } return nil } func (x *Listing) GetName() string { if x != nil { return x.Name } return "" } func (x *Listing) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *Listing) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Listing) GetPrimaryContact() string { if x != nil { return x.PrimaryContact } return "" } func (x *Listing) GetDocumentation() string { if x != nil { return x.Documentation } return "" } func (x *Listing) GetState() Listing_State { if x != nil { return x.State } return Listing_STATE_UNSPECIFIED } func (x *Listing) GetIcon() []byte { if x != nil { return x.Icon } return nil } func (x *Listing) GetDataProvider() *DataProvider { if x != nil { return x.DataProvider } return nil } func (x *Listing) GetCategories() []Listing_Category { if x != nil { return x.Categories } return nil } func (x *Listing) GetPublisher() *Publisher { if x != nil { return x.Publisher } return nil } func (x *Listing) GetRequestAccess() string { if x != nil { return x.RequestAccess } return "" } func (x *Listing) GetRestrictedExportConfig() *Listing_RestrictedExportConfig { if x != nil { return x.RestrictedExportConfig } return nil } type isListing_Source interface { isListing_Source() } type Listing_BigqueryDataset struct { // Required. Shared dataset i.e. BigQuery dataset source. BigqueryDataset *Listing_BigQueryDatasetSource `protobuf:"bytes,6,opt,name=bigquery_dataset,json=bigqueryDataset,proto3,oneof"` } func (*Listing_BigqueryDataset) isListing_Source() {} // A subscription represents a subscribers' access to a particular set of // published data. It contains references to associated listings, // data exchanges, and linked datasets. type Subscription struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to ResourceName: // // *Subscription_Listing // *Subscription_DataExchange ResourceName isSubscription_ResourceName `protobuf_oneof:"resource_name"` // Output only. The resource name of the subscription. // e.g. `projects/myproject/locations/US/subscriptions/123`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Output only. Timestamp when the subscription was created. CreationTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` // Output only. Timestamp when the subscription was last modified. LastModifyTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_modify_time,json=lastModifyTime,proto3" json:"last_modify_time,omitempty"` // Output only. Organization of the project this subscription belongs to. OrganizationId string `protobuf:"bytes,4,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` // Output only. Display name of the project of this subscription. OrganizationDisplayName string `protobuf:"bytes,10,opt,name=organization_display_name,json=organizationDisplayName,proto3" json:"organization_display_name,omitempty"` // Output only. Current state of the subscription. State Subscription_State `protobuf:"varint,7,opt,name=state,proto3,enum=google.cloud.bigquery.analyticshub.v1.Subscription_State" json:"state,omitempty"` // Output only. Map of listing resource names to associated linked resource, // e.g. projects/123/locations/US/dataExchanges/456/listings/789 // -> // projects/123/datasets/my_dataset // // For listing-level subscriptions, this is a map of size 1. // Only contains values if state == STATE_ACTIVE. LinkedDatasetMap map[string]*Subscription_LinkedResource `protobuf:"bytes,8,rep,name=linked_dataset_map,json=linkedDatasetMap,proto3" json:"linked_dataset_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Output only. Email of the subscriber. SubscriberContact string `protobuf:"bytes,9,opt,name=subscriber_contact,json=subscriberContact,proto3" json:"subscriber_contact,omitempty"` } func (x *Subscription) Reset() { *x = Subscription{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Subscription) String() string { return protoimpl.X.MessageStringOf(x) } func (*Subscription) ProtoMessage() {} func (x *Subscription) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Subscription.ProtoReflect.Descriptor instead. func (*Subscription) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{7} } func (m *Subscription) GetResourceName() isSubscription_ResourceName { if m != nil { return m.ResourceName } return nil } func (x *Subscription) GetListing() string { if x, ok := x.GetResourceName().(*Subscription_Listing); ok { return x.Listing } return "" } func (x *Subscription) GetDataExchange() string { if x, ok := x.GetResourceName().(*Subscription_DataExchange); ok { return x.DataExchange } return "" } func (x *Subscription) GetName() string { if x != nil { return x.Name } return "" } func (x *Subscription) GetCreationTime() *timestamppb.Timestamp { if x != nil { return x.CreationTime } return nil } func (x *Subscription) GetLastModifyTime() *timestamppb.Timestamp { if x != nil { return x.LastModifyTime } return nil } func (x *Subscription) GetOrganizationId() string { if x != nil { return x.OrganizationId } return "" } func (x *Subscription) GetOrganizationDisplayName() string { if x != nil { return x.OrganizationDisplayName } return "" } func (x *Subscription) GetState() Subscription_State { if x != nil { return x.State } return Subscription_STATE_UNSPECIFIED } func (x *Subscription) GetLinkedDatasetMap() map[string]*Subscription_LinkedResource { if x != nil { return x.LinkedDatasetMap } return nil } func (x *Subscription) GetSubscriberContact() string { if x != nil { return x.SubscriberContact } return "" } type isSubscription_ResourceName interface { isSubscription_ResourceName() } type Subscription_Listing struct { // Output only. Resource name of the source Listing. // e.g. projects/123/locations/US/dataExchanges/456/listings/789 Listing string `protobuf:"bytes,5,opt,name=listing,proto3,oneof"` } type Subscription_DataExchange struct { // Output only. Resource name of the source Data Exchange. // e.g. projects/123/locations/US/dataExchanges/456 DataExchange string `protobuf:"bytes,6,opt,name=data_exchange,json=dataExchange,proto3,oneof"` } func (*Subscription_Listing) isSubscription_ResourceName() {} func (*Subscription_DataExchange) isSubscription_ResourceName() {} // Message for requesting the list of data exchanges. type ListDataExchangesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The parent resource path of the data exchanges. // e.g. `projects/myproject/locations/US`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // The maximum number of results to return in a single response page. Leverage // the page tokens to iterate through the entire collection. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Page token, returned by a previous call, to request the next page of // results. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } func (x *ListDataExchangesRequest) Reset() { *x = ListDataExchangesRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListDataExchangesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListDataExchangesRequest) ProtoMessage() {} func (x *ListDataExchangesRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListDataExchangesRequest.ProtoReflect.Descriptor instead. func (*ListDataExchangesRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{8} } func (x *ListDataExchangesRequest) GetParent() string { if x != nil { return x.Parent } return "" } func (x *ListDataExchangesRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListDataExchangesRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } // Message for response to the list of data exchanges. type ListDataExchangesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The list of data exchanges. DataExchanges []*DataExchange `protobuf:"bytes,1,rep,name=data_exchanges,json=dataExchanges,proto3" json:"data_exchanges,omitempty"` // A token to request the next page of results. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (x *ListDataExchangesResponse) Reset() { *x = ListDataExchangesResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListDataExchangesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListDataExchangesResponse) ProtoMessage() {} func (x *ListDataExchangesResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListDataExchangesResponse.ProtoReflect.Descriptor instead. func (*ListDataExchangesResponse) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{9} } func (x *ListDataExchangesResponse) GetDataExchanges() []*DataExchange { if x != nil { return x.DataExchanges } return nil } func (x *ListDataExchangesResponse) GetNextPageToken() string { if x != nil { return x.NextPageToken } return "" } // Message for requesting the list of data exchanges from projects in an // organization and location. type ListOrgDataExchangesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The organization resource path of the projects containing // DataExchanges. e.g. `organizations/myorg/locations/US`. Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` // The maximum number of results to return in a single response page. Leverage // the page tokens to iterate through the entire collection. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Page token, returned by a previous call, to request the next page of // results. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } func (x *ListOrgDataExchangesRequest) Reset() { *x = ListOrgDataExchangesRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListOrgDataExchangesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListOrgDataExchangesRequest) ProtoMessage() {} func (x *ListOrgDataExchangesRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListOrgDataExchangesRequest.ProtoReflect.Descriptor instead. func (*ListOrgDataExchangesRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{10} } func (x *ListOrgDataExchangesRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } func (x *ListOrgDataExchangesRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListOrgDataExchangesRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } // Message for response to listing data exchanges in an organization and // location. type ListOrgDataExchangesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The list of data exchanges. DataExchanges []*DataExchange `protobuf:"bytes,1,rep,name=data_exchanges,json=dataExchanges,proto3" json:"data_exchanges,omitempty"` // A token to request the next page of results. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (x *ListOrgDataExchangesResponse) Reset() { *x = ListOrgDataExchangesResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListOrgDataExchangesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListOrgDataExchangesResponse) ProtoMessage() {} func (x *ListOrgDataExchangesResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListOrgDataExchangesResponse.ProtoReflect.Descriptor instead. func (*ListOrgDataExchangesResponse) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{11} } func (x *ListOrgDataExchangesResponse) GetDataExchanges() []*DataExchange { if x != nil { return x.DataExchanges } return nil } func (x *ListOrgDataExchangesResponse) GetNextPageToken() string { if x != nil { return x.NextPageToken } return "" } // Message for getting a data exchange. type GetDataExchangeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The resource name of the data exchange. // e.g. `projects/myproject/locations/US/dataExchanges/123`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *GetDataExchangeRequest) Reset() { *x = GetDataExchangeRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetDataExchangeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetDataExchangeRequest) ProtoMessage() {} func (x *GetDataExchangeRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetDataExchangeRequest.ProtoReflect.Descriptor instead. func (*GetDataExchangeRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{12} } func (x *GetDataExchangeRequest) GetName() string { if x != nil { return x.Name } return "" } // Message for creating a data exchange. type CreateDataExchangeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The parent resource path of the data exchange. // e.g. `projects/myproject/locations/US`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Required. The ID of the data exchange. // Must contain only Unicode letters, numbers (0-9), underscores (_). // Should not use characters that require URL-escaping, or characters // outside of ASCII, spaces. // Max length: 100 bytes. DataExchangeId string `protobuf:"bytes,2,opt,name=data_exchange_id,json=dataExchangeId,proto3" json:"data_exchange_id,omitempty"` // Required. The data exchange to create. DataExchange *DataExchange `protobuf:"bytes,3,opt,name=data_exchange,json=dataExchange,proto3" json:"data_exchange,omitempty"` } func (x *CreateDataExchangeRequest) Reset() { *x = CreateDataExchangeRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateDataExchangeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateDataExchangeRequest) ProtoMessage() {} func (x *CreateDataExchangeRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateDataExchangeRequest.ProtoReflect.Descriptor instead. func (*CreateDataExchangeRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{13} } func (x *CreateDataExchangeRequest) GetParent() string { if x != nil { return x.Parent } return "" } func (x *CreateDataExchangeRequest) GetDataExchangeId() string { if x != nil { return x.DataExchangeId } return "" } func (x *CreateDataExchangeRequest) GetDataExchange() *DataExchange { if x != nil { return x.DataExchange } return nil } // Message for updating a data exchange. type UpdateDataExchangeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Field mask specifies the fields to update in the data exchange // resource. The fields specified in the // `updateMask` are relative to the resource and are not a full request. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` // Required. The data exchange to update. DataExchange *DataExchange `protobuf:"bytes,2,opt,name=data_exchange,json=dataExchange,proto3" json:"data_exchange,omitempty"` } func (x *UpdateDataExchangeRequest) Reset() { *x = UpdateDataExchangeRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateDataExchangeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateDataExchangeRequest) ProtoMessage() {} func (x *UpdateDataExchangeRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateDataExchangeRequest.ProtoReflect.Descriptor instead. func (*UpdateDataExchangeRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{14} } func (x *UpdateDataExchangeRequest) GetUpdateMask() *fieldmaskpb.FieldMask { if x != nil { return x.UpdateMask } return nil } func (x *UpdateDataExchangeRequest) GetDataExchange() *DataExchange { if x != nil { return x.DataExchange } return nil } // Message for deleting a data exchange. type DeleteDataExchangeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The full name of the data exchange resource that you want to // delete. For example, `projects/myproject/locations/US/dataExchanges/123`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *DeleteDataExchangeRequest) Reset() { *x = DeleteDataExchangeRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteDataExchangeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteDataExchangeRequest) ProtoMessage() {} func (x *DeleteDataExchangeRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteDataExchangeRequest.ProtoReflect.Descriptor instead. func (*DeleteDataExchangeRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{15} } func (x *DeleteDataExchangeRequest) GetName() string { if x != nil { return x.Name } return "" } // Message for requesting the list of listings. type ListListingsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The parent resource path of the listing. // e.g. `projects/myproject/locations/US/dataExchanges/123`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // The maximum number of results to return in a single response page. Leverage // the page tokens to iterate through the entire collection. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Page token, returned by a previous call, to request the next page of // results. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } func (x *ListListingsRequest) Reset() { *x = ListListingsRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListListingsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListListingsRequest) ProtoMessage() {} func (x *ListListingsRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListListingsRequest.ProtoReflect.Descriptor instead. func (*ListListingsRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{16} } func (x *ListListingsRequest) GetParent() string { if x != nil { return x.Parent } return "" } func (x *ListListingsRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListListingsRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } // Message for response to the list of Listings. type ListListingsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The list of Listing. Listings []*Listing `protobuf:"bytes,1,rep,name=listings,proto3" json:"listings,omitempty"` // A token to request the next page of results. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (x *ListListingsResponse) Reset() { *x = ListListingsResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListListingsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListListingsResponse) ProtoMessage() {} func (x *ListListingsResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListListingsResponse.ProtoReflect.Descriptor instead. func (*ListListingsResponse) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{17} } func (x *ListListingsResponse) GetListings() []*Listing { if x != nil { return x.Listings } return nil } func (x *ListListingsResponse) GetNextPageToken() string { if x != nil { return x.NextPageToken } return "" } // Message for getting a listing. type GetListingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The resource name of the listing. // e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *GetListingRequest) Reset() { *x = GetListingRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetListingRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetListingRequest) ProtoMessage() {} func (x *GetListingRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetListingRequest.ProtoReflect.Descriptor instead. func (*GetListingRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{18} } func (x *GetListingRequest) GetName() string { if x != nil { return x.Name } return "" } // Message for creating a listing. type CreateListingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The parent resource path of the listing. // e.g. `projects/myproject/locations/US/dataExchanges/123`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Required. The ID of the listing to create. // Must contain only Unicode letters, numbers (0-9), underscores (_). // Should not use characters that require URL-escaping, or characters // outside of ASCII, spaces. // Max length: 100 bytes. ListingId string `protobuf:"bytes,2,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` // Required. The listing to create. Listing *Listing `protobuf:"bytes,3,opt,name=listing,proto3" json:"listing,omitempty"` } func (x *CreateListingRequest) Reset() { *x = CreateListingRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateListingRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateListingRequest) ProtoMessage() {} func (x *CreateListingRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateListingRequest.ProtoReflect.Descriptor instead. func (*CreateListingRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{19} } func (x *CreateListingRequest) GetParent() string { if x != nil { return x.Parent } return "" } func (x *CreateListingRequest) GetListingId() string { if x != nil { return x.ListingId } return "" } func (x *CreateListingRequest) GetListing() *Listing { if x != nil { return x.Listing } return nil } // Message for updating a Listing. type UpdateListingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Field mask specifies the fields to update in the listing // resource. The fields specified in the `updateMask` are relative to the // resource and are not a full request. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` // Required. The listing to update. Listing *Listing `protobuf:"bytes,2,opt,name=listing,proto3" json:"listing,omitempty"` } func (x *UpdateListingRequest) Reset() { *x = UpdateListingRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateListingRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateListingRequest) ProtoMessage() {} func (x *UpdateListingRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateListingRequest.ProtoReflect.Descriptor instead. func (*UpdateListingRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{20} } func (x *UpdateListingRequest) GetUpdateMask() *fieldmaskpb.FieldMask { if x != nil { return x.UpdateMask } return nil } func (x *UpdateListingRequest) GetListing() *Listing { if x != nil { return x.Listing } return nil } // Message for deleting a listing. type DeleteListingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Resource name of the listing to delete. // e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *DeleteListingRequest) Reset() { *x = DeleteListingRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteListingRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteListingRequest) ProtoMessage() {} func (x *DeleteListingRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteListingRequest.ProtoReflect.Descriptor instead. func (*DeleteListingRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{21} } func (x *DeleteListingRequest) GetName() string { if x != nil { return x.Name } return "" } // Message for subscribing to a listing. type SubscribeListingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Resulting destination of the listing that you subscribed to. // // Types that are assignable to Destination: // // *SubscribeListingRequest_DestinationDataset Destination isSubscribeListingRequest_Destination `protobuf_oneof:"destination"` // Required. Resource name of the listing that you want to subscribe to. // e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *SubscribeListingRequest) Reset() { *x = SubscribeListingRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubscribeListingRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubscribeListingRequest) ProtoMessage() {} func (x *SubscribeListingRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SubscribeListingRequest.ProtoReflect.Descriptor instead. func (*SubscribeListingRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{22} } func (m *SubscribeListingRequest) GetDestination() isSubscribeListingRequest_Destination { if m != nil { return m.Destination } return nil } func (x *SubscribeListingRequest) GetDestinationDataset() *DestinationDataset { if x, ok := x.GetDestination().(*SubscribeListingRequest_DestinationDataset); ok { return x.DestinationDataset } return nil } func (x *SubscribeListingRequest) GetName() string { if x != nil { return x.Name } return "" } type isSubscribeListingRequest_Destination interface { isSubscribeListingRequest_Destination() } type SubscribeListingRequest_DestinationDataset struct { // BigQuery destination dataset to create for the subscriber. DestinationDataset *DestinationDataset `protobuf:"bytes,3,opt,name=destination_dataset,json=destinationDataset,proto3,oneof"` } func (*SubscribeListingRequest_DestinationDataset) isSubscribeListingRequest_Destination() {} // Message for response when you subscribe to a listing. type SubscribeListingResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Subscription object created from this subscribe action. Subscription *Subscription `protobuf:"bytes,1,opt,name=subscription,proto3" json:"subscription,omitempty"` } func (x *SubscribeListingResponse) Reset() { *x = SubscribeListingResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubscribeListingResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubscribeListingResponse) ProtoMessage() {} func (x *SubscribeListingResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SubscribeListingResponse.ProtoReflect.Descriptor instead. func (*SubscribeListingResponse) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{23} } func (x *SubscribeListingResponse) GetSubscription() *Subscription { if x != nil { return x.Subscription } return nil } // Message for subscribing to a Data Exchange. type SubscribeDataExchangeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Resource name of the Data Exchange. // e.g. `projects/publisherproject/locations/US/dataExchanges/123` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. The parent resource path of the Subscription. // e.g. `projects/subscriberproject/locations/US` Destination string `protobuf:"bytes,2,opt,name=destination,proto3" json:"destination,omitempty"` // Required. Name of the subscription to create. // e.g. `subscription1` Subscription string `protobuf:"bytes,4,opt,name=subscription,proto3" json:"subscription,omitempty"` // Email of the subscriber. SubscriberContact string `protobuf:"bytes,3,opt,name=subscriber_contact,json=subscriberContact,proto3" json:"subscriber_contact,omitempty"` } func (x *SubscribeDataExchangeRequest) Reset() { *x = SubscribeDataExchangeRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubscribeDataExchangeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubscribeDataExchangeRequest) ProtoMessage() {} func (x *SubscribeDataExchangeRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SubscribeDataExchangeRequest.ProtoReflect.Descriptor instead. func (*SubscribeDataExchangeRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{24} } func (x *SubscribeDataExchangeRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *SubscribeDataExchangeRequest) GetDestination() string { if x != nil { return x.Destination } return "" } func (x *SubscribeDataExchangeRequest) GetSubscription() string { if x != nil { return x.Subscription } return "" } func (x *SubscribeDataExchangeRequest) GetSubscriberContact() string { if x != nil { return x.SubscriberContact } return "" } // Message for response when you subscribe to a Data Exchange. type SubscribeDataExchangeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Subscription object created from this subscribe action. Subscription *Subscription `protobuf:"bytes,1,opt,name=subscription,proto3" json:"subscription,omitempty"` } func (x *SubscribeDataExchangeResponse) Reset() { *x = SubscribeDataExchangeResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubscribeDataExchangeResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubscribeDataExchangeResponse) ProtoMessage() {} func (x *SubscribeDataExchangeResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SubscribeDataExchangeResponse.ProtoReflect.Descriptor instead. func (*SubscribeDataExchangeResponse) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{25} } func (x *SubscribeDataExchangeResponse) GetSubscription() *Subscription { if x != nil { return x.Subscription } return nil } // Message for refreshing a subscription. type RefreshSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Resource name of the Subscription to refresh. // e.g. `projects/subscriberproject/locations/US/subscriptions/123` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *RefreshSubscriptionRequest) Reset() { *x = RefreshSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RefreshSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RefreshSubscriptionRequest) ProtoMessage() {} func (x *RefreshSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RefreshSubscriptionRequest.ProtoReflect.Descriptor instead. func (*RefreshSubscriptionRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{26} } func (x *RefreshSubscriptionRequest) GetName() string { if x != nil { return x.Name } return "" } // Message for response when you refresh a subscription. type RefreshSubscriptionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The refreshed subscription resource. Subscription *Subscription `protobuf:"bytes,1,opt,name=subscription,proto3" json:"subscription,omitempty"` } func (x *RefreshSubscriptionResponse) Reset() { *x = RefreshSubscriptionResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RefreshSubscriptionResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RefreshSubscriptionResponse) ProtoMessage() {} func (x *RefreshSubscriptionResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RefreshSubscriptionResponse.ProtoReflect.Descriptor instead. func (*RefreshSubscriptionResponse) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{27} } func (x *RefreshSubscriptionResponse) GetSubscription() *Subscription { if x != nil { return x.Subscription } return nil } // Message for getting a subscription. type GetSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Resource name of the subscription. // e.g. projects/123/locations/US/subscriptions/456 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *GetSubscriptionRequest) Reset() { *x = GetSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSubscriptionRequest) ProtoMessage() {} func (x *GetSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSubscriptionRequest.ProtoReflect.Descriptor instead. func (*GetSubscriptionRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{28} } func (x *GetSubscriptionRequest) GetName() string { if x != nil { return x.Name } return "" } // Message for listing subscriptions. type ListSubscriptionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The parent resource path of the subscription. // e.g. projects/myproject/locations/US Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // The filter expression may be used to filter by Data Exchange or Listing. Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // The maximum number of results to return in a single response page. PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Page token, returned by a previous call. PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } func (x *ListSubscriptionsRequest) Reset() { *x = ListSubscriptionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListSubscriptionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSubscriptionsRequest) ProtoMessage() {} func (x *ListSubscriptionsRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListSubscriptionsRequest.ProtoReflect.Descriptor instead. func (*ListSubscriptionsRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{29} } func (x *ListSubscriptionsRequest) GetParent() string { if x != nil { return x.Parent } return "" } func (x *ListSubscriptionsRequest) GetFilter() string { if x != nil { return x.Filter } return "" } func (x *ListSubscriptionsRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListSubscriptionsRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } // Message for response to the listing of subscriptions. type ListSubscriptionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The list of subscriptions. Subscriptions []*Subscription `protobuf:"bytes,1,rep,name=subscriptions,proto3" json:"subscriptions,omitempty"` // Next page token. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (x *ListSubscriptionsResponse) Reset() { *x = ListSubscriptionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListSubscriptionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSubscriptionsResponse) ProtoMessage() {} func (x *ListSubscriptionsResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListSubscriptionsResponse.ProtoReflect.Descriptor instead. func (*ListSubscriptionsResponse) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{30} } func (x *ListSubscriptionsResponse) GetSubscriptions() []*Subscription { if x != nil { return x.Subscriptions } return nil } func (x *ListSubscriptionsResponse) GetNextPageToken() string { if x != nil { return x.NextPageToken } return "" } // Message for listing subscriptions of a shared resource. type ListSharedResourceSubscriptionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Resource name of the requested target. This resource may be // either a Listing or a DataExchange. e.g. // projects/123/locations/US/dataExchanges/456 OR e.g. // projects/123/locations/US/dataExchanges/456/listings/789 Resource string `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` // If selected, includes deleted subscriptions in the response // (up to 63 days after deletion). IncludeDeletedSubscriptions bool `protobuf:"varint,2,opt,name=include_deleted_subscriptions,json=includeDeletedSubscriptions,proto3" json:"include_deleted_subscriptions,omitempty"` // The maximum number of results to return in a single response page. PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Page token, returned by a previous call. PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } func (x *ListSharedResourceSubscriptionsRequest) Reset() { *x = ListSharedResourceSubscriptionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListSharedResourceSubscriptionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSharedResourceSubscriptionsRequest) ProtoMessage() {} func (x *ListSharedResourceSubscriptionsRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListSharedResourceSubscriptionsRequest.ProtoReflect.Descriptor instead. func (*ListSharedResourceSubscriptionsRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{31} } func (x *ListSharedResourceSubscriptionsRequest) GetResource() string { if x != nil { return x.Resource } return "" } func (x *ListSharedResourceSubscriptionsRequest) GetIncludeDeletedSubscriptions() bool { if x != nil { return x.IncludeDeletedSubscriptions } return false } func (x *ListSharedResourceSubscriptionsRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListSharedResourceSubscriptionsRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } // Message for response to the listing of shared resource subscriptions. type ListSharedResourceSubscriptionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The list of subscriptions. SharedResourceSubscriptions []*Subscription `protobuf:"bytes,1,rep,name=shared_resource_subscriptions,json=sharedResourceSubscriptions,proto3" json:"shared_resource_subscriptions,omitempty"` // Next page token. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (x *ListSharedResourceSubscriptionsResponse) Reset() { *x = ListSharedResourceSubscriptionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListSharedResourceSubscriptionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSharedResourceSubscriptionsResponse) ProtoMessage() {} func (x *ListSharedResourceSubscriptionsResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListSharedResourceSubscriptionsResponse.ProtoReflect.Descriptor instead. func (*ListSharedResourceSubscriptionsResponse) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{32} } func (x *ListSharedResourceSubscriptionsResponse) GetSharedResourceSubscriptions() []*Subscription { if x != nil { return x.SharedResourceSubscriptions } return nil } func (x *ListSharedResourceSubscriptionsResponse) GetNextPageToken() string { if x != nil { return x.NextPageToken } return "" } // Message for revoking a subscription. type RevokeSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Resource name of the subscription to revoke. // e.g. projects/123/locations/US/subscriptions/456 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *RevokeSubscriptionRequest) Reset() { *x = RevokeSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RevokeSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RevokeSubscriptionRequest) ProtoMessage() {} func (x *RevokeSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RevokeSubscriptionRequest.ProtoReflect.Descriptor instead. func (*RevokeSubscriptionRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{33} } func (x *RevokeSubscriptionRequest) GetName() string { if x != nil { return x.Name } return "" } // Message for response when you revoke a subscription. type RevokeSubscriptionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *RevokeSubscriptionResponse) Reset() { *x = RevokeSubscriptionResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RevokeSubscriptionResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RevokeSubscriptionResponse) ProtoMessage() {} func (x *RevokeSubscriptionResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RevokeSubscriptionResponse.ProtoReflect.Descriptor instead. func (*RevokeSubscriptionResponse) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{34} } // Message for deleting a subscription. type DeleteSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Resource name of the subscription to delete. // e.g. projects/123/locations/US/subscriptions/456 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *DeleteSubscriptionRequest) Reset() { *x = DeleteSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSubscriptionRequest) ProtoMessage() {} func (x *DeleteSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteSubscriptionRequest.ProtoReflect.Descriptor instead. func (*DeleteSubscriptionRequest) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{35} } func (x *DeleteSubscriptionRequest) GetName() string { if x != nil { return x.Name } return "" } // Represents the metadata of a long-running operation in Analytics Hub. type OperationMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Output only. The time the operation was created. CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // Output only. The time the operation finished running. EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // Output only. Server-defined resource path for the target of the operation. Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` // Output only. Name of the verb executed by the operation. Verb string `protobuf:"bytes,4,opt,name=verb,proto3" json:"verb,omitempty"` // Output only. Human-readable status of the operation, if any. StatusMessage string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` // Output only. Identifies whether the user has requested cancellation // of the operation. Operations that have successfully been cancelled // have [Operation.error][] value with a // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to // `Code.CANCELLED`. RequestedCancellation bool `protobuf:"varint,6,opt,name=requested_cancellation,json=requestedCancellation,proto3" json:"requested_cancellation,omitempty"` // Output only. API version used to start the operation. ApiVersion string `protobuf:"bytes,7,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` } func (x *OperationMetadata) Reset() { *x = OperationMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OperationMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*OperationMetadata) ProtoMessage() {} func (x *OperationMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OperationMetadata.ProtoReflect.Descriptor instead. func (*OperationMetadata) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{36} } func (x *OperationMetadata) GetCreateTime() *timestamppb.Timestamp { if x != nil { return x.CreateTime } return nil } func (x *OperationMetadata) GetEndTime() *timestamppb.Timestamp { if x != nil { return x.EndTime } return nil } func (x *OperationMetadata) GetTarget() string { if x != nil { return x.Target } return "" } func (x *OperationMetadata) GetVerb() string { if x != nil { return x.Verb } return "" } func (x *OperationMetadata) GetStatusMessage() string { if x != nil { return x.StatusMessage } return "" } func (x *OperationMetadata) GetRequestedCancellation() bool { if x != nil { return x.RequestedCancellation } return false } func (x *OperationMetadata) GetApiVersion() string { if x != nil { return x.ApiVersion } return "" } // Default Analytics Hub data exchange, used for secured data sharing. type SharingEnvironmentConfig_DefaultExchangeConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SharingEnvironmentConfig_DefaultExchangeConfig) Reset() { *x = SharingEnvironmentConfig_DefaultExchangeConfig{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SharingEnvironmentConfig_DefaultExchangeConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*SharingEnvironmentConfig_DefaultExchangeConfig) ProtoMessage() {} func (x *SharingEnvironmentConfig_DefaultExchangeConfig) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SharingEnvironmentConfig_DefaultExchangeConfig.ProtoReflect.Descriptor instead. func (*SharingEnvironmentConfig_DefaultExchangeConfig) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{1, 0} } // Data Clean Room (DCR), used for privacy-safe and secured data sharing. type SharingEnvironmentConfig_DcrExchangeConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Output only. If True, this DCR restricts the contributors to sharing // only a single resource in a Listing. And no two resources should have the // same IDs. So if a contributor adds a view with a conflicting name, the // CreateListing API will reject the request. if False, the data contributor // can publish an entire dataset (as before). This is not configurable, and // by default, all new DCRs will have the restriction set to True. SingleSelectedResourceSharingRestriction *bool `protobuf:"varint,1,opt,name=single_selected_resource_sharing_restriction,json=singleSelectedResourceSharingRestriction,proto3,oneof" json:"single_selected_resource_sharing_restriction,omitempty"` // Output only. If True, when subscribing to this DCR, it will create only // one linked dataset containing all resources shared within the // cleanroom. If False, when subscribing to this DCR, it will // create 1 linked dataset per listing. This is not configurable, and by // default, all new DCRs will have the restriction set to True. SingleLinkedDatasetPerCleanroom *bool `protobuf:"varint,2,opt,name=single_linked_dataset_per_cleanroom,json=singleLinkedDatasetPerCleanroom,proto3,oneof" json:"single_linked_dataset_per_cleanroom,omitempty"` } func (x *SharingEnvironmentConfig_DcrExchangeConfig) Reset() { *x = SharingEnvironmentConfig_DcrExchangeConfig{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SharingEnvironmentConfig_DcrExchangeConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*SharingEnvironmentConfig_DcrExchangeConfig) ProtoMessage() {} func (x *SharingEnvironmentConfig_DcrExchangeConfig) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SharingEnvironmentConfig_DcrExchangeConfig.ProtoReflect.Descriptor instead. func (*SharingEnvironmentConfig_DcrExchangeConfig) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{1, 1} } func (x *SharingEnvironmentConfig_DcrExchangeConfig) GetSingleSelectedResourceSharingRestriction() bool { if x != nil && x.SingleSelectedResourceSharingRestriction != nil { return *x.SingleSelectedResourceSharingRestriction } return false } func (x *SharingEnvironmentConfig_DcrExchangeConfig) GetSingleLinkedDatasetPerCleanroom() bool { if x != nil && x.SingleLinkedDatasetPerCleanroom != nil { return *x.SingleLinkedDatasetPerCleanroom } return false } // A reference to a shared dataset. It is an existing BigQuery dataset with a // collection of objects such as tables and views that you want to share // with subscribers. // When subscriber's subscribe to a listing, Analytics Hub creates a linked // dataset in // the subscriber's project. A Linked dataset is an opaque, read-only BigQuery // dataset that serves as a _symbolic link_ to a shared dataset. type Listing_BigQueryDatasetSource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Resource name of the dataset source for this listing. // e.g. `projects/myproject/datasets/123` Dataset string `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"` // Optional. Resources in this dataset that are selectively shared. // If this field is empty, then the entire dataset (all resources) are // shared. This field is only valid for data clean room exchanges. SelectedResources []*Listing_BigQueryDatasetSource_SelectedResource `protobuf:"bytes,2,rep,name=selected_resources,json=selectedResources,proto3" json:"selected_resources,omitempty"` } func (x *Listing_BigQueryDatasetSource) Reset() { *x = Listing_BigQueryDatasetSource{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Listing_BigQueryDatasetSource) String() string { return protoimpl.X.MessageStringOf(x) } func (*Listing_BigQueryDatasetSource) ProtoMessage() {} func (x *Listing_BigQueryDatasetSource) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Listing_BigQueryDatasetSource.ProtoReflect.Descriptor instead. func (*Listing_BigQueryDatasetSource) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6, 0} } func (x *Listing_BigQueryDatasetSource) GetDataset() string { if x != nil { return x.Dataset } return "" } func (x *Listing_BigQueryDatasetSource) GetSelectedResources() []*Listing_BigQueryDatasetSource_SelectedResource { if x != nil { return x.SelectedResources } return nil } // Restricted export config, used to configure restricted export on linked // dataset. type Listing_RestrictedExportConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Optional. If true, enable restricted export. Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` // Output only. If true, restrict direct table access(read // api/tabledata.list) on linked table. RestrictDirectTableAccess bool `protobuf:"varint,1,opt,name=restrict_direct_table_access,json=restrictDirectTableAccess,proto3" json:"restrict_direct_table_access,omitempty"` // Optional. If true, restrict export of query result derived from // restricted linked dataset table. RestrictQueryResult bool `protobuf:"varint,2,opt,name=restrict_query_result,json=restrictQueryResult,proto3" json:"restrict_query_result,omitempty"` } func (x *Listing_RestrictedExportConfig) Reset() { *x = Listing_RestrictedExportConfig{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Listing_RestrictedExportConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*Listing_RestrictedExportConfig) ProtoMessage() {} func (x *Listing_RestrictedExportConfig) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Listing_RestrictedExportConfig.ProtoReflect.Descriptor instead. func (*Listing_RestrictedExportConfig) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6, 1} } func (x *Listing_RestrictedExportConfig) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *Listing_RestrictedExportConfig) GetRestrictDirectTableAccess() bool { if x != nil { return x.RestrictDirectTableAccess } return false } func (x *Listing_RestrictedExportConfig) GetRestrictQueryResult() bool { if x != nil { return x.RestrictQueryResult } return false } // Resource in this dataset that are selectively shared. type Listing_BigQueryDatasetSource_SelectedResource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Resource: // // *Listing_BigQueryDatasetSource_SelectedResource_Table Resource isListing_BigQueryDatasetSource_SelectedResource_Resource `protobuf_oneof:"resource"` } func (x *Listing_BigQueryDatasetSource_SelectedResource) Reset() { *x = Listing_BigQueryDatasetSource_SelectedResource{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Listing_BigQueryDatasetSource_SelectedResource) String() string { return protoimpl.X.MessageStringOf(x) } func (*Listing_BigQueryDatasetSource_SelectedResource) ProtoMessage() {} func (x *Listing_BigQueryDatasetSource_SelectedResource) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Listing_BigQueryDatasetSource_SelectedResource.ProtoReflect.Descriptor instead. func (*Listing_BigQueryDatasetSource_SelectedResource) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6, 0, 0} } func (m *Listing_BigQueryDatasetSource_SelectedResource) GetResource() isListing_BigQueryDatasetSource_SelectedResource_Resource { if m != nil { return m.Resource } return nil } func (x *Listing_BigQueryDatasetSource_SelectedResource) GetTable() string { if x, ok := x.GetResource().(*Listing_BigQueryDatasetSource_SelectedResource_Table); ok { return x.Table } return "" } type isListing_BigQueryDatasetSource_SelectedResource_Resource interface { isListing_BigQueryDatasetSource_SelectedResource_Resource() } type Listing_BigQueryDatasetSource_SelectedResource_Table struct { // Optional. Format: // For table: // `projects/{projectId}/datasets/{datasetId}/tables/{tableId}` // Example:"projects/test_project/datasets/test_dataset/tables/test_table" Table string `protobuf:"bytes,1,opt,name=table,proto3,oneof"` } func (*Listing_BigQueryDatasetSource_SelectedResource_Table) isListing_BigQueryDatasetSource_SelectedResource_Resource() { } // Reference to a linked resource tracked by this Subscription. type Subscription_LinkedResource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Reference: // // *Subscription_LinkedResource_LinkedDataset Reference isSubscription_LinkedResource_Reference `protobuf_oneof:"reference"` } func (x *Subscription_LinkedResource) Reset() { *x = Subscription_LinkedResource{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Subscription_LinkedResource) String() string { return protoimpl.X.MessageStringOf(x) } func (*Subscription_LinkedResource) ProtoMessage() {} func (x *Subscription_LinkedResource) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Subscription_LinkedResource.ProtoReflect.Descriptor instead. func (*Subscription_LinkedResource) Descriptor() ([]byte, []int) { return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{7, 0} } func (m *Subscription_LinkedResource) GetReference() isSubscription_LinkedResource_Reference { if m != nil { return m.Reference } return nil } func (x *Subscription_LinkedResource) GetLinkedDataset() string { if x, ok := x.GetReference().(*Subscription_LinkedResource_LinkedDataset); ok { return x.LinkedDataset } return "" } type isSubscription_LinkedResource_Reference interface { isSubscription_LinkedResource_Reference() } type Subscription_LinkedResource_LinkedDataset struct { // Output only. Name of the linked dataset, e.g. // projects/subscriberproject/datasets/linked_dataset LinkedDataset string `protobuf:"bytes,1,opt,name=linked_dataset,json=linkedDataset,proto3,oneof"` } func (*Subscription_LinkedResource_LinkedDataset) isSubscription_LinkedResource_Reference() {} var File_google_cloud_bigquery_analyticshub_v1_analyticshub_proto protoreflect.FileDescriptor var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDesc = []byte{ 0x0a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x04, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x1a, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x74, 0xea, 0x41, 0x71, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x45, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x7d, 0x22, 0x8b, 0x05, 0x0a, 0x18, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x8f, 0x01, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x55, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x83, 0x01, 0x0a, 0x13, 0x64, 0x63, 0x72, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x63, 0x72, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x11, 0x64, 0x63, 0x72, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xae, 0x02, 0x0a, 0x11, 0x44, 0x63, 0x72, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x68, 0x0a, 0x2c, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x28, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x23, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x1f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x50, 0x65, 0x72, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x72, 0x6f, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x2f, 0x0a, 0x2d, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x72, 0x6f, 0x6f, 0x6d, 0x42, 0x0d, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x55, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x22, 0x52, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x22, 0x65, 0x0a, 0x1b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0xd7, 0x03, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x74, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x10, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x76, 0x0a, 0x10, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x5c, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x18, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x16, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xc2, 0x02, 0x0a, 0x15, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x89, 0x01, 0x0a, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x55, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x5d, 0x0a, 0x10, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0xb6, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x1c, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x19, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2a, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x22, 0xb7, 0x04, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x53, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x52, 0x43, 0x45, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x4c, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x44, 0x45, 0x4d, 0x4f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x43, 0x53, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x43, 0x4f, 0x4e, 0x4f, 0x4d, 0x49, 0x43, 0x53, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x44, 0x55, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4e, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x47, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x47, 0x45, 0x4f, 0x53, 0x50, 0x41, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0b, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x43, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x46, 0x45, 0x5f, 0x53, 0x43, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x10, 0x0d, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x53, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x10, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x43, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x10, 0x11, 0x12, 0x29, 0x0a, 0x25, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x53, 0x54, 0x49, 0x43, 0x53, 0x10, 0x12, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x55, 0x52, 0x49, 0x53, 0x4d, 0x10, 0x13, 0x3a, 0x82, 0x01, 0xea, 0x41, 0x7f, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x58, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x7d, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x7d, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xb0, 0x08, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x19, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x17, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x7c, 0x0a, 0x12, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x32, 0x0a, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x1a, 0x4b, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x87, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x58, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x55, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x03, 0x3a, 0x73, 0xea, 0x41, 0x70, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x42, 0x0f, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x12, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9f, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x82, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xf3, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x12, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x61, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x54, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xa7, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x4d, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x57, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x17, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6c, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x02, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x22, 0x78, 0x0a, 0x1d, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x76, 0x0a, 0x1b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x12, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xcf, 0x01, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x03, 0x0a, 0x01, 0x2a, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x1d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xca, 0x01, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x1d, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x61, 0x0a, 0x19, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd5, 0x02, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x76, 0x65, 0x72, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x76, 0x65, 0x72, 0x62, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xda, 0x2a, 0x0a, 0x13, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xda, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0xf4, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0xda, 0x41, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0xc7, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xec, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x5f, 0xda, 0x41, 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0xff, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x72, 0xda, 0x41, 0x19, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x3a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb0, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xc3, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xdc, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x5e, 0xda, 0x41, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xe9, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x6b, 0xda, 0x41, 0x13, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x3a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x32, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb1, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xed, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x3a, 0x01, 0x2a, 0x22, 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x80, 0x02, 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82, 0x01, 0xca, 0x41, 0x32, 0x0a, 0x1d, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0xf7, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7e, 0xca, 0x41, 0x30, 0x0a, 0x1b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x22, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0xc7, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xda, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xf4, 0x02, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, 0x01, 0xda, 0x41, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9f, 0x01, 0x5a, 0x54, 0x12, 0x52, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6d, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb7, 0x02, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xeb, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe4, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5a, 0x47, 0x3a, 0x01, 0x2a, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0xb7, 0x02, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xeb, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe4, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5a, 0x47, 0x3a, 0x01, 0x2a, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x9a, 0x02, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa7, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x58, 0x3a, 0x01, 0x2a, 0x22, 0x53, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x78, 0xca, 0x41, 0x1b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x57, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xae, 0x03, 0xea, 0x41, 0x48, 0x0a, 0x1f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x25, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0xea, 0x41, 0x55, 0x0a, 0x1d, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x7d, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x70, 0x62, 0x3b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x5c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x29, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x42, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x3a, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescOnce sync.Once file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescData = file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDesc ) func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP() []byte { file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescOnce.Do(func() { file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescData) }) return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescData } var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes = make([]protoimpl.MessageInfo, 45) var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_goTypes = []interface{}{ (Listing_State)(0), // 0: google.cloud.bigquery.analyticshub.v1.Listing.State (Listing_Category)(0), // 1: google.cloud.bigquery.analyticshub.v1.Listing.Category (Subscription_State)(0), // 2: google.cloud.bigquery.analyticshub.v1.Subscription.State (*DataExchange)(nil), // 3: google.cloud.bigquery.analyticshub.v1.DataExchange (*SharingEnvironmentConfig)(nil), // 4: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig (*DataProvider)(nil), // 5: google.cloud.bigquery.analyticshub.v1.DataProvider (*Publisher)(nil), // 6: google.cloud.bigquery.analyticshub.v1.Publisher (*DestinationDatasetReference)(nil), // 7: google.cloud.bigquery.analyticshub.v1.DestinationDatasetReference (*DestinationDataset)(nil), // 8: google.cloud.bigquery.analyticshub.v1.DestinationDataset (*Listing)(nil), // 9: google.cloud.bigquery.analyticshub.v1.Listing (*Subscription)(nil), // 10: google.cloud.bigquery.analyticshub.v1.Subscription (*ListDataExchangesRequest)(nil), // 11: google.cloud.bigquery.analyticshub.v1.ListDataExchangesRequest (*ListDataExchangesResponse)(nil), // 12: google.cloud.bigquery.analyticshub.v1.ListDataExchangesResponse (*ListOrgDataExchangesRequest)(nil), // 13: google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesRequest (*ListOrgDataExchangesResponse)(nil), // 14: google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesResponse (*GetDataExchangeRequest)(nil), // 15: google.cloud.bigquery.analyticshub.v1.GetDataExchangeRequest (*CreateDataExchangeRequest)(nil), // 16: google.cloud.bigquery.analyticshub.v1.CreateDataExchangeRequest (*UpdateDataExchangeRequest)(nil), // 17: google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest (*DeleteDataExchangeRequest)(nil), // 18: google.cloud.bigquery.analyticshub.v1.DeleteDataExchangeRequest (*ListListingsRequest)(nil), // 19: google.cloud.bigquery.analyticshub.v1.ListListingsRequest (*ListListingsResponse)(nil), // 20: google.cloud.bigquery.analyticshub.v1.ListListingsResponse (*GetListingRequest)(nil), // 21: google.cloud.bigquery.analyticshub.v1.GetListingRequest (*CreateListingRequest)(nil), // 22: google.cloud.bigquery.analyticshub.v1.CreateListingRequest (*UpdateListingRequest)(nil), // 23: google.cloud.bigquery.analyticshub.v1.UpdateListingRequest (*DeleteListingRequest)(nil), // 24: google.cloud.bigquery.analyticshub.v1.DeleteListingRequest (*SubscribeListingRequest)(nil), // 25: google.cloud.bigquery.analyticshub.v1.SubscribeListingRequest (*SubscribeListingResponse)(nil), // 26: google.cloud.bigquery.analyticshub.v1.SubscribeListingResponse (*SubscribeDataExchangeRequest)(nil), // 27: google.cloud.bigquery.analyticshub.v1.SubscribeDataExchangeRequest (*SubscribeDataExchangeResponse)(nil), // 28: google.cloud.bigquery.analyticshub.v1.SubscribeDataExchangeResponse (*RefreshSubscriptionRequest)(nil), // 29: google.cloud.bigquery.analyticshub.v1.RefreshSubscriptionRequest (*RefreshSubscriptionResponse)(nil), // 30: google.cloud.bigquery.analyticshub.v1.RefreshSubscriptionResponse (*GetSubscriptionRequest)(nil), // 31: google.cloud.bigquery.analyticshub.v1.GetSubscriptionRequest (*ListSubscriptionsRequest)(nil), // 32: google.cloud.bigquery.analyticshub.v1.ListSubscriptionsRequest (*ListSubscriptionsResponse)(nil), // 33: google.cloud.bigquery.analyticshub.v1.ListSubscriptionsResponse (*ListSharedResourceSubscriptionsRequest)(nil), // 34: google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsRequest (*ListSharedResourceSubscriptionsResponse)(nil), // 35: google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsResponse (*RevokeSubscriptionRequest)(nil), // 36: google.cloud.bigquery.analyticshub.v1.RevokeSubscriptionRequest (*RevokeSubscriptionResponse)(nil), // 37: google.cloud.bigquery.analyticshub.v1.RevokeSubscriptionResponse (*DeleteSubscriptionRequest)(nil), // 38: google.cloud.bigquery.analyticshub.v1.DeleteSubscriptionRequest (*OperationMetadata)(nil), // 39: google.cloud.bigquery.analyticshub.v1.OperationMetadata (*SharingEnvironmentConfig_DefaultExchangeConfig)(nil), // 40: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.DefaultExchangeConfig (*SharingEnvironmentConfig_DcrExchangeConfig)(nil), // 41: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.DcrExchangeConfig nil, // 42: google.cloud.bigquery.analyticshub.v1.DestinationDataset.LabelsEntry (*Listing_BigQueryDatasetSource)(nil), // 43: google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource (*Listing_RestrictedExportConfig)(nil), // 44: google.cloud.bigquery.analyticshub.v1.Listing.RestrictedExportConfig (*Listing_BigQueryDatasetSource_SelectedResource)(nil), // 45: google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource.SelectedResource (*Subscription_LinkedResource)(nil), // 46: google.cloud.bigquery.analyticshub.v1.Subscription.LinkedResource nil, // 47: google.cloud.bigquery.analyticshub.v1.Subscription.LinkedDatasetMapEntry (*wrapperspb.StringValue)(nil), // 48: google.protobuf.StringValue (*timestamppb.Timestamp)(nil), // 49: google.protobuf.Timestamp (*fieldmaskpb.FieldMask)(nil), // 50: google.protobuf.FieldMask (*iampb.GetIamPolicyRequest)(nil), // 51: google.iam.v1.GetIamPolicyRequest (*iampb.SetIamPolicyRequest)(nil), // 52: google.iam.v1.SetIamPolicyRequest (*iampb.TestIamPermissionsRequest)(nil), // 53: google.iam.v1.TestIamPermissionsRequest (*emptypb.Empty)(nil), // 54: google.protobuf.Empty (*longrunningpb.Operation)(nil), // 55: google.longrunning.Operation (*iampb.Policy)(nil), // 56: google.iam.v1.Policy (*iampb.TestIamPermissionsResponse)(nil), // 57: google.iam.v1.TestIamPermissionsResponse } var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_depIdxs = []int32{ 4, // 0: google.cloud.bigquery.analyticshub.v1.DataExchange.sharing_environment_config:type_name -> google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig 40, // 1: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.default_exchange_config:type_name -> google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.DefaultExchangeConfig 41, // 2: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.dcr_exchange_config:type_name -> google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.DcrExchangeConfig 7, // 3: google.cloud.bigquery.analyticshub.v1.DestinationDataset.dataset_reference:type_name -> google.cloud.bigquery.analyticshub.v1.DestinationDatasetReference 48, // 4: google.cloud.bigquery.analyticshub.v1.DestinationDataset.friendly_name:type_name -> google.protobuf.StringValue 48, // 5: google.cloud.bigquery.analyticshub.v1.DestinationDataset.description:type_name -> google.protobuf.StringValue 42, // 6: google.cloud.bigquery.analyticshub.v1.DestinationDataset.labels:type_name -> google.cloud.bigquery.analyticshub.v1.DestinationDataset.LabelsEntry 43, // 7: google.cloud.bigquery.analyticshub.v1.Listing.bigquery_dataset:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource 0, // 8: google.cloud.bigquery.analyticshub.v1.Listing.state:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.State 5, // 9: google.cloud.bigquery.analyticshub.v1.Listing.data_provider:type_name -> google.cloud.bigquery.analyticshub.v1.DataProvider 1, // 10: google.cloud.bigquery.analyticshub.v1.Listing.categories:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.Category 6, // 11: google.cloud.bigquery.analyticshub.v1.Listing.publisher:type_name -> google.cloud.bigquery.analyticshub.v1.Publisher 44, // 12: google.cloud.bigquery.analyticshub.v1.Listing.restricted_export_config:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.RestrictedExportConfig 49, // 13: google.cloud.bigquery.analyticshub.v1.Subscription.creation_time:type_name -> google.protobuf.Timestamp 49, // 14: google.cloud.bigquery.analyticshub.v1.Subscription.last_modify_time:type_name -> google.protobuf.Timestamp 2, // 15: google.cloud.bigquery.analyticshub.v1.Subscription.state:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription.State 47, // 16: google.cloud.bigquery.analyticshub.v1.Subscription.linked_dataset_map:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription.LinkedDatasetMapEntry 3, // 17: google.cloud.bigquery.analyticshub.v1.ListDataExchangesResponse.data_exchanges:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange 3, // 18: google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesResponse.data_exchanges:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange 3, // 19: google.cloud.bigquery.analyticshub.v1.CreateDataExchangeRequest.data_exchange:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange 50, // 20: google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest.update_mask:type_name -> google.protobuf.FieldMask 3, // 21: google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest.data_exchange:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange 9, // 22: google.cloud.bigquery.analyticshub.v1.ListListingsResponse.listings:type_name -> google.cloud.bigquery.analyticshub.v1.Listing 9, // 23: google.cloud.bigquery.analyticshub.v1.CreateListingRequest.listing:type_name -> google.cloud.bigquery.analyticshub.v1.Listing 50, // 24: google.cloud.bigquery.analyticshub.v1.UpdateListingRequest.update_mask:type_name -> google.protobuf.FieldMask 9, // 25: google.cloud.bigquery.analyticshub.v1.UpdateListingRequest.listing:type_name -> google.cloud.bigquery.analyticshub.v1.Listing 8, // 26: google.cloud.bigquery.analyticshub.v1.SubscribeListingRequest.destination_dataset:type_name -> google.cloud.bigquery.analyticshub.v1.DestinationDataset 10, // 27: google.cloud.bigquery.analyticshub.v1.SubscribeListingResponse.subscription:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription 10, // 28: google.cloud.bigquery.analyticshub.v1.SubscribeDataExchangeResponse.subscription:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription 10, // 29: google.cloud.bigquery.analyticshub.v1.RefreshSubscriptionResponse.subscription:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription 10, // 30: google.cloud.bigquery.analyticshub.v1.ListSubscriptionsResponse.subscriptions:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription 10, // 31: google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsResponse.shared_resource_subscriptions:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription 49, // 32: google.cloud.bigquery.analyticshub.v1.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp 49, // 33: google.cloud.bigquery.analyticshub.v1.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp 45, // 34: google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource.selected_resources:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource.SelectedResource 46, // 35: google.cloud.bigquery.analyticshub.v1.Subscription.LinkedDatasetMapEntry.value:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription.LinkedResource 11, // 36: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListDataExchanges:input_type -> google.cloud.bigquery.analyticshub.v1.ListDataExchangesRequest 13, // 37: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListOrgDataExchanges:input_type -> google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesRequest 15, // 38: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.GetDataExchangeRequest 16, // 39: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.CreateDataExchangeRequest 17, // 40: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest 18, // 41: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.DeleteDataExchangeRequest 19, // 42: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListListings:input_type -> google.cloud.bigquery.analyticshub.v1.ListListingsRequest 21, // 43: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetListing:input_type -> google.cloud.bigquery.analyticshub.v1.GetListingRequest 22, // 44: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateListing:input_type -> google.cloud.bigquery.analyticshub.v1.CreateListingRequest 23, // 45: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateListing:input_type -> google.cloud.bigquery.analyticshub.v1.UpdateListingRequest 24, // 46: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteListing:input_type -> google.cloud.bigquery.analyticshub.v1.DeleteListingRequest 25, // 47: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeListing:input_type -> google.cloud.bigquery.analyticshub.v1.SubscribeListingRequest 27, // 48: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.SubscribeDataExchangeRequest 29, // 49: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RefreshSubscription:input_type -> google.cloud.bigquery.analyticshub.v1.RefreshSubscriptionRequest 31, // 50: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetSubscription:input_type -> google.cloud.bigquery.analyticshub.v1.GetSubscriptionRequest 32, // 51: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSubscriptions:input_type -> google.cloud.bigquery.analyticshub.v1.ListSubscriptionsRequest 34, // 52: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSharedResourceSubscriptions:input_type -> google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsRequest 36, // 53: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RevokeSubscription:input_type -> google.cloud.bigquery.analyticshub.v1.RevokeSubscriptionRequest 38, // 54: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteSubscription:input_type -> google.cloud.bigquery.analyticshub.v1.DeleteSubscriptionRequest 51, // 55: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetIamPolicy:input_type -> google.iam.v1.GetIamPolicyRequest 52, // 56: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SetIamPolicy:input_type -> google.iam.v1.SetIamPolicyRequest 53, // 57: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.TestIamPermissions:input_type -> google.iam.v1.TestIamPermissionsRequest 12, // 58: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListDataExchanges:output_type -> google.cloud.bigquery.analyticshub.v1.ListDataExchangesResponse 14, // 59: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListOrgDataExchanges:output_type -> google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesResponse 3, // 60: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetDataExchange:output_type -> google.cloud.bigquery.analyticshub.v1.DataExchange 3, // 61: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateDataExchange:output_type -> google.cloud.bigquery.analyticshub.v1.DataExchange 3, // 62: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateDataExchange:output_type -> google.cloud.bigquery.analyticshub.v1.DataExchange 54, // 63: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteDataExchange:output_type -> google.protobuf.Empty 20, // 64: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListListings:output_type -> google.cloud.bigquery.analyticshub.v1.ListListingsResponse 9, // 65: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetListing:output_type -> google.cloud.bigquery.analyticshub.v1.Listing 9, // 66: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateListing:output_type -> google.cloud.bigquery.analyticshub.v1.Listing 9, // 67: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateListing:output_type -> google.cloud.bigquery.analyticshub.v1.Listing 54, // 68: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteListing:output_type -> google.protobuf.Empty 26, // 69: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeListing:output_type -> google.cloud.bigquery.analyticshub.v1.SubscribeListingResponse 55, // 70: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeDataExchange:output_type -> google.longrunning.Operation 55, // 71: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RefreshSubscription:output_type -> google.longrunning.Operation 10, // 72: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetSubscription:output_type -> google.cloud.bigquery.analyticshub.v1.Subscription 33, // 73: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSubscriptions:output_type -> google.cloud.bigquery.analyticshub.v1.ListSubscriptionsResponse 35, // 74: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSharedResourceSubscriptions:output_type -> google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsResponse 37, // 75: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RevokeSubscription:output_type -> google.cloud.bigquery.analyticshub.v1.RevokeSubscriptionResponse 55, // 76: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteSubscription:output_type -> google.longrunning.Operation 56, // 77: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetIamPolicy:output_type -> google.iam.v1.Policy 56, // 78: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SetIamPolicy:output_type -> google.iam.v1.Policy 57, // 79: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.TestIamPermissions:output_type -> google.iam.v1.TestIamPermissionsResponse 58, // [58:80] is the sub-list for method output_type 36, // [36:58] is the sub-list for method input_type 36, // [36:36] is the sub-list for extension type_name 36, // [36:36] is the sub-list for extension extendee 0, // [0:36] is the sub-list for field type_name } func init() { file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() } func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { if File_google_cloud_bigquery_analyticshub_v1_analyticshub_proto != nil { return } if !protoimpl.UnsafeEnabled { file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataExchange); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SharingEnvironmentConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProvider); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Publisher); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestinationDatasetReference); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestinationDataset); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Listing); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Subscription); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDataExchangesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDataExchangesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOrgDataExchangesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOrgDataExchangesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetDataExchangeRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateDataExchangeRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateDataExchangeRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteDataExchangeRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListListingsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListListingsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetListingRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateListingRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateListingRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteListingRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscribeListingRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscribeListingResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscribeDataExchangeRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscribeDataExchangeResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshSubscriptionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshSubscriptionResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSubscriptionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListSubscriptionsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListSubscriptionsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListSharedResourceSubscriptionsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListSharedResourceSubscriptionsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeSubscriptionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeSubscriptionResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSubscriptionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OperationMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SharingEnvironmentConfig_DefaultExchangeConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SharingEnvironmentConfig_DcrExchangeConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Listing_BigQueryDatasetSource); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Listing_RestrictedExportConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Listing_BigQueryDatasetSource_SelectedResource); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Subscription_LinkedResource); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1].OneofWrappers = []interface{}{ (*SharingEnvironmentConfig_DefaultExchangeConfig_)(nil), (*SharingEnvironmentConfig_DcrExchangeConfig_)(nil), } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6].OneofWrappers = []interface{}{ (*Listing_BigqueryDataset)(nil), } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7].OneofWrappers = []interface{}{ (*Subscription_Listing)(nil), (*Subscription_DataExchange)(nil), } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[22].OneofWrappers = []interface{}{ (*SubscribeListingRequest_DestinationDataset)(nil), } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[38].OneofWrappers = []interface{}{} file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[42].OneofWrappers = []interface{}{ (*Listing_BigQueryDatasetSource_SelectedResource_Table)(nil), } file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[43].OneofWrappers = []interface{}{ (*Subscription_LinkedResource_LinkedDataset)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDesc, NumEnums: 3, NumMessages: 45, NumExtensions: 0, NumServices: 1, }, GoTypes: file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_goTypes, DependencyIndexes: file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_depIdxs, EnumInfos: file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes, MessageInfos: file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes, }.Build() File_google_cloud_bigquery_analyticshub_v1_analyticshub_proto = out.File file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDesc = nil file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_goTypes = nil file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // AnalyticsHubServiceClient is the client API for AnalyticsHubService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type AnalyticsHubServiceClient interface { // Lists all data exchanges in a given project and location. ListDataExchanges(ctx context.Context, in *ListDataExchangesRequest, opts ...grpc.CallOption) (*ListDataExchangesResponse, error) // Lists all data exchanges from projects in a given organization and // location. ListOrgDataExchanges(ctx context.Context, in *ListOrgDataExchangesRequest, opts ...grpc.CallOption) (*ListOrgDataExchangesResponse, error) // Gets the details of a data exchange. GetDataExchange(ctx context.Context, in *GetDataExchangeRequest, opts ...grpc.CallOption) (*DataExchange, error) // Creates a new data exchange. CreateDataExchange(ctx context.Context, in *CreateDataExchangeRequest, opts ...grpc.CallOption) (*DataExchange, error) // Updates an existing data exchange. UpdateDataExchange(ctx context.Context, in *UpdateDataExchangeRequest, opts ...grpc.CallOption) (*DataExchange, error) // Deletes an existing data exchange. DeleteDataExchange(ctx context.Context, in *DeleteDataExchangeRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // Lists all listings in a given project and location. ListListings(ctx context.Context, in *ListListingsRequest, opts ...grpc.CallOption) (*ListListingsResponse, error) // Gets the details of a listing. GetListing(ctx context.Context, in *GetListingRequest, opts ...grpc.CallOption) (*Listing, error) // Creates a new listing. CreateListing(ctx context.Context, in *CreateListingRequest, opts ...grpc.CallOption) (*Listing, error) // Updates an existing listing. UpdateListing(ctx context.Context, in *UpdateListingRequest, opts ...grpc.CallOption) (*Listing, error) // Deletes a listing. DeleteListing(ctx context.Context, in *DeleteListingRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // Subscribes to a listing. // // Currently, with Analytics Hub, you can create listings that // reference only BigQuery datasets. // Upon subscription to a listing for a BigQuery dataset, Analytics Hub // creates a linked dataset in the subscriber's project. SubscribeListing(ctx context.Context, in *SubscribeListingRequest, opts ...grpc.CallOption) (*SubscribeListingResponse, error) // Creates a Subscription to a Data Exchange. This is a long-running operation // as it will create one or more linked datasets. SubscribeDataExchange(ctx context.Context, in *SubscribeDataExchangeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Refreshes a Subscription to a Data Exchange. A Data Exchange can become // stale when a publisher adds or removes data. This is a long-running // operation as it may create many linked datasets. RefreshSubscription(ctx context.Context, in *RefreshSubscriptionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Gets the details of a Subscription. GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) // Lists all subscriptions in a given project and location. ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error) // Lists all subscriptions on a given Data Exchange or Listing. ListSharedResourceSubscriptions(ctx context.Context, in *ListSharedResourceSubscriptionsRequest, opts ...grpc.CallOption) (*ListSharedResourceSubscriptionsResponse, error) // Revokes a given subscription. RevokeSubscription(ctx context.Context, in *RevokeSubscriptionRequest, opts ...grpc.CallOption) (*RevokeSubscriptionResponse, error) // Deletes a subscription. DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Gets the IAM policy. GetIamPolicy(ctx context.Context, in *iampb.GetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) // Sets the IAM policy. SetIamPolicy(ctx context.Context, in *iampb.SetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) // Returns the permissions that a caller has. TestIamPermissions(ctx context.Context, in *iampb.TestIamPermissionsRequest, opts ...grpc.CallOption) (*iampb.TestIamPermissionsResponse, error) } type analyticsHubServiceClient struct { cc grpc.ClientConnInterface } func NewAnalyticsHubServiceClient(cc grpc.ClientConnInterface) AnalyticsHubServiceClient { return &analyticsHubServiceClient{cc} } func (c *analyticsHubServiceClient) ListDataExchanges(ctx context.Context, in *ListDataExchangesRequest, opts ...grpc.CallOption) (*ListDataExchangesResponse, error) { out := new(ListDataExchangesResponse) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListDataExchanges", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) ListOrgDataExchanges(ctx context.Context, in *ListOrgDataExchangesRequest, opts ...grpc.CallOption) (*ListOrgDataExchangesResponse, error) { out := new(ListOrgDataExchangesResponse) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListOrgDataExchanges", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) GetDataExchange(ctx context.Context, in *GetDataExchangeRequest, opts ...grpc.CallOption) (*DataExchange, error) { out := new(DataExchange) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetDataExchange", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) CreateDataExchange(ctx context.Context, in *CreateDataExchangeRequest, opts ...grpc.CallOption) (*DataExchange, error) { out := new(DataExchange) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/CreateDataExchange", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) UpdateDataExchange(ctx context.Context, in *UpdateDataExchangeRequest, opts ...grpc.CallOption) (*DataExchange, error) { out := new(DataExchange) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/UpdateDataExchange", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) DeleteDataExchange(ctx context.Context, in *DeleteDataExchangeRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/DeleteDataExchange", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) ListListings(ctx context.Context, in *ListListingsRequest, opts ...grpc.CallOption) (*ListListingsResponse, error) { out := new(ListListingsResponse) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListListings", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) GetListing(ctx context.Context, in *GetListingRequest, opts ...grpc.CallOption) (*Listing, error) { out := new(Listing) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetListing", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) CreateListing(ctx context.Context, in *CreateListingRequest, opts ...grpc.CallOption) (*Listing, error) { out := new(Listing) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/CreateListing", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) UpdateListing(ctx context.Context, in *UpdateListingRequest, opts ...grpc.CallOption) (*Listing, error) { out := new(Listing) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/UpdateListing", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) DeleteListing(ctx context.Context, in *DeleteListingRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/DeleteListing", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) SubscribeListing(ctx context.Context, in *SubscribeListingRequest, opts ...grpc.CallOption) (*SubscribeListingResponse, error) { out := new(SubscribeListingResponse) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/SubscribeListing", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) SubscribeDataExchange(ctx context.Context, in *SubscribeDataExchangeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/SubscribeDataExchange", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) RefreshSubscription(ctx context.Context, in *RefreshSubscriptionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/RefreshSubscription", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) { out := new(Subscription) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetSubscription", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error) { out := new(ListSubscriptionsResponse) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListSubscriptions", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) ListSharedResourceSubscriptions(ctx context.Context, in *ListSharedResourceSubscriptionsRequest, opts ...grpc.CallOption) (*ListSharedResourceSubscriptionsResponse, error) { out := new(ListSharedResourceSubscriptionsResponse) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListSharedResourceSubscriptions", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) RevokeSubscription(ctx context.Context, in *RevokeSubscriptionRequest, opts ...grpc.CallOption) (*RevokeSubscriptionResponse, error) { out := new(RevokeSubscriptionResponse) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/RevokeSubscription", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/DeleteSubscription", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) GetIamPolicy(ctx context.Context, in *iampb.GetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) { out := new(iampb.Policy) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetIamPolicy", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) SetIamPolicy(ctx context.Context, in *iampb.SetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) { out := new(iampb.Policy) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/SetIamPolicy", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *analyticsHubServiceClient) TestIamPermissions(ctx context.Context, in *iampb.TestIamPermissionsRequest, opts ...grpc.CallOption) (*iampb.TestIamPermissionsResponse, error) { out := new(iampb.TestIamPermissionsResponse) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/TestIamPermissions", in, out, opts...) if err != nil { return nil, err } return out, nil } // AnalyticsHubServiceServer is the server API for AnalyticsHubService service. type AnalyticsHubServiceServer interface { // Lists all data exchanges in a given project and location. ListDataExchanges(context.Context, *ListDataExchangesRequest) (*ListDataExchangesResponse, error) // Lists all data exchanges from projects in a given organization and // location. ListOrgDataExchanges(context.Context, *ListOrgDataExchangesRequest) (*ListOrgDataExchangesResponse, error) // Gets the details of a data exchange. GetDataExchange(context.Context, *GetDataExchangeRequest) (*DataExchange, error) // Creates a new data exchange. CreateDataExchange(context.Context, *CreateDataExchangeRequest) (*DataExchange, error) // Updates an existing data exchange. UpdateDataExchange(context.Context, *UpdateDataExchangeRequest) (*DataExchange, error) // Deletes an existing data exchange. DeleteDataExchange(context.Context, *DeleteDataExchangeRequest) (*emptypb.Empty, error) // Lists all listings in a given project and location. ListListings(context.Context, *ListListingsRequest) (*ListListingsResponse, error) // Gets the details of a listing. GetListing(context.Context, *GetListingRequest) (*Listing, error) // Creates a new listing. CreateListing(context.Context, *CreateListingRequest) (*Listing, error) // Updates an existing listing. UpdateListing(context.Context, *UpdateListingRequest) (*Listing, error) // Deletes a listing. DeleteListing(context.Context, *DeleteListingRequest) (*emptypb.Empty, error) // Subscribes to a listing. // // Currently, with Analytics Hub, you can create listings that // reference only BigQuery datasets. // Upon subscription to a listing for a BigQuery dataset, Analytics Hub // creates a linked dataset in the subscriber's project. SubscribeListing(context.Context, *SubscribeListingRequest) (*SubscribeListingResponse, error) // Creates a Subscription to a Data Exchange. This is a long-running operation // as it will create one or more linked datasets. SubscribeDataExchange(context.Context, *SubscribeDataExchangeRequest) (*longrunningpb.Operation, error) // Refreshes a Subscription to a Data Exchange. A Data Exchange can become // stale when a publisher adds or removes data. This is a long-running // operation as it may create many linked datasets. RefreshSubscription(context.Context, *RefreshSubscriptionRequest) (*longrunningpb.Operation, error) // Gets the details of a Subscription. GetSubscription(context.Context, *GetSubscriptionRequest) (*Subscription, error) // Lists all subscriptions in a given project and location. ListSubscriptions(context.Context, *ListSubscriptionsRequest) (*ListSubscriptionsResponse, error) // Lists all subscriptions on a given Data Exchange or Listing. ListSharedResourceSubscriptions(context.Context, *ListSharedResourceSubscriptionsRequest) (*ListSharedResourceSubscriptionsResponse, error) // Revokes a given subscription. RevokeSubscription(context.Context, *RevokeSubscriptionRequest) (*RevokeSubscriptionResponse, error) // Deletes a subscription. DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*longrunningpb.Operation, error) // Gets the IAM policy. GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest) (*iampb.Policy, error) // Sets the IAM policy. SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest) (*iampb.Policy, error) // Returns the permissions that a caller has. TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest) (*iampb.TestIamPermissionsResponse, error) } // UnimplementedAnalyticsHubServiceServer can be embedded to have forward compatible implementations. type UnimplementedAnalyticsHubServiceServer struct { } func (*UnimplementedAnalyticsHubServiceServer) ListDataExchanges(context.Context, *ListDataExchangesRequest) (*ListDataExchangesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListDataExchanges not implemented") } func (*UnimplementedAnalyticsHubServiceServer) ListOrgDataExchanges(context.Context, *ListOrgDataExchangesRequest) (*ListOrgDataExchangesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListOrgDataExchanges not implemented") } func (*UnimplementedAnalyticsHubServiceServer) GetDataExchange(context.Context, *GetDataExchangeRequest) (*DataExchange, error) { return nil, status.Errorf(codes.Unimplemented, "method GetDataExchange not implemented") } func (*UnimplementedAnalyticsHubServiceServer) CreateDataExchange(context.Context, *CreateDataExchangeRequest) (*DataExchange, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateDataExchange not implemented") } func (*UnimplementedAnalyticsHubServiceServer) UpdateDataExchange(context.Context, *UpdateDataExchangeRequest) (*DataExchange, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateDataExchange not implemented") } func (*UnimplementedAnalyticsHubServiceServer) DeleteDataExchange(context.Context, *DeleteDataExchangeRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteDataExchange not implemented") } func (*UnimplementedAnalyticsHubServiceServer) ListListings(context.Context, *ListListingsRequest) (*ListListingsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListListings not implemented") } func (*UnimplementedAnalyticsHubServiceServer) GetListing(context.Context, *GetListingRequest) (*Listing, error) { return nil, status.Errorf(codes.Unimplemented, "method GetListing not implemented") } func (*UnimplementedAnalyticsHubServiceServer) CreateListing(context.Context, *CreateListingRequest) (*Listing, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateListing not implemented") } func (*UnimplementedAnalyticsHubServiceServer) UpdateListing(context.Context, *UpdateListingRequest) (*Listing, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateListing not implemented") } func (*UnimplementedAnalyticsHubServiceServer) DeleteListing(context.Context, *DeleteListingRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteListing not implemented") } func (*UnimplementedAnalyticsHubServiceServer) SubscribeListing(context.Context, *SubscribeListingRequest) (*SubscribeListingResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SubscribeListing not implemented") } func (*UnimplementedAnalyticsHubServiceServer) SubscribeDataExchange(context.Context, *SubscribeDataExchangeRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method SubscribeDataExchange not implemented") } func (*UnimplementedAnalyticsHubServiceServer) RefreshSubscription(context.Context, *RefreshSubscriptionRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method RefreshSubscription not implemented") } func (*UnimplementedAnalyticsHubServiceServer) GetSubscription(context.Context, *GetSubscriptionRequest) (*Subscription, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSubscription not implemented") } func (*UnimplementedAnalyticsHubServiceServer) ListSubscriptions(context.Context, *ListSubscriptionsRequest) (*ListSubscriptionsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListSubscriptions not implemented") } func (*UnimplementedAnalyticsHubServiceServer) ListSharedResourceSubscriptions(context.Context, *ListSharedResourceSubscriptionsRequest) (*ListSharedResourceSubscriptionsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListSharedResourceSubscriptions not implemented") } func (*UnimplementedAnalyticsHubServiceServer) RevokeSubscription(context.Context, *RevokeSubscriptionRequest) (*RevokeSubscriptionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RevokeSubscription not implemented") } func (*UnimplementedAnalyticsHubServiceServer) DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteSubscription not implemented") } func (*UnimplementedAnalyticsHubServiceServer) GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest) (*iampb.Policy, error) { return nil, status.Errorf(codes.Unimplemented, "method GetIamPolicy not implemented") } func (*UnimplementedAnalyticsHubServiceServer) SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest) (*iampb.Policy, error) { return nil, status.Errorf(codes.Unimplemented, "method SetIamPolicy not implemented") } func (*UnimplementedAnalyticsHubServiceServer) TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest) (*iampb.TestIamPermissionsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TestIamPermissions not implemented") } func RegisterAnalyticsHubServiceServer(s *grpc.Server, srv AnalyticsHubServiceServer) { s.RegisterService(&_AnalyticsHubService_serviceDesc, srv) } func _AnalyticsHubService_ListDataExchanges_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListDataExchangesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).ListDataExchanges(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListDataExchanges", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).ListDataExchanges(ctx, req.(*ListDataExchangesRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_ListOrgDataExchanges_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListOrgDataExchangesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).ListOrgDataExchanges(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListOrgDataExchanges", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).ListOrgDataExchanges(ctx, req.(*ListOrgDataExchangesRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_GetDataExchange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetDataExchangeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).GetDataExchange(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetDataExchange", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).GetDataExchange(ctx, req.(*GetDataExchangeRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_CreateDataExchange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateDataExchangeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).CreateDataExchange(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/CreateDataExchange", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).CreateDataExchange(ctx, req.(*CreateDataExchangeRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_UpdateDataExchange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateDataExchangeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).UpdateDataExchange(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/UpdateDataExchange", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).UpdateDataExchange(ctx, req.(*UpdateDataExchangeRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_DeleteDataExchange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteDataExchangeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).DeleteDataExchange(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/DeleteDataExchange", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).DeleteDataExchange(ctx, req.(*DeleteDataExchangeRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_ListListings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListListingsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).ListListings(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListListings", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).ListListings(ctx, req.(*ListListingsRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_GetListing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetListingRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).GetListing(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetListing", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).GetListing(ctx, req.(*GetListingRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_CreateListing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateListingRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).CreateListing(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/CreateListing", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).CreateListing(ctx, req.(*CreateListingRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_UpdateListing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateListingRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).UpdateListing(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/UpdateListing", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).UpdateListing(ctx, req.(*UpdateListingRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_DeleteListing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteListingRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).DeleteListing(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/DeleteListing", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).DeleteListing(ctx, req.(*DeleteListingRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_SubscribeListing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SubscribeListingRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).SubscribeListing(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/SubscribeListing", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).SubscribeListing(ctx, req.(*SubscribeListingRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_SubscribeDataExchange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SubscribeDataExchangeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).SubscribeDataExchange(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/SubscribeDataExchange", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).SubscribeDataExchange(ctx, req.(*SubscribeDataExchangeRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_RefreshSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RefreshSubscriptionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).RefreshSubscription(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/RefreshSubscription", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).RefreshSubscription(ctx, req.(*RefreshSubscriptionRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_GetSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetSubscriptionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).GetSubscription(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetSubscription", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).GetSubscription(ctx, req.(*GetSubscriptionRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_ListSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListSubscriptionsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).ListSubscriptions(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListSubscriptions", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).ListSubscriptions(ctx, req.(*ListSubscriptionsRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_ListSharedResourceSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListSharedResourceSubscriptionsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).ListSharedResourceSubscriptions(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListSharedResourceSubscriptions", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).ListSharedResourceSubscriptions(ctx, req.(*ListSharedResourceSubscriptionsRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_RevokeSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RevokeSubscriptionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).RevokeSubscription(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/RevokeSubscription", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).RevokeSubscription(ctx, req.(*RevokeSubscriptionRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_DeleteSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteSubscriptionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).DeleteSubscription(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/DeleteSubscription", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).DeleteSubscription(ctx, req.(*DeleteSubscriptionRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(iampb.GetIamPolicyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).GetIamPolicy(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetIamPolicy", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).GetIamPolicy(ctx, req.(*iampb.GetIamPolicyRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(iampb.SetIamPolicyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).SetIamPolicy(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/SetIamPolicy", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).SetIamPolicy(ctx, req.(*iampb.SetIamPolicyRequest)) } return interceptor(ctx, in, info, handler) } func _AnalyticsHubService_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(iampb.TestIamPermissionsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(AnalyticsHubServiceServer).TestIamPermissions(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/TestIamPermissions", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AnalyticsHubServiceServer).TestIamPermissions(ctx, req.(*iampb.TestIamPermissionsRequest)) } return interceptor(ctx, in, info, handler) } var _AnalyticsHubService_serviceDesc = grpc.ServiceDesc{ ServiceName: "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService", HandlerType: (*AnalyticsHubServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "ListDataExchanges", Handler: _AnalyticsHubService_ListDataExchanges_Handler, }, { MethodName: "ListOrgDataExchanges", Handler: _AnalyticsHubService_ListOrgDataExchanges_Handler, }, { MethodName: "GetDataExchange", Handler: _AnalyticsHubService_GetDataExchange_Handler, }, { MethodName: "CreateDataExchange", Handler: _AnalyticsHubService_CreateDataExchange_Handler, }, { MethodName: "UpdateDataExchange", Handler: _AnalyticsHubService_UpdateDataExchange_Handler, }, { MethodName: "DeleteDataExchange", Handler: _AnalyticsHubService_DeleteDataExchange_Handler, }, { MethodName: "ListListings", Handler: _AnalyticsHubService_ListListings_Handler, }, { MethodName: "GetListing", Handler: _AnalyticsHubService_GetListing_Handler, }, { MethodName: "CreateListing", Handler: _AnalyticsHubService_CreateListing_Handler, }, { MethodName: "UpdateListing", Handler: _AnalyticsHubService_UpdateListing_Handler, }, { MethodName: "DeleteListing", Handler: _AnalyticsHubService_DeleteListing_Handler, }, { MethodName: "SubscribeListing", Handler: _AnalyticsHubService_SubscribeListing_Handler, }, { MethodName: "SubscribeDataExchange", Handler: _AnalyticsHubService_SubscribeDataExchange_Handler, }, { MethodName: "RefreshSubscription", Handler: _AnalyticsHubService_RefreshSubscription_Handler, }, { MethodName: "GetSubscription", Handler: _AnalyticsHubService_GetSubscription_Handler, }, { MethodName: "ListSubscriptions", Handler: _AnalyticsHubService_ListSubscriptions_Handler, }, { MethodName: "ListSharedResourceSubscriptions", Handler: _AnalyticsHubService_ListSharedResourceSubscriptions_Handler, }, { MethodName: "RevokeSubscription", Handler: _AnalyticsHubService_RevokeSubscription_Handler, }, { MethodName: "DeleteSubscription", Handler: _AnalyticsHubService_DeleteSubscription_Handler, }, { MethodName: "GetIamPolicy", Handler: _AnalyticsHubService_GetIamPolicy_Handler, }, { MethodName: "SetIamPolicy", Handler: _AnalyticsHubService_SetIamPolicy_Handler, }, { MethodName: "TestIamPermissions", Handler: _AnalyticsHubService_TestIamPermissions_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "google/cloud/bigquery/analyticshub/v1/analyticshub.proto", }