...

Source file src/google.golang.org/genproto/googleapis/cloud/vision/v1p3beta1/product_search_service.pb.go

Documentation: google.golang.org/genproto/googleapis/cloud/vision/v1p3beta1

     1  // Copyright 2019 Google LLC.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  //
    15  
    16  // Code generated by protoc-gen-go. DO NOT EDIT.
    17  // versions:
    18  // 	protoc-gen-go v1.26.0
    19  // 	protoc        v3.12.2
    20  // source: google/cloud/vision/v1p3beta1/product_search_service.proto
    21  
    22  package vision
    23  
    24  import (
    25  	context "context"
    26  	reflect "reflect"
    27  	sync "sync"
    28  
    29  	_ "google.golang.org/genproto/googleapis/api/annotations"
    30  	longrunning "google.golang.org/genproto/googleapis/longrunning"
    31  	status "google.golang.org/genproto/googleapis/rpc/status"
    32  	grpc "google.golang.org/grpc"
    33  	codes "google.golang.org/grpc/codes"
    34  	status1 "google.golang.org/grpc/status"
    35  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    36  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    37  	emptypb "google.golang.org/protobuf/types/known/emptypb"
    38  	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    39  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    40  )
    41  
    42  const (
    43  	// Verify that this generated code is sufficiently up-to-date.
    44  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    45  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    46  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    47  )
    48  
    49  // Enumerates the possible states that the batch request can be in.
    50  type BatchOperationMetadata_State int32
    51  
    52  const (
    53  	// Invalid.
    54  	BatchOperationMetadata_STATE_UNSPECIFIED BatchOperationMetadata_State = 0
    55  	// Request is actively being processed.
    56  	BatchOperationMetadata_PROCESSING BatchOperationMetadata_State = 1
    57  	// The request is done and at least one item has been successfully
    58  	// processed.
    59  	BatchOperationMetadata_SUCCESSFUL BatchOperationMetadata_State = 2
    60  	// The request is done and no item has been successfully processed.
    61  	BatchOperationMetadata_FAILED BatchOperationMetadata_State = 3
    62  	// The request is done after the longrunning.Operations.CancelOperation has
    63  	// been called by the user.  Any records that were processed before the
    64  	// cancel command are output as specified in the request.
    65  	BatchOperationMetadata_CANCELLED BatchOperationMetadata_State = 4
    66  )
    67  
    68  // Enum value maps for BatchOperationMetadata_State.
    69  var (
    70  	BatchOperationMetadata_State_name = map[int32]string{
    71  		0: "STATE_UNSPECIFIED",
    72  		1: "PROCESSING",
    73  		2: "SUCCESSFUL",
    74  		3: "FAILED",
    75  		4: "CANCELLED",
    76  	}
    77  	BatchOperationMetadata_State_value = map[string]int32{
    78  		"STATE_UNSPECIFIED": 0,
    79  		"PROCESSING":        1,
    80  		"SUCCESSFUL":        2,
    81  		"FAILED":            3,
    82  		"CANCELLED":         4,
    83  	}
    84  )
    85  
    86  func (x BatchOperationMetadata_State) Enum() *BatchOperationMetadata_State {
    87  	p := new(BatchOperationMetadata_State)
    88  	*p = x
    89  	return p
    90  }
    91  
    92  func (x BatchOperationMetadata_State) String() string {
    93  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    94  }
    95  
    96  func (BatchOperationMetadata_State) Descriptor() protoreflect.EnumDescriptor {
    97  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes[0].Descriptor()
    98  }
    99  
   100  func (BatchOperationMetadata_State) Type() protoreflect.EnumType {
   101  	return &file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes[0]
   102  }
   103  
   104  func (x BatchOperationMetadata_State) Number() protoreflect.EnumNumber {
   105  	return protoreflect.EnumNumber(x)
   106  }
   107  
   108  // Deprecated: Use BatchOperationMetadata_State.Descriptor instead.
   109  func (BatchOperationMetadata_State) EnumDescriptor() ([]byte, []int) {
   110  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{28, 0}
   111  }
   112  
   113  // A Product contains ReferenceImages.
   114  type Product struct {
   115  	state         protoimpl.MessageState
   116  	sizeCache     protoimpl.SizeCache
   117  	unknownFields protoimpl.UnknownFields
   118  
   119  	// The resource name of the product.
   120  	//
   121  	// Format is:
   122  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`.
   123  	//
   124  	// This field is ignored when creating a product.
   125  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   126  	// The user-provided name for this Product. Must not be empty. Must be at most
   127  	// 4096 characters long.
   128  	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
   129  	// User-provided metadata to be stored with this product. Must be at most 4096
   130  	// characters long.
   131  	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
   132  	// Immutable. The category for the product identified by the reference image. This should
   133  	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy categories
   134  	// "homegoods", "apparel", and "toys" are still supported, but these should
   135  	// not be used for new products.
   136  	ProductCategory string `protobuf:"bytes,4,opt,name=product_category,json=productCategory,proto3" json:"product_category,omitempty"`
   137  	// Key-value pairs that can be attached to a product. At query time,
   138  	// constraints can be specified based on the product_labels.
   139  	//
   140  	// Note that integer values can be provided as strings, e.g. "1199". Only
   141  	// strings with integer values can match a range-based restriction which is
   142  	// to be supported soon.
   143  	//
   144  	// Multiple values can be assigned to the same key. One product may have up to
   145  	// 100 product_labels.
   146  	ProductLabels []*Product_KeyValue `protobuf:"bytes,5,rep,name=product_labels,json=productLabels,proto3" json:"product_labels,omitempty"`
   147  }
   148  
   149  func (x *Product) Reset() {
   150  	*x = Product{}
   151  	if protoimpl.UnsafeEnabled {
   152  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[0]
   153  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   154  		ms.StoreMessageInfo(mi)
   155  	}
   156  }
   157  
   158  func (x *Product) String() string {
   159  	return protoimpl.X.MessageStringOf(x)
   160  }
   161  
   162  func (*Product) ProtoMessage() {}
   163  
   164  func (x *Product) ProtoReflect() protoreflect.Message {
   165  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[0]
   166  	if protoimpl.UnsafeEnabled && x != nil {
   167  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   168  		if ms.LoadMessageInfo() == nil {
   169  			ms.StoreMessageInfo(mi)
   170  		}
   171  		return ms
   172  	}
   173  	return mi.MessageOf(x)
   174  }
   175  
   176  // Deprecated: Use Product.ProtoReflect.Descriptor instead.
   177  func (*Product) Descriptor() ([]byte, []int) {
   178  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{0}
   179  }
   180  
   181  func (x *Product) GetName() string {
   182  	if x != nil {
   183  		return x.Name
   184  	}
   185  	return ""
   186  }
   187  
   188  func (x *Product) GetDisplayName() string {
   189  	if x != nil {
   190  		return x.DisplayName
   191  	}
   192  	return ""
   193  }
   194  
   195  func (x *Product) GetDescription() string {
   196  	if x != nil {
   197  		return x.Description
   198  	}
   199  	return ""
   200  }
   201  
   202  func (x *Product) GetProductCategory() string {
   203  	if x != nil {
   204  		return x.ProductCategory
   205  	}
   206  	return ""
   207  }
   208  
   209  func (x *Product) GetProductLabels() []*Product_KeyValue {
   210  	if x != nil {
   211  		return x.ProductLabels
   212  	}
   213  	return nil
   214  }
   215  
   216  // A ProductSet contains Products. A ProductSet can contain a maximum of 1
   217  // million reference images. If the limit is exceeded, periodic indexing will
   218  // fail.
   219  type ProductSet struct {
   220  	state         protoimpl.MessageState
   221  	sizeCache     protoimpl.SizeCache
   222  	unknownFields protoimpl.UnknownFields
   223  
   224  	// The resource name of the ProductSet.
   225  	//
   226  	// Format is:
   227  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`.
   228  	//
   229  	// This field is ignored when creating a ProductSet.
   230  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   231  	// The user-provided name for this ProductSet. Must not be empty. Must be at
   232  	// most 4096 characters long.
   233  	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
   234  	// Output only. The time at which this ProductSet was last indexed. Query
   235  	// results will reflect all updates before this time. If this ProductSet has
   236  	// never been indexed, this field is 0.
   237  	//
   238  	// This field is ignored when creating a ProductSet.
   239  	IndexTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=index_time,json=indexTime,proto3" json:"index_time,omitempty"`
   240  	// Output only. If there was an error with indexing the product set, the field
   241  	// is populated.
   242  	//
   243  	// This field is ignored when creating a ProductSet.
   244  	IndexError *status.Status `protobuf:"bytes,4,opt,name=index_error,json=indexError,proto3" json:"index_error,omitempty"`
   245  }
   246  
   247  func (x *ProductSet) Reset() {
   248  	*x = ProductSet{}
   249  	if protoimpl.UnsafeEnabled {
   250  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[1]
   251  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   252  		ms.StoreMessageInfo(mi)
   253  	}
   254  }
   255  
   256  func (x *ProductSet) String() string {
   257  	return protoimpl.X.MessageStringOf(x)
   258  }
   259  
   260  func (*ProductSet) ProtoMessage() {}
   261  
   262  func (x *ProductSet) ProtoReflect() protoreflect.Message {
   263  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[1]
   264  	if protoimpl.UnsafeEnabled && x != nil {
   265  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   266  		if ms.LoadMessageInfo() == nil {
   267  			ms.StoreMessageInfo(mi)
   268  		}
   269  		return ms
   270  	}
   271  	return mi.MessageOf(x)
   272  }
   273  
   274  // Deprecated: Use ProductSet.ProtoReflect.Descriptor instead.
   275  func (*ProductSet) Descriptor() ([]byte, []int) {
   276  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{1}
   277  }
   278  
   279  func (x *ProductSet) GetName() string {
   280  	if x != nil {
   281  		return x.Name
   282  	}
   283  	return ""
   284  }
   285  
   286  func (x *ProductSet) GetDisplayName() string {
   287  	if x != nil {
   288  		return x.DisplayName
   289  	}
   290  	return ""
   291  }
   292  
   293  func (x *ProductSet) GetIndexTime() *timestamppb.Timestamp {
   294  	if x != nil {
   295  		return x.IndexTime
   296  	}
   297  	return nil
   298  }
   299  
   300  func (x *ProductSet) GetIndexError() *status.Status {
   301  	if x != nil {
   302  		return x.IndexError
   303  	}
   304  	return nil
   305  }
   306  
   307  // A `ReferenceImage` represents a product image and its associated metadata,
   308  // such as bounding boxes.
   309  type ReferenceImage struct {
   310  	state         protoimpl.MessageState
   311  	sizeCache     protoimpl.SizeCache
   312  	unknownFields protoimpl.UnknownFields
   313  
   314  	// The resource name of the reference image.
   315  	//
   316  	// Format is:
   317  	//
   318  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`.
   319  	//
   320  	// This field is ignored when creating a reference image.
   321  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   322  	// Required. The Google Cloud Storage URI of the reference image.
   323  	//
   324  	// The URI must start with `gs://`.
   325  	Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
   326  	// Optional. Bounding polygons around the areas of interest in the reference image.
   327  	// If this field is empty, the system will try to detect regions of
   328  	// interest. At most 10 bounding polygons will be used.
   329  	//
   330  	// The provided shape is converted into a non-rotated rectangle. Once
   331  	// converted, the small edge of the rectangle must be greater than or equal
   332  	// to 300 pixels. The aspect ratio must be 1:4 or less (i.e. 1:3 is ok; 1:5
   333  	// is not).
   334  	BoundingPolys []*BoundingPoly `protobuf:"bytes,3,rep,name=bounding_polys,json=boundingPolys,proto3" json:"bounding_polys,omitempty"`
   335  }
   336  
   337  func (x *ReferenceImage) Reset() {
   338  	*x = ReferenceImage{}
   339  	if protoimpl.UnsafeEnabled {
   340  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[2]
   341  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   342  		ms.StoreMessageInfo(mi)
   343  	}
   344  }
   345  
   346  func (x *ReferenceImage) String() string {
   347  	return protoimpl.X.MessageStringOf(x)
   348  }
   349  
   350  func (*ReferenceImage) ProtoMessage() {}
   351  
   352  func (x *ReferenceImage) ProtoReflect() protoreflect.Message {
   353  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[2]
   354  	if protoimpl.UnsafeEnabled && x != nil {
   355  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   356  		if ms.LoadMessageInfo() == nil {
   357  			ms.StoreMessageInfo(mi)
   358  		}
   359  		return ms
   360  	}
   361  	return mi.MessageOf(x)
   362  }
   363  
   364  // Deprecated: Use ReferenceImage.ProtoReflect.Descriptor instead.
   365  func (*ReferenceImage) Descriptor() ([]byte, []int) {
   366  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{2}
   367  }
   368  
   369  func (x *ReferenceImage) GetName() string {
   370  	if x != nil {
   371  		return x.Name
   372  	}
   373  	return ""
   374  }
   375  
   376  func (x *ReferenceImage) GetUri() string {
   377  	if x != nil {
   378  		return x.Uri
   379  	}
   380  	return ""
   381  }
   382  
   383  func (x *ReferenceImage) GetBoundingPolys() []*BoundingPoly {
   384  	if x != nil {
   385  		return x.BoundingPolys
   386  	}
   387  	return nil
   388  }
   389  
   390  // Request message for the `CreateProduct` method.
   391  type CreateProductRequest struct {
   392  	state         protoimpl.MessageState
   393  	sizeCache     protoimpl.SizeCache
   394  	unknownFields protoimpl.UnknownFields
   395  
   396  	// Required. The project in which the Product should be created.
   397  	//
   398  	// Format is
   399  	// `projects/PROJECT_ID/locations/LOC_ID`.
   400  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   401  	// Required. The product to create.
   402  	Product *Product `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
   403  	// A user-supplied resource id for this Product. If set, the server will
   404  	// attempt to use this value as the resource id. If it is already in use, an
   405  	// error is returned with code ALREADY_EXISTS. Must be at most 128 characters
   406  	// long. It cannot contain the character `/`.
   407  	ProductId string `protobuf:"bytes,3,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"`
   408  }
   409  
   410  func (x *CreateProductRequest) Reset() {
   411  	*x = CreateProductRequest{}
   412  	if protoimpl.UnsafeEnabled {
   413  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[3]
   414  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   415  		ms.StoreMessageInfo(mi)
   416  	}
   417  }
   418  
   419  func (x *CreateProductRequest) String() string {
   420  	return protoimpl.X.MessageStringOf(x)
   421  }
   422  
   423  func (*CreateProductRequest) ProtoMessage() {}
   424  
   425  func (x *CreateProductRequest) ProtoReflect() protoreflect.Message {
   426  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[3]
   427  	if protoimpl.UnsafeEnabled && x != nil {
   428  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   429  		if ms.LoadMessageInfo() == nil {
   430  			ms.StoreMessageInfo(mi)
   431  		}
   432  		return ms
   433  	}
   434  	return mi.MessageOf(x)
   435  }
   436  
   437  // Deprecated: Use CreateProductRequest.ProtoReflect.Descriptor instead.
   438  func (*CreateProductRequest) Descriptor() ([]byte, []int) {
   439  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{3}
   440  }
   441  
   442  func (x *CreateProductRequest) GetParent() string {
   443  	if x != nil {
   444  		return x.Parent
   445  	}
   446  	return ""
   447  }
   448  
   449  func (x *CreateProductRequest) GetProduct() *Product {
   450  	if x != nil {
   451  		return x.Product
   452  	}
   453  	return nil
   454  }
   455  
   456  func (x *CreateProductRequest) GetProductId() string {
   457  	if x != nil {
   458  		return x.ProductId
   459  	}
   460  	return ""
   461  }
   462  
   463  // Request message for the `ListProducts` method.
   464  type ListProductsRequest struct {
   465  	state         protoimpl.MessageState
   466  	sizeCache     protoimpl.SizeCache
   467  	unknownFields protoimpl.UnknownFields
   468  
   469  	// Required. The project OR ProductSet from which Products should be listed.
   470  	//
   471  	// Format:
   472  	// `projects/PROJECT_ID/locations/LOC_ID`
   473  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   474  	// The maximum number of items to return. Default 10, maximum 100.
   475  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   476  	// The next_page_token returned from a previous List request, if any.
   477  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   478  }
   479  
   480  func (x *ListProductsRequest) Reset() {
   481  	*x = ListProductsRequest{}
   482  	if protoimpl.UnsafeEnabled {
   483  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[4]
   484  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   485  		ms.StoreMessageInfo(mi)
   486  	}
   487  }
   488  
   489  func (x *ListProductsRequest) String() string {
   490  	return protoimpl.X.MessageStringOf(x)
   491  }
   492  
   493  func (*ListProductsRequest) ProtoMessage() {}
   494  
   495  func (x *ListProductsRequest) ProtoReflect() protoreflect.Message {
   496  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[4]
   497  	if protoimpl.UnsafeEnabled && x != nil {
   498  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   499  		if ms.LoadMessageInfo() == nil {
   500  			ms.StoreMessageInfo(mi)
   501  		}
   502  		return ms
   503  	}
   504  	return mi.MessageOf(x)
   505  }
   506  
   507  // Deprecated: Use ListProductsRequest.ProtoReflect.Descriptor instead.
   508  func (*ListProductsRequest) Descriptor() ([]byte, []int) {
   509  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{4}
   510  }
   511  
   512  func (x *ListProductsRequest) GetParent() string {
   513  	if x != nil {
   514  		return x.Parent
   515  	}
   516  	return ""
   517  }
   518  
   519  func (x *ListProductsRequest) GetPageSize() int32 {
   520  	if x != nil {
   521  		return x.PageSize
   522  	}
   523  	return 0
   524  }
   525  
   526  func (x *ListProductsRequest) GetPageToken() string {
   527  	if x != nil {
   528  		return x.PageToken
   529  	}
   530  	return ""
   531  }
   532  
   533  // Response message for the `ListProducts` method.
   534  type ListProductsResponse struct {
   535  	state         protoimpl.MessageState
   536  	sizeCache     protoimpl.SizeCache
   537  	unknownFields protoimpl.UnknownFields
   538  
   539  	// List of products.
   540  	Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"`
   541  	// Token to retrieve the next page of results, or empty if there are no more
   542  	// results in the list.
   543  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   544  }
   545  
   546  func (x *ListProductsResponse) Reset() {
   547  	*x = ListProductsResponse{}
   548  	if protoimpl.UnsafeEnabled {
   549  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[5]
   550  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   551  		ms.StoreMessageInfo(mi)
   552  	}
   553  }
   554  
   555  func (x *ListProductsResponse) String() string {
   556  	return protoimpl.X.MessageStringOf(x)
   557  }
   558  
   559  func (*ListProductsResponse) ProtoMessage() {}
   560  
   561  func (x *ListProductsResponse) ProtoReflect() protoreflect.Message {
   562  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[5]
   563  	if protoimpl.UnsafeEnabled && x != nil {
   564  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   565  		if ms.LoadMessageInfo() == nil {
   566  			ms.StoreMessageInfo(mi)
   567  		}
   568  		return ms
   569  	}
   570  	return mi.MessageOf(x)
   571  }
   572  
   573  // Deprecated: Use ListProductsResponse.ProtoReflect.Descriptor instead.
   574  func (*ListProductsResponse) Descriptor() ([]byte, []int) {
   575  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{5}
   576  }
   577  
   578  func (x *ListProductsResponse) GetProducts() []*Product {
   579  	if x != nil {
   580  		return x.Products
   581  	}
   582  	return nil
   583  }
   584  
   585  func (x *ListProductsResponse) GetNextPageToken() string {
   586  	if x != nil {
   587  		return x.NextPageToken
   588  	}
   589  	return ""
   590  }
   591  
   592  // Request message for the `GetProduct` method.
   593  type GetProductRequest struct {
   594  	state         protoimpl.MessageState
   595  	sizeCache     protoimpl.SizeCache
   596  	unknownFields protoimpl.UnknownFields
   597  
   598  	// Required. Resource name of the Product to get.
   599  	//
   600  	// Format is:
   601  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
   602  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   603  }
   604  
   605  func (x *GetProductRequest) Reset() {
   606  	*x = GetProductRequest{}
   607  	if protoimpl.UnsafeEnabled {
   608  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[6]
   609  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   610  		ms.StoreMessageInfo(mi)
   611  	}
   612  }
   613  
   614  func (x *GetProductRequest) String() string {
   615  	return protoimpl.X.MessageStringOf(x)
   616  }
   617  
   618  func (*GetProductRequest) ProtoMessage() {}
   619  
   620  func (x *GetProductRequest) ProtoReflect() protoreflect.Message {
   621  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[6]
   622  	if protoimpl.UnsafeEnabled && x != nil {
   623  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   624  		if ms.LoadMessageInfo() == nil {
   625  			ms.StoreMessageInfo(mi)
   626  		}
   627  		return ms
   628  	}
   629  	return mi.MessageOf(x)
   630  }
   631  
   632  // Deprecated: Use GetProductRequest.ProtoReflect.Descriptor instead.
   633  func (*GetProductRequest) Descriptor() ([]byte, []int) {
   634  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{6}
   635  }
   636  
   637  func (x *GetProductRequest) GetName() string {
   638  	if x != nil {
   639  		return x.Name
   640  	}
   641  	return ""
   642  }
   643  
   644  // Request message for the `UpdateProduct` method.
   645  type UpdateProductRequest struct {
   646  	state         protoimpl.MessageState
   647  	sizeCache     protoimpl.SizeCache
   648  	unknownFields protoimpl.UnknownFields
   649  
   650  	// Required. The Product resource which replaces the one on the server.
   651  	// product.name is immutable.
   652  	Product *Product `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"`
   653  	// The [FieldMask][google.protobuf.FieldMask] that specifies which fields
   654  	// to update.
   655  	// If update_mask isn't specified, all mutable fields are to be updated.
   656  	// Valid mask paths include `product_labels`, `display_name`, and
   657  	// `description`.
   658  	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
   659  }
   660  
   661  func (x *UpdateProductRequest) Reset() {
   662  	*x = UpdateProductRequest{}
   663  	if protoimpl.UnsafeEnabled {
   664  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[7]
   665  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   666  		ms.StoreMessageInfo(mi)
   667  	}
   668  }
   669  
   670  func (x *UpdateProductRequest) String() string {
   671  	return protoimpl.X.MessageStringOf(x)
   672  }
   673  
   674  func (*UpdateProductRequest) ProtoMessage() {}
   675  
   676  func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message {
   677  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[7]
   678  	if protoimpl.UnsafeEnabled && x != nil {
   679  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   680  		if ms.LoadMessageInfo() == nil {
   681  			ms.StoreMessageInfo(mi)
   682  		}
   683  		return ms
   684  	}
   685  	return mi.MessageOf(x)
   686  }
   687  
   688  // Deprecated: Use UpdateProductRequest.ProtoReflect.Descriptor instead.
   689  func (*UpdateProductRequest) Descriptor() ([]byte, []int) {
   690  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{7}
   691  }
   692  
   693  func (x *UpdateProductRequest) GetProduct() *Product {
   694  	if x != nil {
   695  		return x.Product
   696  	}
   697  	return nil
   698  }
   699  
   700  func (x *UpdateProductRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
   701  	if x != nil {
   702  		return x.UpdateMask
   703  	}
   704  	return nil
   705  }
   706  
   707  // Request message for the `DeleteProduct` method.
   708  type DeleteProductRequest struct {
   709  	state         protoimpl.MessageState
   710  	sizeCache     protoimpl.SizeCache
   711  	unknownFields protoimpl.UnknownFields
   712  
   713  	// Required. Resource name of product to delete.
   714  	//
   715  	// Format is:
   716  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
   717  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   718  }
   719  
   720  func (x *DeleteProductRequest) Reset() {
   721  	*x = DeleteProductRequest{}
   722  	if protoimpl.UnsafeEnabled {
   723  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[8]
   724  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   725  		ms.StoreMessageInfo(mi)
   726  	}
   727  }
   728  
   729  func (x *DeleteProductRequest) String() string {
   730  	return protoimpl.X.MessageStringOf(x)
   731  }
   732  
   733  func (*DeleteProductRequest) ProtoMessage() {}
   734  
   735  func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message {
   736  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[8]
   737  	if protoimpl.UnsafeEnabled && x != nil {
   738  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   739  		if ms.LoadMessageInfo() == nil {
   740  			ms.StoreMessageInfo(mi)
   741  		}
   742  		return ms
   743  	}
   744  	return mi.MessageOf(x)
   745  }
   746  
   747  // Deprecated: Use DeleteProductRequest.ProtoReflect.Descriptor instead.
   748  func (*DeleteProductRequest) Descriptor() ([]byte, []int) {
   749  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{8}
   750  }
   751  
   752  func (x *DeleteProductRequest) GetName() string {
   753  	if x != nil {
   754  		return x.Name
   755  	}
   756  	return ""
   757  }
   758  
   759  // Request message for the `CreateProductSet` method.
   760  type CreateProductSetRequest struct {
   761  	state         protoimpl.MessageState
   762  	sizeCache     protoimpl.SizeCache
   763  	unknownFields protoimpl.UnknownFields
   764  
   765  	// Required. The project in which the ProductSet should be created.
   766  	//
   767  	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
   768  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   769  	// Required. The ProductSet to create.
   770  	ProductSet *ProductSet `protobuf:"bytes,2,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"`
   771  	// A user-supplied resource id for this ProductSet. If set, the server will
   772  	// attempt to use this value as the resource id. If it is already in use, an
   773  	// error is returned with code ALREADY_EXISTS. Must be at most 128 characters
   774  	// long. It cannot contain the character `/`.
   775  	ProductSetId string `protobuf:"bytes,3,opt,name=product_set_id,json=productSetId,proto3" json:"product_set_id,omitempty"`
   776  }
   777  
   778  func (x *CreateProductSetRequest) Reset() {
   779  	*x = CreateProductSetRequest{}
   780  	if protoimpl.UnsafeEnabled {
   781  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[9]
   782  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   783  		ms.StoreMessageInfo(mi)
   784  	}
   785  }
   786  
   787  func (x *CreateProductSetRequest) String() string {
   788  	return protoimpl.X.MessageStringOf(x)
   789  }
   790  
   791  func (*CreateProductSetRequest) ProtoMessage() {}
   792  
   793  func (x *CreateProductSetRequest) ProtoReflect() protoreflect.Message {
   794  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[9]
   795  	if protoimpl.UnsafeEnabled && x != nil {
   796  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   797  		if ms.LoadMessageInfo() == nil {
   798  			ms.StoreMessageInfo(mi)
   799  		}
   800  		return ms
   801  	}
   802  	return mi.MessageOf(x)
   803  }
   804  
   805  // Deprecated: Use CreateProductSetRequest.ProtoReflect.Descriptor instead.
   806  func (*CreateProductSetRequest) Descriptor() ([]byte, []int) {
   807  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{9}
   808  }
   809  
   810  func (x *CreateProductSetRequest) GetParent() string {
   811  	if x != nil {
   812  		return x.Parent
   813  	}
   814  	return ""
   815  }
   816  
   817  func (x *CreateProductSetRequest) GetProductSet() *ProductSet {
   818  	if x != nil {
   819  		return x.ProductSet
   820  	}
   821  	return nil
   822  }
   823  
   824  func (x *CreateProductSetRequest) GetProductSetId() string {
   825  	if x != nil {
   826  		return x.ProductSetId
   827  	}
   828  	return ""
   829  }
   830  
   831  // Request message for the `ListProductSets` method.
   832  type ListProductSetsRequest struct {
   833  	state         protoimpl.MessageState
   834  	sizeCache     protoimpl.SizeCache
   835  	unknownFields protoimpl.UnknownFields
   836  
   837  	// Required. The project from which ProductSets should be listed.
   838  	//
   839  	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
   840  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   841  	// The maximum number of items to return. Default 10, maximum 100.
   842  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   843  	// The next_page_token returned from a previous List request, if any.
   844  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   845  }
   846  
   847  func (x *ListProductSetsRequest) Reset() {
   848  	*x = ListProductSetsRequest{}
   849  	if protoimpl.UnsafeEnabled {
   850  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[10]
   851  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   852  		ms.StoreMessageInfo(mi)
   853  	}
   854  }
   855  
   856  func (x *ListProductSetsRequest) String() string {
   857  	return protoimpl.X.MessageStringOf(x)
   858  }
   859  
   860  func (*ListProductSetsRequest) ProtoMessage() {}
   861  
   862  func (x *ListProductSetsRequest) ProtoReflect() protoreflect.Message {
   863  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[10]
   864  	if protoimpl.UnsafeEnabled && x != nil {
   865  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   866  		if ms.LoadMessageInfo() == nil {
   867  			ms.StoreMessageInfo(mi)
   868  		}
   869  		return ms
   870  	}
   871  	return mi.MessageOf(x)
   872  }
   873  
   874  // Deprecated: Use ListProductSetsRequest.ProtoReflect.Descriptor instead.
   875  func (*ListProductSetsRequest) Descriptor() ([]byte, []int) {
   876  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{10}
   877  }
   878  
   879  func (x *ListProductSetsRequest) GetParent() string {
   880  	if x != nil {
   881  		return x.Parent
   882  	}
   883  	return ""
   884  }
   885  
   886  func (x *ListProductSetsRequest) GetPageSize() int32 {
   887  	if x != nil {
   888  		return x.PageSize
   889  	}
   890  	return 0
   891  }
   892  
   893  func (x *ListProductSetsRequest) GetPageToken() string {
   894  	if x != nil {
   895  		return x.PageToken
   896  	}
   897  	return ""
   898  }
   899  
   900  // Response message for the `ListProductSets` method.
   901  type ListProductSetsResponse struct {
   902  	state         protoimpl.MessageState
   903  	sizeCache     protoimpl.SizeCache
   904  	unknownFields protoimpl.UnknownFields
   905  
   906  	// List of ProductSets.
   907  	ProductSets []*ProductSet `protobuf:"bytes,1,rep,name=product_sets,json=productSets,proto3" json:"product_sets,omitempty"`
   908  	// Token to retrieve the next page of results, or empty if there are no more
   909  	// results in the list.
   910  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   911  }
   912  
   913  func (x *ListProductSetsResponse) Reset() {
   914  	*x = ListProductSetsResponse{}
   915  	if protoimpl.UnsafeEnabled {
   916  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[11]
   917  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   918  		ms.StoreMessageInfo(mi)
   919  	}
   920  }
   921  
   922  func (x *ListProductSetsResponse) String() string {
   923  	return protoimpl.X.MessageStringOf(x)
   924  }
   925  
   926  func (*ListProductSetsResponse) ProtoMessage() {}
   927  
   928  func (x *ListProductSetsResponse) ProtoReflect() protoreflect.Message {
   929  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[11]
   930  	if protoimpl.UnsafeEnabled && x != nil {
   931  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   932  		if ms.LoadMessageInfo() == nil {
   933  			ms.StoreMessageInfo(mi)
   934  		}
   935  		return ms
   936  	}
   937  	return mi.MessageOf(x)
   938  }
   939  
   940  // Deprecated: Use ListProductSetsResponse.ProtoReflect.Descriptor instead.
   941  func (*ListProductSetsResponse) Descriptor() ([]byte, []int) {
   942  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{11}
   943  }
   944  
   945  func (x *ListProductSetsResponse) GetProductSets() []*ProductSet {
   946  	if x != nil {
   947  		return x.ProductSets
   948  	}
   949  	return nil
   950  }
   951  
   952  func (x *ListProductSetsResponse) GetNextPageToken() string {
   953  	if x != nil {
   954  		return x.NextPageToken
   955  	}
   956  	return ""
   957  }
   958  
   959  // Request message for the `GetProductSet` method.
   960  type GetProductSetRequest struct {
   961  	state         protoimpl.MessageState
   962  	sizeCache     protoimpl.SizeCache
   963  	unknownFields protoimpl.UnknownFields
   964  
   965  	// Required. Resource name of the ProductSet to get.
   966  	//
   967  	// Format is:
   968  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
   969  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   970  }
   971  
   972  func (x *GetProductSetRequest) Reset() {
   973  	*x = GetProductSetRequest{}
   974  	if protoimpl.UnsafeEnabled {
   975  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[12]
   976  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   977  		ms.StoreMessageInfo(mi)
   978  	}
   979  }
   980  
   981  func (x *GetProductSetRequest) String() string {
   982  	return protoimpl.X.MessageStringOf(x)
   983  }
   984  
   985  func (*GetProductSetRequest) ProtoMessage() {}
   986  
   987  func (x *GetProductSetRequest) ProtoReflect() protoreflect.Message {
   988  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[12]
   989  	if protoimpl.UnsafeEnabled && x != nil {
   990  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   991  		if ms.LoadMessageInfo() == nil {
   992  			ms.StoreMessageInfo(mi)
   993  		}
   994  		return ms
   995  	}
   996  	return mi.MessageOf(x)
   997  }
   998  
   999  // Deprecated: Use GetProductSetRequest.ProtoReflect.Descriptor instead.
  1000  func (*GetProductSetRequest) Descriptor() ([]byte, []int) {
  1001  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{12}
  1002  }
  1003  
  1004  func (x *GetProductSetRequest) GetName() string {
  1005  	if x != nil {
  1006  		return x.Name
  1007  	}
  1008  	return ""
  1009  }
  1010  
  1011  // Request message for the `UpdateProductSet` method.
  1012  type UpdateProductSetRequest struct {
  1013  	state         protoimpl.MessageState
  1014  	sizeCache     protoimpl.SizeCache
  1015  	unknownFields protoimpl.UnknownFields
  1016  
  1017  	// Required. The ProductSet resource which replaces the one on the server.
  1018  	ProductSet *ProductSet `protobuf:"bytes,1,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"`
  1019  	// The [FieldMask][google.protobuf.FieldMask] that specifies which fields to
  1020  	// update.
  1021  	// If update_mask isn't specified, all mutable fields are to be updated.
  1022  	// Valid mask path is `display_name`.
  1023  	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
  1024  }
  1025  
  1026  func (x *UpdateProductSetRequest) Reset() {
  1027  	*x = UpdateProductSetRequest{}
  1028  	if protoimpl.UnsafeEnabled {
  1029  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[13]
  1030  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1031  		ms.StoreMessageInfo(mi)
  1032  	}
  1033  }
  1034  
  1035  func (x *UpdateProductSetRequest) String() string {
  1036  	return protoimpl.X.MessageStringOf(x)
  1037  }
  1038  
  1039  func (*UpdateProductSetRequest) ProtoMessage() {}
  1040  
  1041  func (x *UpdateProductSetRequest) ProtoReflect() protoreflect.Message {
  1042  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[13]
  1043  	if protoimpl.UnsafeEnabled && x != nil {
  1044  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1045  		if ms.LoadMessageInfo() == nil {
  1046  			ms.StoreMessageInfo(mi)
  1047  		}
  1048  		return ms
  1049  	}
  1050  	return mi.MessageOf(x)
  1051  }
  1052  
  1053  // Deprecated: Use UpdateProductSetRequest.ProtoReflect.Descriptor instead.
  1054  func (*UpdateProductSetRequest) Descriptor() ([]byte, []int) {
  1055  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{13}
  1056  }
  1057  
  1058  func (x *UpdateProductSetRequest) GetProductSet() *ProductSet {
  1059  	if x != nil {
  1060  		return x.ProductSet
  1061  	}
  1062  	return nil
  1063  }
  1064  
  1065  func (x *UpdateProductSetRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
  1066  	if x != nil {
  1067  		return x.UpdateMask
  1068  	}
  1069  	return nil
  1070  }
  1071  
  1072  // Request message for the `DeleteProductSet` method.
  1073  type DeleteProductSetRequest struct {
  1074  	state         protoimpl.MessageState
  1075  	sizeCache     protoimpl.SizeCache
  1076  	unknownFields protoimpl.UnknownFields
  1077  
  1078  	// Required. Resource name of the ProductSet to delete.
  1079  	//
  1080  	// Format is:
  1081  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
  1082  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1083  }
  1084  
  1085  func (x *DeleteProductSetRequest) Reset() {
  1086  	*x = DeleteProductSetRequest{}
  1087  	if protoimpl.UnsafeEnabled {
  1088  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[14]
  1089  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1090  		ms.StoreMessageInfo(mi)
  1091  	}
  1092  }
  1093  
  1094  func (x *DeleteProductSetRequest) String() string {
  1095  	return protoimpl.X.MessageStringOf(x)
  1096  }
  1097  
  1098  func (*DeleteProductSetRequest) ProtoMessage() {}
  1099  
  1100  func (x *DeleteProductSetRequest) ProtoReflect() protoreflect.Message {
  1101  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[14]
  1102  	if protoimpl.UnsafeEnabled && x != nil {
  1103  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1104  		if ms.LoadMessageInfo() == nil {
  1105  			ms.StoreMessageInfo(mi)
  1106  		}
  1107  		return ms
  1108  	}
  1109  	return mi.MessageOf(x)
  1110  }
  1111  
  1112  // Deprecated: Use DeleteProductSetRequest.ProtoReflect.Descriptor instead.
  1113  func (*DeleteProductSetRequest) Descriptor() ([]byte, []int) {
  1114  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{14}
  1115  }
  1116  
  1117  func (x *DeleteProductSetRequest) GetName() string {
  1118  	if x != nil {
  1119  		return x.Name
  1120  	}
  1121  	return ""
  1122  }
  1123  
  1124  // Request message for the `CreateReferenceImage` method.
  1125  type CreateReferenceImageRequest struct {
  1126  	state         protoimpl.MessageState
  1127  	sizeCache     protoimpl.SizeCache
  1128  	unknownFields protoimpl.UnknownFields
  1129  
  1130  	// Required. Resource name of the product in which to create the reference image.
  1131  	//
  1132  	// Format is
  1133  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`.
  1134  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
  1135  	// Required. The reference image to create.
  1136  	// If an image ID is specified, it is ignored.
  1137  	ReferenceImage *ReferenceImage `protobuf:"bytes,2,opt,name=reference_image,json=referenceImage,proto3" json:"reference_image,omitempty"`
  1138  	// A user-supplied resource id for the ReferenceImage to be added. If set,
  1139  	// the server will attempt to use this value as the resource id. If it is
  1140  	// already in use, an error is returned with code ALREADY_EXISTS. Must be at
  1141  	// most 128 characters long. It cannot contain the character `/`.
  1142  	ReferenceImageId string `protobuf:"bytes,3,opt,name=reference_image_id,json=referenceImageId,proto3" json:"reference_image_id,omitempty"`
  1143  }
  1144  
  1145  func (x *CreateReferenceImageRequest) Reset() {
  1146  	*x = CreateReferenceImageRequest{}
  1147  	if protoimpl.UnsafeEnabled {
  1148  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[15]
  1149  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1150  		ms.StoreMessageInfo(mi)
  1151  	}
  1152  }
  1153  
  1154  func (x *CreateReferenceImageRequest) String() string {
  1155  	return protoimpl.X.MessageStringOf(x)
  1156  }
  1157  
  1158  func (*CreateReferenceImageRequest) ProtoMessage() {}
  1159  
  1160  func (x *CreateReferenceImageRequest) ProtoReflect() protoreflect.Message {
  1161  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[15]
  1162  	if protoimpl.UnsafeEnabled && x != nil {
  1163  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1164  		if ms.LoadMessageInfo() == nil {
  1165  			ms.StoreMessageInfo(mi)
  1166  		}
  1167  		return ms
  1168  	}
  1169  	return mi.MessageOf(x)
  1170  }
  1171  
  1172  // Deprecated: Use CreateReferenceImageRequest.ProtoReflect.Descriptor instead.
  1173  func (*CreateReferenceImageRequest) Descriptor() ([]byte, []int) {
  1174  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{15}
  1175  }
  1176  
  1177  func (x *CreateReferenceImageRequest) GetParent() string {
  1178  	if x != nil {
  1179  		return x.Parent
  1180  	}
  1181  	return ""
  1182  }
  1183  
  1184  func (x *CreateReferenceImageRequest) GetReferenceImage() *ReferenceImage {
  1185  	if x != nil {
  1186  		return x.ReferenceImage
  1187  	}
  1188  	return nil
  1189  }
  1190  
  1191  func (x *CreateReferenceImageRequest) GetReferenceImageId() string {
  1192  	if x != nil {
  1193  		return x.ReferenceImageId
  1194  	}
  1195  	return ""
  1196  }
  1197  
  1198  // Request message for the `ListReferenceImages` method.
  1199  type ListReferenceImagesRequest struct {
  1200  	state         protoimpl.MessageState
  1201  	sizeCache     protoimpl.SizeCache
  1202  	unknownFields protoimpl.UnknownFields
  1203  
  1204  	// Required. Resource name of the product containing the reference images.
  1205  	//
  1206  	// Format is
  1207  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`.
  1208  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
  1209  	// The maximum number of items to return. Default 10, maximum 100.
  1210  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
  1211  	// A token identifying a page of results to be returned. This is the value
  1212  	// of `nextPageToken` returned in a previous reference image list request.
  1213  	//
  1214  	// Defaults to the first page if not specified.
  1215  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
  1216  }
  1217  
  1218  func (x *ListReferenceImagesRequest) Reset() {
  1219  	*x = ListReferenceImagesRequest{}
  1220  	if protoimpl.UnsafeEnabled {
  1221  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[16]
  1222  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1223  		ms.StoreMessageInfo(mi)
  1224  	}
  1225  }
  1226  
  1227  func (x *ListReferenceImagesRequest) String() string {
  1228  	return protoimpl.X.MessageStringOf(x)
  1229  }
  1230  
  1231  func (*ListReferenceImagesRequest) ProtoMessage() {}
  1232  
  1233  func (x *ListReferenceImagesRequest) ProtoReflect() protoreflect.Message {
  1234  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[16]
  1235  	if protoimpl.UnsafeEnabled && x != nil {
  1236  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1237  		if ms.LoadMessageInfo() == nil {
  1238  			ms.StoreMessageInfo(mi)
  1239  		}
  1240  		return ms
  1241  	}
  1242  	return mi.MessageOf(x)
  1243  }
  1244  
  1245  // Deprecated: Use ListReferenceImagesRequest.ProtoReflect.Descriptor instead.
  1246  func (*ListReferenceImagesRequest) Descriptor() ([]byte, []int) {
  1247  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{16}
  1248  }
  1249  
  1250  func (x *ListReferenceImagesRequest) GetParent() string {
  1251  	if x != nil {
  1252  		return x.Parent
  1253  	}
  1254  	return ""
  1255  }
  1256  
  1257  func (x *ListReferenceImagesRequest) GetPageSize() int32 {
  1258  	if x != nil {
  1259  		return x.PageSize
  1260  	}
  1261  	return 0
  1262  }
  1263  
  1264  func (x *ListReferenceImagesRequest) GetPageToken() string {
  1265  	if x != nil {
  1266  		return x.PageToken
  1267  	}
  1268  	return ""
  1269  }
  1270  
  1271  // Response message for the `ListReferenceImages` method.
  1272  type ListReferenceImagesResponse struct {
  1273  	state         protoimpl.MessageState
  1274  	sizeCache     protoimpl.SizeCache
  1275  	unknownFields protoimpl.UnknownFields
  1276  
  1277  	// The list of reference images.
  1278  	ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"`
  1279  	// The maximum number of items to return. Default 10, maximum 100.
  1280  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
  1281  	// The next_page_token returned from a previous List request, if any.
  1282  	NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
  1283  }
  1284  
  1285  func (x *ListReferenceImagesResponse) Reset() {
  1286  	*x = ListReferenceImagesResponse{}
  1287  	if protoimpl.UnsafeEnabled {
  1288  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[17]
  1289  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1290  		ms.StoreMessageInfo(mi)
  1291  	}
  1292  }
  1293  
  1294  func (x *ListReferenceImagesResponse) String() string {
  1295  	return protoimpl.X.MessageStringOf(x)
  1296  }
  1297  
  1298  func (*ListReferenceImagesResponse) ProtoMessage() {}
  1299  
  1300  func (x *ListReferenceImagesResponse) ProtoReflect() protoreflect.Message {
  1301  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[17]
  1302  	if protoimpl.UnsafeEnabled && x != nil {
  1303  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1304  		if ms.LoadMessageInfo() == nil {
  1305  			ms.StoreMessageInfo(mi)
  1306  		}
  1307  		return ms
  1308  	}
  1309  	return mi.MessageOf(x)
  1310  }
  1311  
  1312  // Deprecated: Use ListReferenceImagesResponse.ProtoReflect.Descriptor instead.
  1313  func (*ListReferenceImagesResponse) Descriptor() ([]byte, []int) {
  1314  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{17}
  1315  }
  1316  
  1317  func (x *ListReferenceImagesResponse) GetReferenceImages() []*ReferenceImage {
  1318  	if x != nil {
  1319  		return x.ReferenceImages
  1320  	}
  1321  	return nil
  1322  }
  1323  
  1324  func (x *ListReferenceImagesResponse) GetPageSize() int32 {
  1325  	if x != nil {
  1326  		return x.PageSize
  1327  	}
  1328  	return 0
  1329  }
  1330  
  1331  func (x *ListReferenceImagesResponse) GetNextPageToken() string {
  1332  	if x != nil {
  1333  		return x.NextPageToken
  1334  	}
  1335  	return ""
  1336  }
  1337  
  1338  // Request message for the `GetReferenceImage` method.
  1339  type GetReferenceImageRequest struct {
  1340  	state         protoimpl.MessageState
  1341  	sizeCache     protoimpl.SizeCache
  1342  	unknownFields protoimpl.UnknownFields
  1343  
  1344  	// Required. The resource name of the ReferenceImage to get.
  1345  	//
  1346  	// Format is:
  1347  	//
  1348  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`.
  1349  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1350  }
  1351  
  1352  func (x *GetReferenceImageRequest) Reset() {
  1353  	*x = GetReferenceImageRequest{}
  1354  	if protoimpl.UnsafeEnabled {
  1355  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[18]
  1356  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1357  		ms.StoreMessageInfo(mi)
  1358  	}
  1359  }
  1360  
  1361  func (x *GetReferenceImageRequest) String() string {
  1362  	return protoimpl.X.MessageStringOf(x)
  1363  }
  1364  
  1365  func (*GetReferenceImageRequest) ProtoMessage() {}
  1366  
  1367  func (x *GetReferenceImageRequest) ProtoReflect() protoreflect.Message {
  1368  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[18]
  1369  	if protoimpl.UnsafeEnabled && x != nil {
  1370  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1371  		if ms.LoadMessageInfo() == nil {
  1372  			ms.StoreMessageInfo(mi)
  1373  		}
  1374  		return ms
  1375  	}
  1376  	return mi.MessageOf(x)
  1377  }
  1378  
  1379  // Deprecated: Use GetReferenceImageRequest.ProtoReflect.Descriptor instead.
  1380  func (*GetReferenceImageRequest) Descriptor() ([]byte, []int) {
  1381  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{18}
  1382  }
  1383  
  1384  func (x *GetReferenceImageRequest) GetName() string {
  1385  	if x != nil {
  1386  		return x.Name
  1387  	}
  1388  	return ""
  1389  }
  1390  
  1391  // Request message for the `DeleteReferenceImage` method.
  1392  type DeleteReferenceImageRequest struct {
  1393  	state         protoimpl.MessageState
  1394  	sizeCache     protoimpl.SizeCache
  1395  	unknownFields protoimpl.UnknownFields
  1396  
  1397  	// Required. The resource name of the reference image to delete.
  1398  	//
  1399  	// Format is:
  1400  	//
  1401  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`
  1402  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1403  }
  1404  
  1405  func (x *DeleteReferenceImageRequest) Reset() {
  1406  	*x = DeleteReferenceImageRequest{}
  1407  	if protoimpl.UnsafeEnabled {
  1408  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[19]
  1409  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1410  		ms.StoreMessageInfo(mi)
  1411  	}
  1412  }
  1413  
  1414  func (x *DeleteReferenceImageRequest) String() string {
  1415  	return protoimpl.X.MessageStringOf(x)
  1416  }
  1417  
  1418  func (*DeleteReferenceImageRequest) ProtoMessage() {}
  1419  
  1420  func (x *DeleteReferenceImageRequest) ProtoReflect() protoreflect.Message {
  1421  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[19]
  1422  	if protoimpl.UnsafeEnabled && x != nil {
  1423  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1424  		if ms.LoadMessageInfo() == nil {
  1425  			ms.StoreMessageInfo(mi)
  1426  		}
  1427  		return ms
  1428  	}
  1429  	return mi.MessageOf(x)
  1430  }
  1431  
  1432  // Deprecated: Use DeleteReferenceImageRequest.ProtoReflect.Descriptor instead.
  1433  func (*DeleteReferenceImageRequest) Descriptor() ([]byte, []int) {
  1434  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{19}
  1435  }
  1436  
  1437  func (x *DeleteReferenceImageRequest) GetName() string {
  1438  	if x != nil {
  1439  		return x.Name
  1440  	}
  1441  	return ""
  1442  }
  1443  
  1444  // Request message for the `AddProductToProductSet` method.
  1445  type AddProductToProductSetRequest struct {
  1446  	state         protoimpl.MessageState
  1447  	sizeCache     protoimpl.SizeCache
  1448  	unknownFields protoimpl.UnknownFields
  1449  
  1450  	// Required. The resource name for the ProductSet to modify.
  1451  	//
  1452  	// Format is:
  1453  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
  1454  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1455  	// Required. The resource name for the Product to be added to this ProductSet.
  1456  	//
  1457  	// Format is:
  1458  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
  1459  	Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
  1460  }
  1461  
  1462  func (x *AddProductToProductSetRequest) Reset() {
  1463  	*x = AddProductToProductSetRequest{}
  1464  	if protoimpl.UnsafeEnabled {
  1465  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[20]
  1466  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1467  		ms.StoreMessageInfo(mi)
  1468  	}
  1469  }
  1470  
  1471  func (x *AddProductToProductSetRequest) String() string {
  1472  	return protoimpl.X.MessageStringOf(x)
  1473  }
  1474  
  1475  func (*AddProductToProductSetRequest) ProtoMessage() {}
  1476  
  1477  func (x *AddProductToProductSetRequest) ProtoReflect() protoreflect.Message {
  1478  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[20]
  1479  	if protoimpl.UnsafeEnabled && x != nil {
  1480  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1481  		if ms.LoadMessageInfo() == nil {
  1482  			ms.StoreMessageInfo(mi)
  1483  		}
  1484  		return ms
  1485  	}
  1486  	return mi.MessageOf(x)
  1487  }
  1488  
  1489  // Deprecated: Use AddProductToProductSetRequest.ProtoReflect.Descriptor instead.
  1490  func (*AddProductToProductSetRequest) Descriptor() ([]byte, []int) {
  1491  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{20}
  1492  }
  1493  
  1494  func (x *AddProductToProductSetRequest) GetName() string {
  1495  	if x != nil {
  1496  		return x.Name
  1497  	}
  1498  	return ""
  1499  }
  1500  
  1501  func (x *AddProductToProductSetRequest) GetProduct() string {
  1502  	if x != nil {
  1503  		return x.Product
  1504  	}
  1505  	return ""
  1506  }
  1507  
  1508  // Request message for the `RemoveProductFromProductSet` method.
  1509  type RemoveProductFromProductSetRequest struct {
  1510  	state         protoimpl.MessageState
  1511  	sizeCache     protoimpl.SizeCache
  1512  	unknownFields protoimpl.UnknownFields
  1513  
  1514  	// Required. The resource name for the ProductSet to modify.
  1515  	//
  1516  	// Format is:
  1517  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
  1518  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1519  	// Required. The resource name for the Product to be removed from this ProductSet.
  1520  	//
  1521  	// Format is:
  1522  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
  1523  	Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
  1524  }
  1525  
  1526  func (x *RemoveProductFromProductSetRequest) Reset() {
  1527  	*x = RemoveProductFromProductSetRequest{}
  1528  	if protoimpl.UnsafeEnabled {
  1529  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[21]
  1530  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1531  		ms.StoreMessageInfo(mi)
  1532  	}
  1533  }
  1534  
  1535  func (x *RemoveProductFromProductSetRequest) String() string {
  1536  	return protoimpl.X.MessageStringOf(x)
  1537  }
  1538  
  1539  func (*RemoveProductFromProductSetRequest) ProtoMessage() {}
  1540  
  1541  func (x *RemoveProductFromProductSetRequest) ProtoReflect() protoreflect.Message {
  1542  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[21]
  1543  	if protoimpl.UnsafeEnabled && x != nil {
  1544  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1545  		if ms.LoadMessageInfo() == nil {
  1546  			ms.StoreMessageInfo(mi)
  1547  		}
  1548  		return ms
  1549  	}
  1550  	return mi.MessageOf(x)
  1551  }
  1552  
  1553  // Deprecated: Use RemoveProductFromProductSetRequest.ProtoReflect.Descriptor instead.
  1554  func (*RemoveProductFromProductSetRequest) Descriptor() ([]byte, []int) {
  1555  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{21}
  1556  }
  1557  
  1558  func (x *RemoveProductFromProductSetRequest) GetName() string {
  1559  	if x != nil {
  1560  		return x.Name
  1561  	}
  1562  	return ""
  1563  }
  1564  
  1565  func (x *RemoveProductFromProductSetRequest) GetProduct() string {
  1566  	if x != nil {
  1567  		return x.Product
  1568  	}
  1569  	return ""
  1570  }
  1571  
  1572  // Request message for the `ListProductsInProductSet` method.
  1573  type ListProductsInProductSetRequest struct {
  1574  	state         protoimpl.MessageState
  1575  	sizeCache     protoimpl.SizeCache
  1576  	unknownFields protoimpl.UnknownFields
  1577  
  1578  	// Required. The ProductSet resource for which to retrieve Products.
  1579  	//
  1580  	// Format is:
  1581  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
  1582  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1583  	// The maximum number of items to return. Default 10, maximum 100.
  1584  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
  1585  	// The next_page_token returned from a previous List request, if any.
  1586  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
  1587  }
  1588  
  1589  func (x *ListProductsInProductSetRequest) Reset() {
  1590  	*x = ListProductsInProductSetRequest{}
  1591  	if protoimpl.UnsafeEnabled {
  1592  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[22]
  1593  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1594  		ms.StoreMessageInfo(mi)
  1595  	}
  1596  }
  1597  
  1598  func (x *ListProductsInProductSetRequest) String() string {
  1599  	return protoimpl.X.MessageStringOf(x)
  1600  }
  1601  
  1602  func (*ListProductsInProductSetRequest) ProtoMessage() {}
  1603  
  1604  func (x *ListProductsInProductSetRequest) ProtoReflect() protoreflect.Message {
  1605  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[22]
  1606  	if protoimpl.UnsafeEnabled && x != nil {
  1607  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1608  		if ms.LoadMessageInfo() == nil {
  1609  			ms.StoreMessageInfo(mi)
  1610  		}
  1611  		return ms
  1612  	}
  1613  	return mi.MessageOf(x)
  1614  }
  1615  
  1616  // Deprecated: Use ListProductsInProductSetRequest.ProtoReflect.Descriptor instead.
  1617  func (*ListProductsInProductSetRequest) Descriptor() ([]byte, []int) {
  1618  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{22}
  1619  }
  1620  
  1621  func (x *ListProductsInProductSetRequest) GetName() string {
  1622  	if x != nil {
  1623  		return x.Name
  1624  	}
  1625  	return ""
  1626  }
  1627  
  1628  func (x *ListProductsInProductSetRequest) GetPageSize() int32 {
  1629  	if x != nil {
  1630  		return x.PageSize
  1631  	}
  1632  	return 0
  1633  }
  1634  
  1635  func (x *ListProductsInProductSetRequest) GetPageToken() string {
  1636  	if x != nil {
  1637  		return x.PageToken
  1638  	}
  1639  	return ""
  1640  }
  1641  
  1642  // Response message for the `ListProductsInProductSet` method.
  1643  type ListProductsInProductSetResponse struct {
  1644  	state         protoimpl.MessageState
  1645  	sizeCache     protoimpl.SizeCache
  1646  	unknownFields protoimpl.UnknownFields
  1647  
  1648  	// The list of Products.
  1649  	Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"`
  1650  	// Token to retrieve the next page of results, or empty if there are no more
  1651  	// results in the list.
  1652  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
  1653  }
  1654  
  1655  func (x *ListProductsInProductSetResponse) Reset() {
  1656  	*x = ListProductsInProductSetResponse{}
  1657  	if protoimpl.UnsafeEnabled {
  1658  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[23]
  1659  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1660  		ms.StoreMessageInfo(mi)
  1661  	}
  1662  }
  1663  
  1664  func (x *ListProductsInProductSetResponse) String() string {
  1665  	return protoimpl.X.MessageStringOf(x)
  1666  }
  1667  
  1668  func (*ListProductsInProductSetResponse) ProtoMessage() {}
  1669  
  1670  func (x *ListProductsInProductSetResponse) ProtoReflect() protoreflect.Message {
  1671  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[23]
  1672  	if protoimpl.UnsafeEnabled && x != nil {
  1673  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1674  		if ms.LoadMessageInfo() == nil {
  1675  			ms.StoreMessageInfo(mi)
  1676  		}
  1677  		return ms
  1678  	}
  1679  	return mi.MessageOf(x)
  1680  }
  1681  
  1682  // Deprecated: Use ListProductsInProductSetResponse.ProtoReflect.Descriptor instead.
  1683  func (*ListProductsInProductSetResponse) Descriptor() ([]byte, []int) {
  1684  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{23}
  1685  }
  1686  
  1687  func (x *ListProductsInProductSetResponse) GetProducts() []*Product {
  1688  	if x != nil {
  1689  		return x.Products
  1690  	}
  1691  	return nil
  1692  }
  1693  
  1694  func (x *ListProductsInProductSetResponse) GetNextPageToken() string {
  1695  	if x != nil {
  1696  		return x.NextPageToken
  1697  	}
  1698  	return ""
  1699  }
  1700  
  1701  // The Google Cloud Storage location for a csv file which preserves a list of
  1702  // ImportProductSetRequests in each line.
  1703  type ImportProductSetsGcsSource struct {
  1704  	state         protoimpl.MessageState
  1705  	sizeCache     protoimpl.SizeCache
  1706  	unknownFields protoimpl.UnknownFields
  1707  
  1708  	// The Google Cloud Storage URI of the input csv file.
  1709  	//
  1710  	// The URI must start with `gs://`.
  1711  	//
  1712  	// The format of the input csv file should be one image per line.
  1713  	// In each line, there are 6 columns.
  1714  	// 1. image_uri
  1715  	// 2, image_id
  1716  	// 3. product_set_id
  1717  	// 4. product_id
  1718  	// 5, product_category
  1719  	// 6, product_display_name
  1720  	// 7, labels
  1721  	// 8. bounding_poly
  1722  	//
  1723  	// Columns 1, 3, 4, and 5 are required, other columns are optional. A new
  1724  	// ProductSet/Product with the same id will be created on the fly
  1725  	// if the ProductSet/Product specified by product_set_id/product_id does not
  1726  	// exist.
  1727  	//
  1728  	// The image_id field is optional but has to be unique if provided. If it is
  1729  	// empty, we will automatically assign an unique id to the image.
  1730  	//
  1731  	// The product_display_name field is optional. If it is empty, a space (" ")
  1732  	// is used as the place holder for the product display_name, which can
  1733  	// be updated later through the realtime API.
  1734  	//
  1735  	// If the Product with product_id already exists, the fields
  1736  	// product_display_name, product_category and labels are ignored.
  1737  	//
  1738  	// If a Product doesn't exist and needs to be created on the fly, the
  1739  	// product_display_name field refers to
  1740  	// [Product.display_name][google.cloud.vision.v1p3beta1.Product.display_name],
  1741  	// the product_category field refers to
  1742  	// [Product.product_category][google.cloud.vision.v1p3beta1.Product.product_category],
  1743  	// and the labels field refers to [Product.labels][].
  1744  	//
  1745  	// Labels (optional) should be a line containing a list of comma-separated
  1746  	// key-value pairs, with the format
  1747  	//     "key_1=value_1,key_2=value_2,...,key_n=value_n".
  1748  	//
  1749  	// The bounding_poly (optional) field is used to identify one region of
  1750  	// interest from the image in the same manner as CreateReferenceImage. If no
  1751  	// bounding_poly is specified, the system will try to detect regions of
  1752  	// interest automatically.
  1753  	//
  1754  	// Note that the pipeline will resize the image if the image resolution is too
  1755  	// large to process (above 20MP).
  1756  	//
  1757  	// Also note that at most one bounding_poly is allowed per line. If the image
  1758  	// contains multiple regions of interest, the csv should contain one line per
  1759  	// region of interest.
  1760  	//
  1761  	// The bounding_poly column should contain an even number of comma-separated
  1762  	// numbers, with the format "p1_x,p1_y,p2_x,p2_y,...,pn_x,pn_y". Nonnegative
  1763  	// integers should be used for absolute bounding polygons, and float values
  1764  	// in [0, 1] should be used for normalized bounding polygons.
  1765  	CsvFileUri string `protobuf:"bytes,1,opt,name=csv_file_uri,json=csvFileUri,proto3" json:"csv_file_uri,omitempty"`
  1766  }
  1767  
  1768  func (x *ImportProductSetsGcsSource) Reset() {
  1769  	*x = ImportProductSetsGcsSource{}
  1770  	if protoimpl.UnsafeEnabled {
  1771  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[24]
  1772  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1773  		ms.StoreMessageInfo(mi)
  1774  	}
  1775  }
  1776  
  1777  func (x *ImportProductSetsGcsSource) String() string {
  1778  	return protoimpl.X.MessageStringOf(x)
  1779  }
  1780  
  1781  func (*ImportProductSetsGcsSource) ProtoMessage() {}
  1782  
  1783  func (x *ImportProductSetsGcsSource) ProtoReflect() protoreflect.Message {
  1784  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[24]
  1785  	if protoimpl.UnsafeEnabled && x != nil {
  1786  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1787  		if ms.LoadMessageInfo() == nil {
  1788  			ms.StoreMessageInfo(mi)
  1789  		}
  1790  		return ms
  1791  	}
  1792  	return mi.MessageOf(x)
  1793  }
  1794  
  1795  // Deprecated: Use ImportProductSetsGcsSource.ProtoReflect.Descriptor instead.
  1796  func (*ImportProductSetsGcsSource) Descriptor() ([]byte, []int) {
  1797  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{24}
  1798  }
  1799  
  1800  func (x *ImportProductSetsGcsSource) GetCsvFileUri() string {
  1801  	if x != nil {
  1802  		return x.CsvFileUri
  1803  	}
  1804  	return ""
  1805  }
  1806  
  1807  // The input content for the `ImportProductSets` method.
  1808  type ImportProductSetsInputConfig struct {
  1809  	state         protoimpl.MessageState
  1810  	sizeCache     protoimpl.SizeCache
  1811  	unknownFields protoimpl.UnknownFields
  1812  
  1813  	// The source of the input.
  1814  	//
  1815  	// Types that are assignable to Source:
  1816  	//	*ImportProductSetsInputConfig_GcsSource
  1817  	Source isImportProductSetsInputConfig_Source `protobuf_oneof:"source"`
  1818  }
  1819  
  1820  func (x *ImportProductSetsInputConfig) Reset() {
  1821  	*x = ImportProductSetsInputConfig{}
  1822  	if protoimpl.UnsafeEnabled {
  1823  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25]
  1824  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1825  		ms.StoreMessageInfo(mi)
  1826  	}
  1827  }
  1828  
  1829  func (x *ImportProductSetsInputConfig) String() string {
  1830  	return protoimpl.X.MessageStringOf(x)
  1831  }
  1832  
  1833  func (*ImportProductSetsInputConfig) ProtoMessage() {}
  1834  
  1835  func (x *ImportProductSetsInputConfig) ProtoReflect() protoreflect.Message {
  1836  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25]
  1837  	if protoimpl.UnsafeEnabled && x != nil {
  1838  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1839  		if ms.LoadMessageInfo() == nil {
  1840  			ms.StoreMessageInfo(mi)
  1841  		}
  1842  		return ms
  1843  	}
  1844  	return mi.MessageOf(x)
  1845  }
  1846  
  1847  // Deprecated: Use ImportProductSetsInputConfig.ProtoReflect.Descriptor instead.
  1848  func (*ImportProductSetsInputConfig) Descriptor() ([]byte, []int) {
  1849  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{25}
  1850  }
  1851  
  1852  func (m *ImportProductSetsInputConfig) GetSource() isImportProductSetsInputConfig_Source {
  1853  	if m != nil {
  1854  		return m.Source
  1855  	}
  1856  	return nil
  1857  }
  1858  
  1859  func (x *ImportProductSetsInputConfig) GetGcsSource() *ImportProductSetsGcsSource {
  1860  	if x, ok := x.GetSource().(*ImportProductSetsInputConfig_GcsSource); ok {
  1861  		return x.GcsSource
  1862  	}
  1863  	return nil
  1864  }
  1865  
  1866  type isImportProductSetsInputConfig_Source interface {
  1867  	isImportProductSetsInputConfig_Source()
  1868  }
  1869  
  1870  type ImportProductSetsInputConfig_GcsSource struct {
  1871  	// The Google Cloud Storage location for a csv file which preserves a list
  1872  	// of ImportProductSetRequests in each line.
  1873  	GcsSource *ImportProductSetsGcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"`
  1874  }
  1875  
  1876  func (*ImportProductSetsInputConfig_GcsSource) isImportProductSetsInputConfig_Source() {}
  1877  
  1878  // Request message for the `ImportProductSets` method.
  1879  type ImportProductSetsRequest struct {
  1880  	state         protoimpl.MessageState
  1881  	sizeCache     protoimpl.SizeCache
  1882  	unknownFields protoimpl.UnknownFields
  1883  
  1884  	// Required. The project in which the ProductSets should be imported.
  1885  	//
  1886  	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
  1887  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
  1888  	// Required. The input content for the list of requests.
  1889  	InputConfig *ImportProductSetsInputConfig `protobuf:"bytes,2,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
  1890  }
  1891  
  1892  func (x *ImportProductSetsRequest) Reset() {
  1893  	*x = ImportProductSetsRequest{}
  1894  	if protoimpl.UnsafeEnabled {
  1895  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[26]
  1896  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1897  		ms.StoreMessageInfo(mi)
  1898  	}
  1899  }
  1900  
  1901  func (x *ImportProductSetsRequest) String() string {
  1902  	return protoimpl.X.MessageStringOf(x)
  1903  }
  1904  
  1905  func (*ImportProductSetsRequest) ProtoMessage() {}
  1906  
  1907  func (x *ImportProductSetsRequest) ProtoReflect() protoreflect.Message {
  1908  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[26]
  1909  	if protoimpl.UnsafeEnabled && x != nil {
  1910  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1911  		if ms.LoadMessageInfo() == nil {
  1912  			ms.StoreMessageInfo(mi)
  1913  		}
  1914  		return ms
  1915  	}
  1916  	return mi.MessageOf(x)
  1917  }
  1918  
  1919  // Deprecated: Use ImportProductSetsRequest.ProtoReflect.Descriptor instead.
  1920  func (*ImportProductSetsRequest) Descriptor() ([]byte, []int) {
  1921  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{26}
  1922  }
  1923  
  1924  func (x *ImportProductSetsRequest) GetParent() string {
  1925  	if x != nil {
  1926  		return x.Parent
  1927  	}
  1928  	return ""
  1929  }
  1930  
  1931  func (x *ImportProductSetsRequest) GetInputConfig() *ImportProductSetsInputConfig {
  1932  	if x != nil {
  1933  		return x.InputConfig
  1934  	}
  1935  	return nil
  1936  }
  1937  
  1938  // Response message for the `ImportProductSets` method.
  1939  //
  1940  // This message is returned by the
  1941  // [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation]
  1942  // method in the returned
  1943  // [google.longrunning.Operation.response][google.longrunning.Operation.response]
  1944  // field.
  1945  type ImportProductSetsResponse struct {
  1946  	state         protoimpl.MessageState
  1947  	sizeCache     protoimpl.SizeCache
  1948  	unknownFields protoimpl.UnknownFields
  1949  
  1950  	// The list of reference_images that are imported successfully.
  1951  	ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"`
  1952  	// The rpc status for each ImportProductSet request, including both successes
  1953  	// and errors.
  1954  	//
  1955  	// The number of statuses here matches the number of lines in the csv file,
  1956  	// and statuses[i] stores the success or failure status of processing the i-th
  1957  	// line of the csv, starting from line 0.
  1958  	Statuses []*status.Status `protobuf:"bytes,2,rep,name=statuses,proto3" json:"statuses,omitempty"`
  1959  }
  1960  
  1961  func (x *ImportProductSetsResponse) Reset() {
  1962  	*x = ImportProductSetsResponse{}
  1963  	if protoimpl.UnsafeEnabled {
  1964  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[27]
  1965  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1966  		ms.StoreMessageInfo(mi)
  1967  	}
  1968  }
  1969  
  1970  func (x *ImportProductSetsResponse) String() string {
  1971  	return protoimpl.X.MessageStringOf(x)
  1972  }
  1973  
  1974  func (*ImportProductSetsResponse) ProtoMessage() {}
  1975  
  1976  func (x *ImportProductSetsResponse) ProtoReflect() protoreflect.Message {
  1977  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[27]
  1978  	if protoimpl.UnsafeEnabled && x != nil {
  1979  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1980  		if ms.LoadMessageInfo() == nil {
  1981  			ms.StoreMessageInfo(mi)
  1982  		}
  1983  		return ms
  1984  	}
  1985  	return mi.MessageOf(x)
  1986  }
  1987  
  1988  // Deprecated: Use ImportProductSetsResponse.ProtoReflect.Descriptor instead.
  1989  func (*ImportProductSetsResponse) Descriptor() ([]byte, []int) {
  1990  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{27}
  1991  }
  1992  
  1993  func (x *ImportProductSetsResponse) GetReferenceImages() []*ReferenceImage {
  1994  	if x != nil {
  1995  		return x.ReferenceImages
  1996  	}
  1997  	return nil
  1998  }
  1999  
  2000  func (x *ImportProductSetsResponse) GetStatuses() []*status.Status {
  2001  	if x != nil {
  2002  		return x.Statuses
  2003  	}
  2004  	return nil
  2005  }
  2006  
  2007  // Metadata for the batch operations such as the current state.
  2008  //
  2009  // This is included in the `metadata` field of the `Operation` returned by the
  2010  // `GetOperation` call of the `google::longrunning::Operations` service.
  2011  type BatchOperationMetadata struct {
  2012  	state         protoimpl.MessageState
  2013  	sizeCache     protoimpl.SizeCache
  2014  	unknownFields protoimpl.UnknownFields
  2015  
  2016  	// The current state of the batch operation.
  2017  	State BatchOperationMetadata_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.vision.v1p3beta1.BatchOperationMetadata_State" json:"state,omitempty"`
  2018  	// The time when the batch request was submitted to the server.
  2019  	SubmitTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"`
  2020  	// The time when the batch request is finished and
  2021  	// [google.longrunning.Operation.done][google.longrunning.Operation.done] is
  2022  	// set to true.
  2023  	EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
  2024  }
  2025  
  2026  func (x *BatchOperationMetadata) Reset() {
  2027  	*x = BatchOperationMetadata{}
  2028  	if protoimpl.UnsafeEnabled {
  2029  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[28]
  2030  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2031  		ms.StoreMessageInfo(mi)
  2032  	}
  2033  }
  2034  
  2035  func (x *BatchOperationMetadata) String() string {
  2036  	return protoimpl.X.MessageStringOf(x)
  2037  }
  2038  
  2039  func (*BatchOperationMetadata) ProtoMessage() {}
  2040  
  2041  func (x *BatchOperationMetadata) ProtoReflect() protoreflect.Message {
  2042  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[28]
  2043  	if protoimpl.UnsafeEnabled && x != nil {
  2044  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2045  		if ms.LoadMessageInfo() == nil {
  2046  			ms.StoreMessageInfo(mi)
  2047  		}
  2048  		return ms
  2049  	}
  2050  	return mi.MessageOf(x)
  2051  }
  2052  
  2053  // Deprecated: Use BatchOperationMetadata.ProtoReflect.Descriptor instead.
  2054  func (*BatchOperationMetadata) Descriptor() ([]byte, []int) {
  2055  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{28}
  2056  }
  2057  
  2058  func (x *BatchOperationMetadata) GetState() BatchOperationMetadata_State {
  2059  	if x != nil {
  2060  		return x.State
  2061  	}
  2062  	return BatchOperationMetadata_STATE_UNSPECIFIED
  2063  }
  2064  
  2065  func (x *BatchOperationMetadata) GetSubmitTime() *timestamppb.Timestamp {
  2066  	if x != nil {
  2067  		return x.SubmitTime
  2068  	}
  2069  	return nil
  2070  }
  2071  
  2072  func (x *BatchOperationMetadata) GetEndTime() *timestamppb.Timestamp {
  2073  	if x != nil {
  2074  		return x.EndTime
  2075  	}
  2076  	return nil
  2077  }
  2078  
  2079  // A product label represented as a key-value pair.
  2080  type Product_KeyValue struct {
  2081  	state         protoimpl.MessageState
  2082  	sizeCache     protoimpl.SizeCache
  2083  	unknownFields protoimpl.UnknownFields
  2084  
  2085  	// The key of the label attached to the product. Cannot be empty and cannot
  2086  	// exceed 128 bytes.
  2087  	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
  2088  	// The value of the label attached to the product. Cannot be empty and
  2089  	// cannot exceed 128 bytes.
  2090  	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
  2091  }
  2092  
  2093  func (x *Product_KeyValue) Reset() {
  2094  	*x = Product_KeyValue{}
  2095  	if protoimpl.UnsafeEnabled {
  2096  		mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[29]
  2097  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2098  		ms.StoreMessageInfo(mi)
  2099  	}
  2100  }
  2101  
  2102  func (x *Product_KeyValue) String() string {
  2103  	return protoimpl.X.MessageStringOf(x)
  2104  }
  2105  
  2106  func (*Product_KeyValue) ProtoMessage() {}
  2107  
  2108  func (x *Product_KeyValue) ProtoReflect() protoreflect.Message {
  2109  	mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[29]
  2110  	if protoimpl.UnsafeEnabled && x != nil {
  2111  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2112  		if ms.LoadMessageInfo() == nil {
  2113  			ms.StoreMessageInfo(mi)
  2114  		}
  2115  		return ms
  2116  	}
  2117  	return mi.MessageOf(x)
  2118  }
  2119  
  2120  // Deprecated: Use Product_KeyValue.ProtoReflect.Descriptor instead.
  2121  func (*Product_KeyValue) Descriptor() ([]byte, []int) {
  2122  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{0, 0}
  2123  }
  2124  
  2125  func (x *Product_KeyValue) GetKey() string {
  2126  	if x != nil {
  2127  		return x.Key
  2128  	}
  2129  	return ""
  2130  }
  2131  
  2132  func (x *Product_KeyValue) GetValue() string {
  2133  	if x != nil {
  2134  		return x.Value
  2135  	}
  2136  	return ""
  2137  }
  2138  
  2139  var File_google_cloud_vision_v1p3beta1_product_search_service_proto protoreflect.FileDescriptor
  2140  
  2141  var file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc = []byte{
  2142  	0x0a, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76,
  2143  	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
  2144  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73,
  2145  	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x67, 0x6f,
  2146  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
  2147  	0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,
  2148  	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
  2149  	0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2150  	0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f,
  2151  	0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66,
  2152  	0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72,
  2153  	0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
  2154  	0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c,
  2155  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x69, 0x73,
  2156  	0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65,
  2157  	0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f,
  2158  	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
  2159  	0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  2160  	0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  2161  	0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20,
  2162  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
  2163  	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2164  	0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2165  	0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  2166  	0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74,
  2167  	0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x02, 0x0a, 0x07, 0x50,
  2168  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
  2169  	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69,
  2170  	0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  2171  	0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
  2172  	0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
  2173  	0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
  2174  	0x2e, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67,
  2175  	0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f,
  2176  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12,
  2177  	0x56, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c,
  2178  	0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2179  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
  2180  	0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e,
  2181  	0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2182  	0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61,
  2183  	0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2184  	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
  2185  	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x5e, 0xea, 0x41, 0x5b,
  2186  	0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2187  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12,
  2188  	0x3a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
  2189  	0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c,
  2190  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2191  	0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x7d, 0x22, 0xa7, 0x02, 0x0a, 0x0a,
  2192  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
  2193  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21,
  2194  	0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
  2195  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d,
  2196  	0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
  2197  	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  2198  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
  2199  	0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x69, 0x6d,
  2200  	0x65, 0x12, 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72,
  2201  	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2202  	0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
  2203  	0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x68, 0xea, 0x41, 0x65,
  2204  	0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2205  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2206  	0x65, 0x74, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72,
  2207  	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2208  	0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64,
  2209  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2210  	0x5f, 0x73, 0x65, 0x74, 0x7d, 0x22, 0x9f, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
  2211  	0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  2212  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03,
  2213  	0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03,
  2214  	0x75, 0x72, 0x69, 0x12, 0x57, 0x0a, 0x0e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f,
  2215  	0x70, 0x6f, 0x6c, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f,
  2216  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
  2217  	0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6f, 0x75, 0x6e,
  2218  	0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x62,
  2219  	0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x73, 0x3a, 0x88, 0x01, 0xea,
  2220  	0x41, 0x84, 0x01, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2221  	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66, 0x65, 0x72,
  2222  	0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x70, 0x72, 0x6f, 0x6a, 0x65,
  2223  	0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f,
  2224  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
  2225  	0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f,
  2226  	0x64, 0x75, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49,
  2227  	0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
  2228  	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x7d, 0x22, 0xbf, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61,
  2229  	0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2230  	0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2231  	0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
  2232  	0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
  2233  	0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72,
  2234  	0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02,
  2235  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  2236  	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62,
  2237  	0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41,
  2238  	0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72,
  2239  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
  2240  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69,
  2241  	0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2242  	0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
  2243  	0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74,
  2244  	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
  2245  	0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61,
  2246  	0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
  2247  	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
  2248  	0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
  2249  	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
  2250  	0x22, 0x82, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2251  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f,
  2252  	0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f,
  2253  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
  2254  	0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64,
  2255  	0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a,
  2256  	0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
  2257  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
  2258  	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64,
  2259  	0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61,
  2260  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f,
  2261  	0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2262  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52,
  2263  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
  2264  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45,
  2265  	0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2266  	0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
  2267  	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
  2268  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72,
  2269  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
  2270  	0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
  2271  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
  2272  	0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61,
  2273  	0x73, 0x6b, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64,
  2274  	0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61,
  2275  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f,
  2276  	0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2277  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52,
  2278  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
  2279  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2280  	0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
  2281  	0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74,
  2282  	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
  2283  	0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61,
  2284  	0x72, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f,
  2285  	0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2286  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
  2287  	0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2288  	0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75,
  2289  	0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2290  	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70,
  2291  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x16,
  2292  	0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52,
  2293  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
  2294  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21,
  2295  	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2296  	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
  2297  	0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67,
  2298  	0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61,
  2299  	0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
  2300  	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65,
  2301  	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
  2302  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2303  	0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74,
  2304  	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2305  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
  2306  	0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2307  	0x65, 0x74, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12,
  2308  	0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
  2309  	0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61,
  2310  	0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x54, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72,
  2311  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  2312  	0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0,
  2313  	0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f,
  2314  	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f,
  2315  	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa7, 0x01,
  2316  	0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2317  	0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x70, 0x72, 0x6f,
  2318  	0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29,
  2319  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2320  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,
  2321  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a,
  2322  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70,
  2323  	0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2324  	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2325  	0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64,
  2326  	0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x57, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74,
  2327  	0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
  2328  	0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2329  	0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
  2330  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
  2331  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  2332  	0x22, 0xe7, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
  2333  	0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2334  	0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2335  	0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
  2336  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
  2337  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
  2338  	0x5b, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61,
  2339  	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2340  	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
  2341  	0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
  2342  	0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x72, 0x65,
  2343  	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12,
  2344  	0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f,
  2345  	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
  2346  	0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x1a, 0x4c,
  2347  	0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67,
  2348  	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72,
  2349  	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41,
  2350  	0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2351  	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2352  	0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65,
  2353  	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67,
  2354  	0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
  2355  	0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54,
  2356  	0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbc, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66,
  2357  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
  2358  	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
  2359  	0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d,
  2360  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2361  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52,
  2362  	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72,
  2363  	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b,
  2364  	0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
  2365  	0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
  2366  	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03,
  2367  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
  2368  	0x6b, 0x65, 0x6e, 0x22, 0x5c, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
  2369  	0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  2370  	0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0,
  2371  	0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f,
  2372  	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66,
  2373  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d,
  2374  	0x65, 0x22, 0x5f, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
  2375  	0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2376  	0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c,
  2377  	0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67,
  2378  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65,
  2379  	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61,
  2380  	0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2381  	0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71,
  2382  	0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
  2383  	0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69,
  2384  	0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
  2385  	0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61,
  2386  	0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20,
  2387  	0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73,
  2388  	0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
  2389  	0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64,
  2390  	0x75, 0x63, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72,
  2391  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2392  	0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61,
  2393  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22,
  2394  	0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2395  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2396  	0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64,
  2397  	0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41,
  2398  	0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2399  	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2400  	0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x1f, 0x4c, 0x69,
  2401  	0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64,
  2402  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a,
  2403  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02,
  2404  	0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2405  	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2406  	0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70,
  2407  	0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
  2408  	0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65,
  2409  	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61,
  2410  	0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74,
  2411  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2412  	0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x08,
  2413  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
  2414  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2415  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,
  2416  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73,
  2417  	0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
  2418  	0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50,
  2419  	0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3e, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f,
  2420  	0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47, 0x63, 0x73,
  2421  	0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x73, 0x76, 0x5f, 0x66, 0x69,
  2422  	0x6c, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x73,
  2423  	0x76, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x69, 0x22, 0x84, 0x01, 0x0a, 0x1c, 0x49, 0x6d, 0x70,
  2424  	0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e,
  2425  	0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x0a, 0x67, 0x63, 0x73,
  2426  	0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e,
  2427  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
  2428  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d,
  2429  	0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47,
  2430  	0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53,
  2431  	0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22,
  2432  	0xc2, 0x01, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2433  	0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06,
  2434  	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41,
  2435  	0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
  2436  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c,
  2437  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
  2438  	0x63, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
  2439  	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
  2440  	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33,
  2441  	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64,
  2442  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66,
  2443  	0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f,
  2444  	0x6e, 0x66, 0x69, 0x67, 0x22, 0xa5, 0x01, 0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50,
  2445  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
  2446  	0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f,
  2447  	0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67,
  2448  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
  2449  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66,
  2450  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66,
  2451  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x08,
  2452  	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12,
  2453  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74,
  2454  	0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xba, 0x02, 0x0a,
  2455  	0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
  2456  	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x51, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
  2457  	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2458  	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70,
  2459  	0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72,
  2460  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74,
  2461  	0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x75,
  2462  	0x62, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2463  	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2464  	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x73, 0x75, 0x62,
  2465  	0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
  2466  	0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2467  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
  2468  	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x59,
  2469  	0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45,
  2470  	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e,
  2471  	0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e,
  2472  	0x0a, 0x0a, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x02, 0x12, 0x0a,
  2473  	0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41,
  2474  	0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0xeb, 0x1e, 0x0a, 0x0d, 0x50, 0x72,
  2475  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0xe6, 0x01, 0x0a, 0x10,
  2476  	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74,
  2477  	0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
  2478  	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31,
  2479  	0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
  2480  	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2481  	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
  2482  	0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2483  	0x53, 0x65, 0x74, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x22, 0x36, 0x2f, 0x76, 0x31,
  2484  	0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
  2485  	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
  2486  	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2487  	0x65, 0x74, 0x73, 0x3a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74,
  2488  	0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2489  	0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65,
  2490  	0x74, 0x5f, 0x69, 0x64, 0x12, 0xc9, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f,
  2491  	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2492  	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
  2493  	0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f,
  2494  	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
  2495  	0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
  2496  	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
  2497  	0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52,
  2498  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12,
  2499  	0x36, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72,
  2500  	0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
  2501  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64,
  2502  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
  2503  	0x12, 0xb6, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2504  	0x65, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2505  	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74,
  2506  	0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74,
  2507  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2508  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
  2509  	0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2510  	0x65, 0x74, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x31, 0x70,
  2511  	0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f,
  2512  	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2513  	0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f,
  2514  	0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe8, 0x01, 0x0a, 0x10, 0x55, 0x70,
  2515  	0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x36,
  2516  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2517  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55,
  2518  	0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52,
  2519  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2520  	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70,
  2521  	0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
  2522  	0x74, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x32, 0x42, 0x2f, 0x76, 0x31, 0x70, 0x33,
  2523  	0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73,
  2524  	0x65, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
  2525  	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70,
  2526  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0b, 0x70,
  2527  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0xda, 0x41, 0x17, 0x70, 0x72, 0x6f,
  2528  	0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
  2529  	0x6d, 0x61, 0x73, 0x6b, 0x12, 0xa9, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50,
  2530  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2531  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
  2532  	0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
  2533  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2534  	0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2535  	0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02,
  2536  	0x38, 0x2a, 0x36, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e,
  2537  	0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
  2538  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75,
  2539  	0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  2540  	0x12, 0xce, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2541  	0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2542  	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74,
  2543  	0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2544  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2545  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
  2546  	0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22,
  2547  	0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65,
  2548  	0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
  2549  	0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2550  	0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x3a, 0x07, 0x70, 0x72,
  2551  	0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70,
  2552  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69,
  2553  	0x64, 0x12, 0xbd, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2554  	0x74, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2555  	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74,
  2556  	0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52,
  2557  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2558  	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70,
  2559  	0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2560  	0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4,
  2561  	0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
  2562  	0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
  2563  	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
  2564  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
  2565  	0x74, 0x12, 0xaa, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2566  	0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
  2567  	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31,
  2568  	0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
  2569  	0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2570  	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74,
  2571  	0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93,
  2572  	0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b,
  2573  	0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f,
  2574  	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64,
  2575  	0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xd0,
  2576  	0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2577  	0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
  2578  	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31,
  2579  	0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65,
  2580  	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
  2581  	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33,
  2582  	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x62, 0x82,
  2583  	0xd3, 0xe4, 0x93, 0x02, 0x46, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61,
  2584  	0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
  2585  	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
  2586  	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f,
  2587  	0x2a, 0x7d, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x13, 0x70, 0x72,
  2588  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73,
  2589  	0x6b, 0x12, 0xa0, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64,
  2590  	0x75, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
  2591  	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65,
  2592  	0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2593  	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2594  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
  2595  	0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x2a, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62,
  2596  	0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
  2597  	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
  2598  	0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04,
  2599  	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8e, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
  2600  	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x2e,
  2601  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
  2602  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72,
  2603  	0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61,
  2604  	0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2605  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
  2606  	0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
  2607  	0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x8a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
  2608  	0x58, 0x22, 0x45, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70,
  2609  	0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
  2610  	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f,
  2611  	0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
  2612  	0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
  2613  	0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0xda, 0x41, 0x29, 0x70, 0x61, 0x72, 0x65,
  2614  	0x6e, 0x74, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61,
  2615  	0x67, 0x65, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61,
  2616  	0x67, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xc0, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
  2617  	0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a,
  2618  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2619  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44,
  2620  	0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d,
  2621  	0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
  2622  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
  2623  	0x74, 0x79, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x76, 0x31, 0x70,
  2624  	0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f,
  2625  	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2626  	0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72,
  2627  	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a,
  2628  	0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73,
  2629  	0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73,
  2630  	0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
  2631  	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31,
  2632  	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d,
  2633  	0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f,
  2634  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
  2635  	0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
  2636  	0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52,
  2637  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12,
  2638  	0x45, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72,
  2639  	0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
  2640  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75,
  2641  	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
  2642  	0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
  2643  	0xd1, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
  2644  	0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
  2645  	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33,
  2646  	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
  2647  	0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d,
  2648  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2649  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52,
  2650  	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x54, 0x82,
  2651  	0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, 0x45, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61,
  2652  	0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
  2653  	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70,
  2654  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
  2655  	0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e,
  2656  	0x61, 0x6d, 0x65, 0x12, 0xcb, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2657  	0x63, 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3c,
  2658  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2659  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41,
  2660  	0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2661  	0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
  2662  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
  2663  	0x6d, 0x70, 0x74, 0x79, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x76,
  2664  	0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70,
  2665  	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
  2666  	0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74,
  2667  	0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a,
  2668  	0x01, 0x2a, 0xda, 0x41, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2669  	0x74, 0x12, 0xd8, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64,
  2670  	0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
  2671  	0x74, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
  2672  	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61,
  2673  	0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46,
  2674  	0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71,
  2675  	0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  2676  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x5e, 0x82, 0xd3,
  2677  	0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31,
  2678  	0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
  2679  	0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72,
  2680  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x6d,
  2681  	0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c,
  2682  	0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0xeb, 0x01, 0x0a,
  2683  	0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50,
  2684  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2685  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
  2686  	0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
  2687  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2688  	0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2689  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
  2690  	0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
  2691  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2692  	0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93,
  2693  	0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b,
  2694  	0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f,
  2695  	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64,
  2696  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75,
  2697  	0x63, 0x74, 0x73, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x82, 0x02, 0x0a, 0x11, 0x49,
  2698  	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73,
  2699  	0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
  2700  	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31,
  2701  	0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
  2702  	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2703  	0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f,
  2704  	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
  2705  	0x42, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70,
  2706  	0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
  2707  	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72,
  2708  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74,
  2709  	0x3a, 0x01, 0x2a, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x70,
  2710  	0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xca, 0x41, 0x33, 0x0a, 0x19, 0x49, 0x6d,
  2711  	0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52,
  2712  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70,
  2713  	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a,
  2714  	0x76, 0xca, 0x41, 0x15, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2715  	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x5b, 0x68, 0x74, 0x74, 0x70,
  2716  	0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
  2717  	0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75,
  2718  	0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73,
  2719  	0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
  2720  	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64,
  2721  	0x2d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x88, 0x01, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e,
  2722  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
  2723  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x19, 0x50,
  2724  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76,
  2725  	0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x43, 0x67, 0x6f, 0x6f, 0x67,
  2726  	0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65,
  2727  	0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
  2728  	0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76,
  2729  	0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0xf8,
  2730  	0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  2731  }
  2732  
  2733  var (
  2734  	file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescOnce sync.Once
  2735  	file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData = file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc
  2736  )
  2737  
  2738  func file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP() []byte {
  2739  	file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescOnce.Do(func() {
  2740  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData)
  2741  	})
  2742  	return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData
  2743  }
  2744  
  2745  var file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
  2746  var file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
  2747  var file_google_cloud_vision_v1p3beta1_product_search_service_proto_goTypes = []interface{}{
  2748  	(BatchOperationMetadata_State)(0),          // 0: google.cloud.vision.v1p3beta1.BatchOperationMetadata.State
  2749  	(*Product)(nil),                            // 1: google.cloud.vision.v1p3beta1.Product
  2750  	(*ProductSet)(nil),                         // 2: google.cloud.vision.v1p3beta1.ProductSet
  2751  	(*ReferenceImage)(nil),                     // 3: google.cloud.vision.v1p3beta1.ReferenceImage
  2752  	(*CreateProductRequest)(nil),               // 4: google.cloud.vision.v1p3beta1.CreateProductRequest
  2753  	(*ListProductsRequest)(nil),                // 5: google.cloud.vision.v1p3beta1.ListProductsRequest
  2754  	(*ListProductsResponse)(nil),               // 6: google.cloud.vision.v1p3beta1.ListProductsResponse
  2755  	(*GetProductRequest)(nil),                  // 7: google.cloud.vision.v1p3beta1.GetProductRequest
  2756  	(*UpdateProductRequest)(nil),               // 8: google.cloud.vision.v1p3beta1.UpdateProductRequest
  2757  	(*DeleteProductRequest)(nil),               // 9: google.cloud.vision.v1p3beta1.DeleteProductRequest
  2758  	(*CreateProductSetRequest)(nil),            // 10: google.cloud.vision.v1p3beta1.CreateProductSetRequest
  2759  	(*ListProductSetsRequest)(nil),             // 11: google.cloud.vision.v1p3beta1.ListProductSetsRequest
  2760  	(*ListProductSetsResponse)(nil),            // 12: google.cloud.vision.v1p3beta1.ListProductSetsResponse
  2761  	(*GetProductSetRequest)(nil),               // 13: google.cloud.vision.v1p3beta1.GetProductSetRequest
  2762  	(*UpdateProductSetRequest)(nil),            // 14: google.cloud.vision.v1p3beta1.UpdateProductSetRequest
  2763  	(*DeleteProductSetRequest)(nil),            // 15: google.cloud.vision.v1p3beta1.DeleteProductSetRequest
  2764  	(*CreateReferenceImageRequest)(nil),        // 16: google.cloud.vision.v1p3beta1.CreateReferenceImageRequest
  2765  	(*ListReferenceImagesRequest)(nil),         // 17: google.cloud.vision.v1p3beta1.ListReferenceImagesRequest
  2766  	(*ListReferenceImagesResponse)(nil),        // 18: google.cloud.vision.v1p3beta1.ListReferenceImagesResponse
  2767  	(*GetReferenceImageRequest)(nil),           // 19: google.cloud.vision.v1p3beta1.GetReferenceImageRequest
  2768  	(*DeleteReferenceImageRequest)(nil),        // 20: google.cloud.vision.v1p3beta1.DeleteReferenceImageRequest
  2769  	(*AddProductToProductSetRequest)(nil),      // 21: google.cloud.vision.v1p3beta1.AddProductToProductSetRequest
  2770  	(*RemoveProductFromProductSetRequest)(nil), // 22: google.cloud.vision.v1p3beta1.RemoveProductFromProductSetRequest
  2771  	(*ListProductsInProductSetRequest)(nil),    // 23: google.cloud.vision.v1p3beta1.ListProductsInProductSetRequest
  2772  	(*ListProductsInProductSetResponse)(nil),   // 24: google.cloud.vision.v1p3beta1.ListProductsInProductSetResponse
  2773  	(*ImportProductSetsGcsSource)(nil),         // 25: google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource
  2774  	(*ImportProductSetsInputConfig)(nil),       // 26: google.cloud.vision.v1p3beta1.ImportProductSetsInputConfig
  2775  	(*ImportProductSetsRequest)(nil),           // 27: google.cloud.vision.v1p3beta1.ImportProductSetsRequest
  2776  	(*ImportProductSetsResponse)(nil),          // 28: google.cloud.vision.v1p3beta1.ImportProductSetsResponse
  2777  	(*BatchOperationMetadata)(nil),             // 29: google.cloud.vision.v1p3beta1.BatchOperationMetadata
  2778  	(*Product_KeyValue)(nil),                   // 30: google.cloud.vision.v1p3beta1.Product.KeyValue
  2779  	(*timestamppb.Timestamp)(nil),              // 31: google.protobuf.Timestamp
  2780  	(*status.Status)(nil),                      // 32: google.rpc.Status
  2781  	(*BoundingPoly)(nil),                       // 33: google.cloud.vision.v1p3beta1.BoundingPoly
  2782  	(*fieldmaskpb.FieldMask)(nil),              // 34: google.protobuf.FieldMask
  2783  	(*emptypb.Empty)(nil),                      // 35: google.protobuf.Empty
  2784  	(*longrunning.Operation)(nil),              // 36: google.longrunning.Operation
  2785  }
  2786  var file_google_cloud_vision_v1p3beta1_product_search_service_proto_depIdxs = []int32{
  2787  	30, // 0: google.cloud.vision.v1p3beta1.Product.product_labels:type_name -> google.cloud.vision.v1p3beta1.Product.KeyValue
  2788  	31, // 1: google.cloud.vision.v1p3beta1.ProductSet.index_time:type_name -> google.protobuf.Timestamp
  2789  	32, // 2: google.cloud.vision.v1p3beta1.ProductSet.index_error:type_name -> google.rpc.Status
  2790  	33, // 3: google.cloud.vision.v1p3beta1.ReferenceImage.bounding_polys:type_name -> google.cloud.vision.v1p3beta1.BoundingPoly
  2791  	1,  // 4: google.cloud.vision.v1p3beta1.CreateProductRequest.product:type_name -> google.cloud.vision.v1p3beta1.Product
  2792  	1,  // 5: google.cloud.vision.v1p3beta1.ListProductsResponse.products:type_name -> google.cloud.vision.v1p3beta1.Product
  2793  	1,  // 6: google.cloud.vision.v1p3beta1.UpdateProductRequest.product:type_name -> google.cloud.vision.v1p3beta1.Product
  2794  	34, // 7: google.cloud.vision.v1p3beta1.UpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask
  2795  	2,  // 8: google.cloud.vision.v1p3beta1.CreateProductSetRequest.product_set:type_name -> google.cloud.vision.v1p3beta1.ProductSet
  2796  	2,  // 9: google.cloud.vision.v1p3beta1.ListProductSetsResponse.product_sets:type_name -> google.cloud.vision.v1p3beta1.ProductSet
  2797  	2,  // 10: google.cloud.vision.v1p3beta1.UpdateProductSetRequest.product_set:type_name -> google.cloud.vision.v1p3beta1.ProductSet
  2798  	34, // 11: google.cloud.vision.v1p3beta1.UpdateProductSetRequest.update_mask:type_name -> google.protobuf.FieldMask
  2799  	3,  // 12: google.cloud.vision.v1p3beta1.CreateReferenceImageRequest.reference_image:type_name -> google.cloud.vision.v1p3beta1.ReferenceImage
  2800  	3,  // 13: google.cloud.vision.v1p3beta1.ListReferenceImagesResponse.reference_images:type_name -> google.cloud.vision.v1p3beta1.ReferenceImage
  2801  	1,  // 14: google.cloud.vision.v1p3beta1.ListProductsInProductSetResponse.products:type_name -> google.cloud.vision.v1p3beta1.Product
  2802  	25, // 15: google.cloud.vision.v1p3beta1.ImportProductSetsInputConfig.gcs_source:type_name -> google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource
  2803  	26, // 16: google.cloud.vision.v1p3beta1.ImportProductSetsRequest.input_config:type_name -> google.cloud.vision.v1p3beta1.ImportProductSetsInputConfig
  2804  	3,  // 17: google.cloud.vision.v1p3beta1.ImportProductSetsResponse.reference_images:type_name -> google.cloud.vision.v1p3beta1.ReferenceImage
  2805  	32, // 18: google.cloud.vision.v1p3beta1.ImportProductSetsResponse.statuses:type_name -> google.rpc.Status
  2806  	0,  // 19: google.cloud.vision.v1p3beta1.BatchOperationMetadata.state:type_name -> google.cloud.vision.v1p3beta1.BatchOperationMetadata.State
  2807  	31, // 20: google.cloud.vision.v1p3beta1.BatchOperationMetadata.submit_time:type_name -> google.protobuf.Timestamp
  2808  	31, // 21: google.cloud.vision.v1p3beta1.BatchOperationMetadata.end_time:type_name -> google.protobuf.Timestamp
  2809  	10, // 22: google.cloud.vision.v1p3beta1.ProductSearch.CreateProductSet:input_type -> google.cloud.vision.v1p3beta1.CreateProductSetRequest
  2810  	11, // 23: google.cloud.vision.v1p3beta1.ProductSearch.ListProductSets:input_type -> google.cloud.vision.v1p3beta1.ListProductSetsRequest
  2811  	13, // 24: google.cloud.vision.v1p3beta1.ProductSearch.GetProductSet:input_type -> google.cloud.vision.v1p3beta1.GetProductSetRequest
  2812  	14, // 25: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProductSet:input_type -> google.cloud.vision.v1p3beta1.UpdateProductSetRequest
  2813  	15, // 26: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProductSet:input_type -> google.cloud.vision.v1p3beta1.DeleteProductSetRequest
  2814  	4,  // 27: google.cloud.vision.v1p3beta1.ProductSearch.CreateProduct:input_type -> google.cloud.vision.v1p3beta1.CreateProductRequest
  2815  	5,  // 28: google.cloud.vision.v1p3beta1.ProductSearch.ListProducts:input_type -> google.cloud.vision.v1p3beta1.ListProductsRequest
  2816  	7,  // 29: google.cloud.vision.v1p3beta1.ProductSearch.GetProduct:input_type -> google.cloud.vision.v1p3beta1.GetProductRequest
  2817  	8,  // 30: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProduct:input_type -> google.cloud.vision.v1p3beta1.UpdateProductRequest
  2818  	9,  // 31: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProduct:input_type -> google.cloud.vision.v1p3beta1.DeleteProductRequest
  2819  	16, // 32: google.cloud.vision.v1p3beta1.ProductSearch.CreateReferenceImage:input_type -> google.cloud.vision.v1p3beta1.CreateReferenceImageRequest
  2820  	20, // 33: google.cloud.vision.v1p3beta1.ProductSearch.DeleteReferenceImage:input_type -> google.cloud.vision.v1p3beta1.DeleteReferenceImageRequest
  2821  	17, // 34: google.cloud.vision.v1p3beta1.ProductSearch.ListReferenceImages:input_type -> google.cloud.vision.v1p3beta1.ListReferenceImagesRequest
  2822  	19, // 35: google.cloud.vision.v1p3beta1.ProductSearch.GetReferenceImage:input_type -> google.cloud.vision.v1p3beta1.GetReferenceImageRequest
  2823  	21, // 36: google.cloud.vision.v1p3beta1.ProductSearch.AddProductToProductSet:input_type -> google.cloud.vision.v1p3beta1.AddProductToProductSetRequest
  2824  	22, // 37: google.cloud.vision.v1p3beta1.ProductSearch.RemoveProductFromProductSet:input_type -> google.cloud.vision.v1p3beta1.RemoveProductFromProductSetRequest
  2825  	23, // 38: google.cloud.vision.v1p3beta1.ProductSearch.ListProductsInProductSet:input_type -> google.cloud.vision.v1p3beta1.ListProductsInProductSetRequest
  2826  	27, // 39: google.cloud.vision.v1p3beta1.ProductSearch.ImportProductSets:input_type -> google.cloud.vision.v1p3beta1.ImportProductSetsRequest
  2827  	2,  // 40: google.cloud.vision.v1p3beta1.ProductSearch.CreateProductSet:output_type -> google.cloud.vision.v1p3beta1.ProductSet
  2828  	12, // 41: google.cloud.vision.v1p3beta1.ProductSearch.ListProductSets:output_type -> google.cloud.vision.v1p3beta1.ListProductSetsResponse
  2829  	2,  // 42: google.cloud.vision.v1p3beta1.ProductSearch.GetProductSet:output_type -> google.cloud.vision.v1p3beta1.ProductSet
  2830  	2,  // 43: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProductSet:output_type -> google.cloud.vision.v1p3beta1.ProductSet
  2831  	35, // 44: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProductSet:output_type -> google.protobuf.Empty
  2832  	1,  // 45: google.cloud.vision.v1p3beta1.ProductSearch.CreateProduct:output_type -> google.cloud.vision.v1p3beta1.Product
  2833  	6,  // 46: google.cloud.vision.v1p3beta1.ProductSearch.ListProducts:output_type -> google.cloud.vision.v1p3beta1.ListProductsResponse
  2834  	1,  // 47: google.cloud.vision.v1p3beta1.ProductSearch.GetProduct:output_type -> google.cloud.vision.v1p3beta1.Product
  2835  	1,  // 48: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProduct:output_type -> google.cloud.vision.v1p3beta1.Product
  2836  	35, // 49: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProduct:output_type -> google.protobuf.Empty
  2837  	3,  // 50: google.cloud.vision.v1p3beta1.ProductSearch.CreateReferenceImage:output_type -> google.cloud.vision.v1p3beta1.ReferenceImage
  2838  	35, // 51: google.cloud.vision.v1p3beta1.ProductSearch.DeleteReferenceImage:output_type -> google.protobuf.Empty
  2839  	18, // 52: google.cloud.vision.v1p3beta1.ProductSearch.ListReferenceImages:output_type -> google.cloud.vision.v1p3beta1.ListReferenceImagesResponse
  2840  	3,  // 53: google.cloud.vision.v1p3beta1.ProductSearch.GetReferenceImage:output_type -> google.cloud.vision.v1p3beta1.ReferenceImage
  2841  	35, // 54: google.cloud.vision.v1p3beta1.ProductSearch.AddProductToProductSet:output_type -> google.protobuf.Empty
  2842  	35, // 55: google.cloud.vision.v1p3beta1.ProductSearch.RemoveProductFromProductSet:output_type -> google.protobuf.Empty
  2843  	24, // 56: google.cloud.vision.v1p3beta1.ProductSearch.ListProductsInProductSet:output_type -> google.cloud.vision.v1p3beta1.ListProductsInProductSetResponse
  2844  	36, // 57: google.cloud.vision.v1p3beta1.ProductSearch.ImportProductSets:output_type -> google.longrunning.Operation
  2845  	40, // [40:58] is the sub-list for method output_type
  2846  	22, // [22:40] is the sub-list for method input_type
  2847  	22, // [22:22] is the sub-list for extension type_name
  2848  	22, // [22:22] is the sub-list for extension extendee
  2849  	0,  // [0:22] is the sub-list for field type_name
  2850  }
  2851  
  2852  func init() { file_google_cloud_vision_v1p3beta1_product_search_service_proto_init() }
  2853  func file_google_cloud_vision_v1p3beta1_product_search_service_proto_init() {
  2854  	if File_google_cloud_vision_v1p3beta1_product_search_service_proto != nil {
  2855  		return
  2856  	}
  2857  	file_google_cloud_vision_v1p3beta1_geometry_proto_init()
  2858  	if !protoimpl.UnsafeEnabled {
  2859  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  2860  			switch v := v.(*Product); i {
  2861  			case 0:
  2862  				return &v.state
  2863  			case 1:
  2864  				return &v.sizeCache
  2865  			case 2:
  2866  				return &v.unknownFields
  2867  			default:
  2868  				return nil
  2869  			}
  2870  		}
  2871  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  2872  			switch v := v.(*ProductSet); i {
  2873  			case 0:
  2874  				return &v.state
  2875  			case 1:
  2876  				return &v.sizeCache
  2877  			case 2:
  2878  				return &v.unknownFields
  2879  			default:
  2880  				return nil
  2881  			}
  2882  		}
  2883  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  2884  			switch v := v.(*ReferenceImage); i {
  2885  			case 0:
  2886  				return &v.state
  2887  			case 1:
  2888  				return &v.sizeCache
  2889  			case 2:
  2890  				return &v.unknownFields
  2891  			default:
  2892  				return nil
  2893  			}
  2894  		}
  2895  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  2896  			switch v := v.(*CreateProductRequest); i {
  2897  			case 0:
  2898  				return &v.state
  2899  			case 1:
  2900  				return &v.sizeCache
  2901  			case 2:
  2902  				return &v.unknownFields
  2903  			default:
  2904  				return nil
  2905  			}
  2906  		}
  2907  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  2908  			switch v := v.(*ListProductsRequest); i {
  2909  			case 0:
  2910  				return &v.state
  2911  			case 1:
  2912  				return &v.sizeCache
  2913  			case 2:
  2914  				return &v.unknownFields
  2915  			default:
  2916  				return nil
  2917  			}
  2918  		}
  2919  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  2920  			switch v := v.(*ListProductsResponse); i {
  2921  			case 0:
  2922  				return &v.state
  2923  			case 1:
  2924  				return &v.sizeCache
  2925  			case 2:
  2926  				return &v.unknownFields
  2927  			default:
  2928  				return nil
  2929  			}
  2930  		}
  2931  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  2932  			switch v := v.(*GetProductRequest); i {
  2933  			case 0:
  2934  				return &v.state
  2935  			case 1:
  2936  				return &v.sizeCache
  2937  			case 2:
  2938  				return &v.unknownFields
  2939  			default:
  2940  				return nil
  2941  			}
  2942  		}
  2943  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  2944  			switch v := v.(*UpdateProductRequest); i {
  2945  			case 0:
  2946  				return &v.state
  2947  			case 1:
  2948  				return &v.sizeCache
  2949  			case 2:
  2950  				return &v.unknownFields
  2951  			default:
  2952  				return nil
  2953  			}
  2954  		}
  2955  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  2956  			switch v := v.(*DeleteProductRequest); i {
  2957  			case 0:
  2958  				return &v.state
  2959  			case 1:
  2960  				return &v.sizeCache
  2961  			case 2:
  2962  				return &v.unknownFields
  2963  			default:
  2964  				return nil
  2965  			}
  2966  		}
  2967  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  2968  			switch v := v.(*CreateProductSetRequest); i {
  2969  			case 0:
  2970  				return &v.state
  2971  			case 1:
  2972  				return &v.sizeCache
  2973  			case 2:
  2974  				return &v.unknownFields
  2975  			default:
  2976  				return nil
  2977  			}
  2978  		}
  2979  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  2980  			switch v := v.(*ListProductSetsRequest); i {
  2981  			case 0:
  2982  				return &v.state
  2983  			case 1:
  2984  				return &v.sizeCache
  2985  			case 2:
  2986  				return &v.unknownFields
  2987  			default:
  2988  				return nil
  2989  			}
  2990  		}
  2991  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  2992  			switch v := v.(*ListProductSetsResponse); i {
  2993  			case 0:
  2994  				return &v.state
  2995  			case 1:
  2996  				return &v.sizeCache
  2997  			case 2:
  2998  				return &v.unknownFields
  2999  			default:
  3000  				return nil
  3001  			}
  3002  		}
  3003  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  3004  			switch v := v.(*GetProductSetRequest); i {
  3005  			case 0:
  3006  				return &v.state
  3007  			case 1:
  3008  				return &v.sizeCache
  3009  			case 2:
  3010  				return &v.unknownFields
  3011  			default:
  3012  				return nil
  3013  			}
  3014  		}
  3015  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  3016  			switch v := v.(*UpdateProductSetRequest); i {
  3017  			case 0:
  3018  				return &v.state
  3019  			case 1:
  3020  				return &v.sizeCache
  3021  			case 2:
  3022  				return &v.unknownFields
  3023  			default:
  3024  				return nil
  3025  			}
  3026  		}
  3027  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  3028  			switch v := v.(*DeleteProductSetRequest); i {
  3029  			case 0:
  3030  				return &v.state
  3031  			case 1:
  3032  				return &v.sizeCache
  3033  			case 2:
  3034  				return &v.unknownFields
  3035  			default:
  3036  				return nil
  3037  			}
  3038  		}
  3039  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  3040  			switch v := v.(*CreateReferenceImageRequest); i {
  3041  			case 0:
  3042  				return &v.state
  3043  			case 1:
  3044  				return &v.sizeCache
  3045  			case 2:
  3046  				return &v.unknownFields
  3047  			default:
  3048  				return nil
  3049  			}
  3050  		}
  3051  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  3052  			switch v := v.(*ListReferenceImagesRequest); i {
  3053  			case 0:
  3054  				return &v.state
  3055  			case 1:
  3056  				return &v.sizeCache
  3057  			case 2:
  3058  				return &v.unknownFields
  3059  			default:
  3060  				return nil
  3061  			}
  3062  		}
  3063  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  3064  			switch v := v.(*ListReferenceImagesResponse); i {
  3065  			case 0:
  3066  				return &v.state
  3067  			case 1:
  3068  				return &v.sizeCache
  3069  			case 2:
  3070  				return &v.unknownFields
  3071  			default:
  3072  				return nil
  3073  			}
  3074  		}
  3075  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  3076  			switch v := v.(*GetReferenceImageRequest); i {
  3077  			case 0:
  3078  				return &v.state
  3079  			case 1:
  3080  				return &v.sizeCache
  3081  			case 2:
  3082  				return &v.unknownFields
  3083  			default:
  3084  				return nil
  3085  			}
  3086  		}
  3087  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  3088  			switch v := v.(*DeleteReferenceImageRequest); i {
  3089  			case 0:
  3090  				return &v.state
  3091  			case 1:
  3092  				return &v.sizeCache
  3093  			case 2:
  3094  				return &v.unknownFields
  3095  			default:
  3096  				return nil
  3097  			}
  3098  		}
  3099  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  3100  			switch v := v.(*AddProductToProductSetRequest); i {
  3101  			case 0:
  3102  				return &v.state
  3103  			case 1:
  3104  				return &v.sizeCache
  3105  			case 2:
  3106  				return &v.unknownFields
  3107  			default:
  3108  				return nil
  3109  			}
  3110  		}
  3111  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  3112  			switch v := v.(*RemoveProductFromProductSetRequest); i {
  3113  			case 0:
  3114  				return &v.state
  3115  			case 1:
  3116  				return &v.sizeCache
  3117  			case 2:
  3118  				return &v.unknownFields
  3119  			default:
  3120  				return nil
  3121  			}
  3122  		}
  3123  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
  3124  			switch v := v.(*ListProductsInProductSetRequest); i {
  3125  			case 0:
  3126  				return &v.state
  3127  			case 1:
  3128  				return &v.sizeCache
  3129  			case 2:
  3130  				return &v.unknownFields
  3131  			default:
  3132  				return nil
  3133  			}
  3134  		}
  3135  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
  3136  			switch v := v.(*ListProductsInProductSetResponse); i {
  3137  			case 0:
  3138  				return &v.state
  3139  			case 1:
  3140  				return &v.sizeCache
  3141  			case 2:
  3142  				return &v.unknownFields
  3143  			default:
  3144  				return nil
  3145  			}
  3146  		}
  3147  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
  3148  			switch v := v.(*ImportProductSetsGcsSource); i {
  3149  			case 0:
  3150  				return &v.state
  3151  			case 1:
  3152  				return &v.sizeCache
  3153  			case 2:
  3154  				return &v.unknownFields
  3155  			default:
  3156  				return nil
  3157  			}
  3158  		}
  3159  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
  3160  			switch v := v.(*ImportProductSetsInputConfig); i {
  3161  			case 0:
  3162  				return &v.state
  3163  			case 1:
  3164  				return &v.sizeCache
  3165  			case 2:
  3166  				return &v.unknownFields
  3167  			default:
  3168  				return nil
  3169  			}
  3170  		}
  3171  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
  3172  			switch v := v.(*ImportProductSetsRequest); i {
  3173  			case 0:
  3174  				return &v.state
  3175  			case 1:
  3176  				return &v.sizeCache
  3177  			case 2:
  3178  				return &v.unknownFields
  3179  			default:
  3180  				return nil
  3181  			}
  3182  		}
  3183  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
  3184  			switch v := v.(*ImportProductSetsResponse); i {
  3185  			case 0:
  3186  				return &v.state
  3187  			case 1:
  3188  				return &v.sizeCache
  3189  			case 2:
  3190  				return &v.unknownFields
  3191  			default:
  3192  				return nil
  3193  			}
  3194  		}
  3195  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
  3196  			switch v := v.(*BatchOperationMetadata); i {
  3197  			case 0:
  3198  				return &v.state
  3199  			case 1:
  3200  				return &v.sizeCache
  3201  			case 2:
  3202  				return &v.unknownFields
  3203  			default:
  3204  				return nil
  3205  			}
  3206  		}
  3207  		file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
  3208  			switch v := v.(*Product_KeyValue); i {
  3209  			case 0:
  3210  				return &v.state
  3211  			case 1:
  3212  				return &v.sizeCache
  3213  			case 2:
  3214  				return &v.unknownFields
  3215  			default:
  3216  				return nil
  3217  			}
  3218  		}
  3219  	}
  3220  	file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25].OneofWrappers = []interface{}{
  3221  		(*ImportProductSetsInputConfig_GcsSource)(nil),
  3222  	}
  3223  	type x struct{}
  3224  	out := protoimpl.TypeBuilder{
  3225  		File: protoimpl.DescBuilder{
  3226  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  3227  			RawDescriptor: file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc,
  3228  			NumEnums:      1,
  3229  			NumMessages:   30,
  3230  			NumExtensions: 0,
  3231  			NumServices:   1,
  3232  		},
  3233  		GoTypes:           file_google_cloud_vision_v1p3beta1_product_search_service_proto_goTypes,
  3234  		DependencyIndexes: file_google_cloud_vision_v1p3beta1_product_search_service_proto_depIdxs,
  3235  		EnumInfos:         file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes,
  3236  		MessageInfos:      file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes,
  3237  	}.Build()
  3238  	File_google_cloud_vision_v1p3beta1_product_search_service_proto = out.File
  3239  	file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc = nil
  3240  	file_google_cloud_vision_v1p3beta1_product_search_service_proto_goTypes = nil
  3241  	file_google_cloud_vision_v1p3beta1_product_search_service_proto_depIdxs = nil
  3242  }
  3243  
  3244  // Reference imports to suppress errors if they are not otherwise used.
  3245  var _ context.Context
  3246  var _ grpc.ClientConnInterface
  3247  
  3248  // This is a compile-time assertion to ensure that this generated file
  3249  // is compatible with the grpc package it is being compiled against.
  3250  const _ = grpc.SupportPackageIsVersion6
  3251  
  3252  // ProductSearchClient is the client API for ProductSearch service.
  3253  //
  3254  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  3255  type ProductSearchClient interface {
  3256  	// Creates and returns a new ProductSet resource.
  3257  	//
  3258  	// Possible errors:
  3259  	//
  3260  	// * Returns INVALID_ARGUMENT if display_name is missing, or is longer than
  3261  	//   4096 characters.
  3262  	CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error)
  3263  	// Lists ProductSets in an unspecified order.
  3264  	//
  3265  	// Possible errors:
  3266  	//
  3267  	// * Returns INVALID_ARGUMENT if page_size is greater than 100, or less
  3268  	//   than 1.
  3269  	ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error)
  3270  	// Gets information associated with a ProductSet.
  3271  	//
  3272  	// Possible errors:
  3273  	//
  3274  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3275  	GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error)
  3276  	// Makes changes to a ProductSet resource.
  3277  	// Only display_name can be updated currently.
  3278  	//
  3279  	// Possible errors:
  3280  	//
  3281  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3282  	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but
  3283  	//   missing from the request or longer than 4096 characters.
  3284  	UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error)
  3285  	// Permanently deletes a ProductSet. All Products and ReferenceImages in the
  3286  	// ProductSet will be deleted.
  3287  	//
  3288  	// The actual image files are not deleted from Google Cloud Storage.
  3289  	//
  3290  	// Possible errors:
  3291  	//
  3292  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3293  	DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3294  	// Creates and returns a new product resource.
  3295  	//
  3296  	// Possible errors:
  3297  	//
  3298  	// * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096
  3299  	//   characters.
  3300  	// * Returns INVALID_ARGUMENT if description is longer than 4096 characters.
  3301  	// * Returns INVALID_ARGUMENT if product_category is missing or invalid.
  3302  	CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error)
  3303  	// Lists products in an unspecified order.
  3304  	//
  3305  	// Possible errors:
  3306  	//
  3307  	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
  3308  	ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error)
  3309  	// Gets information associated with a Product.
  3310  	//
  3311  	// Possible errors:
  3312  	//
  3313  	// * Returns NOT_FOUND if the Product does not exist.
  3314  	GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error)
  3315  	// Makes changes to a Product resource.
  3316  	// Only display_name, description and labels can be updated right now.
  3317  	//
  3318  	// If labels are updated, the change will not be reflected in queries until
  3319  	// the next index time.
  3320  	//
  3321  	// Possible errors:
  3322  	//
  3323  	// * Returns NOT_FOUND if the Product does not exist.
  3324  	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but is
  3325  	//   missing from the request or longer than 4096 characters.
  3326  	// * Returns INVALID_ARGUMENT if description is present in update_mask but is
  3327  	//   longer than 4096 characters.
  3328  	// * Returns INVALID_ARGUMENT if product_category is present in update_mask.
  3329  	UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error)
  3330  	// Permanently deletes a product and its reference images.
  3331  	//
  3332  	// Metadata of the product and all its images will be deleted right away, but
  3333  	// search queries against ProductSets containing the product may still work
  3334  	// until all related caches are refreshed.
  3335  	//
  3336  	// Possible errors:
  3337  	//
  3338  	// * Returns NOT_FOUND if the product does not exist.
  3339  	DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3340  	// Creates and returns a new ReferenceImage resource.
  3341  	//
  3342  	// The `bounding_poly` field is optional. If `bounding_poly` is not specified,
  3343  	// the system will try to detect regions of interest in the image that are
  3344  	// compatible with the product_category on the parent product. If it is
  3345  	// specified, detection is ALWAYS skipped. The system converts polygons into
  3346  	// non-rotated rectangles.
  3347  	//
  3348  	// Note that the pipeline will resize the image if the image resolution is too
  3349  	// large to process (above 50MP).
  3350  	//
  3351  	// Possible errors:
  3352  	//
  3353  	// * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096
  3354  	//   characters.
  3355  	// * Returns INVALID_ARGUMENT if the product does not exist.
  3356  	// * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing
  3357  	//   compatible with the parent product's product_category is detected.
  3358  	// * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons.
  3359  	CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error)
  3360  	// Permanently deletes a reference image.
  3361  	//
  3362  	// The image metadata will be deleted right away, but search queries
  3363  	// against ProductSets containing the image may still work until all related
  3364  	// caches are refreshed.
  3365  	//
  3366  	// The actual image files are not deleted from Google Cloud Storage.
  3367  	//
  3368  	// Possible errors:
  3369  	//
  3370  	// * Returns NOT_FOUND if the reference image does not exist.
  3371  	DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3372  	// Lists reference images.
  3373  	//
  3374  	// Possible errors:
  3375  	//
  3376  	// * Returns NOT_FOUND if the parent product does not exist.
  3377  	// * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less
  3378  	//   than 1.
  3379  	ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error)
  3380  	// Gets information associated with a ReferenceImage.
  3381  	//
  3382  	// Possible errors:
  3383  	//
  3384  	// * Returns NOT_FOUND if the specified image does not exist.
  3385  	GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error)
  3386  	// Adds a Product to the specified ProductSet. If the Product is already
  3387  	// present, no change is made.
  3388  	//
  3389  	// One Product can be added to at most 100 ProductSets.
  3390  	//
  3391  	// Possible errors:
  3392  	//
  3393  	// * Returns NOT_FOUND if the Product or the ProductSet doesn't exist.
  3394  	AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3395  	// Removes a Product from the specified ProductSet.
  3396  	//
  3397  	// Possible errors:
  3398  	//
  3399  	// * Returns NOT_FOUND If the Product is not found under the ProductSet.
  3400  	RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3401  	// Lists the Products in a ProductSet, in an unspecified order. If the
  3402  	// ProductSet does not exist, the products field of the response will be
  3403  	// empty.
  3404  	//
  3405  	// Possible errors:
  3406  	//
  3407  	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
  3408  	ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error)
  3409  	// Asynchronous API that imports a list of reference images to specified
  3410  	// product sets based on a list of image information.
  3411  	//
  3412  	// The [google.longrunning.Operation][google.longrunning.Operation] API can be
  3413  	// used to keep track of the progress and results of the request.
  3414  	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
  3415  	// `Operation.response` contains `ImportProductSetsResponse`. (results)
  3416  	//
  3417  	// The input source of this method is a csv file on Google Cloud Storage.
  3418  	// For the format of the csv file please see
  3419  	// [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource.csv_file_uri].
  3420  	ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
  3421  }
  3422  
  3423  type productSearchClient struct {
  3424  	cc grpc.ClientConnInterface
  3425  }
  3426  
  3427  func NewProductSearchClient(cc grpc.ClientConnInterface) ProductSearchClient {
  3428  	return &productSearchClient{cc}
  3429  }
  3430  
  3431  func (c *productSearchClient) CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) {
  3432  	out := new(ProductSet)
  3433  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProductSet", in, out, opts...)
  3434  	if err != nil {
  3435  		return nil, err
  3436  	}
  3437  	return out, nil
  3438  }
  3439  
  3440  func (c *productSearchClient) ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error) {
  3441  	out := new(ListProductSetsResponse)
  3442  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductSets", in, out, opts...)
  3443  	if err != nil {
  3444  		return nil, err
  3445  	}
  3446  	return out, nil
  3447  }
  3448  
  3449  func (c *productSearchClient) GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) {
  3450  	out := new(ProductSet)
  3451  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/GetProductSet", in, out, opts...)
  3452  	if err != nil {
  3453  		return nil, err
  3454  	}
  3455  	return out, nil
  3456  }
  3457  
  3458  func (c *productSearchClient) UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) {
  3459  	out := new(ProductSet)
  3460  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProductSet", in, out, opts...)
  3461  	if err != nil {
  3462  		return nil, err
  3463  	}
  3464  	return out, nil
  3465  }
  3466  
  3467  func (c *productSearchClient) DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3468  	out := new(emptypb.Empty)
  3469  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProductSet", in, out, opts...)
  3470  	if err != nil {
  3471  		return nil, err
  3472  	}
  3473  	return out, nil
  3474  }
  3475  
  3476  func (c *productSearchClient) CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) {
  3477  	out := new(Product)
  3478  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProduct", in, out, opts...)
  3479  	if err != nil {
  3480  		return nil, err
  3481  	}
  3482  	return out, nil
  3483  }
  3484  
  3485  func (c *productSearchClient) ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) {
  3486  	out := new(ListProductsResponse)
  3487  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListProducts", in, out, opts...)
  3488  	if err != nil {
  3489  		return nil, err
  3490  	}
  3491  	return out, nil
  3492  }
  3493  
  3494  func (c *productSearchClient) GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) {
  3495  	out := new(Product)
  3496  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/GetProduct", in, out, opts...)
  3497  	if err != nil {
  3498  		return nil, err
  3499  	}
  3500  	return out, nil
  3501  }
  3502  
  3503  func (c *productSearchClient) UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) {
  3504  	out := new(Product)
  3505  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProduct", in, out, opts...)
  3506  	if err != nil {
  3507  		return nil, err
  3508  	}
  3509  	return out, nil
  3510  }
  3511  
  3512  func (c *productSearchClient) DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3513  	out := new(emptypb.Empty)
  3514  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProduct", in, out, opts...)
  3515  	if err != nil {
  3516  		return nil, err
  3517  	}
  3518  	return out, nil
  3519  }
  3520  
  3521  func (c *productSearchClient) CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) {
  3522  	out := new(ReferenceImage)
  3523  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/CreateReferenceImage", in, out, opts...)
  3524  	if err != nil {
  3525  		return nil, err
  3526  	}
  3527  	return out, nil
  3528  }
  3529  
  3530  func (c *productSearchClient) DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3531  	out := new(emptypb.Empty)
  3532  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteReferenceImage", in, out, opts...)
  3533  	if err != nil {
  3534  		return nil, err
  3535  	}
  3536  	return out, nil
  3537  }
  3538  
  3539  func (c *productSearchClient) ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error) {
  3540  	out := new(ListReferenceImagesResponse)
  3541  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListReferenceImages", in, out, opts...)
  3542  	if err != nil {
  3543  		return nil, err
  3544  	}
  3545  	return out, nil
  3546  }
  3547  
  3548  func (c *productSearchClient) GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) {
  3549  	out := new(ReferenceImage)
  3550  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/GetReferenceImage", in, out, opts...)
  3551  	if err != nil {
  3552  		return nil, err
  3553  	}
  3554  	return out, nil
  3555  }
  3556  
  3557  func (c *productSearchClient) AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3558  	out := new(emptypb.Empty)
  3559  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/AddProductToProductSet", in, out, opts...)
  3560  	if err != nil {
  3561  		return nil, err
  3562  	}
  3563  	return out, nil
  3564  }
  3565  
  3566  func (c *productSearchClient) RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3567  	out := new(emptypb.Empty)
  3568  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/RemoveProductFromProductSet", in, out, opts...)
  3569  	if err != nil {
  3570  		return nil, err
  3571  	}
  3572  	return out, nil
  3573  }
  3574  
  3575  func (c *productSearchClient) ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error) {
  3576  	out := new(ListProductsInProductSetResponse)
  3577  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductsInProductSet", in, out, opts...)
  3578  	if err != nil {
  3579  		return nil, err
  3580  	}
  3581  	return out, nil
  3582  }
  3583  
  3584  func (c *productSearchClient) ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
  3585  	out := new(longrunning.Operation)
  3586  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ImportProductSets", in, out, opts...)
  3587  	if err != nil {
  3588  		return nil, err
  3589  	}
  3590  	return out, nil
  3591  }
  3592  
  3593  // ProductSearchServer is the server API for ProductSearch service.
  3594  type ProductSearchServer interface {
  3595  	// Creates and returns a new ProductSet resource.
  3596  	//
  3597  	// Possible errors:
  3598  	//
  3599  	// * Returns INVALID_ARGUMENT if display_name is missing, or is longer than
  3600  	//   4096 characters.
  3601  	CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error)
  3602  	// Lists ProductSets in an unspecified order.
  3603  	//
  3604  	// Possible errors:
  3605  	//
  3606  	// * Returns INVALID_ARGUMENT if page_size is greater than 100, or less
  3607  	//   than 1.
  3608  	ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error)
  3609  	// Gets information associated with a ProductSet.
  3610  	//
  3611  	// Possible errors:
  3612  	//
  3613  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3614  	GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error)
  3615  	// Makes changes to a ProductSet resource.
  3616  	// Only display_name can be updated currently.
  3617  	//
  3618  	// Possible errors:
  3619  	//
  3620  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3621  	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but
  3622  	//   missing from the request or longer than 4096 characters.
  3623  	UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error)
  3624  	// Permanently deletes a ProductSet. All Products and ReferenceImages in the
  3625  	// ProductSet will be deleted.
  3626  	//
  3627  	// The actual image files are not deleted from Google Cloud Storage.
  3628  	//
  3629  	// Possible errors:
  3630  	//
  3631  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3632  	DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error)
  3633  	// Creates and returns a new product resource.
  3634  	//
  3635  	// Possible errors:
  3636  	//
  3637  	// * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096
  3638  	//   characters.
  3639  	// * Returns INVALID_ARGUMENT if description is longer than 4096 characters.
  3640  	// * Returns INVALID_ARGUMENT if product_category is missing or invalid.
  3641  	CreateProduct(context.Context, *CreateProductRequest) (*Product, error)
  3642  	// Lists products in an unspecified order.
  3643  	//
  3644  	// Possible errors:
  3645  	//
  3646  	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
  3647  	ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error)
  3648  	// Gets information associated with a Product.
  3649  	//
  3650  	// Possible errors:
  3651  	//
  3652  	// * Returns NOT_FOUND if the Product does not exist.
  3653  	GetProduct(context.Context, *GetProductRequest) (*Product, error)
  3654  	// Makes changes to a Product resource.
  3655  	// Only display_name, description and labels can be updated right now.
  3656  	//
  3657  	// If labels are updated, the change will not be reflected in queries until
  3658  	// the next index time.
  3659  	//
  3660  	// Possible errors:
  3661  	//
  3662  	// * Returns NOT_FOUND if the Product does not exist.
  3663  	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but is
  3664  	//   missing from the request or longer than 4096 characters.
  3665  	// * Returns INVALID_ARGUMENT if description is present in update_mask but is
  3666  	//   longer than 4096 characters.
  3667  	// * Returns INVALID_ARGUMENT if product_category is present in update_mask.
  3668  	UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error)
  3669  	// Permanently deletes a product and its reference images.
  3670  	//
  3671  	// Metadata of the product and all its images will be deleted right away, but
  3672  	// search queries against ProductSets containing the product may still work
  3673  	// until all related caches are refreshed.
  3674  	//
  3675  	// Possible errors:
  3676  	//
  3677  	// * Returns NOT_FOUND if the product does not exist.
  3678  	DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error)
  3679  	// Creates and returns a new ReferenceImage resource.
  3680  	//
  3681  	// The `bounding_poly` field is optional. If `bounding_poly` is not specified,
  3682  	// the system will try to detect regions of interest in the image that are
  3683  	// compatible with the product_category on the parent product. If it is
  3684  	// specified, detection is ALWAYS skipped. The system converts polygons into
  3685  	// non-rotated rectangles.
  3686  	//
  3687  	// Note that the pipeline will resize the image if the image resolution is too
  3688  	// large to process (above 50MP).
  3689  	//
  3690  	// Possible errors:
  3691  	//
  3692  	// * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096
  3693  	//   characters.
  3694  	// * Returns INVALID_ARGUMENT if the product does not exist.
  3695  	// * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing
  3696  	//   compatible with the parent product's product_category is detected.
  3697  	// * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons.
  3698  	CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error)
  3699  	// Permanently deletes a reference image.
  3700  	//
  3701  	// The image metadata will be deleted right away, but search queries
  3702  	// against ProductSets containing the image may still work until all related
  3703  	// caches are refreshed.
  3704  	//
  3705  	// The actual image files are not deleted from Google Cloud Storage.
  3706  	//
  3707  	// Possible errors:
  3708  	//
  3709  	// * Returns NOT_FOUND if the reference image does not exist.
  3710  	DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error)
  3711  	// Lists reference images.
  3712  	//
  3713  	// Possible errors:
  3714  	//
  3715  	// * Returns NOT_FOUND if the parent product does not exist.
  3716  	// * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less
  3717  	//   than 1.
  3718  	ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error)
  3719  	// Gets information associated with a ReferenceImage.
  3720  	//
  3721  	// Possible errors:
  3722  	//
  3723  	// * Returns NOT_FOUND if the specified image does not exist.
  3724  	GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error)
  3725  	// Adds a Product to the specified ProductSet. If the Product is already
  3726  	// present, no change is made.
  3727  	//
  3728  	// One Product can be added to at most 100 ProductSets.
  3729  	//
  3730  	// Possible errors:
  3731  	//
  3732  	// * Returns NOT_FOUND if the Product or the ProductSet doesn't exist.
  3733  	AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error)
  3734  	// Removes a Product from the specified ProductSet.
  3735  	//
  3736  	// Possible errors:
  3737  	//
  3738  	// * Returns NOT_FOUND If the Product is not found under the ProductSet.
  3739  	RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error)
  3740  	// Lists the Products in a ProductSet, in an unspecified order. If the
  3741  	// ProductSet does not exist, the products field of the response will be
  3742  	// empty.
  3743  	//
  3744  	// Possible errors:
  3745  	//
  3746  	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
  3747  	ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error)
  3748  	// Asynchronous API that imports a list of reference images to specified
  3749  	// product sets based on a list of image information.
  3750  	//
  3751  	// The [google.longrunning.Operation][google.longrunning.Operation] API can be
  3752  	// used to keep track of the progress and results of the request.
  3753  	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
  3754  	// `Operation.response` contains `ImportProductSetsResponse`. (results)
  3755  	//
  3756  	// The input source of this method is a csv file on Google Cloud Storage.
  3757  	// For the format of the csv file please see
  3758  	// [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource.csv_file_uri].
  3759  	ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error)
  3760  }
  3761  
  3762  // UnimplementedProductSearchServer can be embedded to have forward compatible implementations.
  3763  type UnimplementedProductSearchServer struct {
  3764  }
  3765  
  3766  func (*UnimplementedProductSearchServer) CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error) {
  3767  	return nil, status1.Errorf(codes.Unimplemented, "method CreateProductSet not implemented")
  3768  }
  3769  func (*UnimplementedProductSearchServer) ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error) {
  3770  	return nil, status1.Errorf(codes.Unimplemented, "method ListProductSets not implemented")
  3771  }
  3772  func (*UnimplementedProductSearchServer) GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error) {
  3773  	return nil, status1.Errorf(codes.Unimplemented, "method GetProductSet not implemented")
  3774  }
  3775  func (*UnimplementedProductSearchServer) UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error) {
  3776  	return nil, status1.Errorf(codes.Unimplemented, "method UpdateProductSet not implemented")
  3777  }
  3778  func (*UnimplementedProductSearchServer) DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error) {
  3779  	return nil, status1.Errorf(codes.Unimplemented, "method DeleteProductSet not implemented")
  3780  }
  3781  func (*UnimplementedProductSearchServer) CreateProduct(context.Context, *CreateProductRequest) (*Product, error) {
  3782  	return nil, status1.Errorf(codes.Unimplemented, "method CreateProduct not implemented")
  3783  }
  3784  func (*UnimplementedProductSearchServer) ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) {
  3785  	return nil, status1.Errorf(codes.Unimplemented, "method ListProducts not implemented")
  3786  }
  3787  func (*UnimplementedProductSearchServer) GetProduct(context.Context, *GetProductRequest) (*Product, error) {
  3788  	return nil, status1.Errorf(codes.Unimplemented, "method GetProduct not implemented")
  3789  }
  3790  func (*UnimplementedProductSearchServer) UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) {
  3791  	return nil, status1.Errorf(codes.Unimplemented, "method UpdateProduct not implemented")
  3792  }
  3793  func (*UnimplementedProductSearchServer) DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error) {
  3794  	return nil, status1.Errorf(codes.Unimplemented, "method DeleteProduct not implemented")
  3795  }
  3796  func (*UnimplementedProductSearchServer) CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error) {
  3797  	return nil, status1.Errorf(codes.Unimplemented, "method CreateReferenceImage not implemented")
  3798  }
  3799  func (*UnimplementedProductSearchServer) DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error) {
  3800  	return nil, status1.Errorf(codes.Unimplemented, "method DeleteReferenceImage not implemented")
  3801  }
  3802  func (*UnimplementedProductSearchServer) ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error) {
  3803  	return nil, status1.Errorf(codes.Unimplemented, "method ListReferenceImages not implemented")
  3804  }
  3805  func (*UnimplementedProductSearchServer) GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error) {
  3806  	return nil, status1.Errorf(codes.Unimplemented, "method GetReferenceImage not implemented")
  3807  }
  3808  func (*UnimplementedProductSearchServer) AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error) {
  3809  	return nil, status1.Errorf(codes.Unimplemented, "method AddProductToProductSet not implemented")
  3810  }
  3811  func (*UnimplementedProductSearchServer) RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error) {
  3812  	return nil, status1.Errorf(codes.Unimplemented, "method RemoveProductFromProductSet not implemented")
  3813  }
  3814  func (*UnimplementedProductSearchServer) ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error) {
  3815  	return nil, status1.Errorf(codes.Unimplemented, "method ListProductsInProductSet not implemented")
  3816  }
  3817  func (*UnimplementedProductSearchServer) ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error) {
  3818  	return nil, status1.Errorf(codes.Unimplemented, "method ImportProductSets not implemented")
  3819  }
  3820  
  3821  func RegisterProductSearchServer(s *grpc.Server, srv ProductSearchServer) {
  3822  	s.RegisterService(&_ProductSearch_serviceDesc, srv)
  3823  }
  3824  
  3825  func _ProductSearch_CreateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3826  	in := new(CreateProductSetRequest)
  3827  	if err := dec(in); err != nil {
  3828  		return nil, err
  3829  	}
  3830  	if interceptor == nil {
  3831  		return srv.(ProductSearchServer).CreateProductSet(ctx, in)
  3832  	}
  3833  	info := &grpc.UnaryServerInfo{
  3834  		Server:     srv,
  3835  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProductSet",
  3836  	}
  3837  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3838  		return srv.(ProductSearchServer).CreateProductSet(ctx, req.(*CreateProductSetRequest))
  3839  	}
  3840  	return interceptor(ctx, in, info, handler)
  3841  }
  3842  
  3843  func _ProductSearch_ListProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3844  	in := new(ListProductSetsRequest)
  3845  	if err := dec(in); err != nil {
  3846  		return nil, err
  3847  	}
  3848  	if interceptor == nil {
  3849  		return srv.(ProductSearchServer).ListProductSets(ctx, in)
  3850  	}
  3851  	info := &grpc.UnaryServerInfo{
  3852  		Server:     srv,
  3853  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductSets",
  3854  	}
  3855  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3856  		return srv.(ProductSearchServer).ListProductSets(ctx, req.(*ListProductSetsRequest))
  3857  	}
  3858  	return interceptor(ctx, in, info, handler)
  3859  }
  3860  
  3861  func _ProductSearch_GetProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3862  	in := new(GetProductSetRequest)
  3863  	if err := dec(in); err != nil {
  3864  		return nil, err
  3865  	}
  3866  	if interceptor == nil {
  3867  		return srv.(ProductSearchServer).GetProductSet(ctx, in)
  3868  	}
  3869  	info := &grpc.UnaryServerInfo{
  3870  		Server:     srv,
  3871  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/GetProductSet",
  3872  	}
  3873  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3874  		return srv.(ProductSearchServer).GetProductSet(ctx, req.(*GetProductSetRequest))
  3875  	}
  3876  	return interceptor(ctx, in, info, handler)
  3877  }
  3878  
  3879  func _ProductSearch_UpdateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3880  	in := new(UpdateProductSetRequest)
  3881  	if err := dec(in); err != nil {
  3882  		return nil, err
  3883  	}
  3884  	if interceptor == nil {
  3885  		return srv.(ProductSearchServer).UpdateProductSet(ctx, in)
  3886  	}
  3887  	info := &grpc.UnaryServerInfo{
  3888  		Server:     srv,
  3889  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProductSet",
  3890  	}
  3891  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3892  		return srv.(ProductSearchServer).UpdateProductSet(ctx, req.(*UpdateProductSetRequest))
  3893  	}
  3894  	return interceptor(ctx, in, info, handler)
  3895  }
  3896  
  3897  func _ProductSearch_DeleteProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3898  	in := new(DeleteProductSetRequest)
  3899  	if err := dec(in); err != nil {
  3900  		return nil, err
  3901  	}
  3902  	if interceptor == nil {
  3903  		return srv.(ProductSearchServer).DeleteProductSet(ctx, in)
  3904  	}
  3905  	info := &grpc.UnaryServerInfo{
  3906  		Server:     srv,
  3907  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProductSet",
  3908  	}
  3909  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3910  		return srv.(ProductSearchServer).DeleteProductSet(ctx, req.(*DeleteProductSetRequest))
  3911  	}
  3912  	return interceptor(ctx, in, info, handler)
  3913  }
  3914  
  3915  func _ProductSearch_CreateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3916  	in := new(CreateProductRequest)
  3917  	if err := dec(in); err != nil {
  3918  		return nil, err
  3919  	}
  3920  	if interceptor == nil {
  3921  		return srv.(ProductSearchServer).CreateProduct(ctx, in)
  3922  	}
  3923  	info := &grpc.UnaryServerInfo{
  3924  		Server:     srv,
  3925  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProduct",
  3926  	}
  3927  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3928  		return srv.(ProductSearchServer).CreateProduct(ctx, req.(*CreateProductRequest))
  3929  	}
  3930  	return interceptor(ctx, in, info, handler)
  3931  }
  3932  
  3933  func _ProductSearch_ListProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3934  	in := new(ListProductsRequest)
  3935  	if err := dec(in); err != nil {
  3936  		return nil, err
  3937  	}
  3938  	if interceptor == nil {
  3939  		return srv.(ProductSearchServer).ListProducts(ctx, in)
  3940  	}
  3941  	info := &grpc.UnaryServerInfo{
  3942  		Server:     srv,
  3943  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListProducts",
  3944  	}
  3945  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3946  		return srv.(ProductSearchServer).ListProducts(ctx, req.(*ListProductsRequest))
  3947  	}
  3948  	return interceptor(ctx, in, info, handler)
  3949  }
  3950  
  3951  func _ProductSearch_GetProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3952  	in := new(GetProductRequest)
  3953  	if err := dec(in); err != nil {
  3954  		return nil, err
  3955  	}
  3956  	if interceptor == nil {
  3957  		return srv.(ProductSearchServer).GetProduct(ctx, in)
  3958  	}
  3959  	info := &grpc.UnaryServerInfo{
  3960  		Server:     srv,
  3961  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/GetProduct",
  3962  	}
  3963  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3964  		return srv.(ProductSearchServer).GetProduct(ctx, req.(*GetProductRequest))
  3965  	}
  3966  	return interceptor(ctx, in, info, handler)
  3967  }
  3968  
  3969  func _ProductSearch_UpdateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3970  	in := new(UpdateProductRequest)
  3971  	if err := dec(in); err != nil {
  3972  		return nil, err
  3973  	}
  3974  	if interceptor == nil {
  3975  		return srv.(ProductSearchServer).UpdateProduct(ctx, in)
  3976  	}
  3977  	info := &grpc.UnaryServerInfo{
  3978  		Server:     srv,
  3979  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProduct",
  3980  	}
  3981  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3982  		return srv.(ProductSearchServer).UpdateProduct(ctx, req.(*UpdateProductRequest))
  3983  	}
  3984  	return interceptor(ctx, in, info, handler)
  3985  }
  3986  
  3987  func _ProductSearch_DeleteProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3988  	in := new(DeleteProductRequest)
  3989  	if err := dec(in); err != nil {
  3990  		return nil, err
  3991  	}
  3992  	if interceptor == nil {
  3993  		return srv.(ProductSearchServer).DeleteProduct(ctx, in)
  3994  	}
  3995  	info := &grpc.UnaryServerInfo{
  3996  		Server:     srv,
  3997  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProduct",
  3998  	}
  3999  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4000  		return srv.(ProductSearchServer).DeleteProduct(ctx, req.(*DeleteProductRequest))
  4001  	}
  4002  	return interceptor(ctx, in, info, handler)
  4003  }
  4004  
  4005  func _ProductSearch_CreateReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4006  	in := new(CreateReferenceImageRequest)
  4007  	if err := dec(in); err != nil {
  4008  		return nil, err
  4009  	}
  4010  	if interceptor == nil {
  4011  		return srv.(ProductSearchServer).CreateReferenceImage(ctx, in)
  4012  	}
  4013  	info := &grpc.UnaryServerInfo{
  4014  		Server:     srv,
  4015  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/CreateReferenceImage",
  4016  	}
  4017  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4018  		return srv.(ProductSearchServer).CreateReferenceImage(ctx, req.(*CreateReferenceImageRequest))
  4019  	}
  4020  	return interceptor(ctx, in, info, handler)
  4021  }
  4022  
  4023  func _ProductSearch_DeleteReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4024  	in := new(DeleteReferenceImageRequest)
  4025  	if err := dec(in); err != nil {
  4026  		return nil, err
  4027  	}
  4028  	if interceptor == nil {
  4029  		return srv.(ProductSearchServer).DeleteReferenceImage(ctx, in)
  4030  	}
  4031  	info := &grpc.UnaryServerInfo{
  4032  		Server:     srv,
  4033  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteReferenceImage",
  4034  	}
  4035  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4036  		return srv.(ProductSearchServer).DeleteReferenceImage(ctx, req.(*DeleteReferenceImageRequest))
  4037  	}
  4038  	return interceptor(ctx, in, info, handler)
  4039  }
  4040  
  4041  func _ProductSearch_ListReferenceImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4042  	in := new(ListReferenceImagesRequest)
  4043  	if err := dec(in); err != nil {
  4044  		return nil, err
  4045  	}
  4046  	if interceptor == nil {
  4047  		return srv.(ProductSearchServer).ListReferenceImages(ctx, in)
  4048  	}
  4049  	info := &grpc.UnaryServerInfo{
  4050  		Server:     srv,
  4051  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListReferenceImages",
  4052  	}
  4053  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4054  		return srv.(ProductSearchServer).ListReferenceImages(ctx, req.(*ListReferenceImagesRequest))
  4055  	}
  4056  	return interceptor(ctx, in, info, handler)
  4057  }
  4058  
  4059  func _ProductSearch_GetReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4060  	in := new(GetReferenceImageRequest)
  4061  	if err := dec(in); err != nil {
  4062  		return nil, err
  4063  	}
  4064  	if interceptor == nil {
  4065  		return srv.(ProductSearchServer).GetReferenceImage(ctx, in)
  4066  	}
  4067  	info := &grpc.UnaryServerInfo{
  4068  		Server:     srv,
  4069  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/GetReferenceImage",
  4070  	}
  4071  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4072  		return srv.(ProductSearchServer).GetReferenceImage(ctx, req.(*GetReferenceImageRequest))
  4073  	}
  4074  	return interceptor(ctx, in, info, handler)
  4075  }
  4076  
  4077  func _ProductSearch_AddProductToProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4078  	in := new(AddProductToProductSetRequest)
  4079  	if err := dec(in); err != nil {
  4080  		return nil, err
  4081  	}
  4082  	if interceptor == nil {
  4083  		return srv.(ProductSearchServer).AddProductToProductSet(ctx, in)
  4084  	}
  4085  	info := &grpc.UnaryServerInfo{
  4086  		Server:     srv,
  4087  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/AddProductToProductSet",
  4088  	}
  4089  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4090  		return srv.(ProductSearchServer).AddProductToProductSet(ctx, req.(*AddProductToProductSetRequest))
  4091  	}
  4092  	return interceptor(ctx, in, info, handler)
  4093  }
  4094  
  4095  func _ProductSearch_RemoveProductFromProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4096  	in := new(RemoveProductFromProductSetRequest)
  4097  	if err := dec(in); err != nil {
  4098  		return nil, err
  4099  	}
  4100  	if interceptor == nil {
  4101  		return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, in)
  4102  	}
  4103  	info := &grpc.UnaryServerInfo{
  4104  		Server:     srv,
  4105  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/RemoveProductFromProductSet",
  4106  	}
  4107  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4108  		return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, req.(*RemoveProductFromProductSetRequest))
  4109  	}
  4110  	return interceptor(ctx, in, info, handler)
  4111  }
  4112  
  4113  func _ProductSearch_ListProductsInProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4114  	in := new(ListProductsInProductSetRequest)
  4115  	if err := dec(in); err != nil {
  4116  		return nil, err
  4117  	}
  4118  	if interceptor == nil {
  4119  		return srv.(ProductSearchServer).ListProductsInProductSet(ctx, in)
  4120  	}
  4121  	info := &grpc.UnaryServerInfo{
  4122  		Server:     srv,
  4123  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductsInProductSet",
  4124  	}
  4125  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4126  		return srv.(ProductSearchServer).ListProductsInProductSet(ctx, req.(*ListProductsInProductSetRequest))
  4127  	}
  4128  	return interceptor(ctx, in, info, handler)
  4129  }
  4130  
  4131  func _ProductSearch_ImportProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4132  	in := new(ImportProductSetsRequest)
  4133  	if err := dec(in); err != nil {
  4134  		return nil, err
  4135  	}
  4136  	if interceptor == nil {
  4137  		return srv.(ProductSearchServer).ImportProductSets(ctx, in)
  4138  	}
  4139  	info := &grpc.UnaryServerInfo{
  4140  		Server:     srv,
  4141  		FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ImportProductSets",
  4142  	}
  4143  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4144  		return srv.(ProductSearchServer).ImportProductSets(ctx, req.(*ImportProductSetsRequest))
  4145  	}
  4146  	return interceptor(ctx, in, info, handler)
  4147  }
  4148  
  4149  var _ProductSearch_serviceDesc = grpc.ServiceDesc{
  4150  	ServiceName: "google.cloud.vision.v1p3beta1.ProductSearch",
  4151  	HandlerType: (*ProductSearchServer)(nil),
  4152  	Methods: []grpc.MethodDesc{
  4153  		{
  4154  			MethodName: "CreateProductSet",
  4155  			Handler:    _ProductSearch_CreateProductSet_Handler,
  4156  		},
  4157  		{
  4158  			MethodName: "ListProductSets",
  4159  			Handler:    _ProductSearch_ListProductSets_Handler,
  4160  		},
  4161  		{
  4162  			MethodName: "GetProductSet",
  4163  			Handler:    _ProductSearch_GetProductSet_Handler,
  4164  		},
  4165  		{
  4166  			MethodName: "UpdateProductSet",
  4167  			Handler:    _ProductSearch_UpdateProductSet_Handler,
  4168  		},
  4169  		{
  4170  			MethodName: "DeleteProductSet",
  4171  			Handler:    _ProductSearch_DeleteProductSet_Handler,
  4172  		},
  4173  		{
  4174  			MethodName: "CreateProduct",
  4175  			Handler:    _ProductSearch_CreateProduct_Handler,
  4176  		},
  4177  		{
  4178  			MethodName: "ListProducts",
  4179  			Handler:    _ProductSearch_ListProducts_Handler,
  4180  		},
  4181  		{
  4182  			MethodName: "GetProduct",
  4183  			Handler:    _ProductSearch_GetProduct_Handler,
  4184  		},
  4185  		{
  4186  			MethodName: "UpdateProduct",
  4187  			Handler:    _ProductSearch_UpdateProduct_Handler,
  4188  		},
  4189  		{
  4190  			MethodName: "DeleteProduct",
  4191  			Handler:    _ProductSearch_DeleteProduct_Handler,
  4192  		},
  4193  		{
  4194  			MethodName: "CreateReferenceImage",
  4195  			Handler:    _ProductSearch_CreateReferenceImage_Handler,
  4196  		},
  4197  		{
  4198  			MethodName: "DeleteReferenceImage",
  4199  			Handler:    _ProductSearch_DeleteReferenceImage_Handler,
  4200  		},
  4201  		{
  4202  			MethodName: "ListReferenceImages",
  4203  			Handler:    _ProductSearch_ListReferenceImages_Handler,
  4204  		},
  4205  		{
  4206  			MethodName: "GetReferenceImage",
  4207  			Handler:    _ProductSearch_GetReferenceImage_Handler,
  4208  		},
  4209  		{
  4210  			MethodName: "AddProductToProductSet",
  4211  			Handler:    _ProductSearch_AddProductToProductSet_Handler,
  4212  		},
  4213  		{
  4214  			MethodName: "RemoveProductFromProductSet",
  4215  			Handler:    _ProductSearch_RemoveProductFromProductSet_Handler,
  4216  		},
  4217  		{
  4218  			MethodName: "ListProductsInProductSet",
  4219  			Handler:    _ProductSearch_ListProductsInProductSet_Handler,
  4220  		},
  4221  		{
  4222  			MethodName: "ImportProductSets",
  4223  			Handler:    _ProductSearch_ImportProductSets_Handler,
  4224  		},
  4225  	},
  4226  	Streams:  []grpc.StreamDesc{},
  4227  	Metadata: "google/cloud/vision/v1p3beta1/product_search_service.proto",
  4228  }
  4229  

View as plain text