// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.21.9
// source: google/cloud/visionai/v1/warehouse.proto

package visionai

import (
	context "context"
	reflect "reflect"
	sync "sync"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	longrunning "google.golang.org/genproto/googleapis/longrunning"
	status "google.golang.org/genproto/googleapis/rpc/status"
	datetime "google.golang.org/genproto/googleapis/type/datetime"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status1 "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	anypb "google.golang.org/protobuf/types/known/anypb"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
	structpb "google.golang.org/protobuf/types/known/structpb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Different types for a facet bucket.
type FacetBucketType int32

const (
	// Unspecified type.
	FacetBucketType_FACET_BUCKET_TYPE_UNSPECIFIED FacetBucketType = 0
	// Value type.
	FacetBucketType_FACET_BUCKET_TYPE_VALUE FacetBucketType = 1
	// Datetime type.
	FacetBucketType_FACET_BUCKET_TYPE_DATETIME FacetBucketType = 2
	// Fixed Range type.
	FacetBucketType_FACET_BUCKET_TYPE_FIXED_RANGE FacetBucketType = 3
	// Custom Range type.
	FacetBucketType_FACET_BUCKET_TYPE_CUSTOM_RANGE FacetBucketType = 4
)

// Enum value maps for FacetBucketType.
var (
	FacetBucketType_name = map[int32]string{
		0: "FACET_BUCKET_TYPE_UNSPECIFIED",
		1: "FACET_BUCKET_TYPE_VALUE",
		2: "FACET_BUCKET_TYPE_DATETIME",
		3: "FACET_BUCKET_TYPE_FIXED_RANGE",
		4: "FACET_BUCKET_TYPE_CUSTOM_RANGE",
	}
	FacetBucketType_value = map[string]int32{
		"FACET_BUCKET_TYPE_UNSPECIFIED":  0,
		"FACET_BUCKET_TYPE_VALUE":        1,
		"FACET_BUCKET_TYPE_DATETIME":     2,
		"FACET_BUCKET_TYPE_FIXED_RANGE":  3,
		"FACET_BUCKET_TYPE_CUSTOM_RANGE": 4,
	}
)

func (x FacetBucketType) Enum() *FacetBucketType {
	p := new(FacetBucketType)
	*p = x
	return p
}

func (x FacetBucketType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (FacetBucketType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_visionai_v1_warehouse_proto_enumTypes[0].Descriptor()
}

func (FacetBucketType) Type() protoreflect.EnumType {
	return &file_google_cloud_visionai_v1_warehouse_proto_enumTypes[0]
}

func (x FacetBucketType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use FacetBucketType.Descriptor instead.
func (FacetBucketType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{0}
}

// Data type of the annotation.
type DataSchemaDetails_DataType int32

const (
	// Unspecified type.
	DataSchemaDetails_DATA_TYPE_UNSPECIFIED DataSchemaDetails_DataType = 0
	// Integer type.
	// Allowed search strategies:
	//   - DataSchema.SearchStrategy.NO_SEARCH,
	//   - DataSchema.SearchStrategy.EXACT_SEARCH.
	//     Supports query by IntRangeArray.
	DataSchemaDetails_INTEGER DataSchemaDetails_DataType = 1
	// Float type.
	// Allowed search strategies:
	//   - DataSchema.SearchStrategy.NO_SEARCH,
	//   - DataSchema.SearchStrategy.EXACT_SEARCH.
	//     Supports query by FloatRangeArray.
	DataSchemaDetails_FLOAT DataSchemaDetails_DataType = 2
	// String type.
	// Allowed search strategies:
	// - DataSchema.SearchStrategy.NO_SEARCH,
	// - DataSchema.SearchStrategy.EXACT_SEARCH,
	// - DataSchema.SearchStrategy.SMART_SEARCH.
	DataSchemaDetails_STRING DataSchemaDetails_DataType = 3
	// Supported formats:
	// %Y-%m-%dT%H:%M:%E*S%E*z (absl::RFC3339_full)
	// %Y-%m-%dT%H:%M:%E*S
	// %Y-%m-%dT%H:%M%E*z
	// %Y-%m-%dT%H:%M
	// %Y-%m-%dT%H%E*z
	// %Y-%m-%dT%H
	// %Y-%m-%d%E*z
	// %Y-%m-%d
	// %Y-%m
	// %Y
	// Allowed search strategies:
	//   - DataSchema.SearchStrategy.NO_SEARCH,
	//   - DataSchema.SearchStrategy.EXACT_SEARCH.
	//     Supports query by DateTimeRangeArray.
	DataSchemaDetails_DATETIME DataSchemaDetails_DataType = 5
	// Geo coordinate type.
	// Allowed search strategies:
	//   - DataSchema.SearchStrategy.NO_SEARCH,
	//   - DataSchema.SearchStrategy.EXACT_SEARCH.
	//     Supports query by GeoLocationArray.
	DataSchemaDetails_GEO_COORDINATE DataSchemaDetails_DataType = 7
	// Type to pass any proto as available in annotations.proto. Only use
	// internally.
	// Available proto types and its corresponding search behavior:
	//   - ImageObjectDetectionPredictionResult, allows SMART_SEARCH on
	//     display_names and NO_SEARCH.
	//   - ClassificationPredictionResult, allows SMART_SEARCH on display_names
	//     and NO_SEARCH.
	//   - ImageSegmentationPredictionResult, allows NO_SEARCH.
	//   - VideoActionRecognitionPredictionResult, allows SMART_SEARCH on
	//     display_name and NO_SEARCH.
	//   - VideoObjectTrackingPredictionResult, allows SMART_SEARCH on
	//     display_name and NO_SEARCH.
	//   - VideoClassificationPredictionResult, allows SMART_SEARCH on
	//     display_name and NO_SEARCH.
	//   - OccupancyCountingPredictionResult, allows EXACT_SEARCH on
	//     stats.full_frame_count.count and NO_SEARCH.
	//   - ObjectDetectionPredictionResult, allows SMART_SEARCH on
	//     identified_boxes.entity.label_string and NO_SEARCH.
	DataSchemaDetails_PROTO_ANY DataSchemaDetails_DataType = 8
	// Boolean type.
	// Allowed search strategies:
	// - DataSchema.SearchStrategy.NO_SEARCH,
	// - DataSchema.SearchStrategy.EXACT_SEARCH.
	DataSchemaDetails_BOOLEAN DataSchemaDetails_DataType = 9
)

// Enum value maps for DataSchemaDetails_DataType.
var (
	DataSchemaDetails_DataType_name = map[int32]string{
		0: "DATA_TYPE_UNSPECIFIED",
		1: "INTEGER",
		2: "FLOAT",
		3: "STRING",
		5: "DATETIME",
		7: "GEO_COORDINATE",
		8: "PROTO_ANY",
		9: "BOOLEAN",
	}
	DataSchemaDetails_DataType_value = map[string]int32{
		"DATA_TYPE_UNSPECIFIED": 0,
		"INTEGER":               1,
		"FLOAT":                 2,
		"STRING":                3,
		"DATETIME":              5,
		"GEO_COORDINATE":        7,
		"PROTO_ANY":             8,
		"BOOLEAN":               9,
	}
)

func (x DataSchemaDetails_DataType) Enum() *DataSchemaDetails_DataType {
	p := new(DataSchemaDetails_DataType)
	*p = x
	return p
}

func (x DataSchemaDetails_DataType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (DataSchemaDetails_DataType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_visionai_v1_warehouse_proto_enumTypes[1].Descriptor()
}

func (DataSchemaDetails_DataType) Type() protoreflect.EnumType {
	return &file_google_cloud_visionai_v1_warehouse_proto_enumTypes[1]
}

func (x DataSchemaDetails_DataType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use DataSchemaDetails_DataType.Descriptor instead.
func (DataSchemaDetails_DataType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{17, 0}
}

// The granularity of annotations under this DataSchema.
type DataSchemaDetails_Granularity int32

const (
	// Unspecified granularity.
	DataSchemaDetails_GRANULARITY_UNSPECIFIED DataSchemaDetails_Granularity = 0
	// Asset-level granularity (annotations must not contain partition info).
	DataSchemaDetails_GRANULARITY_ASSET_LEVEL DataSchemaDetails_Granularity = 1
	// Partition-level granularity (annotations must contain partition info).
	DataSchemaDetails_GRANULARITY_PARTITION_LEVEL DataSchemaDetails_Granularity = 2
)

// Enum value maps for DataSchemaDetails_Granularity.
var (
	DataSchemaDetails_Granularity_name = map[int32]string{
		0: "GRANULARITY_UNSPECIFIED",
		1: "GRANULARITY_ASSET_LEVEL",
		2: "GRANULARITY_PARTITION_LEVEL",
	}
	DataSchemaDetails_Granularity_value = map[string]int32{
		"GRANULARITY_UNSPECIFIED":     0,
		"GRANULARITY_ASSET_LEVEL":     1,
		"GRANULARITY_PARTITION_LEVEL": 2,
	}
)

func (x DataSchemaDetails_Granularity) Enum() *DataSchemaDetails_Granularity {
	p := new(DataSchemaDetails_Granularity)
	*p = x
	return p
}

func (x DataSchemaDetails_Granularity) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (DataSchemaDetails_Granularity) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_visionai_v1_warehouse_proto_enumTypes[2].Descriptor()
}

func (DataSchemaDetails_Granularity) Type() protoreflect.EnumType {
	return &file_google_cloud_visionai_v1_warehouse_proto_enumTypes[2]
}

func (x DataSchemaDetails_Granularity) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use DataSchemaDetails_Granularity.Descriptor instead.
func (DataSchemaDetails_Granularity) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{17, 1}
}

// The types of search strategies to be applied on the annotation key.
type DataSchemaDetails_SearchStrategy_SearchStrategyType int32

const (
	// Annotatation values of the `key` above will not be searchable.
	DataSchemaDetails_SearchStrategy_NO_SEARCH DataSchemaDetails_SearchStrategy_SearchStrategyType = 0
	// When searching with `key`, the value must be exactly as the annotation
	// value that has been ingested.
	DataSchemaDetails_SearchStrategy_EXACT_SEARCH DataSchemaDetails_SearchStrategy_SearchStrategyType = 1
	// When searching with `key`, Warehouse will perform broad search based on
	// semantic of the annotation value.
	DataSchemaDetails_SearchStrategy_SMART_SEARCH DataSchemaDetails_SearchStrategy_SearchStrategyType = 2
)

// Enum value maps for DataSchemaDetails_SearchStrategy_SearchStrategyType.
var (
	DataSchemaDetails_SearchStrategy_SearchStrategyType_name = map[int32]string{
		0: "NO_SEARCH",
		1: "EXACT_SEARCH",
		2: "SMART_SEARCH",
	}
	DataSchemaDetails_SearchStrategy_SearchStrategyType_value = map[string]int32{
		"NO_SEARCH":    0,
		"EXACT_SEARCH": 1,
		"SMART_SEARCH": 2,
	}
)

func (x DataSchemaDetails_SearchStrategy_SearchStrategyType) Enum() *DataSchemaDetails_SearchStrategy_SearchStrategyType {
	p := new(DataSchemaDetails_SearchStrategy_SearchStrategyType)
	*p = x
	return p
}

func (x DataSchemaDetails_SearchStrategy_SearchStrategyType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (DataSchemaDetails_SearchStrategy_SearchStrategyType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_visionai_v1_warehouse_proto_enumTypes[3].Descriptor()
}

func (DataSchemaDetails_SearchStrategy_SearchStrategyType) Type() protoreflect.EnumType {
	return &file_google_cloud_visionai_v1_warehouse_proto_enumTypes[3]
}

func (x DataSchemaDetails_SearchStrategy_SearchStrategyType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use DataSchemaDetails_SearchStrategy_SearchStrategyType.Descriptor instead.
func (DataSchemaDetails_SearchStrategy_SearchStrategyType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{17, 1, 0}
}

// Granularity enum for the datetime bucket.
type FacetProperty_DateTimeBucketSpec_Granularity int32

const (
	// Unspecified granularity.
	FacetProperty_DateTimeBucketSpec_GRANULARITY_UNSPECIFIED FacetProperty_DateTimeBucketSpec_Granularity = 0
	// Granularity is year.
	FacetProperty_DateTimeBucketSpec_YEAR FacetProperty_DateTimeBucketSpec_Granularity = 1
	// Granularity is month.
	FacetProperty_DateTimeBucketSpec_MONTH FacetProperty_DateTimeBucketSpec_Granularity = 2
	// Granularity is day.
	FacetProperty_DateTimeBucketSpec_DAY FacetProperty_DateTimeBucketSpec_Granularity = 3
)

// Enum value maps for FacetProperty_DateTimeBucketSpec_Granularity.
var (
	FacetProperty_DateTimeBucketSpec_Granularity_name = map[int32]string{
		0: "GRANULARITY_UNSPECIFIED",
		1: "YEAR",
		2: "MONTH",
		3: "DAY",
	}
	FacetProperty_DateTimeBucketSpec_Granularity_value = map[string]int32{
		"GRANULARITY_UNSPECIFIED": 0,
		"YEAR":                    1,
		"MONTH":                   2,
		"DAY":                     3,
	}
)

func (x FacetProperty_DateTimeBucketSpec_Granularity) Enum() *FacetProperty_DateTimeBucketSpec_Granularity {
	p := new(FacetProperty_DateTimeBucketSpec_Granularity)
	*p = x
	return p
}

func (x FacetProperty_DateTimeBucketSpec_Granularity) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (FacetProperty_DateTimeBucketSpec_Granularity) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_visionai_v1_warehouse_proto_enumTypes[4].Descriptor()
}

func (FacetProperty_DateTimeBucketSpec_Granularity) Type() protoreflect.EnumType {
	return &file_google_cloud_visionai_v1_warehouse_proto_enumTypes[4]
}

func (x FacetProperty_DateTimeBucketSpec_Granularity) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use FacetProperty_DateTimeBucketSpec_Granularity.Descriptor instead.
func (FacetProperty_DateTimeBucketSpec_Granularity) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{40, 2, 0}
}

// Container format of the video.
type IngestAssetRequest_Config_VideoType_ContainerFormat int32

const (
	// The default type, not supposed to be used.
	IngestAssetRequest_Config_VideoType_CONTAINER_FORMAT_UNSPECIFIED IngestAssetRequest_Config_VideoType_ContainerFormat = 0
	// Mp4 container format.
	IngestAssetRequest_Config_VideoType_CONTAINER_FORMAT_MP4 IngestAssetRequest_Config_VideoType_ContainerFormat = 1
)

// Enum value maps for IngestAssetRequest_Config_VideoType_ContainerFormat.
var (
	IngestAssetRequest_Config_VideoType_ContainerFormat_name = map[int32]string{
		0: "CONTAINER_FORMAT_UNSPECIFIED",
		1: "CONTAINER_FORMAT_MP4",
	}
	IngestAssetRequest_Config_VideoType_ContainerFormat_value = map[string]int32{
		"CONTAINER_FORMAT_UNSPECIFIED": 0,
		"CONTAINER_FORMAT_MP4":         1,
	}
)

func (x IngestAssetRequest_Config_VideoType_ContainerFormat) Enum() *IngestAssetRequest_Config_VideoType_ContainerFormat {
	p := new(IngestAssetRequest_Config_VideoType_ContainerFormat)
	*p = x
	return p
}

func (x IngestAssetRequest_Config_VideoType_ContainerFormat) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (IngestAssetRequest_Config_VideoType_ContainerFormat) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_visionai_v1_warehouse_proto_enumTypes[5].Descriptor()
}

func (IngestAssetRequest_Config_VideoType_ContainerFormat) Type() protoreflect.EnumType {
	return &file_google_cloud_visionai_v1_warehouse_proto_enumTypes[5]
}

func (x IngestAssetRequest_Config_VideoType_ContainerFormat) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use IngestAssetRequest_Config_VideoType_ContainerFormat.Descriptor instead.
func (IngestAssetRequest_Config_VideoType_ContainerFormat) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{45, 0, 0, 0}
}

// Request message for CreateAssetRequest.
type CreateAssetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The parent resource where this asset will be created.
	// Format: projects/*/locations/*/corpora/*
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Required. The asset to create.
	Asset *Asset `protobuf:"bytes,2,opt,name=asset,proto3" json:"asset,omitempty"`
	// Optional. The ID to use for the asset, which will become the final component of
	// the asset's resource name if user choose to specify. Otherwise, asset id
	// will be generated by system.
	//
	// This value should be up to 63 characters, and valid characters
	// are /[a-z][0-9]-/. The first character must be a letter, the last could be
	// a letter or a number.
	AssetId *string `protobuf:"bytes,3,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"`
}

func (x *CreateAssetRequest) Reset() {
	*x = CreateAssetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateAssetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateAssetRequest) ProtoMessage() {}

func (x *CreateAssetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateAssetRequest.ProtoReflect.Descriptor instead.
func (*CreateAssetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{0}
}

func (x *CreateAssetRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateAssetRequest) GetAsset() *Asset {
	if x != nil {
		return x.Asset
	}
	return nil
}

func (x *CreateAssetRequest) GetAssetId() string {
	if x != nil && x.AssetId != nil {
		return *x.AssetId
	}
	return ""
}

// Request message for GetAsset.
type GetAssetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the asset to retrieve.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetAssetRequest) Reset() {
	*x = GetAssetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetAssetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetAssetRequest) ProtoMessage() {}

func (x *GetAssetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetAssetRequest.ProtoReflect.Descriptor instead.
func (*GetAssetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{1}
}

func (x *GetAssetRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for ListAssets.
type ListAssetsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The parent, which owns this collection of assets.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// The maximum number of assets to return. The service may return fewer than
	// this value.
	// If unspecified, at most 50 assets will be returned.
	// The maximum value is 1000; values above 1000 will be coerced to 1000.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A page token, received from a previous `ListAssets` call.
	// Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to `ListAssets` must match
	// the call that provided the page token.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

func (x *ListAssetsRequest) Reset() {
	*x = ListAssetsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListAssetsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListAssetsRequest) ProtoMessage() {}

func (x *ListAssetsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListAssetsRequest.ProtoReflect.Descriptor instead.
func (*ListAssetsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{2}
}

func (x *ListAssetsRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListAssetsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListAssetsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// Response message for ListAssets.
type ListAssetsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The assets from the specified corpus.
	Assets []*Asset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"`
	// A token, which can be sent as `page_token` to retrieve the next page.
	// If this field is omitted, there are no subsequent pages.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListAssetsResponse) Reset() {
	*x = ListAssetsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListAssetsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListAssetsResponse) ProtoMessage() {}

func (x *ListAssetsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListAssetsResponse.ProtoReflect.Descriptor instead.
func (*ListAssetsResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{3}
}

func (x *ListAssetsResponse) GetAssets() []*Asset {
	if x != nil {
		return x.Assets
	}
	return nil
}

func (x *ListAssetsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// Response message for UpdateAsset.
type UpdateAssetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The asset to update.
	//
	// The asset's `name` field is used to identify the asset to be updated.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}
	Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"`
	// The list of fields to be updated.
	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
}

func (x *UpdateAssetRequest) Reset() {
	*x = UpdateAssetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateAssetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateAssetRequest) ProtoMessage() {}

func (x *UpdateAssetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateAssetRequest.ProtoReflect.Descriptor instead.
func (*UpdateAssetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{4}
}

func (x *UpdateAssetRequest) GetAsset() *Asset {
	if x != nil {
		return x.Asset
	}
	return nil
}

func (x *UpdateAssetRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

// Request message for DeleteAsset.
type DeleteAssetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the asset to delete.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *DeleteAssetRequest) Reset() {
	*x = DeleteAssetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteAssetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteAssetRequest) ProtoMessage() {}

func (x *DeleteAssetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteAssetRequest.ProtoReflect.Descriptor instead.
func (*DeleteAssetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{5}
}

func (x *DeleteAssetRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// An asset is a resource in corpus. It represents a media object inside corpus,
// contains metadata and another resource annotation. Different feature could be
// applied to the asset to generate annotations. User could specified annotation
// related to the target asset.
type Asset struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Resource name of the asset.
	// Form:
	// `projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/assets/{asset_id}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The duration for which all media assets, associated metadata, and search
	// documents can exist. If not set, then it will using the default ttl in the
	// parent corpus resource.
	Ttl *durationpb.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"`
}

func (x *Asset) Reset() {
	*x = Asset{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Asset) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Asset) ProtoMessage() {}

func (x *Asset) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Asset.ProtoReflect.Descriptor instead.
func (*Asset) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{6}
}

func (x *Asset) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Asset) GetTtl() *durationpb.Duration {
	if x != nil {
		return x.Ttl
	}
	return nil
}

// Request message of CreateCorpus API.
type CreateCorpusRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Form: `projects/{project_number}/locations/{location_id}`
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Required. The corpus to be created.
	Corpus *Corpus `protobuf:"bytes,2,opt,name=corpus,proto3" json:"corpus,omitempty"`
}

func (x *CreateCorpusRequest) Reset() {
	*x = CreateCorpusRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateCorpusRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateCorpusRequest) ProtoMessage() {}

func (x *CreateCorpusRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateCorpusRequest.ProtoReflect.Descriptor instead.
func (*CreateCorpusRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{7}
}

func (x *CreateCorpusRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateCorpusRequest) GetCorpus() *Corpus {
	if x != nil {
		return x.Corpus
	}
	return nil
}

// Metadata for CreateCorpus API.
type CreateCorpusMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *CreateCorpusMetadata) Reset() {
	*x = CreateCorpusMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateCorpusMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateCorpusMetadata) ProtoMessage() {}

func (x *CreateCorpusMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateCorpusMetadata.ProtoReflect.Descriptor instead.
func (*CreateCorpusMetadata) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{8}
}

// Corpus is a set of video contents for management. Within a corpus, videos
// share the same data schema. Search is also restricted within a single corpus.
type Corpus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Resource name of the corpus.
	// Form:
	// `projects/{project_number}/locations/{location_id}/corpora/{corpus_id}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Required. The corpus name to shown in the UI. The name can be up to 32 characters
	// long.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Optional. Description of the corpus. Can be up to 25000 characters long.
	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	// Required. The default TTL value for all assets under the corpus without a asset level
	// user-defined TTL with a maximum of 10 years. This is required for all
	// corpora.
	DefaultTtl *durationpb.Duration `protobuf:"bytes,5,opt,name=default_ttl,json=defaultTtl,proto3" json:"default_ttl,omitempty"`
}

func (x *Corpus) Reset() {
	*x = Corpus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Corpus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Corpus) ProtoMessage() {}

func (x *Corpus) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Corpus.ProtoReflect.Descriptor instead.
func (*Corpus) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{9}
}

func (x *Corpus) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Corpus) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *Corpus) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *Corpus) GetDefaultTtl() *durationpb.Duration {
	if x != nil {
		return x.DefaultTtl
	}
	return nil
}

// Request message for GetCorpus.
type GetCorpusRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name of the corpus to retrieve.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetCorpusRequest) Reset() {
	*x = GetCorpusRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetCorpusRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetCorpusRequest) ProtoMessage() {}

func (x *GetCorpusRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetCorpusRequest.ProtoReflect.Descriptor instead.
func (*GetCorpusRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{10}
}

func (x *GetCorpusRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for UpdateCorpus.
type UpdateCorpusRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The corpus which replaces the resource on the server.
	Corpus *Corpus `protobuf:"bytes,1,opt,name=corpus,proto3" json:"corpus,omitempty"`
	// The list of fields to be updated.
	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
}

func (x *UpdateCorpusRequest) Reset() {
	*x = UpdateCorpusRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateCorpusRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateCorpusRequest) ProtoMessage() {}

func (x *UpdateCorpusRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateCorpusRequest.ProtoReflect.Descriptor instead.
func (*UpdateCorpusRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{11}
}

func (x *UpdateCorpusRequest) GetCorpus() *Corpus {
	if x != nil {
		return x.Corpus
	}
	return nil
}

func (x *UpdateCorpusRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

// Request message for ListCorpora.
type ListCorporaRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name of the project from which to list corpora.
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Requested page size. API may return fewer results than requested.
	// If negative, INVALID_ARGUMENT error will be returned.
	// If unspecified or 0, API will pick a default size, which is 10.
	// If the requested page size is larger than the maximum size, API will pick
	// use the maximum size, which is 20.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A token identifying a page of results for the server to return.
	// Typically obtained via [ListCorpora.next_page_token][] of the previous
	// [Warehouse.ListCorpora][google.cloud.visionai.v1.Warehouse.ListCorpora] call.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

func (x *ListCorporaRequest) Reset() {
	*x = ListCorporaRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListCorporaRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListCorporaRequest) ProtoMessage() {}

func (x *ListCorporaRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListCorporaRequest.ProtoReflect.Descriptor instead.
func (*ListCorporaRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{12}
}

func (x *ListCorporaRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListCorporaRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListCorporaRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// Response message for ListCorpora.
type ListCorporaResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The corpora in the project.
	Corpora []*Corpus `protobuf:"bytes,1,rep,name=corpora,proto3" json:"corpora,omitempty"`
	// A token to retrieve next page of results.
	// Pass to [ListCorporaRequest.page_token][google.cloud.visionai.v1.ListCorporaRequest.page_token] to obtain that page.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListCorporaResponse) Reset() {
	*x = ListCorporaResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListCorporaResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListCorporaResponse) ProtoMessage() {}

func (x *ListCorporaResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListCorporaResponse.ProtoReflect.Descriptor instead.
func (*ListCorporaResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{13}
}

func (x *ListCorporaResponse) GetCorpora() []*Corpus {
	if x != nil {
		return x.Corpora
	}
	return nil
}

func (x *ListCorporaResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// Request message for DeleteCorpus.
type DeleteCorpusRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name of the corpus to delete.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *DeleteCorpusRequest) Reset() {
	*x = DeleteCorpusRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteCorpusRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteCorpusRequest) ProtoMessage() {}

func (x *DeleteCorpusRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteCorpusRequest.ProtoReflect.Descriptor instead.
func (*DeleteCorpusRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{14}
}

func (x *DeleteCorpusRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for CreateDataSchema.
type CreateDataSchemaRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The parent resource where this data schema will be created.
	// Format: projects/*/locations/*/corpora/*
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Required. The data schema to create.
	DataSchema *DataSchema `protobuf:"bytes,2,opt,name=data_schema,json=dataSchema,proto3" json:"data_schema,omitempty"`
}

func (x *CreateDataSchemaRequest) Reset() {
	*x = CreateDataSchemaRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateDataSchemaRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateDataSchemaRequest) ProtoMessage() {}

func (x *CreateDataSchemaRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateDataSchemaRequest.ProtoReflect.Descriptor instead.
func (*CreateDataSchemaRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{15}
}

func (x *CreateDataSchemaRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateDataSchemaRequest) GetDataSchema() *DataSchema {
	if x != nil {
		return x.DataSchema
	}
	return nil
}

// Data schema indicates how the user specified annotation is interpreted in the
// system.
type DataSchema struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Resource name of the data schema in the form of:
	// `projects/{project_number}/locations/{location}/corpora/{corpus}/dataSchemas/{data_schema}`
	// where {data_schema} part should be the same as the `key` field below.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Required. The key of this data schema. This key should be matching the key of user
	// specified annotation and unique inside corpus. This value can be up to
	// 63 characters, and valid characters are /[a-z][0-9]-/. The first character
	// must be a letter, the last could be a letter or a number.
	Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
	// The schema details mapping to the key.
	SchemaDetails *DataSchemaDetails `protobuf:"bytes,3,opt,name=schema_details,json=schemaDetails,proto3" json:"schema_details,omitempty"`
}

func (x *DataSchema) Reset() {
	*x = DataSchema{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DataSchema) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataSchema) ProtoMessage() {}

func (x *DataSchema) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataSchema.ProtoReflect.Descriptor instead.
func (*DataSchema) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{16}
}

func (x *DataSchema) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DataSchema) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *DataSchema) GetSchemaDetails() *DataSchemaDetails {
	if x != nil {
		return x.SchemaDetails
	}
	return nil
}

// Data schema details indicates the data type and the data struct corresponding
// to the key of user specified annotation.
type DataSchemaDetails struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Type of the annotation.
	Type DataSchemaDetails_DataType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.visionai.v1.DataSchemaDetails_DataType" json:"type,omitempty"`
	// Config for protobuf any type.
	ProtoAnyConfig *DataSchemaDetails_ProtoAnyConfig `protobuf:"bytes,6,opt,name=proto_any_config,json=protoAnyConfig,proto3" json:"proto_any_config,omitempty"`
	// The granularity associated with this DataSchema.
	Granularity DataSchemaDetails_Granularity `protobuf:"varint,5,opt,name=granularity,proto3,enum=google.cloud.visionai.v1.DataSchemaDetails_Granularity" json:"granularity,omitempty"`
	// The search strategy to be applied on the `key` above.
	SearchStrategy *DataSchemaDetails_SearchStrategy `protobuf:"bytes,7,opt,name=search_strategy,json=searchStrategy,proto3" json:"search_strategy,omitempty"`
}

func (x *DataSchemaDetails) Reset() {
	*x = DataSchemaDetails{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DataSchemaDetails) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataSchemaDetails) ProtoMessage() {}

func (x *DataSchemaDetails) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataSchemaDetails.ProtoReflect.Descriptor instead.
func (*DataSchemaDetails) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{17}
}

func (x *DataSchemaDetails) GetType() DataSchemaDetails_DataType {
	if x != nil {
		return x.Type
	}
	return DataSchemaDetails_DATA_TYPE_UNSPECIFIED
}

func (x *DataSchemaDetails) GetProtoAnyConfig() *DataSchemaDetails_ProtoAnyConfig {
	if x != nil {
		return x.ProtoAnyConfig
	}
	return nil
}

func (x *DataSchemaDetails) GetGranularity() DataSchemaDetails_Granularity {
	if x != nil {
		return x.Granularity
	}
	return DataSchemaDetails_GRANULARITY_UNSPECIFIED
}

func (x *DataSchemaDetails) GetSearchStrategy() *DataSchemaDetails_SearchStrategy {
	if x != nil {
		return x.SearchStrategy
	}
	return nil
}

// Request message for UpdateDataSchema.
type UpdateDataSchemaRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The data schema's `name` field is used to identify the data schema to be
	// updated. Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/dataSchemas/{data_schema}
	DataSchema *DataSchema `protobuf:"bytes,1,opt,name=data_schema,json=dataSchema,proto3" json:"data_schema,omitempty"`
	// The list of fields to be updated.
	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
}

func (x *UpdateDataSchemaRequest) Reset() {
	*x = UpdateDataSchemaRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateDataSchemaRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateDataSchemaRequest) ProtoMessage() {}

func (x *UpdateDataSchemaRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateDataSchemaRequest.ProtoReflect.Descriptor instead.
func (*UpdateDataSchemaRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{18}
}

func (x *UpdateDataSchemaRequest) GetDataSchema() *DataSchema {
	if x != nil {
		return x.DataSchema
	}
	return nil
}

func (x *UpdateDataSchemaRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

// Request message for GetDataSchema.
type GetDataSchemaRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the data schema to retrieve.
	// Format:
	// projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/dataSchemas/{data_schema_id}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetDataSchemaRequest) Reset() {
	*x = GetDataSchemaRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetDataSchemaRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetDataSchemaRequest) ProtoMessage() {}

func (x *GetDataSchemaRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetDataSchemaRequest.ProtoReflect.Descriptor instead.
func (*GetDataSchemaRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{19}
}

func (x *GetDataSchemaRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for DeleteDataSchema.
type DeleteDataSchemaRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the data schema to delete.
	// Format:
	// projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/dataSchemas/{data_schema_id}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *DeleteDataSchemaRequest) Reset() {
	*x = DeleteDataSchemaRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteDataSchemaRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteDataSchemaRequest) ProtoMessage() {}

func (x *DeleteDataSchemaRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteDataSchemaRequest.ProtoReflect.Descriptor instead.
func (*DeleteDataSchemaRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{20}
}

func (x *DeleteDataSchemaRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for ListDataSchemas.
type ListDataSchemasRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The parent, which owns this collection of data schemas.
	// Format:
	// projects/{project_number}/locations/{location_id}/corpora/{corpus_id}
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// The maximum number of data schemas to return. The service may return fewer
	// than this value. If unspecified, at most 50 data schemas will be returned.
	// The maximum value is 1000; values above 1000 will be coerced to 1000.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A page token, received from a previous `ListDataSchemas` call.
	// Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to `ListDataSchemas` must
	// match the call that provided the page token.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

func (x *ListDataSchemasRequest) Reset() {
	*x = ListDataSchemasRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListDataSchemasRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListDataSchemasRequest) ProtoMessage() {}

func (x *ListDataSchemasRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListDataSchemasRequest.ProtoReflect.Descriptor instead.
func (*ListDataSchemasRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{21}
}

func (x *ListDataSchemasRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListDataSchemasRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListDataSchemasRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// Response message for ListDataSchemas.
type ListDataSchemasResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The data schemas from the specified corpus.
	DataSchemas []*DataSchema `protobuf:"bytes,1,rep,name=data_schemas,json=dataSchemas,proto3" json:"data_schemas,omitempty"`
	// A token, which can be sent as `page_token` to retrieve the next page.
	// If this field is omitted, there are no subsequent pages.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListDataSchemasResponse) Reset() {
	*x = ListDataSchemasResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListDataSchemasResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListDataSchemasResponse) ProtoMessage() {}

func (x *ListDataSchemasResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[22]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListDataSchemasResponse.ProtoReflect.Descriptor instead.
func (*ListDataSchemasResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{22}
}

func (x *ListDataSchemasResponse) GetDataSchemas() []*DataSchema {
	if x != nil {
		return x.DataSchemas
	}
	return nil
}

func (x *ListDataSchemasResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// Request message for CreateAnnotation.
type CreateAnnotationRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The parent resource where this annotation will be created.
	// Format: projects/*/locations/*/corpora/*/assets/*
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Required. The annotation to create.
	Annotation *Annotation `protobuf:"bytes,2,opt,name=annotation,proto3" json:"annotation,omitempty"`
	// Optional. The ID to use for the annotation, which will become the final component of
	// the annotation's resource name if user choose to specify. Otherwise,
	// annotation id will be generated by system.
	//
	// This value should be up to 63 characters, and valid characters
	// are /[a-z][0-9]-/. The first character must be a letter, the last could be
	// a letter or a number.
	AnnotationId *string `protobuf:"bytes,3,opt,name=annotation_id,json=annotationId,proto3,oneof" json:"annotation_id,omitempty"`
}

func (x *CreateAnnotationRequest) Reset() {
	*x = CreateAnnotationRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateAnnotationRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateAnnotationRequest) ProtoMessage() {}

func (x *CreateAnnotationRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[23]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateAnnotationRequest.ProtoReflect.Descriptor instead.
func (*CreateAnnotationRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{23}
}

func (x *CreateAnnotationRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateAnnotationRequest) GetAnnotation() *Annotation {
	if x != nil {
		return x.Annotation
	}
	return nil
}

func (x *CreateAnnotationRequest) GetAnnotationId() string {
	if x != nil && x.AnnotationId != nil {
		return *x.AnnotationId
	}
	return ""
}

// An annotation is a resource in asset. It represents a key-value mapping of
// content in asset.
type Annotation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Resource name of the annotation.
	// Form:
	// `projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}/annotations/{annotation}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// User provided annotation.
	UserSpecifiedAnnotation *UserSpecifiedAnnotation `protobuf:"bytes,2,opt,name=user_specified_annotation,json=userSpecifiedAnnotation,proto3" json:"user_specified_annotation,omitempty"`
}

func (x *Annotation) Reset() {
	*x = Annotation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Annotation) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Annotation) ProtoMessage() {}

func (x *Annotation) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[24]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Annotation.ProtoReflect.Descriptor instead.
func (*Annotation) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{24}
}

func (x *Annotation) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Annotation) GetUserSpecifiedAnnotation() *UserSpecifiedAnnotation {
	if x != nil {
		return x.UserSpecifiedAnnotation
	}
	return nil
}

// Annotation provided by users.
type UserSpecifiedAnnotation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Key of the annotation. The key must be set with type by CreateDataSchema.
	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// Value of the annotation. The value must be able to convert
	// to the type according to the data schema.
	Value *AnnotationValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// Partition information in time and space for the sub-asset level annotation.
	Partition *Partition `protobuf:"bytes,3,opt,name=partition,proto3" json:"partition,omitempty"`
}

func (x *UserSpecifiedAnnotation) Reset() {
	*x = UserSpecifiedAnnotation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UserSpecifiedAnnotation) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserSpecifiedAnnotation) ProtoMessage() {}

func (x *UserSpecifiedAnnotation) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[25]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserSpecifiedAnnotation.ProtoReflect.Descriptor instead.
func (*UserSpecifiedAnnotation) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{25}
}

func (x *UserSpecifiedAnnotation) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *UserSpecifiedAnnotation) GetValue() *AnnotationValue {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *UserSpecifiedAnnotation) GetPartition() *Partition {
	if x != nil {
		return x.Partition
	}
	return nil
}

// Location Coordinate Representation
type GeoCoordinate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Latitude Coordinate. Degrees [-90 .. 90]
	Latitude float64 `protobuf:"fixed64,1,opt,name=latitude,proto3" json:"latitude,omitempty"`
	// Longitude Coordinate. Degrees [-180 .. 180]
	Longitude float64 `protobuf:"fixed64,2,opt,name=longitude,proto3" json:"longitude,omitempty"`
}

func (x *GeoCoordinate) Reset() {
	*x = GeoCoordinate{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GeoCoordinate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GeoCoordinate) ProtoMessage() {}

func (x *GeoCoordinate) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[26]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GeoCoordinate.ProtoReflect.Descriptor instead.
func (*GeoCoordinate) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{26}
}

func (x *GeoCoordinate) GetLatitude() float64 {
	if x != nil {
		return x.Latitude
	}
	return 0
}

func (x *GeoCoordinate) GetLongitude() float64 {
	if x != nil {
		return x.Longitude
	}
	return 0
}

// Value of annotation, including all types available in data schema.
type AnnotationValue struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//
	//	*AnnotationValue_IntValue
	//	*AnnotationValue_FloatValue
	//	*AnnotationValue_StrValue
	//	*AnnotationValue_DatetimeValue
	//	*AnnotationValue_GeoCoordinate
	//	*AnnotationValue_ProtoAnyValue
	//	*AnnotationValue_BoolValue
	//	*AnnotationValue_CustomizedStructDataValue
	Value isAnnotationValue_Value `protobuf_oneof:"value"`
}

func (x *AnnotationValue) Reset() {
	*x = AnnotationValue{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AnnotationValue) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AnnotationValue) ProtoMessage() {}

func (x *AnnotationValue) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[27]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AnnotationValue.ProtoReflect.Descriptor instead.
func (*AnnotationValue) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{27}
}

func (m *AnnotationValue) GetValue() isAnnotationValue_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *AnnotationValue) GetIntValue() int64 {
	if x, ok := x.GetValue().(*AnnotationValue_IntValue); ok {
		return x.IntValue
	}
	return 0
}

func (x *AnnotationValue) GetFloatValue() float32 {
	if x, ok := x.GetValue().(*AnnotationValue_FloatValue); ok {
		return x.FloatValue
	}
	return 0
}

func (x *AnnotationValue) GetStrValue() string {
	if x, ok := x.GetValue().(*AnnotationValue_StrValue); ok {
		return x.StrValue
	}
	return ""
}

func (x *AnnotationValue) GetDatetimeValue() string {
	if x, ok := x.GetValue().(*AnnotationValue_DatetimeValue); ok {
		return x.DatetimeValue
	}
	return ""
}

func (x *AnnotationValue) GetGeoCoordinate() *GeoCoordinate {
	if x, ok := x.GetValue().(*AnnotationValue_GeoCoordinate); ok {
		return x.GeoCoordinate
	}
	return nil
}

func (x *AnnotationValue) GetProtoAnyValue() *anypb.Any {
	if x, ok := x.GetValue().(*AnnotationValue_ProtoAnyValue); ok {
		return x.ProtoAnyValue
	}
	return nil
}

func (x *AnnotationValue) GetBoolValue() bool {
	if x, ok := x.GetValue().(*AnnotationValue_BoolValue); ok {
		return x.BoolValue
	}
	return false
}

func (x *AnnotationValue) GetCustomizedStructDataValue() *structpb.Struct {
	if x, ok := x.GetValue().(*AnnotationValue_CustomizedStructDataValue); ok {
		return x.CustomizedStructDataValue
	}
	return nil
}

type isAnnotationValue_Value interface {
	isAnnotationValue_Value()
}

type AnnotationValue_IntValue struct {
	// Value of int type annotation.
	IntValue int64 `protobuf:"varint,1,opt,name=int_value,json=intValue,proto3,oneof"`
}

type AnnotationValue_FloatValue struct {
	// Value of float type annotation.
	FloatValue float32 `protobuf:"fixed32,2,opt,name=float_value,json=floatValue,proto3,oneof"`
}

type AnnotationValue_StrValue struct {
	// Value of string type annotation.
	StrValue string `protobuf:"bytes,3,opt,name=str_value,json=strValue,proto3,oneof"`
}

type AnnotationValue_DatetimeValue struct {
	// Value of date time type annotation.
	DatetimeValue string `protobuf:"bytes,5,opt,name=datetime_value,json=datetimeValue,proto3,oneof"`
}

type AnnotationValue_GeoCoordinate struct {
	// Value of geo coordinate type annotation.
	GeoCoordinate *GeoCoordinate `protobuf:"bytes,7,opt,name=geo_coordinate,json=geoCoordinate,proto3,oneof"`
}

type AnnotationValue_ProtoAnyValue struct {
	// Value of any proto value.
	ProtoAnyValue *anypb.Any `protobuf:"bytes,8,opt,name=proto_any_value,json=protoAnyValue,proto3,oneof"`
}

type AnnotationValue_BoolValue struct {
	// Value of boolean type annotation.
	BoolValue bool `protobuf:"varint,9,opt,name=bool_value,json=boolValue,proto3,oneof"`
}

type AnnotationValue_CustomizedStructDataValue struct {
	// Value of customized struct annotation.
	CustomizedStructDataValue *structpb.Struct `protobuf:"bytes,10,opt,name=customized_struct_data_value,json=customizedStructDataValue,proto3,oneof"`
}

func (*AnnotationValue_IntValue) isAnnotationValue_Value() {}

func (*AnnotationValue_FloatValue) isAnnotationValue_Value() {}

func (*AnnotationValue_StrValue) isAnnotationValue_Value() {}

func (*AnnotationValue_DatetimeValue) isAnnotationValue_Value() {}

func (*AnnotationValue_GeoCoordinate) isAnnotationValue_Value() {}

func (*AnnotationValue_ProtoAnyValue) isAnnotationValue_Value() {}

func (*AnnotationValue_BoolValue) isAnnotationValue_Value() {}

func (*AnnotationValue_CustomizedStructDataValue) isAnnotationValue_Value() {}

// Request message for GetAnnotation API.
type ListAnnotationsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The parent, which owns this collection of annotations.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// The maximum number of annotations to return. The service may return fewer
	// than this value. If unspecified, at most 50 annotations will be returned.
	// The maximum value is 1000; values above 1000 will be coerced to 1000.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A page token, received from a previous `ListAnnotations` call.
	// Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to `ListAnnotations` must
	// match the call that provided the page token.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// The filter applied to the returned list.
	// We only support filtering for the following fields:
	// `partition.temporal_partition.start_time`,
	// `partition.temporal_partition.end_time`, and `key`.
	// Timestamps are specified in the RFC-3339 format, and only one restriction
	// may be applied per field, joined by conjunctions.
	// Format:
	// "partition.temporal_partition.start_time > "2012-04-21T11:30:00-04:00" AND
	// partition.temporal_partition.end_time < "2012-04-22T11:30:00-04:00" AND
	// key = "example_key""
	Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
}

func (x *ListAnnotationsRequest) Reset() {
	*x = ListAnnotationsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListAnnotationsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListAnnotationsRequest) ProtoMessage() {}

func (x *ListAnnotationsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[28]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListAnnotationsRequest.ProtoReflect.Descriptor instead.
func (*ListAnnotationsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{28}
}

func (x *ListAnnotationsRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListAnnotationsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListAnnotationsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *ListAnnotationsRequest) GetFilter() string {
	if x != nil {
		return x.Filter
	}
	return ""
}

// Request message for ListAnnotations API.
type ListAnnotationsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The annotations from the specified asset.
	Annotations []*Annotation `protobuf:"bytes,1,rep,name=annotations,proto3" json:"annotations,omitempty"`
	// A token, which can be sent as `page_token` to retrieve the next page.
	// If this field is omitted, there are no subsequent pages.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListAnnotationsResponse) Reset() {
	*x = ListAnnotationsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListAnnotationsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListAnnotationsResponse) ProtoMessage() {}

func (x *ListAnnotationsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[29]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListAnnotationsResponse.ProtoReflect.Descriptor instead.
func (*ListAnnotationsResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{29}
}

func (x *ListAnnotationsResponse) GetAnnotations() []*Annotation {
	if x != nil {
		return x.Annotations
	}
	return nil
}

func (x *ListAnnotationsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// Request message for GetAnnotation API.
type GetAnnotationRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the annotation to retrieve.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}/annotations/{annotation}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetAnnotationRequest) Reset() {
	*x = GetAnnotationRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetAnnotationRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetAnnotationRequest) ProtoMessage() {}

func (x *GetAnnotationRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[30]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetAnnotationRequest.ProtoReflect.Descriptor instead.
func (*GetAnnotationRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{30}
}

func (x *GetAnnotationRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for UpdateAnnotation API.
type UpdateAnnotationRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The annotation to update.
	// The annotation's `name` field is used to identify the annotation to be
	// updated. Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}/annotations/{annotation}
	Annotation *Annotation `protobuf:"bytes,1,opt,name=annotation,proto3" json:"annotation,omitempty"`
	// The list of fields to be updated.
	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
}

func (x *UpdateAnnotationRequest) Reset() {
	*x = UpdateAnnotationRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateAnnotationRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateAnnotationRequest) ProtoMessage() {}

func (x *UpdateAnnotationRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[31]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateAnnotationRequest.ProtoReflect.Descriptor instead.
func (*UpdateAnnotationRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{31}
}

func (x *UpdateAnnotationRequest) GetAnnotation() *Annotation {
	if x != nil {
		return x.Annotation
	}
	return nil
}

func (x *UpdateAnnotationRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

// Request message for DeleteAnnotation API.
type DeleteAnnotationRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the annotation to delete.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}/annotations/{annotation}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *DeleteAnnotationRequest) Reset() {
	*x = DeleteAnnotationRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteAnnotationRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteAnnotationRequest) ProtoMessage() {}

func (x *DeleteAnnotationRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[32]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteAnnotationRequest.ProtoReflect.Descriptor instead.
func (*DeleteAnnotationRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{32}
}

func (x *DeleteAnnotationRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for CreateSearchConfig.
type CreateSearchConfigRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The parent resource where this search configuration will be created.
	// Format: projects/*/locations/*/corpora/*
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Required. The search config to create.
	SearchConfig *SearchConfig `protobuf:"bytes,2,opt,name=search_config,json=searchConfig,proto3" json:"search_config,omitempty"`
	// Required. ID to use for the new search config. Will become the final component of the
	// SearchConfig's resource name. This value should be up to 63 characters, and
	// valid characters are /[a-z][0-9]-_/. The first character must be a letter,
	// the last could be a letter or a number.
	SearchConfigId string `protobuf:"bytes,3,opt,name=search_config_id,json=searchConfigId,proto3" json:"search_config_id,omitempty"`
}

func (x *CreateSearchConfigRequest) Reset() {
	*x = CreateSearchConfigRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateSearchConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateSearchConfigRequest) ProtoMessage() {}

func (x *CreateSearchConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[33]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateSearchConfigRequest.ProtoReflect.Descriptor instead.
func (*CreateSearchConfigRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{33}
}

func (x *CreateSearchConfigRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateSearchConfigRequest) GetSearchConfig() *SearchConfig {
	if x != nil {
		return x.SearchConfig
	}
	return nil
}

func (x *CreateSearchConfigRequest) GetSearchConfigId() string {
	if x != nil {
		return x.SearchConfigId
	}
	return ""
}

// Request message for UpdateSearchConfig.
type UpdateSearchConfigRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The search configuration to update.
	//
	// The search configuration's `name` field is used to identify the resource to
	// be updated. Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/searchConfigs/{search_config}
	SearchConfig *SearchConfig `protobuf:"bytes,1,opt,name=search_config,json=searchConfig,proto3" json:"search_config,omitempty"`
	// The list of fields to be updated. If left unset, all field paths will be
	// updated/overwritten.
	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
}

func (x *UpdateSearchConfigRequest) Reset() {
	*x = UpdateSearchConfigRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateSearchConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateSearchConfigRequest) ProtoMessage() {}

func (x *UpdateSearchConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[34]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateSearchConfigRequest.ProtoReflect.Descriptor instead.
func (*UpdateSearchConfigRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{34}
}

func (x *UpdateSearchConfigRequest) GetSearchConfig() *SearchConfig {
	if x != nil {
		return x.SearchConfig
	}
	return nil
}

func (x *UpdateSearchConfigRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

// Request message for GetSearchConfig.
type GetSearchConfigRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the search configuration to retrieve.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/searchConfigs/{search_config}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetSearchConfigRequest) Reset() {
	*x = GetSearchConfigRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetSearchConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetSearchConfigRequest) ProtoMessage() {}

func (x *GetSearchConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[35]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetSearchConfigRequest.ProtoReflect.Descriptor instead.
func (*GetSearchConfigRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{35}
}

func (x *GetSearchConfigRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for DeleteSearchConfig.
type DeleteSearchConfigRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the search configuration to delete.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}/searchConfigs/{search_config}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *DeleteSearchConfigRequest) Reset() {
	*x = DeleteSearchConfigRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteSearchConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteSearchConfigRequest) ProtoMessage() {}

func (x *DeleteSearchConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[36]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteSearchConfigRequest.ProtoReflect.Descriptor instead.
func (*DeleteSearchConfigRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{36}
}

func (x *DeleteSearchConfigRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for ListSearchConfigs.
type ListSearchConfigsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The parent, which owns this collection of search configurations.
	// Format:
	// projects/{project_number}/locations/{location}/corpora/{corpus}
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// The maximum number of search configurations to return. The service may
	// return fewer than this value. If unspecified, a page size of 50 will be
	// used. The maximum value is 1000; values above 1000 will be coerced to 1000.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A page token, received from a previous `ListSearchConfigs` call.
	// Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to
	// `ListSearchConfigs` must match the call that provided the page
	// token.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

func (x *ListSearchConfigsRequest) Reset() {
	*x = ListSearchConfigsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListSearchConfigsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListSearchConfigsRequest) ProtoMessage() {}

func (x *ListSearchConfigsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[37]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListSearchConfigsRequest.ProtoReflect.Descriptor instead.
func (*ListSearchConfigsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{37}
}

func (x *ListSearchConfigsRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListSearchConfigsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListSearchConfigsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// Response message for ListSearchConfigs.
type ListSearchConfigsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The search configurations from the specified corpus.
	SearchConfigs []*SearchConfig `protobuf:"bytes,1,rep,name=search_configs,json=searchConfigs,proto3" json:"search_configs,omitempty"`
	// A token, which can be sent as `page_token` to retrieve the next page.
	// If this field is omitted, there are no subsequent pages.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListSearchConfigsResponse) Reset() {
	*x = ListSearchConfigsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListSearchConfigsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListSearchConfigsResponse) ProtoMessage() {}

func (x *ListSearchConfigsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[38]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListSearchConfigsResponse.ProtoReflect.Descriptor instead.
func (*ListSearchConfigsResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{38}
}

func (x *ListSearchConfigsResponse) GetSearchConfigs() []*SearchConfig {
	if x != nil {
		return x.SearchConfigs
	}
	return nil
}

func (x *ListSearchConfigsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// SearchConfig stores different properties that will affect search
// behaviors and search results.
type SearchConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Resource name of the search configuration.
	// For CustomSearchCriteria, search_config would be the search
	// operator name. For Facets, search_config would be the facet
	// dimension name.
	// Form:
	// `projects/{project_number}/locations/{location}/corpora/{corpus}/searchConfigs/{search_config}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Establishes a FacetDimension and associated specifications.
	FacetProperty *FacetProperty `protobuf:"bytes,2,opt,name=facet_property,json=facetProperty,proto3" json:"facet_property,omitempty"`
	// Creates a mapping between a custom SearchCriteria and one or more UGA keys.
	SearchCriteriaProperty *SearchCriteriaProperty `protobuf:"bytes,3,opt,name=search_criteria_property,json=searchCriteriaProperty,proto3" json:"search_criteria_property,omitempty"`
}

func (x *SearchConfig) Reset() {
	*x = SearchConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SearchConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchConfig) ProtoMessage() {}

func (x *SearchConfig) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[39]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchConfig.ProtoReflect.Descriptor instead.
func (*SearchConfig) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{39}
}

func (x *SearchConfig) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *SearchConfig) GetFacetProperty() *FacetProperty {
	if x != nil {
		return x.FacetProperty
	}
	return nil
}

func (x *SearchConfig) GetSearchCriteriaProperty() *SearchCriteriaProperty {
	if x != nil {
		return x.SearchCriteriaProperty
	}
	return nil
}

// Central configuration for a facet.
type FacetProperty struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to RangeFacetConfig:
	//
	//	*FacetProperty_FixedRangeBucketSpec_
	//	*FacetProperty_CustomRangeBucketSpec_
	//	*FacetProperty_DatetimeBucketSpec
	RangeFacetConfig isFacetProperty_RangeFacetConfig `protobuf_oneof:"range_facet_config"`
	// Name of the facets, which are the dimensions users want to use to refine
	// search results. `mapped_fields` will match UserSpecifiedDataSchema keys.
	//
	// For example, user can add a bunch of UGAs with the same key, such as
	// player:adam, player:bob, player:charles. When multiple mapped_fields are
	// specified, will merge their value together as final facet value. E.g.
	// home_team: a, home_team:b, away_team:a, away_team:c, when facet_field =
	// [home_team, away_team], facet_value will be [a, b, c].
	//
	// UNLESS this is a 1:1 facet dimension (mapped_fields.size() == 1) AND the
	// mapped_field equals the parent SearchConfig.name, the parent must
	// also contain a SearchCriteriaProperty that maps to the same fields.
	// mapped_fields must not be empty.
	MappedFields []string `protobuf:"bytes,1,rep,name=mapped_fields,json=mappedFields,proto3" json:"mapped_fields,omitempty"`
	// Display name of the facet. To be used by UI for facet rendering.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Maximum number of unique bucket to return for one facet. Bucket number can
	// be large for high-cardinality facet such as "player". We only return top-n
	// most related ones to user. If it's <= 0, the server will decide the
	// appropriate result_size.
	ResultSize int64 `protobuf:"varint,3,opt,name=result_size,json=resultSize,proto3" json:"result_size,omitempty"`
	// Facet bucket type e.g. value, range.
	BucketType FacetBucketType `protobuf:"varint,4,opt,name=bucket_type,json=bucketType,proto3,enum=google.cloud.visionai.v1.FacetBucketType" json:"bucket_type,omitempty"`
}

func (x *FacetProperty) Reset() {
	*x = FacetProperty{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FacetProperty) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FacetProperty) ProtoMessage() {}

func (x *FacetProperty) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[40]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FacetProperty.ProtoReflect.Descriptor instead.
func (*FacetProperty) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{40}
}

func (m *FacetProperty) GetRangeFacetConfig() isFacetProperty_RangeFacetConfig {
	if m != nil {
		return m.RangeFacetConfig
	}
	return nil
}

func (x *FacetProperty) GetFixedRangeBucketSpec() *FacetProperty_FixedRangeBucketSpec {
	if x, ok := x.GetRangeFacetConfig().(*FacetProperty_FixedRangeBucketSpec_); ok {
		return x.FixedRangeBucketSpec
	}
	return nil
}

func (x *FacetProperty) GetCustomRangeBucketSpec() *FacetProperty_CustomRangeBucketSpec {
	if x, ok := x.GetRangeFacetConfig().(*FacetProperty_CustomRangeBucketSpec_); ok {
		return x.CustomRangeBucketSpec
	}
	return nil
}

func (x *FacetProperty) GetDatetimeBucketSpec() *FacetProperty_DateTimeBucketSpec {
	if x, ok := x.GetRangeFacetConfig().(*FacetProperty_DatetimeBucketSpec); ok {
		return x.DatetimeBucketSpec
	}
	return nil
}

func (x *FacetProperty) GetMappedFields() []string {
	if x != nil {
		return x.MappedFields
	}
	return nil
}

func (x *FacetProperty) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *FacetProperty) GetResultSize() int64 {
	if x != nil {
		return x.ResultSize
	}
	return 0
}

func (x *FacetProperty) GetBucketType() FacetBucketType {
	if x != nil {
		return x.BucketType
	}
	return FacetBucketType_FACET_BUCKET_TYPE_UNSPECIFIED
}

type isFacetProperty_RangeFacetConfig interface {
	isFacetProperty_RangeFacetConfig()
}

type FacetProperty_FixedRangeBucketSpec_ struct {
	// Fixed range facet bucket config.
	FixedRangeBucketSpec *FacetProperty_FixedRangeBucketSpec `protobuf:"bytes,5,opt,name=fixed_range_bucket_spec,json=fixedRangeBucketSpec,proto3,oneof"`
}

type FacetProperty_CustomRangeBucketSpec_ struct {
	// Custom range facet bucket config.
	CustomRangeBucketSpec *FacetProperty_CustomRangeBucketSpec `protobuf:"bytes,6,opt,name=custom_range_bucket_spec,json=customRangeBucketSpec,proto3,oneof"`
}

type FacetProperty_DatetimeBucketSpec struct {
	// Datetime range facet bucket config.
	DatetimeBucketSpec *FacetProperty_DateTimeBucketSpec `protobuf:"bytes,7,opt,name=datetime_bucket_spec,json=datetimeBucketSpec,proto3,oneof"`
}

func (*FacetProperty_FixedRangeBucketSpec_) isFacetProperty_RangeFacetConfig() {}

func (*FacetProperty_CustomRangeBucketSpec_) isFacetProperty_RangeFacetConfig() {}

func (*FacetProperty_DatetimeBucketSpec) isFacetProperty_RangeFacetConfig() {}

// Central configuration for custom search criteria.
type SearchCriteriaProperty struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Each mapped_field corresponds to a UGA key. To understand how this property
	// works, take the following example. In the SearchConfig table, the
	// user adds this entry:
	//
	//	search_config {
	//	  name: "person"
	//	  search_criteria_property {
	//	    mapped_fields: "player"
	//	    mapped_fields: "coach"
	//	  }
	//	}
	//
	// Now, when a user issues a query like:
	//
	//	criteria {
	//	  field: "person"
	//	  text_array {
	//	    txt_values: "Tom Brady"
	//	    txt_values: "Bill Belichick"
	//	  }
	//	}
	//
	// MWH search will return search documents where (player=Tom Brady ||
	// coach=Tom Brady || player=Bill Belichick || coach=Bill Belichick).
	MappedFields []string `protobuf:"bytes,1,rep,name=mapped_fields,json=mappedFields,proto3" json:"mapped_fields,omitempty"`
}

func (x *SearchCriteriaProperty) Reset() {
	*x = SearchCriteriaProperty{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SearchCriteriaProperty) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchCriteriaProperty) ProtoMessage() {}

func (x *SearchCriteriaProperty) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[41]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchCriteriaProperty.ProtoReflect.Descriptor instead.
func (*SearchCriteriaProperty) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{41}
}

func (x *SearchCriteriaProperty) GetMappedFields() []string {
	if x != nil {
		return x.MappedFields
	}
	return nil
}

// Definition of a single value with generic type.
type FacetValue struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//
	//	*FacetValue_StringValue
	//	*FacetValue_IntegerValue
	//	*FacetValue_DatetimeValue
	Value isFacetValue_Value `protobuf_oneof:"value"`
}

func (x *FacetValue) Reset() {
	*x = FacetValue{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FacetValue) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FacetValue) ProtoMessage() {}

func (x *FacetValue) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[42]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FacetValue.ProtoReflect.Descriptor instead.
func (*FacetValue) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{42}
}

func (m *FacetValue) GetValue() isFacetValue_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *FacetValue) GetStringValue() string {
	if x, ok := x.GetValue().(*FacetValue_StringValue); ok {
		return x.StringValue
	}
	return ""
}

func (x *FacetValue) GetIntegerValue() int64 {
	if x, ok := x.GetValue().(*FacetValue_IntegerValue); ok {
		return x.IntegerValue
	}
	return 0
}

func (x *FacetValue) GetDatetimeValue() *datetime.DateTime {
	if x, ok := x.GetValue().(*FacetValue_DatetimeValue); ok {
		return x.DatetimeValue
	}
	return nil
}

type isFacetValue_Value interface {
	isFacetValue_Value()
}

type FacetValue_StringValue struct {
	// String type value.
	StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,proto3,oneof"`
}

type FacetValue_IntegerValue struct {
	// Integer type value.
	IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,proto3,oneof"`
}

type FacetValue_DatetimeValue struct {
	// Datetime type value.
	DatetimeValue *datetime.DateTime `protobuf:"bytes,3,opt,name=datetime_value,json=datetimeValue,proto3,oneof"`
}

func (*FacetValue_StringValue) isFacetValue_Value() {}

func (*FacetValue_IntegerValue) isFacetValue_Value() {}

func (*FacetValue_DatetimeValue) isFacetValue_Value() {}

// Holds the facet value, selections state, and metadata.
type FacetBucket struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Bucket associated with a facet. For example, bucket of facet “team”
	// can be "49ers", "patriots", etc; bucket of facet "player" can be "tom
	// brady", "drew brees", etc.
	//
	// Types that are assignable to BucketValue:
	//
	//	*FacetBucket_Value
	//	*FacetBucket_Range_
	BucketValue isFacetBucket_BucketValue `protobuf_oneof:"bucket_value"`
	// Whether one facet bucket is selected. This field represents user's facet
	// selection. It is set by frontend in SearchVideosRequest.
	Selected bool `protobuf:"varint,3,opt,name=selected,proto3" json:"selected,omitempty"`
}

func (x *FacetBucket) Reset() {
	*x = FacetBucket{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FacetBucket) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FacetBucket) ProtoMessage() {}

func (x *FacetBucket) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[43]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FacetBucket.ProtoReflect.Descriptor instead.
func (*FacetBucket) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{43}
}

func (m *FacetBucket) GetBucketValue() isFacetBucket_BucketValue {
	if m != nil {
		return m.BucketValue
	}
	return nil
}

func (x *FacetBucket) GetValue() *FacetValue {
	if x, ok := x.GetBucketValue().(*FacetBucket_Value); ok {
		return x.Value
	}
	return nil
}

func (x *FacetBucket) GetRange() *FacetBucket_Range {
	if x, ok := x.GetBucketValue().(*FacetBucket_Range_); ok {
		return x.Range
	}
	return nil
}

func (x *FacetBucket) GetSelected() bool {
	if x != nil {
		return x.Selected
	}
	return false
}

type isFacetBucket_BucketValue interface {
	isFacetBucket_BucketValue()
}

type FacetBucket_Value struct {
	// Singular value.
	Value *FacetValue `protobuf:"bytes,2,opt,name=value,proto3,oneof"`
}

type FacetBucket_Range_ struct {
	// Range value.
	Range *FacetBucket_Range `protobuf:"bytes,4,opt,name=range,proto3,oneof"`
}

func (*FacetBucket_Value) isFacetBucket_BucketValue() {}

func (*FacetBucket_Range_) isFacetBucket_BucketValue() {}

// A group of facet buckets to be passed back and forth between backend &
// frontend.
type FacetGroup struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Unique id of the facet group.
	FacetId string `protobuf:"bytes,1,opt,name=facet_id,json=facetId,proto3" json:"facet_id,omitempty"`
	// Display name of the facet. To be used by UI for facet rendering.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Buckets associated with the facet. E.g. for "Team" facet, the bucket
	// can be 49ers, patriots, etc.
	Buckets []*FacetBucket `protobuf:"bytes,3,rep,name=buckets,proto3" json:"buckets,omitempty"`
	// Facet bucket type.
	BucketType FacetBucketType `protobuf:"varint,4,opt,name=bucket_type,json=bucketType,proto3,enum=google.cloud.visionai.v1.FacetBucketType" json:"bucket_type,omitempty"`
	// If true, return query matched annotations for this facet group's selection.
	// This option is only applicable for facets based on partition level
	// annotations. It supports the following facet values:
	//   - INTEGER
	//   - STRING (DataSchema.SearchStrategy.EXACT_SEARCH only)
	FetchMatchedAnnotations bool `protobuf:"varint,5,opt,name=fetch_matched_annotations,json=fetchMatchedAnnotations,proto3" json:"fetch_matched_annotations,omitempty"`
}

func (x *FacetGroup) Reset() {
	*x = FacetGroup{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FacetGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FacetGroup) ProtoMessage() {}

func (x *FacetGroup) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[44]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FacetGroup.ProtoReflect.Descriptor instead.
func (*FacetGroup) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{44}
}

func (x *FacetGroup) GetFacetId() string {
	if x != nil {
		return x.FacetId
	}
	return ""
}

func (x *FacetGroup) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *FacetGroup) GetBuckets() []*FacetBucket {
	if x != nil {
		return x.Buckets
	}
	return nil
}

func (x *FacetGroup) GetBucketType() FacetBucketType {
	if x != nil {
		return x.BucketType
	}
	return FacetBucketType_FACET_BUCKET_TYPE_UNSPECIFIED
}

func (x *FacetGroup) GetFetchMatchedAnnotations() bool {
	if x != nil {
		return x.FetchMatchedAnnotations
	}
	return false
}

// Request message for IngestAsset API.
type IngestAssetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to StreamingRequest:
	//
	//	*IngestAssetRequest_Config_
	//	*IngestAssetRequest_TimeIndexedData_
	StreamingRequest isIngestAssetRequest_StreamingRequest `protobuf_oneof:"streaming_request"`
}

func (x *IngestAssetRequest) Reset() {
	*x = IngestAssetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IngestAssetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IngestAssetRequest) ProtoMessage() {}

func (x *IngestAssetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[45]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IngestAssetRequest.ProtoReflect.Descriptor instead.
func (*IngestAssetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{45}
}

func (m *IngestAssetRequest) GetStreamingRequest() isIngestAssetRequest_StreamingRequest {
	if m != nil {
		return m.StreamingRequest
	}
	return nil
}

func (x *IngestAssetRequest) GetConfig() *IngestAssetRequest_Config {
	if x, ok := x.GetStreamingRequest().(*IngestAssetRequest_Config_); ok {
		return x.Config
	}
	return nil
}

func (x *IngestAssetRequest) GetTimeIndexedData() *IngestAssetRequest_TimeIndexedData {
	if x, ok := x.GetStreamingRequest().(*IngestAssetRequest_TimeIndexedData_); ok {
		return x.TimeIndexedData
	}
	return nil
}

type isIngestAssetRequest_StreamingRequest interface {
	isIngestAssetRequest_StreamingRequest()
}

type IngestAssetRequest_Config_ struct {
	// Provides information for the data and the asset resource name that the
	// data belongs to. The first `IngestAssetRequest` message must only contain
	// a `Config` message.
	Config *IngestAssetRequest_Config `protobuf:"bytes,1,opt,name=config,proto3,oneof"`
}

type IngestAssetRequest_TimeIndexedData_ struct {
	// Data to be ingested.
	TimeIndexedData *IngestAssetRequest_TimeIndexedData `protobuf:"bytes,2,opt,name=time_indexed_data,json=timeIndexedData,proto3,oneof"`
}

func (*IngestAssetRequest_Config_) isIngestAssetRequest_StreamingRequest() {}

func (*IngestAssetRequest_TimeIndexedData_) isIngestAssetRequest_StreamingRequest() {}

// Response message for IngestAsset API.
type IngestAssetResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Time range of the data that has been successfully ingested.
	SuccessfullyIngestedPartition *Partition_TemporalPartition `protobuf:"bytes,1,opt,name=successfully_ingested_partition,json=successfullyIngestedPartition,proto3" json:"successfully_ingested_partition,omitempty"`
}

func (x *IngestAssetResponse) Reset() {
	*x = IngestAssetResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IngestAssetResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IngestAssetResponse) ProtoMessage() {}

func (x *IngestAssetResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[46]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IngestAssetResponse.ProtoReflect.Descriptor instead.
func (*IngestAssetResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{46}
}

func (x *IngestAssetResponse) GetSuccessfullyIngestedPartition() *Partition_TemporalPartition {
	if x != nil {
		return x.SuccessfullyIngestedPartition
	}
	return nil
}

// Request message for ClipAsset API.
type ClipAssetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name of the asset to request clips for.
	// Form:
	// 'projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/assets/{asset_id}'
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Required. The time range to request clips for.
	TemporalPartition *Partition_TemporalPartition `protobuf:"bytes,2,opt,name=temporal_partition,json=temporalPartition,proto3" json:"temporal_partition,omitempty"`
}

func (x *ClipAssetRequest) Reset() {
	*x = ClipAssetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ClipAssetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ClipAssetRequest) ProtoMessage() {}

func (x *ClipAssetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[47]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ClipAssetRequest.ProtoReflect.Descriptor instead.
func (*ClipAssetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{47}
}

func (x *ClipAssetRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *ClipAssetRequest) GetTemporalPartition() *Partition_TemporalPartition {
	if x != nil {
		return x.TemporalPartition
	}
	return nil
}

// Response message for ClipAsset API.
type ClipAssetResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of signed uris to download the video clips that cover the requested
	// time range ordered by time.
	TimeIndexedUris []*ClipAssetResponse_TimeIndexedUri `protobuf:"bytes,1,rep,name=time_indexed_uris,json=timeIndexedUris,proto3" json:"time_indexed_uris,omitempty"`
}

func (x *ClipAssetResponse) Reset() {
	*x = ClipAssetResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ClipAssetResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ClipAssetResponse) ProtoMessage() {}

func (x *ClipAssetResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[48]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ClipAssetResponse.ProtoReflect.Descriptor instead.
func (*ClipAssetResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{48}
}

func (x *ClipAssetResponse) GetTimeIndexedUris() []*ClipAssetResponse_TimeIndexedUri {
	if x != nil {
		return x.TimeIndexedUris
	}
	return nil
}

// Request message for GenerateHlsUri API.
type GenerateHlsUriRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name of the asset to request clips for.
	// Form:
	// 'projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/assets/{asset_id}'
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Required. The time range to request clips for.
	TemporalPartitions []*Partition_TemporalPartition `protobuf:"bytes,2,rep,name=temporal_partitions,json=temporalPartitions,proto3" json:"temporal_partitions,omitempty"`
}

func (x *GenerateHlsUriRequest) Reset() {
	*x = GenerateHlsUriRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GenerateHlsUriRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GenerateHlsUriRequest) ProtoMessage() {}

func (x *GenerateHlsUriRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[49]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GenerateHlsUriRequest.ProtoReflect.Descriptor instead.
func (*GenerateHlsUriRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{49}
}

func (x *GenerateHlsUriRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *GenerateHlsUriRequest) GetTemporalPartitions() []*Partition_TemporalPartition {
	if x != nil {
		return x.TemporalPartitions
	}
	return nil
}

// Response message for GenerateHlsUri API.
type GenerateHlsUriResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A signed uri to download the HLS manifest corresponding to the requested
	// times.
	Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
	// A list of temporal partitions of the content returned in the order they
	// appear in the stream.
	TemporalPartitions []*Partition_TemporalPartition `protobuf:"bytes,2,rep,name=temporal_partitions,json=temporalPartitions,proto3" json:"temporal_partitions,omitempty"`
}

func (x *GenerateHlsUriResponse) Reset() {
	*x = GenerateHlsUriResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[50]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GenerateHlsUriResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GenerateHlsUriResponse) ProtoMessage() {}

func (x *GenerateHlsUriResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[50]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GenerateHlsUriResponse.ProtoReflect.Descriptor instead.
func (*GenerateHlsUriResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{50}
}

func (x *GenerateHlsUriResponse) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

func (x *GenerateHlsUriResponse) GetTemporalPartitions() []*Partition_TemporalPartition {
	if x != nil {
		return x.TemporalPartitions
	}
	return nil
}

// Request message for SearchAssets.
type SearchAssetsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The parent corpus to search.
	// Form: `projects/{project_id}/locations/{location_id}/corpora/{corpus_id}'
	Corpus string `protobuf:"bytes,1,opt,name=corpus,proto3" json:"corpus,omitempty"`
	// The number of results to be returned in this page. If it's 0, the server
	// will decide the appropriate page_size.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// The continuation token to fetch the next page. If empty, it means it is
	// fetching the first page.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// Time ranges that matching video content must fall within. If no ranges are
	// provided, there will be no time restriction. This field is treated just
	// like the criteria below, but defined separately for convenience as it is
	// used frequently. Note that if the end_time is in the future, it will be
	// clamped to the time the request was received.
	ContentTimeRanges *DateTimeRangeArray `protobuf:"bytes,5,opt,name=content_time_ranges,json=contentTimeRanges,proto3" json:"content_time_ranges,omitempty"`
	// Criteria applied to search results.
	Criteria []*Criteria `protobuf:"bytes,4,rep,name=criteria,proto3" json:"criteria,omitempty"`
	// Stores most recent facet selection state. Only facet groups with user's
	// selection will be presented here. Selection state is either selected or
	// unselected. Only selected facet buckets will be used as search criteria.
	FacetSelections []*FacetGroup `protobuf:"bytes,6,rep,name=facet_selections,json=facetSelections,proto3" json:"facet_selections,omitempty"`
	// A list of annotation keys to specify the annotations to be retrieved and
	// returned with each search result.
	// Annotation granularity must be GRANULARITY_ASSET_LEVEL and its search
	// strategy must not be NO_SEARCH.
	ResultAnnotationKeys []string `protobuf:"bytes,8,rep,name=result_annotation_keys,json=resultAnnotationKeys,proto3" json:"result_annotation_keys,omitempty"`
}

func (x *SearchAssetsRequest) Reset() {
	*x = SearchAssetsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[51]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SearchAssetsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchAssetsRequest) ProtoMessage() {}

func (x *SearchAssetsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[51]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchAssetsRequest.ProtoReflect.Descriptor instead.
func (*SearchAssetsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{51}
}

func (x *SearchAssetsRequest) GetCorpus() string {
	if x != nil {
		return x.Corpus
	}
	return ""
}

func (x *SearchAssetsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *SearchAssetsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *SearchAssetsRequest) GetContentTimeRanges() *DateTimeRangeArray {
	if x != nil {
		return x.ContentTimeRanges
	}
	return nil
}

func (x *SearchAssetsRequest) GetCriteria() []*Criteria {
	if x != nil {
		return x.Criteria
	}
	return nil
}

func (x *SearchAssetsRequest) GetFacetSelections() []*FacetGroup {
	if x != nil {
		return x.FacetSelections
	}
	return nil
}

func (x *SearchAssetsRequest) GetResultAnnotationKeys() []string {
	if x != nil {
		return x.ResultAnnotationKeys
	}
	return nil
}

// The metadata for DeleteAsset API that embeds in
// [metadata][google.longrunning.Operation.metadata] field.
type DeleteAssetMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *DeleteAssetMetadata) Reset() {
	*x = DeleteAssetMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[52]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteAssetMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteAssetMetadata) ProtoMessage() {}

func (x *DeleteAssetMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[52]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteAssetMetadata.ProtoReflect.Descriptor instead.
func (*DeleteAssetMetadata) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{52}
}

// Stores the criteria-annotation matching results for each search result item.
type AnnotationMatchingResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The criteria used for matching. It can be an input search criteria or a
	// criteria converted from a facet selection.
	Criteria *Criteria `protobuf:"bytes,1,opt,name=criteria,proto3" json:"criteria,omitempty"`
	// Matched annotations for the criteria.
	MatchedAnnotations []*Annotation `protobuf:"bytes,2,rep,name=matched_annotations,json=matchedAnnotations,proto3" json:"matched_annotations,omitempty"`
	// Status of the match result. Possible values:
	// FAILED_PRECONDITION - the criteria is not eligible for match.
	// OK - matching is performed.
	Status *status.Status `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
}

func (x *AnnotationMatchingResult) Reset() {
	*x = AnnotationMatchingResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[53]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AnnotationMatchingResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AnnotationMatchingResult) ProtoMessage() {}

func (x *AnnotationMatchingResult) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[53]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AnnotationMatchingResult.ProtoReflect.Descriptor instead.
func (*AnnotationMatchingResult) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{53}
}

func (x *AnnotationMatchingResult) GetCriteria() *Criteria {
	if x != nil {
		return x.Criteria
	}
	return nil
}

func (x *AnnotationMatchingResult) GetMatchedAnnotations() []*Annotation {
	if x != nil {
		return x.MatchedAnnotations
	}
	return nil
}

func (x *AnnotationMatchingResult) GetStatus() *status.Status {
	if x != nil {
		return x.Status
	}
	return nil
}

// Search result contains asset name and corresponding time ranges.
type SearchResultItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The resource name of the asset.
	// Form:
	// 'projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/assets/{asset_id}'
	Asset string `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"`
	// The matched asset segments.
	// Deprecated: please use singular `segment` field.
	//
	// Deprecated: Do not use.
	Segments []*Partition_TemporalPartition `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"`
	// The matched asset segment.
	Segment *Partition_TemporalPartition `protobuf:"bytes,5,opt,name=segment,proto3" json:"segment,omitempty"`
	// Search result annotations specified by result_annotation_keys in search
	// request.
	RequestedAnnotations []*Annotation `protobuf:"bytes,3,rep,name=requested_annotations,json=requestedAnnotations,proto3" json:"requested_annotations,omitempty"`
	// Criteria or facet-selection based annotation matching results associated to
	// this search result item. Only contains results for criteria or
	// facet_selections with fetch_matched_annotations=true.
	AnnotationMatchingResults []*AnnotationMatchingResult `protobuf:"bytes,4,rep,name=annotation_matching_results,json=annotationMatchingResults,proto3" json:"annotation_matching_results,omitempty"`
}

func (x *SearchResultItem) Reset() {
	*x = SearchResultItem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[54]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SearchResultItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResultItem) ProtoMessage() {}

func (x *SearchResultItem) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[54]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResultItem.ProtoReflect.Descriptor instead.
func (*SearchResultItem) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{54}
}

func (x *SearchResultItem) GetAsset() string {
	if x != nil {
		return x.Asset
	}
	return ""
}

// Deprecated: Do not use.
func (x *SearchResultItem) GetSegments() []*Partition_TemporalPartition {
	if x != nil {
		return x.Segments
	}
	return nil
}

func (x *SearchResultItem) GetSegment() *Partition_TemporalPartition {
	if x != nil {
		return x.Segment
	}
	return nil
}

func (x *SearchResultItem) GetRequestedAnnotations() []*Annotation {
	if x != nil {
		return x.RequestedAnnotations
	}
	return nil
}

func (x *SearchResultItem) GetAnnotationMatchingResults() []*AnnotationMatchingResult {
	if x != nil {
		return x.AnnotationMatchingResults
	}
	return nil
}

// Response message for SearchAssets.
type SearchAssetsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Returned search results.
	SearchResultItems []*SearchResultItem `protobuf:"bytes,1,rep,name=search_result_items,json=searchResultItems,proto3" json:"search_result_items,omitempty"`
	// The next-page continuation token.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	// Facet search results of a given query, which contains user's
	// already-selected facet values and updated facet search results.
	FacetResults []*FacetGroup `protobuf:"bytes,3,rep,name=facet_results,json=facetResults,proto3" json:"facet_results,omitempty"`
}

func (x *SearchAssetsResponse) Reset() {
	*x = SearchAssetsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[55]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SearchAssetsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchAssetsResponse) ProtoMessage() {}

func (x *SearchAssetsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[55]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchAssetsResponse.ProtoReflect.Descriptor instead.
func (*SearchAssetsResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{55}
}

func (x *SearchAssetsResponse) GetSearchResultItems() []*SearchResultItem {
	if x != nil {
		return x.SearchResultItems
	}
	return nil
}

func (x *SearchAssetsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

func (x *SearchAssetsResponse) GetFacetResults() []*FacetGroup {
	if x != nil {
		return x.FacetResults
	}
	return nil
}

// Integer range type.
type IntRange struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Start of the int range.
	Start *int64 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"`
	// End of the int range.
	End *int64 `protobuf:"varint,2,opt,name=end,proto3,oneof" json:"end,omitempty"`
}

func (x *IntRange) Reset() {
	*x = IntRange{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[56]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IntRange) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IntRange) ProtoMessage() {}

func (x *IntRange) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[56]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IntRange.ProtoReflect.Descriptor instead.
func (*IntRange) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{56}
}

func (x *IntRange) GetStart() int64 {
	if x != nil && x.Start != nil {
		return *x.Start
	}
	return 0
}

func (x *IntRange) GetEnd() int64 {
	if x != nil && x.End != nil {
		return *x.End
	}
	return 0
}

// Float range type.
type FloatRange struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Start of the float range.
	Start *float32 `protobuf:"fixed32,1,opt,name=start,proto3,oneof" json:"start,omitempty"`
	// End of the float range.
	End *float32 `protobuf:"fixed32,2,opt,name=end,proto3,oneof" json:"end,omitempty"`
}

func (x *FloatRange) Reset() {
	*x = FloatRange{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[57]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FloatRange) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FloatRange) ProtoMessage() {}

func (x *FloatRange) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[57]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FloatRange.ProtoReflect.Descriptor instead.
func (*FloatRange) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{57}
}

func (x *FloatRange) GetStart() float32 {
	if x != nil && x.Start != nil {
		return *x.Start
	}
	return 0
}

func (x *FloatRange) GetEnd() float32 {
	if x != nil && x.End != nil {
		return *x.End
	}
	return 0
}

// A list of string-type values.
type StringArray struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// String type values.
	TxtValues []string `protobuf:"bytes,1,rep,name=txt_values,json=txtValues,proto3" json:"txt_values,omitempty"`
}

func (x *StringArray) Reset() {
	*x = StringArray{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[58]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StringArray) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StringArray) ProtoMessage() {}

func (x *StringArray) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[58]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StringArray.ProtoReflect.Descriptor instead.
func (*StringArray) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{58}
}

func (x *StringArray) GetTxtValues() []string {
	if x != nil {
		return x.TxtValues
	}
	return nil
}

// A list of integer range values.
type IntRangeArray struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Int range values.
	IntRanges []*IntRange `protobuf:"bytes,1,rep,name=int_ranges,json=intRanges,proto3" json:"int_ranges,omitempty"`
}

func (x *IntRangeArray) Reset() {
	*x = IntRangeArray{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[59]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IntRangeArray) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IntRangeArray) ProtoMessage() {}

func (x *IntRangeArray) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[59]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IntRangeArray.ProtoReflect.Descriptor instead.
func (*IntRangeArray) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{59}
}

func (x *IntRangeArray) GetIntRanges() []*IntRange {
	if x != nil {
		return x.IntRanges
	}
	return nil
}

// A list of float range values.
type FloatRangeArray struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Float range values.
	FloatRanges []*FloatRange `protobuf:"bytes,1,rep,name=float_ranges,json=floatRanges,proto3" json:"float_ranges,omitempty"`
}

func (x *FloatRangeArray) Reset() {
	*x = FloatRangeArray{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[60]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FloatRangeArray) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FloatRangeArray) ProtoMessage() {}

func (x *FloatRangeArray) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[60]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FloatRangeArray.ProtoReflect.Descriptor instead.
func (*FloatRangeArray) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{60}
}

func (x *FloatRangeArray) GetFloatRanges() []*FloatRange {
	if x != nil {
		return x.FloatRanges
	}
	return nil
}

// Datetime range type.
type DateTimeRange struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Start date time.
	Start *datetime.DateTime `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"`
	// End data time.
	End *datetime.DateTime `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"`
}

func (x *DateTimeRange) Reset() {
	*x = DateTimeRange{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[61]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DateTimeRange) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DateTimeRange) ProtoMessage() {}

func (x *DateTimeRange) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[61]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DateTimeRange.ProtoReflect.Descriptor instead.
func (*DateTimeRange) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{61}
}

func (x *DateTimeRange) GetStart() *datetime.DateTime {
	if x != nil {
		return x.Start
	}
	return nil
}

func (x *DateTimeRange) GetEnd() *datetime.DateTime {
	if x != nil {
		return x.End
	}
	return nil
}

// A list of datetime range values.
type DateTimeRangeArray struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Date time ranges.
	DateTimeRanges []*DateTimeRange `protobuf:"bytes,1,rep,name=date_time_ranges,json=dateTimeRanges,proto3" json:"date_time_ranges,omitempty"`
}

func (x *DateTimeRangeArray) Reset() {
	*x = DateTimeRangeArray{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[62]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DateTimeRangeArray) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DateTimeRangeArray) ProtoMessage() {}

func (x *DateTimeRangeArray) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[62]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DateTimeRangeArray.ProtoReflect.Descriptor instead.
func (*DateTimeRangeArray) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{62}
}

func (x *DateTimeRangeArray) GetDateTimeRanges() []*DateTimeRange {
	if x != nil {
		return x.DateTimeRanges
	}
	return nil
}

// Representation of a circle area.
type CircleArea struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Latitude of circle area's center. Degrees [-90 .. 90]
	Latitude float64 `protobuf:"fixed64,1,opt,name=latitude,proto3" json:"latitude,omitempty"`
	// Longitude of circle area's center. Degrees [-180 .. 180]
	Longitude float64 `protobuf:"fixed64,2,opt,name=longitude,proto3" json:"longitude,omitempty"`
	// Radius of the circle area in meters.
	RadiusMeter float64 `protobuf:"fixed64,3,opt,name=radius_meter,json=radiusMeter,proto3" json:"radius_meter,omitempty"`
}

func (x *CircleArea) Reset() {
	*x = CircleArea{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[63]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CircleArea) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CircleArea) ProtoMessage() {}

func (x *CircleArea) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[63]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CircleArea.ProtoReflect.Descriptor instead.
func (*CircleArea) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{63}
}

func (x *CircleArea) GetLatitude() float64 {
	if x != nil {
		return x.Latitude
	}
	return 0
}

func (x *CircleArea) GetLongitude() float64 {
	if x != nil {
		return x.Longitude
	}
	return 0
}

func (x *CircleArea) GetRadiusMeter() float64 {
	if x != nil {
		return x.RadiusMeter
	}
	return 0
}

// A list of locations.
type GeoLocationArray struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of circle areas.
	CircleAreas []*CircleArea `protobuf:"bytes,1,rep,name=circle_areas,json=circleAreas,proto3" json:"circle_areas,omitempty"`
}

func (x *GeoLocationArray) Reset() {
	*x = GeoLocationArray{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[64]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GeoLocationArray) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GeoLocationArray) ProtoMessage() {}

func (x *GeoLocationArray) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[64]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GeoLocationArray.ProtoReflect.Descriptor instead.
func (*GeoLocationArray) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{64}
}

func (x *GeoLocationArray) GetCircleAreas() []*CircleArea {
	if x != nil {
		return x.CircleAreas
	}
	return nil
}

type BoolValue struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *BoolValue) Reset() {
	*x = BoolValue{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[65]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BoolValue) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BoolValue) ProtoMessage() {}

func (x *BoolValue) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[65]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BoolValue.ProtoReflect.Descriptor instead.
func (*BoolValue) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{65}
}

func (x *BoolValue) GetValue() bool {
	if x != nil {
		return x.Value
	}
	return false
}

// Filter criteria applied to current search results.
type Criteria struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//
	//	*Criteria_TextArray
	//	*Criteria_IntRangeArray
	//	*Criteria_FloatRangeArray
	//	*Criteria_DateTimeRangeArray
	//	*Criteria_GeoLocationArray
	//	*Criteria_BoolValue
	Value isCriteria_Value `protobuf_oneof:"value"`
	// The UGA field or ML field to apply filtering criteria.
	Field string `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
	// If true, return query matched annotations for this criteria.
	// This option is only applicable for partition level annotations and supports
	// the following data types:
	//   - INTEGER
	//   - FLOAT
	//   - STRING (DataSchema.SearchStrategy.EXACT_SEARCH only)
	//   - BOOLEAN
	FetchMatchedAnnotations bool `protobuf:"varint,8,opt,name=fetch_matched_annotations,json=fetchMatchedAnnotations,proto3" json:"fetch_matched_annotations,omitempty"`
}

func (x *Criteria) Reset() {
	*x = Criteria{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[66]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Criteria) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Criteria) ProtoMessage() {}

func (x *Criteria) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[66]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Criteria.ProtoReflect.Descriptor instead.
func (*Criteria) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{66}
}

func (m *Criteria) GetValue() isCriteria_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *Criteria) GetTextArray() *StringArray {
	if x, ok := x.GetValue().(*Criteria_TextArray); ok {
		return x.TextArray
	}
	return nil
}

func (x *Criteria) GetIntRangeArray() *IntRangeArray {
	if x, ok := x.GetValue().(*Criteria_IntRangeArray); ok {
		return x.IntRangeArray
	}
	return nil
}

func (x *Criteria) GetFloatRangeArray() *FloatRangeArray {
	if x, ok := x.GetValue().(*Criteria_FloatRangeArray); ok {
		return x.FloatRangeArray
	}
	return nil
}

func (x *Criteria) GetDateTimeRangeArray() *DateTimeRangeArray {
	if x, ok := x.GetValue().(*Criteria_DateTimeRangeArray); ok {
		return x.DateTimeRangeArray
	}
	return nil
}

func (x *Criteria) GetGeoLocationArray() *GeoLocationArray {
	if x, ok := x.GetValue().(*Criteria_GeoLocationArray); ok {
		return x.GeoLocationArray
	}
	return nil
}

func (x *Criteria) GetBoolValue() *BoolValue {
	if x, ok := x.GetValue().(*Criteria_BoolValue); ok {
		return x.BoolValue
	}
	return nil
}

func (x *Criteria) GetField() string {
	if x != nil {
		return x.Field
	}
	return ""
}

func (x *Criteria) GetFetchMatchedAnnotations() bool {
	if x != nil {
		return x.FetchMatchedAnnotations
	}
	return false
}

type isCriteria_Value interface {
	isCriteria_Value()
}

type Criteria_TextArray struct {
	// The text values associated with the field.
	TextArray *StringArray `protobuf:"bytes,2,opt,name=text_array,json=textArray,proto3,oneof"`
}

type Criteria_IntRangeArray struct {
	// The integer ranges associated with the field.
	IntRangeArray *IntRangeArray `protobuf:"bytes,3,opt,name=int_range_array,json=intRangeArray,proto3,oneof"`
}

type Criteria_FloatRangeArray struct {
	// The float ranges associated with the field.
	FloatRangeArray *FloatRangeArray `protobuf:"bytes,4,opt,name=float_range_array,json=floatRangeArray,proto3,oneof"`
}

type Criteria_DateTimeRangeArray struct {
	// The datetime ranges associated with the field.
	DateTimeRangeArray *DateTimeRangeArray `protobuf:"bytes,5,opt,name=date_time_range_array,json=dateTimeRangeArray,proto3,oneof"`
}

type Criteria_GeoLocationArray struct {
	// Geo Location array.
	GeoLocationArray *GeoLocationArray `protobuf:"bytes,6,opt,name=geo_location_array,json=geoLocationArray,proto3,oneof"`
}

type Criteria_BoolValue struct {
	// A Boolean value.
	BoolValue *BoolValue `protobuf:"bytes,7,opt,name=bool_value,json=boolValue,proto3,oneof"`
}

func (*Criteria_TextArray) isCriteria_Value() {}

func (*Criteria_IntRangeArray) isCriteria_Value() {}

func (*Criteria_FloatRangeArray) isCriteria_Value() {}

func (*Criteria_DateTimeRangeArray) isCriteria_Value() {}

func (*Criteria_GeoLocationArray) isCriteria_Value() {}

func (*Criteria_BoolValue) isCriteria_Value() {}

// Partition to specify the partition in time and space for sub-asset level
// annotation.
type Partition struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Partition of asset in time.
	TemporalPartition *Partition_TemporalPartition `protobuf:"bytes,1,opt,name=temporal_partition,json=temporalPartition,proto3" json:"temporal_partition,omitempty"`
	// Partition of asset in space.
	SpatialPartition *Partition_SpatialPartition `protobuf:"bytes,2,opt,name=spatial_partition,json=spatialPartition,proto3" json:"spatial_partition,omitempty"`
}

func (x *Partition) Reset() {
	*x = Partition{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[67]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Partition) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Partition) ProtoMessage() {}

func (x *Partition) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[67]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Partition.ProtoReflect.Descriptor instead.
func (*Partition) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{67}
}

func (x *Partition) GetTemporalPartition() *Partition_TemporalPartition {
	if x != nil {
		return x.TemporalPartition
	}
	return nil
}

func (x *Partition) GetSpatialPartition() *Partition_SpatialPartition {
	if x != nil {
		return x.SpatialPartition
	}
	return nil
}

// The configuration for `PROTO_ANY` data type.
type DataSchemaDetails_ProtoAnyConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The type URI of the proto message.
	TypeUri string `protobuf:"bytes,1,opt,name=type_uri,json=typeUri,proto3" json:"type_uri,omitempty"`
}

func (x *DataSchemaDetails_ProtoAnyConfig) Reset() {
	*x = DataSchemaDetails_ProtoAnyConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[68]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DataSchemaDetails_ProtoAnyConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataSchemaDetails_ProtoAnyConfig) ProtoMessage() {}

func (x *DataSchemaDetails_ProtoAnyConfig) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[68]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataSchemaDetails_ProtoAnyConfig.ProtoReflect.Descriptor instead.
func (*DataSchemaDetails_ProtoAnyConfig) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{17, 0}
}

func (x *DataSchemaDetails_ProtoAnyConfig) GetTypeUri() string {
	if x != nil {
		return x.TypeUri
	}
	return ""
}

// The search strategy for annotations value of the `key`.
type DataSchemaDetails_SearchStrategy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The type of search strategy to be applied on the `key` above.
	// The allowed `search_strategy_type` is different for different data types,
	// which is documented in the DataSchemaDetails.DataType. Specifying
	// unsupported `search_strategy_type` for data types will result in
	// INVALID_ARGUMENT error.
	SearchStrategyType DataSchemaDetails_SearchStrategy_SearchStrategyType `protobuf:"varint,1,opt,name=search_strategy_type,json=searchStrategyType,proto3,enum=google.cloud.visionai.v1.DataSchemaDetails_SearchStrategy_SearchStrategyType" json:"search_strategy_type,omitempty"`
}

func (x *DataSchemaDetails_SearchStrategy) Reset() {
	*x = DataSchemaDetails_SearchStrategy{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[69]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DataSchemaDetails_SearchStrategy) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataSchemaDetails_SearchStrategy) ProtoMessage() {}

func (x *DataSchemaDetails_SearchStrategy) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[69]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataSchemaDetails_SearchStrategy.ProtoReflect.Descriptor instead.
func (*DataSchemaDetails_SearchStrategy) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{17, 1}
}

func (x *DataSchemaDetails_SearchStrategy) GetSearchStrategyType() DataSchemaDetails_SearchStrategy_SearchStrategyType {
	if x != nil {
		return x.SearchStrategyType
	}
	return DataSchemaDetails_SearchStrategy_NO_SEARCH
}

// If bucket type is FIXED_RANGE, specify how values are bucketized. Use
// FixedRangeBucketSpec when you want to create multiple buckets with equal
// granularities. Using integer bucket value as an example, when
// bucket_start = 0, bucket_granularity = 10, bucket_count = 5, this facet
// will be aggregated via the following buckets:
// [-inf, 0), [0, 10), [10, 20), [20, 30), [30, inf).
// Notably, bucket_count <= 1 is an invalid spec.
type FacetProperty_FixedRangeBucketSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Lower bound of the bucket. NOTE: Only integer type is currently supported
	// for this field.
	BucketStart *FacetValue `protobuf:"bytes,1,opt,name=bucket_start,json=bucketStart,proto3" json:"bucket_start,omitempty"`
	// Bucket granularity. NOTE: Only integer type is currently supported for
	// this field.
	BucketGranularity *FacetValue `protobuf:"bytes,2,opt,name=bucket_granularity,json=bucketGranularity,proto3" json:"bucket_granularity,omitempty"`
	// Total number of buckets.
	BucketCount int32 `protobuf:"varint,3,opt,name=bucket_count,json=bucketCount,proto3" json:"bucket_count,omitempty"`
}

func (x *FacetProperty_FixedRangeBucketSpec) Reset() {
	*x = FacetProperty_FixedRangeBucketSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[70]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FacetProperty_FixedRangeBucketSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FacetProperty_FixedRangeBucketSpec) ProtoMessage() {}

func (x *FacetProperty_FixedRangeBucketSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[70]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FacetProperty_FixedRangeBucketSpec.ProtoReflect.Descriptor instead.
func (*FacetProperty_FixedRangeBucketSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{40, 0}
}

func (x *FacetProperty_FixedRangeBucketSpec) GetBucketStart() *FacetValue {
	if x != nil {
		return x.BucketStart
	}
	return nil
}

func (x *FacetProperty_FixedRangeBucketSpec) GetBucketGranularity() *FacetValue {
	if x != nil {
		return x.BucketGranularity
	}
	return nil
}

func (x *FacetProperty_FixedRangeBucketSpec) GetBucketCount() int32 {
	if x != nil {
		return x.BucketCount
	}
	return 0
}

// If bucket type is CUSTOM_RANGE, specify how values are bucketized. Use
// integer bucket value as an example, when the endpoints are 0, 10, 100, and
// 1000, we will generate the following facets:
// [-inf, 0), [0, 10), [10, 100), [100, 1000), [1000, inf).
// Notably:
//   - endpoints must be listed in ascending order. Otherwise, the SearchConfig
//     API will reject the facet config.
//   - < 1 endpoints is an invalid spec.
type FacetProperty_CustomRangeBucketSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Currently, only integer type is supported for this field.
	Endpoints []*FacetValue `protobuf:"bytes,1,rep,name=endpoints,proto3" json:"endpoints,omitempty"`
}

func (x *FacetProperty_CustomRangeBucketSpec) Reset() {
	*x = FacetProperty_CustomRangeBucketSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[71]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FacetProperty_CustomRangeBucketSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FacetProperty_CustomRangeBucketSpec) ProtoMessage() {}

func (x *FacetProperty_CustomRangeBucketSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[71]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FacetProperty_CustomRangeBucketSpec.ProtoReflect.Descriptor instead.
func (*FacetProperty_CustomRangeBucketSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{40, 1}
}

func (x *FacetProperty_CustomRangeBucketSpec) GetEndpoints() []*FacetValue {
	if x != nil {
		return x.Endpoints
	}
	return nil
}

// If bucket type is DATE, specify how date values are bucketized.
type FacetProperty_DateTimeBucketSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Granularity of date type facet.
	Granularity FacetProperty_DateTimeBucketSpec_Granularity `protobuf:"varint,1,opt,name=granularity,proto3,enum=google.cloud.visionai.v1.FacetProperty_DateTimeBucketSpec_Granularity" json:"granularity,omitempty"`
}

func (x *FacetProperty_DateTimeBucketSpec) Reset() {
	*x = FacetProperty_DateTimeBucketSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[72]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FacetProperty_DateTimeBucketSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FacetProperty_DateTimeBucketSpec) ProtoMessage() {}

func (x *FacetProperty_DateTimeBucketSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[72]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FacetProperty_DateTimeBucketSpec.ProtoReflect.Descriptor instead.
func (*FacetProperty_DateTimeBucketSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{40, 2}
}

func (x *FacetProperty_DateTimeBucketSpec) GetGranularity() FacetProperty_DateTimeBucketSpec_Granularity {
	if x != nil {
		return x.Granularity
	}
	return FacetProperty_DateTimeBucketSpec_GRANULARITY_UNSPECIFIED
}

// The range of values [start, end) for which faceting is applied.
type FacetBucket_Range struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Start of the range. Non-existence indicates some bound (e.g. -inf).
	Start *FacetValue `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"`
	// End of the range. Non-existence indicates some bound (e.g. inf).
	End *FacetValue `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"`
}

func (x *FacetBucket_Range) Reset() {
	*x = FacetBucket_Range{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[73]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FacetBucket_Range) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FacetBucket_Range) ProtoMessage() {}

func (x *FacetBucket_Range) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[73]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FacetBucket_Range.ProtoReflect.Descriptor instead.
func (*FacetBucket_Range) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{43, 0}
}

func (x *FacetBucket_Range) GetStart() *FacetValue {
	if x != nil {
		return x.Start
	}
	return nil
}

func (x *FacetBucket_Range) GetEnd() *FacetValue {
	if x != nil {
		return x.End
	}
	return nil
}

// Configuration for the data.
type IngestAssetRequest_Config struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to DataType:
	//
	//	*IngestAssetRequest_Config_VideoType_
	DataType isIngestAssetRequest_Config_DataType `protobuf_oneof:"data_type"`
	// Required. The resource name of the asset that the ingested data belongs to.
	Asset string `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"`
}

func (x *IngestAssetRequest_Config) Reset() {
	*x = IngestAssetRequest_Config{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[74]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IngestAssetRequest_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IngestAssetRequest_Config) ProtoMessage() {}

func (x *IngestAssetRequest_Config) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[74]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IngestAssetRequest_Config.ProtoReflect.Descriptor instead.
func (*IngestAssetRequest_Config) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{45, 0}
}

func (m *IngestAssetRequest_Config) GetDataType() isIngestAssetRequest_Config_DataType {
	if m != nil {
		return m.DataType
	}
	return nil
}

func (x *IngestAssetRequest_Config) GetVideoType() *IngestAssetRequest_Config_VideoType {
	if x, ok := x.GetDataType().(*IngestAssetRequest_Config_VideoType_); ok {
		return x.VideoType
	}
	return nil
}

func (x *IngestAssetRequest_Config) GetAsset() string {
	if x != nil {
		return x.Asset
	}
	return ""
}

type isIngestAssetRequest_Config_DataType interface {
	isIngestAssetRequest_Config_DataType()
}

type IngestAssetRequest_Config_VideoType_ struct {
	// Type information for video data.
	VideoType *IngestAssetRequest_Config_VideoType `protobuf:"bytes,2,opt,name=video_type,json=videoType,proto3,oneof"`
}

func (*IngestAssetRequest_Config_VideoType_) isIngestAssetRequest_Config_DataType() {}

// Contains the data and the corresponding time range this data is for.
type IngestAssetRequest_TimeIndexedData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Data to be ingested.
	Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// Time range of the data.
	TemporalPartition *Partition_TemporalPartition `protobuf:"bytes,2,opt,name=temporal_partition,json=temporalPartition,proto3" json:"temporal_partition,omitempty"`
}

func (x *IngestAssetRequest_TimeIndexedData) Reset() {
	*x = IngestAssetRequest_TimeIndexedData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[75]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IngestAssetRequest_TimeIndexedData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IngestAssetRequest_TimeIndexedData) ProtoMessage() {}

func (x *IngestAssetRequest_TimeIndexedData) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[75]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IngestAssetRequest_TimeIndexedData.ProtoReflect.Descriptor instead.
func (*IngestAssetRequest_TimeIndexedData) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{45, 1}
}

func (x *IngestAssetRequest_TimeIndexedData) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *IngestAssetRequest_TimeIndexedData) GetTemporalPartition() *Partition_TemporalPartition {
	if x != nil {
		return x.TemporalPartition
	}
	return nil
}

// Type information for video data.
type IngestAssetRequest_Config_VideoType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Container format of the video data.
	ContainerFormat IngestAssetRequest_Config_VideoType_ContainerFormat `protobuf:"varint,1,opt,name=container_format,json=containerFormat,proto3,enum=google.cloud.visionai.v1.IngestAssetRequest_Config_VideoType_ContainerFormat" json:"container_format,omitempty"`
}

func (x *IngestAssetRequest_Config_VideoType) Reset() {
	*x = IngestAssetRequest_Config_VideoType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[76]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IngestAssetRequest_Config_VideoType) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IngestAssetRequest_Config_VideoType) ProtoMessage() {}

func (x *IngestAssetRequest_Config_VideoType) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[76]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IngestAssetRequest_Config_VideoType.ProtoReflect.Descriptor instead.
func (*IngestAssetRequest_Config_VideoType) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{45, 0, 0}
}

func (x *IngestAssetRequest_Config_VideoType) GetContainerFormat() IngestAssetRequest_Config_VideoType_ContainerFormat {
	if x != nil {
		return x.ContainerFormat
	}
	return IngestAssetRequest_Config_VideoType_CONTAINER_FORMAT_UNSPECIFIED
}

// Signed uri with corresponding time range.
type ClipAssetResponse_TimeIndexedUri struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Time range of the video that the uri is for.
	TemporalPartition *Partition_TemporalPartition `protobuf:"bytes,1,opt,name=temporal_partition,json=temporalPartition,proto3" json:"temporal_partition,omitempty"`
	// Signed uri to download the video clip.
	Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
}

func (x *ClipAssetResponse_TimeIndexedUri) Reset() {
	*x = ClipAssetResponse_TimeIndexedUri{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[77]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ClipAssetResponse_TimeIndexedUri) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ClipAssetResponse_TimeIndexedUri) ProtoMessage() {}

func (x *ClipAssetResponse_TimeIndexedUri) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[77]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ClipAssetResponse_TimeIndexedUri.ProtoReflect.Descriptor instead.
func (*ClipAssetResponse_TimeIndexedUri) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{48, 0}
}

func (x *ClipAssetResponse_TimeIndexedUri) GetTemporalPartition() *Partition_TemporalPartition {
	if x != nil {
		return x.TemporalPartition
	}
	return nil
}

func (x *ClipAssetResponse_TimeIndexedUri) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

// Partition of asset in UTC Epoch time.
type Partition_TemporalPartition struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Start time of the partition.
	StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// End time of the partition.
	EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
}

func (x *Partition_TemporalPartition) Reset() {
	*x = Partition_TemporalPartition{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[78]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Partition_TemporalPartition) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Partition_TemporalPartition) ProtoMessage() {}

func (x *Partition_TemporalPartition) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[78]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Partition_TemporalPartition.ProtoReflect.Descriptor instead.
func (*Partition_TemporalPartition) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{67, 0}
}

func (x *Partition_TemporalPartition) GetStartTime() *timestamppb.Timestamp {
	if x != nil {
		return x.StartTime
	}
	return nil
}

func (x *Partition_TemporalPartition) GetEndTime() *timestamppb.Timestamp {
	if x != nil {
		return x.EndTime
	}
	return nil
}

// Partition of asset in space.
type Partition_SpatialPartition struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The minimum x coordinate value.
	XMin *int64 `protobuf:"varint,1,opt,name=x_min,json=xMin,proto3,oneof" json:"x_min,omitempty"`
	// The minimum y coordinate value.
	YMin *int64 `protobuf:"varint,2,opt,name=y_min,json=yMin,proto3,oneof" json:"y_min,omitempty"`
	// The maximum x coordinate value.
	XMax *int64 `protobuf:"varint,3,opt,name=x_max,json=xMax,proto3,oneof" json:"x_max,omitempty"`
	// The maximum y coordinate value.
	YMax *int64 `protobuf:"varint,4,opt,name=y_max,json=yMax,proto3,oneof" json:"y_max,omitempty"`
}

func (x *Partition_SpatialPartition) Reset() {
	*x = Partition_SpatialPartition{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[79]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Partition_SpatialPartition) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Partition_SpatialPartition) ProtoMessage() {}

func (x *Partition_SpatialPartition) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_visionai_v1_warehouse_proto_msgTypes[79]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Partition_SpatialPartition.ProtoReflect.Descriptor instead.
func (*Partition_SpatialPartition) Descriptor() ([]byte, []int) {
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP(), []int{67, 1}
}

func (x *Partition_SpatialPartition) GetXMin() int64 {
	if x != nil && x.XMin != nil {
		return *x.XMin
	}
	return 0
}

func (x *Partition_SpatialPartition) GetYMin() int64 {
	if x != nil && x.YMin != nil {
		return *x.YMin
	}
	return 0
}

func (x *Partition_SpatialPartition) GetXMax() int64 {
	if x != nil && x.XMax != nil {
		return *x.XMax
	}
	return 0
}

func (x *Partition_SpatialPartition) GetYMax() int64 {
	if x != nil && x.YMax != nil {
		return *x.YMax
	}
	return 0
}

var File_google_cloud_visionai_v1_warehouse_proto protoreflect.FileDescriptor

var file_google_cloud_visionai_v1_warehouse_proto_rawDesc = []byte{
	0x0a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x61, 0x72, 0x65, 0x68,
	0x6f, 0x75, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61,
	0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65,
	0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e,
	0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70,
	0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x65,
	0x74, 0x69, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2, 0x01, 0x0a, 0x12, 0x43,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
	0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
	0x74, 0x12, 0x3a, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65,
	0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x23, 0x0a,
	0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88,
	0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x22,
	0x4c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
	0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8e, 0x01,
	0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65,
	0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12,
	0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x75,
	0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x26, 0x0a,
	0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8d, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x05,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x4f, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41,
	0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41,
	0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x05, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74,
	0x6c, 0x3a, 0x72, 0xea, 0x41, 0x6f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
	0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x4e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
	0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d,
	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x7b, 0x63,
	0x6f, 0x72, 0x70, 0x75, 0x73, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x61,
	0x73, 0x73, 0x65, 0x74, 0x7d, 0x22, 0x71, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
	0x6f, 0x72, 0x70, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06,
	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x63, 0x6f, 0x72,
	0x70, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x22, 0x92, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
	0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f,
	0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03,
	0xe0, 0x41, 0x02, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x74, 0x6c, 0x3a,
	0x64, 0xea, 0x41, 0x61, 0x0a, 0x1e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f,
	0x72, 0x70, 0x75, 0x73, 0x12, 0x3f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b,
	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f,
	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x7b, 0x63, 0x6f,
	0x72, 0x70, 0x75, 0x73, 0x7d, 0x22, 0x4e, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x72, 0x70,
	0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a,
	0x1e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a,
	0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0b,
	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x6d, 0x0a, 0x12, 0x4c, 0x69, 0x73,
	0x74, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09,
	0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67,
	0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70,
	0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x79, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74,
	0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x3a, 0x0a, 0x07, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x70,
	0x75, 0x73, 0x52, 0x07, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x22, 0x51, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x72,
	0x70, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20,
	0x0a, 0x1e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65,
	0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d,
	0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x90,
	0x02, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x12, 0x0a,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
	0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x0e, 0x73, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61,
	0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0d, 0x73,
	0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x82, 0x01, 0xea,
	0x41, 0x7f, 0x0a, 0x22, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61,
	0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x59, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
	0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
	0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x7b,
	0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x7d, 0x22, 0x81, 0x07, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69,
	0x6c, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x12, 0x64, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d,
	0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x41, 0x6e,
	0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x41, 0x6e,
	0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x75,
	0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x75, 0x6c,
	0x61, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69,
	0x74, 0x79, 0x12, 0x63, 0x0a, 0x0f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x72,
	0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d,
	0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53,
	0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53,
	0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0x2b, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x74, 0x6f,
	0x41, 0x6e, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70,
	0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x79, 0x70,
	0x65, 0x55, 0x72, 0x69, 0x1a, 0xda, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53,
	0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x7f, 0x0a, 0x14, 0x73, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69,
	0x6c, 0x73, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
	0x79, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x12, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x74, 0x72, 0x61,
	0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d,
	0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x10, 0x00, 0x12, 0x10, 0x0a,
	0x0c, 0x45, 0x58, 0x41, 0x43, 0x54, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x10, 0x01, 0x12,
	0x10, 0x0a, 0x0c, 0x53, 0x4d, 0x41, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x10,
	0x02, 0x22, 0x87, 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19,
	0x0a, 0x15, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x54,
	0x45, 0x47, 0x45, 0x52, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10,
	0x02, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0c, 0x0a,
	0x08, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x47,
	0x45, 0x4f, 0x5f, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x10, 0x07, 0x12,
	0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x08, 0x12, 0x0b,
	0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x09, 0x22, 0x68, 0x0a, 0x0b, 0x47,
	0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x52,
	0x41, 0x4e, 0x55, 0x4c, 0x41, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
	0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x52, 0x41, 0x4e, 0x55,
	0x4c, 0x41, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x4c, 0x45, 0x56,
	0x45, 0x4c, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x47, 0x52, 0x41, 0x4e, 0x55, 0x4c, 0x41, 0x52,
	0x49, 0x54, 0x59, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45,
	0x56, 0x45, 0x4c, 0x10, 0x02, 0x22, 0xa2, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3b, 0x0a,
	0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a,
	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x56, 0x0a, 0x14, 0x47, 0x65,
	0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
	0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x22, 0x59, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61,
	0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02,
	0xfa, 0x41, 0x24, 0x0a, 0x22, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74,
	0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x98, 0x01,
	0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65,
	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24,
	0x12, 0x22, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09,
	0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67,
	0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70,
	0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73,
	0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x68,
	0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x26, 0x0a,
	0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xe4, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
	0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x12, 0x49, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x0d, 0x61,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0xa3, 0x02, 0x0a,
	0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x6d, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65,
	0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73,
	0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69,
	0x66, 0x69, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x91,
	0x01, 0xea, 0x41, 0x8d, 0x01, 0x0a, 0x22, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d,
	0x62, 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b,
	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72,
	0x61, 0x2f, 0x7b, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74,
	0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x7d, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x7d, 0x22, 0xb4, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69,
	0x66, 0x69, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09,
	0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x0d, 0x47, 0x65, 0x6f,
	0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61,
	0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61,
	0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74,
	0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69,
	0x74, 0x75, 0x64, 0x65, 0x22, 0xb3, 0x03, 0x0a, 0x0f, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x69,
	0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x66, 0x6c, 0x6f, 0x61, 0x74,
	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a,
	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x73, 0x74,
	0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
	0x08, 0x73, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x64, 0x61, 0x74,
	0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x09, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x67, 0x65, 0x6f, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69,
	0x6e, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e,
	0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x65, 0x6f, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69,
	0x6e, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x61, 0x6e,
	0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x41, 0x6e, 0x79, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x5a, 0x0a, 0x1c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69,
	0x7a, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74,
	0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a,
	0x65, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x44, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x16, 0x4c,
	0x69, 0x73, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
	0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d,
	0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a,
	0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x89, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e,
	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x46, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6e,
	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78,
	0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
	0x6e, 0x22, 0x56, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a,
	0x22, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x17, 0x55, 0x70,
	0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73,
	0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x59, 0x0a,
	0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x12, 0x24,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x0d,
	0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d,
	0x0a, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f,
	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x73,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0xaa, 0x01,
	0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0d, 0x73,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a,
	0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a,
	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5a, 0x0a, 0x16, 0x47, 0x65,
	0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5d, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
	0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x12, 0x24, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65,
	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67,
	0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54,
	0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x52, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74,
	0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xea, 0x02, 0x0a, 0x0c, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4e,
	0x0a, 0x0e, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52,
	0x0d, 0x66, 0x61, 0x63, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x6a,
	0x0a, 0x18, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69,
	0x61, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
	0x74, 0x79, 0x52, 0x16, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72,
	0x69, 0x61, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x3a, 0x89, 0x01, 0xea, 0x41, 0x85,
	0x01, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65,
	0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f,
	0x7b, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x22, 0xbd, 0x08, 0x0a, 0x0d, 0x46, 0x61, 0x63, 0x65, 0x74,
	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x75, 0x0a, 0x17, 0x66, 0x69, 0x78, 0x65,
	0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73,
	0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
	0x74, 0x79, 0x2e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x75, 0x63,
	0x6b, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x14, 0x66, 0x69, 0x78, 0x65, 0x64,
	0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12,
	0x78, 0x0a, 0x18, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f,
	0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63,
	0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f,
	0x6d, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63,
	0x48, 0x00, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42,
	0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6e, 0x0a, 0x14, 0x64, 0x61, 0x74,
	0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65,
	0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
	0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53,
	0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x12, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x42,
	0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x70,
	0x70, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x0c, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21,
	0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x69,
	0x7a, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xd7,
	0x01, 0x0a, 0x14, 0x46, 0x69, 0x78, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x75, 0x63,
	0x6b, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x47, 0x0a, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65,
	0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74,
	0x12, 0x53, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x75,
	0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x52, 0x11, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x75, 0x6c,
	0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x75, 0x63,
	0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x5b, 0x0a, 0x15, 0x43, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x65,
	0x63, 0x12, 0x42, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70,
	0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0xc8, 0x01, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69,
	0x6d, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x68, 0x0a, 0x0b,
	0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63,
	0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54,
	0x69, 0x6d, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x47, 0x72,
	0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x75,
	0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x22, 0x48, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x6e, 0x75, 0x6c,
	0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x52, 0x41, 0x4e, 0x55, 0x4c, 0x41,
	0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
	0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x59, 0x45, 0x41, 0x52, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05,
	0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x41, 0x59, 0x10, 0x03,
	0x42, 0x14, 0x0a, 0x12, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x3d, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
	0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x74,
	0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x12, 0x3e, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x48,
	0x00, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb9, 0x02, 0x0a, 0x0b, 0x46, 0x61,
	0x63, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x52, 0x61,
	0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08,
	0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
	0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, 0x7b, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67,
	0x65, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65,
	0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x36, 0x0a,
	0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x52, 0x03, 0x65, 0x6e, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x02, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x74, 0x49, 0x64, 0x12,
	0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46,
	0x61, 0x63, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b,
	0x65, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x3a, 0x0a, 0x19, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64,
	0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x17, 0x66, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64,
	0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfe, 0x05, 0x0a, 0x12,
	0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x4d, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e,
	0x67, 0x65, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x12, 0x6a, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65,
	0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x41, 0x73,
	0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x49,
	0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, 0x74, 0x69,
	0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x89, 0x03,
	0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0a, 0x76, 0x69, 0x64, 0x65,
	0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x41, 0x73,
	0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x76,
	0x69, 0x64, 0x65, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a,
	0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x05,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x1a, 0xd4, 0x01, 0x0a, 0x09, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x78, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
	0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4d, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x41,
	0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x6f, 0x6e,
	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0f, 0x63, 0x6f,
	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x4d, 0x0a,
	0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
	0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x46, 0x4f,
	0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
	0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f,
	0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4d, 0x50, 0x34, 0x10, 0x01, 0x42, 0x0b, 0x0a, 0x09,
	0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x8b, 0x01, 0x0a, 0x0f, 0x54, 0x69,
	0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x12, 0x64, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x70, 0x61,
	0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61,
	0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x65, 0x61,
	0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x94, 0x01, 0x0a,
	0x13, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x1f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66,
	0x75, 0x6c, 0x6c, 0x79, 0x5f, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61,
	0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1d, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c,
	0x6c, 0x79, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x43, 0x6c, 0x69, 0x70, 0x41, 0x73, 0x73, 0x65,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x69, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x5f,
	0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72,
	0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x74, 0x65, 0x6d,
	0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86,
	0x02, 0x0a, 0x11, 0x43, 0x6c, 0x69, 0x70, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x64,
	0x65, 0x78, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x70, 0x41,
	0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x55, 0x72, 0x69, 0x52, 0x0f, 0x74, 0x69, 0x6d,
	0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x55, 0x72, 0x69, 0x73, 0x1a, 0x88, 0x01, 0x0a,
	0x0e, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x55, 0x72, 0x69, 0x12,
	0x64, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x74,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x22, 0xbf, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65,
	0x72, 0x61, 0x74, 0x65, 0x48, 0x6c, 0x73, 0x55, 0x72, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61,
	0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
	0x2f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6b, 0x0a, 0x13,
	0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54,
	0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50,
	0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x16, 0x47, 0x65,
	0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6c, 0x73, 0x55, 0x72, 0x69, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x66, 0x0a, 0x13, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72,
	0x61, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61,
	0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70,
	0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb6,
	0x03, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a, 0x1e,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x52, 0x06,
	0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73,
	0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53,
	0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x12, 0x5c, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54,
	0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x52, 0x11, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73,
	0x12, 0x3e, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x18, 0x04, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
	0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61,
	0x12, 0x4f, 0x0a, 0x10, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x52, 0x0f, 0x66, 0x61, 0x63, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f,
	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x14, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74,
	0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xdd,
	0x01, 0x0a, 0x18, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74,
	0x63, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x63,
	0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69,
	0x61, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12, 0x55, 0x0a, 0x13, 0x6d,
	0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12,
	0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x9f,
	0x03, 0x0a, 0x10, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x49,
	0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x55, 0x0a, 0x08, 0x73, 0x65, 0x67,
	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69,
	0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73,
	0x12, 0x4f, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72,
	0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50,
	0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e,
	0x74, 0x12, 0x59, 0x0a, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f,
	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65,
	0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x72, 0x0a, 0x1b,
	0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68,
	0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e,
	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x52,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x19, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
	0x22, 0xe5, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x13, 0x73, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x49, 0x74,
	0x65, 0x6d, 0x52, 0x11, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61,
	0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x49, 0x0a,
	0x0d, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x46, 0x61, 0x63, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x66, 0x61, 0x63, 0x65,
	0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x4e, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x52,
	0x61, 0x6e, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12,
	0x15, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x03,
	0x65, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x42, 0x06, 0x0a, 0x04, 0x5f, 0x65, 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x61,
	0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01,
	0x01, 0x12, 0x15, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, 0x01,
	0x52, 0x03, 0x65, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x65, 0x6e, 0x64, 0x22, 0x2c, 0x0a, 0x0b, 0x53, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x78, 0x74,
	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74,
	0x78, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x52, 0x0a, 0x0d, 0x49, 0x6e, 0x74, 0x52,
	0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x41, 0x0a, 0x0a, 0x69, 0x6e, 0x74,
	0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67,
	0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x5a, 0x0a, 0x0f,
	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12,
	0x47, 0x0a, 0x0c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0b, 0x66, 0x6c, 0x6f,
	0x61, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x65,
	0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52,
	0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x27, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22,
	0x67, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65,
	0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54,
	0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69,
	0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x69, 0x0a, 0x0a, 0x43, 0x69, 0x72, 0x63,
	0x6c, 0x65, 0x41, 0x72, 0x65, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75,
	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75,
	0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65,
	0x12, 0x21, 0x0a, 0x0c, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x65, 0x72,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x4d, 0x65,
	0x74, 0x65, 0x72, 0x22, 0x5b, 0x0a, 0x10, 0x47, 0x65, 0x6f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x47, 0x0a, 0x0c, 0x63, 0x69, 0x72, 0x63, 0x6c,
	0x65, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x41,
	0x72, 0x65, 0x61, 0x52, 0x0b, 0x63, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x41, 0x72, 0x65, 0x61, 0x73,
	0x22, 0x21, 0x0a, 0x09, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x22, 0xde, 0x04, 0x0a, 0x08, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61,
	0x12, 0x46, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x00, 0x52, 0x09, 0x74,
	0x65, 0x78, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x5f,
	0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74,
	0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6e,
	0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x57, 0x0a, 0x11, 0x66,
	0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61,
	0x79, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41,
	0x72, 0x72, 0x61, 0x79, 0x12, 0x61, 0x0a, 0x15, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
	0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61,
	0x79, 0x48, 0x00, 0x52, 0x12, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e,
	0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x5a, 0x0a, 0x12, 0x67, 0x65, 0x6f, 0x5f, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x6f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48,
	0x00, 0x52, 0x10, 0x67, 0x65, 0x6f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72,
	0x72, 0x61, 0x79, 0x12, 0x44, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09,
	0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65,
	0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12,
	0x3a, 0x0a, 0x19, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64,
	0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x17, 0x66, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64,
	0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x22, 0x81, 0x04, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x70,
	0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
	0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50,
	0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x61, 0x0a, 0x11, 0x73, 0x70, 0x61, 0x74,
	0x69, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c,
	0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x73, 0x70, 0x61, 0x74, 0x69,
	0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x85, 0x01, 0x0a, 0x11,
	0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
	0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08,
	0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54,
	0x69, 0x6d, 0x65, 0x1a, 0xa2, 0x01, 0x0a, 0x10, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x50,
	0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x05, 0x78, 0x5f, 0x6d, 0x69,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x04, 0x78, 0x4d, 0x69, 0x6e, 0x88,
	0x01, 0x01, 0x12, 0x18, 0x0a, 0x05, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x03, 0x48, 0x01, 0x52, 0x04, 0x79, 0x4d, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x05,
	0x78, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x04, 0x78,
	0x4d, 0x61, 0x78, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x05, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x04, 0x79, 0x4d, 0x61, 0x78, 0x88, 0x01, 0x01,
	0x42, 0x08, 0x0a, 0x06, 0x5f, 0x78, 0x5f, 0x6d, 0x69, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x79,
	0x5f, 0x6d, 0x69, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x78, 0x5f, 0x6d, 0x61, 0x78, 0x42, 0x08,
	0x0a, 0x06, 0x5f, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x2a, 0xb8, 0x01, 0x0a, 0x0f, 0x46, 0x61, 0x63,
	0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d,
	0x46, 0x41, 0x43, 0x45, 0x54, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
	0x1b, 0x0a, 0x17, 0x46, 0x41, 0x43, 0x45, 0x54, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f,
	0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a,
	0x46, 0x41, 0x43, 0x45, 0x54, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x5f, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d,
	0x46, 0x41, 0x43, 0x45, 0x54, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x03, 0x12,
	0x22, 0x0a, 0x1e, 0x46, 0x41, 0x43, 0x45, 0x54, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f,
	0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47,
	0x45, 0x10, 0x04, 0x32, 0xec, 0x2b, 0x0a, 0x09, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73,
	0x65, 0x12, 0xb9, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65,
	0x74, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70,
	0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72,
	0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x05,
	0x61, 0x73, 0x73, 0x65, 0x74, 0xda, 0x41, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x61,
	0x73, 0x73, 0x65, 0x74, 0x2c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x12, 0xbb, 0x01,
	0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x2c, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41,
	0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x22, 0x5d, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x43, 0x32, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x65, 0x74,
	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72,
	0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d,
	0x3a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0xda, 0x41, 0x11, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2c,
	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x9b, 0x01, 0x0a, 0x08,
	0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
	0x73, 0x73, 0x65, 0x74, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76,
	0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63,
	0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f,
	0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xae, 0x01, 0x0a, 0x0a, 0x4c, 0x69,
	0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31,
	0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
	0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74,
	0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xce, 0x01, 0x0a, 0x0b, 0x44,
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x2a,
	0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
	0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xca, 0x41, 0x2c, 0x0a,
	0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73,
	0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xca, 0x01, 0x0a, 0x0c,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x12, 0x2d, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f,
	0x72, 0x70, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
	0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x35, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x3a,
	0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x2c, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0xca, 0x41, 0x1e, 0x0a, 0x06, 0x43, 0x6f, 0x72, 0x70,
	0x75, 0x73, 0x12, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73,
	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x95, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74,
	0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f,
	0x72, 0x70, 0x75, 0x73, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76,
	0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63,
	0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0xb8, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x72, 0x70, 0x75,
	0x73, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x70,
	0x75, 0x73, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x32, 0x32, 0x2f, 0x76, 0x31, 0x2f,
	0x7b, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f,
	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x7d, 0x3a, 0x06,
	0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0xda, 0x41, 0x12, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x2c,
	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xa8, 0x01, 0x0a, 0x0b,
	0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x12, 0x2c, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x70, 0x6f,
	0x72, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d,
	0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0xda, 0x41, 0x06,
	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x91, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74,
	0x65, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3a,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
	0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61,
	0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x10, 0x43,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12,
	0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61,
	0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48,
	0x22, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x7d, 0x2f,
	0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x3a, 0x0b, 0x64, 0x61, 0x74,
	0x61, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0xda, 0x41, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e,
	0x74, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0xe1, 0x01,
	0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70,
	0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x74, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x54, 0x32, 0x45, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73,
	0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
	0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61,
	0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0b, 0x64, 0x61, 0x74, 0x61,
	0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0xda, 0x41, 0x17, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73,
	0x63, 0x68, 0x65, 0x6d, 0x61, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73,
	0x6b, 0x12, 0xaf, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68,
	0x65, 0x6d, 0x61, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
	0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x3b, 0x12, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f,
	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x64, 0x61,
	0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61,
	0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
	0x70, 0x74, 0x79, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a, 0x39, 0x2f, 0x76, 0x31,
	0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
	0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f,
	0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xc2, 0x01,
	0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
	0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
	0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39,
	0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
	0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61,
	0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65,
	0x6e, 0x74, 0x12, 0xe5, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e,
	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70,
	0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72,
	0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d,
	0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0a, 0x61, 0x6e,
	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xda, 0x41, 0x1f, 0x70, 0x61, 0x72, 0x65, 0x6e,
	0x74, 0x2c, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x61, 0x6e, 0x6e,
	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x12, 0xb8, 0x01, 0x0a, 0x0d, 0x47,
	0x65, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x76, 0x31, 0x2f,
	0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72,
	0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f,
	0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xcb, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e,
	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f,
	0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x12, 0xe7, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e,
	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x32, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
	0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a,
	0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0xda, 0x41, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xb0, 0x01,
	0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x51, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x44, 0x2a, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65,
	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f,
	0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x70, 0x0a, 0x0b, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12,
	0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73,
	0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x41,
	0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01,
	0x30, 0x01, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x70, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x70,
	0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x70, 0x41, 0x73, 0x73, 0x65,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x3e, 0x22, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f,
	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x6c, 0x69, 0x70, 0x3a, 0x01, 0x2a, 0x12,
	0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6c, 0x73, 0x55,
	0x72, 0x69, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
	0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6c, 0x73, 0x55, 0x72, 0x69, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6c, 0x73, 0x55, 0x72, 0x69, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x22, 0x43, 0x2f,
	0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
	0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73,
	0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6c, 0x73, 0x55,
	0x72, 0x69, 0x3a, 0x01, 0x2a, 0x12, 0xed, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x4c, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70,
	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x7d,
	0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x3a, 0x0d,
	0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xda, 0x41, 0x25,
	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x2c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x5f, 0x69, 0x64, 0x12, 0xef, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x7c, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x5a, 0x32, 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
	0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0d, 0x73, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xda, 0x41, 0x19, 0x73, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xb7, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f,
	0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
	0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0xad, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x2a, 0x3b, 0x2f,
	0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
	0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0xca, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70,
	0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72,
	0x70, 0x6f, 0x72, 0x61, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xb4,
	0x01, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12,
	0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
	0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x72,
	0x70, 0x75, 0x73, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x72, 0x70, 0x6f,
	0x72, 0x61, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x73, 0x73, 0x65,
	0x74, 0x73, 0x3a, 0x01, 0x2a, 0x1a, 0x4b, 0xca, 0x41, 0x17, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
	0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61,
	0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x42, 0xc6, 0x01, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69,
	0x2e, 0x76, 0x31, 0x42, 0x0e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x50, 0x72,
	0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0xaa, 0x02, 0x18, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x49, 0x2e,
	0x56, 0x31, 0xca, 0x02, 0x18, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75,
	0x64, 0x5c, 0x56, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x49, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1b,
	0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x56,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x49, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x33,
}

var (
	file_google_cloud_visionai_v1_warehouse_proto_rawDescOnce sync.Once
	file_google_cloud_visionai_v1_warehouse_proto_rawDescData = file_google_cloud_visionai_v1_warehouse_proto_rawDesc
)

func file_google_cloud_visionai_v1_warehouse_proto_rawDescGZIP() []byte {
	file_google_cloud_visionai_v1_warehouse_proto_rawDescOnce.Do(func() {
		file_google_cloud_visionai_v1_warehouse_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_visionai_v1_warehouse_proto_rawDescData)
	})
	return file_google_cloud_visionai_v1_warehouse_proto_rawDescData
}

var file_google_cloud_visionai_v1_warehouse_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
var file_google_cloud_visionai_v1_warehouse_proto_msgTypes = make([]protoimpl.MessageInfo, 80)
var file_google_cloud_visionai_v1_warehouse_proto_goTypes = []interface{}{
	(FacetBucketType)(0),                                     // 0: google.cloud.visionai.v1.FacetBucketType
	(DataSchemaDetails_DataType)(0),                          // 1: google.cloud.visionai.v1.DataSchemaDetails.DataType
	(DataSchemaDetails_Granularity)(0),                       // 2: google.cloud.visionai.v1.DataSchemaDetails.Granularity
	(DataSchemaDetails_SearchStrategy_SearchStrategyType)(0), // 3: google.cloud.visionai.v1.DataSchemaDetails.SearchStrategy.SearchStrategyType
	(FacetProperty_DateTimeBucketSpec_Granularity)(0),        // 4: google.cloud.visionai.v1.FacetProperty.DateTimeBucketSpec.Granularity
	(IngestAssetRequest_Config_VideoType_ContainerFormat)(0), // 5: google.cloud.visionai.v1.IngestAssetRequest.Config.VideoType.ContainerFormat
	(*CreateAssetRequest)(nil),                               // 6: google.cloud.visionai.v1.CreateAssetRequest
	(*GetAssetRequest)(nil),                                  // 7: google.cloud.visionai.v1.GetAssetRequest
	(*ListAssetsRequest)(nil),                                // 8: google.cloud.visionai.v1.ListAssetsRequest
	(*ListAssetsResponse)(nil),                               // 9: google.cloud.visionai.v1.ListAssetsResponse
	(*UpdateAssetRequest)(nil),                               // 10: google.cloud.visionai.v1.UpdateAssetRequest
	(*DeleteAssetRequest)(nil),                               // 11: google.cloud.visionai.v1.DeleteAssetRequest
	(*Asset)(nil),                                            // 12: google.cloud.visionai.v1.Asset
	(*CreateCorpusRequest)(nil),                              // 13: google.cloud.visionai.v1.CreateCorpusRequest
	(*CreateCorpusMetadata)(nil),                             // 14: google.cloud.visionai.v1.CreateCorpusMetadata
	(*Corpus)(nil),                                           // 15: google.cloud.visionai.v1.Corpus
	(*GetCorpusRequest)(nil),                                 // 16: google.cloud.visionai.v1.GetCorpusRequest
	(*UpdateCorpusRequest)(nil),                              // 17: google.cloud.visionai.v1.UpdateCorpusRequest
	(*ListCorporaRequest)(nil),                               // 18: google.cloud.visionai.v1.ListCorporaRequest
	(*ListCorporaResponse)(nil),                              // 19: google.cloud.visionai.v1.ListCorporaResponse
	(*DeleteCorpusRequest)(nil),                              // 20: google.cloud.visionai.v1.DeleteCorpusRequest
	(*CreateDataSchemaRequest)(nil),                          // 21: google.cloud.visionai.v1.CreateDataSchemaRequest
	(*DataSchema)(nil),                                       // 22: google.cloud.visionai.v1.DataSchema
	(*DataSchemaDetails)(nil),                                // 23: google.cloud.visionai.v1.DataSchemaDetails
	(*UpdateDataSchemaRequest)(nil),                          // 24: google.cloud.visionai.v1.UpdateDataSchemaRequest
	(*GetDataSchemaRequest)(nil),                             // 25: google.cloud.visionai.v1.GetDataSchemaRequest
	(*DeleteDataSchemaRequest)(nil),                          // 26: google.cloud.visionai.v1.DeleteDataSchemaRequest
	(*ListDataSchemasRequest)(nil),                           // 27: google.cloud.visionai.v1.ListDataSchemasRequest
	(*ListDataSchemasResponse)(nil),                          // 28: google.cloud.visionai.v1.ListDataSchemasResponse
	(*CreateAnnotationRequest)(nil),                          // 29: google.cloud.visionai.v1.CreateAnnotationRequest
	(*Annotation)(nil),                                       // 30: google.cloud.visionai.v1.Annotation
	(*UserSpecifiedAnnotation)(nil),                          // 31: google.cloud.visionai.v1.UserSpecifiedAnnotation
	(*GeoCoordinate)(nil),                                    // 32: google.cloud.visionai.v1.GeoCoordinate
	(*AnnotationValue)(nil),                                  // 33: google.cloud.visionai.v1.AnnotationValue
	(*ListAnnotationsRequest)(nil),                           // 34: google.cloud.visionai.v1.ListAnnotationsRequest
	(*ListAnnotationsResponse)(nil),                          // 35: google.cloud.visionai.v1.ListAnnotationsResponse
	(*GetAnnotationRequest)(nil),                             // 36: google.cloud.visionai.v1.GetAnnotationRequest
	(*UpdateAnnotationRequest)(nil),                          // 37: google.cloud.visionai.v1.UpdateAnnotationRequest
	(*DeleteAnnotationRequest)(nil),                          // 38: google.cloud.visionai.v1.DeleteAnnotationRequest
	(*CreateSearchConfigRequest)(nil),                        // 39: google.cloud.visionai.v1.CreateSearchConfigRequest
	(*UpdateSearchConfigRequest)(nil),                        // 40: google.cloud.visionai.v1.UpdateSearchConfigRequest
	(*GetSearchConfigRequest)(nil),                           // 41: google.cloud.visionai.v1.GetSearchConfigRequest
	(*DeleteSearchConfigRequest)(nil),                        // 42: google.cloud.visionai.v1.DeleteSearchConfigRequest
	(*ListSearchConfigsRequest)(nil),                         // 43: google.cloud.visionai.v1.ListSearchConfigsRequest
	(*ListSearchConfigsResponse)(nil),                        // 44: google.cloud.visionai.v1.ListSearchConfigsResponse
	(*SearchConfig)(nil),                                     // 45: google.cloud.visionai.v1.SearchConfig
	(*FacetProperty)(nil),                                    // 46: google.cloud.visionai.v1.FacetProperty
	(*SearchCriteriaProperty)(nil),                           // 47: google.cloud.visionai.v1.SearchCriteriaProperty
	(*FacetValue)(nil),                                       // 48: google.cloud.visionai.v1.FacetValue
	(*FacetBucket)(nil),                                      // 49: google.cloud.visionai.v1.FacetBucket
	(*FacetGroup)(nil),                                       // 50: google.cloud.visionai.v1.FacetGroup
	(*IngestAssetRequest)(nil),                               // 51: google.cloud.visionai.v1.IngestAssetRequest
	(*IngestAssetResponse)(nil),                              // 52: google.cloud.visionai.v1.IngestAssetResponse
	(*ClipAssetRequest)(nil),                                 // 53: google.cloud.visionai.v1.ClipAssetRequest
	(*ClipAssetResponse)(nil),                                // 54: google.cloud.visionai.v1.ClipAssetResponse
	(*GenerateHlsUriRequest)(nil),                            // 55: google.cloud.visionai.v1.GenerateHlsUriRequest
	(*GenerateHlsUriResponse)(nil),                           // 56: google.cloud.visionai.v1.GenerateHlsUriResponse
	(*SearchAssetsRequest)(nil),                              // 57: google.cloud.visionai.v1.SearchAssetsRequest
	(*DeleteAssetMetadata)(nil),                              // 58: google.cloud.visionai.v1.DeleteAssetMetadata
	(*AnnotationMatchingResult)(nil),                         // 59: google.cloud.visionai.v1.AnnotationMatchingResult
	(*SearchResultItem)(nil),                                 // 60: google.cloud.visionai.v1.SearchResultItem
	(*SearchAssetsResponse)(nil),                             // 61: google.cloud.visionai.v1.SearchAssetsResponse
	(*IntRange)(nil),                                         // 62: google.cloud.visionai.v1.IntRange
	(*FloatRange)(nil),                                       // 63: google.cloud.visionai.v1.FloatRange
	(*StringArray)(nil),                                      // 64: google.cloud.visionai.v1.StringArray
	(*IntRangeArray)(nil),                                    // 65: google.cloud.visionai.v1.IntRangeArray
	(*FloatRangeArray)(nil),                                  // 66: google.cloud.visionai.v1.FloatRangeArray
	(*DateTimeRange)(nil),                                    // 67: google.cloud.visionai.v1.DateTimeRange
	(*DateTimeRangeArray)(nil),                               // 68: google.cloud.visionai.v1.DateTimeRangeArray
	(*CircleArea)(nil),                                       // 69: google.cloud.visionai.v1.CircleArea
	(*GeoLocationArray)(nil),                                 // 70: google.cloud.visionai.v1.GeoLocationArray
	(*BoolValue)(nil),                                        // 71: google.cloud.visionai.v1.BoolValue
	(*Criteria)(nil),                                         // 72: google.cloud.visionai.v1.Criteria
	(*Partition)(nil),                                        // 73: google.cloud.visionai.v1.Partition
	(*DataSchemaDetails_ProtoAnyConfig)(nil),                 // 74: google.cloud.visionai.v1.DataSchemaDetails.ProtoAnyConfig
	(*DataSchemaDetails_SearchStrategy)(nil),                 // 75: google.cloud.visionai.v1.DataSchemaDetails.SearchStrategy
	(*FacetProperty_FixedRangeBucketSpec)(nil),               // 76: google.cloud.visionai.v1.FacetProperty.FixedRangeBucketSpec
	(*FacetProperty_CustomRangeBucketSpec)(nil),              // 77: google.cloud.visionai.v1.FacetProperty.CustomRangeBucketSpec
	(*FacetProperty_DateTimeBucketSpec)(nil),                 // 78: google.cloud.visionai.v1.FacetProperty.DateTimeBucketSpec
	(*FacetBucket_Range)(nil),                                // 79: google.cloud.visionai.v1.FacetBucket.Range
	(*IngestAssetRequest_Config)(nil),                        // 80: google.cloud.visionai.v1.IngestAssetRequest.Config
	(*IngestAssetRequest_TimeIndexedData)(nil),               // 81: google.cloud.visionai.v1.IngestAssetRequest.TimeIndexedData
	(*IngestAssetRequest_Config_VideoType)(nil),              // 82: google.cloud.visionai.v1.IngestAssetRequest.Config.VideoType
	(*ClipAssetResponse_TimeIndexedUri)(nil),                 // 83: google.cloud.visionai.v1.ClipAssetResponse.TimeIndexedUri
	(*Partition_TemporalPartition)(nil),                      // 84: google.cloud.visionai.v1.Partition.TemporalPartition
	(*Partition_SpatialPartition)(nil),                       // 85: google.cloud.visionai.v1.Partition.SpatialPartition
	(*fieldmaskpb.FieldMask)(nil),                            // 86: google.protobuf.FieldMask
	(*durationpb.Duration)(nil),                              // 87: google.protobuf.Duration
	(*anypb.Any)(nil),                                        // 88: google.protobuf.Any
	(*structpb.Struct)(nil),                                  // 89: google.protobuf.Struct
	(*datetime.DateTime)(nil),                                // 90: google.type.DateTime
	(*status.Status)(nil),                                    // 91: google.rpc.Status
	(*timestamppb.Timestamp)(nil),                            // 92: google.protobuf.Timestamp
	(*longrunning.Operation)(nil),                            // 93: google.longrunning.Operation
	(*emptypb.Empty)(nil),                                    // 94: google.protobuf.Empty
}
var file_google_cloud_visionai_v1_warehouse_proto_depIdxs = []int32{
	12,  // 0: google.cloud.visionai.v1.CreateAssetRequest.asset:type_name -> google.cloud.visionai.v1.Asset
	12,  // 1: google.cloud.visionai.v1.ListAssetsResponse.assets:type_name -> google.cloud.visionai.v1.Asset
	12,  // 2: google.cloud.visionai.v1.UpdateAssetRequest.asset:type_name -> google.cloud.visionai.v1.Asset
	86,  // 3: google.cloud.visionai.v1.UpdateAssetRequest.update_mask:type_name -> google.protobuf.FieldMask
	87,  // 4: google.cloud.visionai.v1.Asset.ttl:type_name -> google.protobuf.Duration
	15,  // 5: google.cloud.visionai.v1.CreateCorpusRequest.corpus:type_name -> google.cloud.visionai.v1.Corpus
	87,  // 6: google.cloud.visionai.v1.Corpus.default_ttl:type_name -> google.protobuf.Duration
	15,  // 7: google.cloud.visionai.v1.UpdateCorpusRequest.corpus:type_name -> google.cloud.visionai.v1.Corpus
	86,  // 8: google.cloud.visionai.v1.UpdateCorpusRequest.update_mask:type_name -> google.protobuf.FieldMask
	15,  // 9: google.cloud.visionai.v1.ListCorporaResponse.corpora:type_name -> google.cloud.visionai.v1.Corpus
	22,  // 10: google.cloud.visionai.v1.CreateDataSchemaRequest.data_schema:type_name -> google.cloud.visionai.v1.DataSchema
	23,  // 11: google.cloud.visionai.v1.DataSchema.schema_details:type_name -> google.cloud.visionai.v1.DataSchemaDetails
	1,   // 12: google.cloud.visionai.v1.DataSchemaDetails.type:type_name -> google.cloud.visionai.v1.DataSchemaDetails.DataType
	74,  // 13: google.cloud.visionai.v1.DataSchemaDetails.proto_any_config:type_name -> google.cloud.visionai.v1.DataSchemaDetails.ProtoAnyConfig
	2,   // 14: google.cloud.visionai.v1.DataSchemaDetails.granularity:type_name -> google.cloud.visionai.v1.DataSchemaDetails.Granularity
	75,  // 15: google.cloud.visionai.v1.DataSchemaDetails.search_strategy:type_name -> google.cloud.visionai.v1.DataSchemaDetails.SearchStrategy
	22,  // 16: google.cloud.visionai.v1.UpdateDataSchemaRequest.data_schema:type_name -> google.cloud.visionai.v1.DataSchema
	86,  // 17: google.cloud.visionai.v1.UpdateDataSchemaRequest.update_mask:type_name -> google.protobuf.FieldMask
	22,  // 18: google.cloud.visionai.v1.ListDataSchemasResponse.data_schemas:type_name -> google.cloud.visionai.v1.DataSchema
	30,  // 19: google.cloud.visionai.v1.CreateAnnotationRequest.annotation:type_name -> google.cloud.visionai.v1.Annotation
	31,  // 20: google.cloud.visionai.v1.Annotation.user_specified_annotation:type_name -> google.cloud.visionai.v1.UserSpecifiedAnnotation
	33,  // 21: google.cloud.visionai.v1.UserSpecifiedAnnotation.value:type_name -> google.cloud.visionai.v1.AnnotationValue
	73,  // 22: google.cloud.visionai.v1.UserSpecifiedAnnotation.partition:type_name -> google.cloud.visionai.v1.Partition
	32,  // 23: google.cloud.visionai.v1.AnnotationValue.geo_coordinate:type_name -> google.cloud.visionai.v1.GeoCoordinate
	88,  // 24: google.cloud.visionai.v1.AnnotationValue.proto_any_value:type_name -> google.protobuf.Any
	89,  // 25: google.cloud.visionai.v1.AnnotationValue.customized_struct_data_value:type_name -> google.protobuf.Struct
	30,  // 26: google.cloud.visionai.v1.ListAnnotationsResponse.annotations:type_name -> google.cloud.visionai.v1.Annotation
	30,  // 27: google.cloud.visionai.v1.UpdateAnnotationRequest.annotation:type_name -> google.cloud.visionai.v1.Annotation
	86,  // 28: google.cloud.visionai.v1.UpdateAnnotationRequest.update_mask:type_name -> google.protobuf.FieldMask
	45,  // 29: google.cloud.visionai.v1.CreateSearchConfigRequest.search_config:type_name -> google.cloud.visionai.v1.SearchConfig
	45,  // 30: google.cloud.visionai.v1.UpdateSearchConfigRequest.search_config:type_name -> google.cloud.visionai.v1.SearchConfig
	86,  // 31: google.cloud.visionai.v1.UpdateSearchConfigRequest.update_mask:type_name -> google.protobuf.FieldMask
	45,  // 32: google.cloud.visionai.v1.ListSearchConfigsResponse.search_configs:type_name -> google.cloud.visionai.v1.SearchConfig
	46,  // 33: google.cloud.visionai.v1.SearchConfig.facet_property:type_name -> google.cloud.visionai.v1.FacetProperty
	47,  // 34: google.cloud.visionai.v1.SearchConfig.search_criteria_property:type_name -> google.cloud.visionai.v1.SearchCriteriaProperty
	76,  // 35: google.cloud.visionai.v1.FacetProperty.fixed_range_bucket_spec:type_name -> google.cloud.visionai.v1.FacetProperty.FixedRangeBucketSpec
	77,  // 36: google.cloud.visionai.v1.FacetProperty.custom_range_bucket_spec:type_name -> google.cloud.visionai.v1.FacetProperty.CustomRangeBucketSpec
	78,  // 37: google.cloud.visionai.v1.FacetProperty.datetime_bucket_spec:type_name -> google.cloud.visionai.v1.FacetProperty.DateTimeBucketSpec
	0,   // 38: google.cloud.visionai.v1.FacetProperty.bucket_type:type_name -> google.cloud.visionai.v1.FacetBucketType
	90,  // 39: google.cloud.visionai.v1.FacetValue.datetime_value:type_name -> google.type.DateTime
	48,  // 40: google.cloud.visionai.v1.FacetBucket.value:type_name -> google.cloud.visionai.v1.FacetValue
	79,  // 41: google.cloud.visionai.v1.FacetBucket.range:type_name -> google.cloud.visionai.v1.FacetBucket.Range
	49,  // 42: google.cloud.visionai.v1.FacetGroup.buckets:type_name -> google.cloud.visionai.v1.FacetBucket
	0,   // 43: google.cloud.visionai.v1.FacetGroup.bucket_type:type_name -> google.cloud.visionai.v1.FacetBucketType
	80,  // 44: google.cloud.visionai.v1.IngestAssetRequest.config:type_name -> google.cloud.visionai.v1.IngestAssetRequest.Config
	81,  // 45: google.cloud.visionai.v1.IngestAssetRequest.time_indexed_data:type_name -> google.cloud.visionai.v1.IngestAssetRequest.TimeIndexedData
	84,  // 46: google.cloud.visionai.v1.IngestAssetResponse.successfully_ingested_partition:type_name -> google.cloud.visionai.v1.Partition.TemporalPartition
	84,  // 47: google.cloud.visionai.v1.ClipAssetRequest.temporal_partition:type_name -> google.cloud.visionai.v1.Partition.TemporalPartition
	83,  // 48: google.cloud.visionai.v1.ClipAssetResponse.time_indexed_uris:type_name -> google.cloud.visionai.v1.ClipAssetResponse.TimeIndexedUri
	84,  // 49: google.cloud.visionai.v1.GenerateHlsUriRequest.temporal_partitions:type_name -> google.cloud.visionai.v1.Partition.TemporalPartition
	84,  // 50: google.cloud.visionai.v1.GenerateHlsUriResponse.temporal_partitions:type_name -> google.cloud.visionai.v1.Partition.TemporalPartition
	68,  // 51: google.cloud.visionai.v1.SearchAssetsRequest.content_time_ranges:type_name -> google.cloud.visionai.v1.DateTimeRangeArray
	72,  // 52: google.cloud.visionai.v1.SearchAssetsRequest.criteria:type_name -> google.cloud.visionai.v1.Criteria
	50,  // 53: google.cloud.visionai.v1.SearchAssetsRequest.facet_selections:type_name -> google.cloud.visionai.v1.FacetGroup
	72,  // 54: google.cloud.visionai.v1.AnnotationMatchingResult.criteria:type_name -> google.cloud.visionai.v1.Criteria
	30,  // 55: google.cloud.visionai.v1.AnnotationMatchingResult.matched_annotations:type_name -> google.cloud.visionai.v1.Annotation
	91,  // 56: google.cloud.visionai.v1.AnnotationMatchingResult.status:type_name -> google.rpc.Status
	84,  // 57: google.cloud.visionai.v1.SearchResultItem.segments:type_name -> google.cloud.visionai.v1.Partition.TemporalPartition
	84,  // 58: google.cloud.visionai.v1.SearchResultItem.segment:type_name -> google.cloud.visionai.v1.Partition.TemporalPartition
	30,  // 59: google.cloud.visionai.v1.SearchResultItem.requested_annotations:type_name -> google.cloud.visionai.v1.Annotation
	59,  // 60: google.cloud.visionai.v1.SearchResultItem.annotation_matching_results:type_name -> google.cloud.visionai.v1.AnnotationMatchingResult
	60,  // 61: google.cloud.visionai.v1.SearchAssetsResponse.search_result_items:type_name -> google.cloud.visionai.v1.SearchResultItem
	50,  // 62: google.cloud.visionai.v1.SearchAssetsResponse.facet_results:type_name -> google.cloud.visionai.v1.FacetGroup
	62,  // 63: google.cloud.visionai.v1.IntRangeArray.int_ranges:type_name -> google.cloud.visionai.v1.IntRange
	63,  // 64: google.cloud.visionai.v1.FloatRangeArray.float_ranges:type_name -> google.cloud.visionai.v1.FloatRange
	90,  // 65: google.cloud.visionai.v1.DateTimeRange.start:type_name -> google.type.DateTime
	90,  // 66: google.cloud.visionai.v1.DateTimeRange.end:type_name -> google.type.DateTime
	67,  // 67: google.cloud.visionai.v1.DateTimeRangeArray.date_time_ranges:type_name -> google.cloud.visionai.v1.DateTimeRange
	69,  // 68: google.cloud.visionai.v1.GeoLocationArray.circle_areas:type_name -> google.cloud.visionai.v1.CircleArea
	64,  // 69: google.cloud.visionai.v1.Criteria.text_array:type_name -> google.cloud.visionai.v1.StringArray
	65,  // 70: google.cloud.visionai.v1.Criteria.int_range_array:type_name -> google.cloud.visionai.v1.IntRangeArray
	66,  // 71: google.cloud.visionai.v1.Criteria.float_range_array:type_name -> google.cloud.visionai.v1.FloatRangeArray
	68,  // 72: google.cloud.visionai.v1.Criteria.date_time_range_array:type_name -> google.cloud.visionai.v1.DateTimeRangeArray
	70,  // 73: google.cloud.visionai.v1.Criteria.geo_location_array:type_name -> google.cloud.visionai.v1.GeoLocationArray
	71,  // 74: google.cloud.visionai.v1.Criteria.bool_value:type_name -> google.cloud.visionai.v1.BoolValue
	84,  // 75: google.cloud.visionai.v1.Partition.temporal_partition:type_name -> google.cloud.visionai.v1.Partition.TemporalPartition
	85,  // 76: google.cloud.visionai.v1.Partition.spatial_partition:type_name -> google.cloud.visionai.v1.Partition.SpatialPartition
	3,   // 77: google.cloud.visionai.v1.DataSchemaDetails.SearchStrategy.search_strategy_type:type_name -> google.cloud.visionai.v1.DataSchemaDetails.SearchStrategy.SearchStrategyType
	48,  // 78: google.cloud.visionai.v1.FacetProperty.FixedRangeBucketSpec.bucket_start:type_name -> google.cloud.visionai.v1.FacetValue
	48,  // 79: google.cloud.visionai.v1.FacetProperty.FixedRangeBucketSpec.bucket_granularity:type_name -> google.cloud.visionai.v1.FacetValue
	48,  // 80: google.cloud.visionai.v1.FacetProperty.CustomRangeBucketSpec.endpoints:type_name -> google.cloud.visionai.v1.FacetValue
	4,   // 81: google.cloud.visionai.v1.FacetProperty.DateTimeBucketSpec.granularity:type_name -> google.cloud.visionai.v1.FacetProperty.DateTimeBucketSpec.Granularity
	48,  // 82: google.cloud.visionai.v1.FacetBucket.Range.start:type_name -> google.cloud.visionai.v1.FacetValue
	48,  // 83: google.cloud.visionai.v1.FacetBucket.Range.end:type_name -> google.cloud.visionai.v1.FacetValue
	82,  // 84: google.cloud.visionai.v1.IngestAssetRequest.Config.video_type:type_name -> google.cloud.visionai.v1.IngestAssetRequest.Config.VideoType
	84,  // 85: google.cloud.visionai.v1.IngestAssetRequest.TimeIndexedData.temporal_partition:type_name -> google.cloud.visionai.v1.Partition.TemporalPartition
	5,   // 86: google.cloud.visionai.v1.IngestAssetRequest.Config.VideoType.container_format:type_name -> google.cloud.visionai.v1.IngestAssetRequest.Config.VideoType.ContainerFormat
	84,  // 87: google.cloud.visionai.v1.ClipAssetResponse.TimeIndexedUri.temporal_partition:type_name -> google.cloud.visionai.v1.Partition.TemporalPartition
	92,  // 88: google.cloud.visionai.v1.Partition.TemporalPartition.start_time:type_name -> google.protobuf.Timestamp
	92,  // 89: google.cloud.visionai.v1.Partition.TemporalPartition.end_time:type_name -> google.protobuf.Timestamp
	6,   // 90: google.cloud.visionai.v1.Warehouse.CreateAsset:input_type -> google.cloud.visionai.v1.CreateAssetRequest
	10,  // 91: google.cloud.visionai.v1.Warehouse.UpdateAsset:input_type -> google.cloud.visionai.v1.UpdateAssetRequest
	7,   // 92: google.cloud.visionai.v1.Warehouse.GetAsset:input_type -> google.cloud.visionai.v1.GetAssetRequest
	8,   // 93: google.cloud.visionai.v1.Warehouse.ListAssets:input_type -> google.cloud.visionai.v1.ListAssetsRequest
	11,  // 94: google.cloud.visionai.v1.Warehouse.DeleteAsset:input_type -> google.cloud.visionai.v1.DeleteAssetRequest
	13,  // 95: google.cloud.visionai.v1.Warehouse.CreateCorpus:input_type -> google.cloud.visionai.v1.CreateCorpusRequest
	16,  // 96: google.cloud.visionai.v1.Warehouse.GetCorpus:input_type -> google.cloud.visionai.v1.GetCorpusRequest
	17,  // 97: google.cloud.visionai.v1.Warehouse.UpdateCorpus:input_type -> google.cloud.visionai.v1.UpdateCorpusRequest
	18,  // 98: google.cloud.visionai.v1.Warehouse.ListCorpora:input_type -> google.cloud.visionai.v1.ListCorporaRequest
	20,  // 99: google.cloud.visionai.v1.Warehouse.DeleteCorpus:input_type -> google.cloud.visionai.v1.DeleteCorpusRequest
	21,  // 100: google.cloud.visionai.v1.Warehouse.CreateDataSchema:input_type -> google.cloud.visionai.v1.CreateDataSchemaRequest
	24,  // 101: google.cloud.visionai.v1.Warehouse.UpdateDataSchema:input_type -> google.cloud.visionai.v1.UpdateDataSchemaRequest
	25,  // 102: google.cloud.visionai.v1.Warehouse.GetDataSchema:input_type -> google.cloud.visionai.v1.GetDataSchemaRequest
	26,  // 103: google.cloud.visionai.v1.Warehouse.DeleteDataSchema:input_type -> google.cloud.visionai.v1.DeleteDataSchemaRequest
	27,  // 104: google.cloud.visionai.v1.Warehouse.ListDataSchemas:input_type -> google.cloud.visionai.v1.ListDataSchemasRequest
	29,  // 105: google.cloud.visionai.v1.Warehouse.CreateAnnotation:input_type -> google.cloud.visionai.v1.CreateAnnotationRequest
	36,  // 106: google.cloud.visionai.v1.Warehouse.GetAnnotation:input_type -> google.cloud.visionai.v1.GetAnnotationRequest
	34,  // 107: google.cloud.visionai.v1.Warehouse.ListAnnotations:input_type -> google.cloud.visionai.v1.ListAnnotationsRequest
	37,  // 108: google.cloud.visionai.v1.Warehouse.UpdateAnnotation:input_type -> google.cloud.visionai.v1.UpdateAnnotationRequest
	38,  // 109: google.cloud.visionai.v1.Warehouse.DeleteAnnotation:input_type -> google.cloud.visionai.v1.DeleteAnnotationRequest
	51,  // 110: google.cloud.visionai.v1.Warehouse.IngestAsset:input_type -> google.cloud.visionai.v1.IngestAssetRequest
	53,  // 111: google.cloud.visionai.v1.Warehouse.ClipAsset:input_type -> google.cloud.visionai.v1.ClipAssetRequest
	55,  // 112: google.cloud.visionai.v1.Warehouse.GenerateHlsUri:input_type -> google.cloud.visionai.v1.GenerateHlsUriRequest
	39,  // 113: google.cloud.visionai.v1.Warehouse.CreateSearchConfig:input_type -> google.cloud.visionai.v1.CreateSearchConfigRequest
	40,  // 114: google.cloud.visionai.v1.Warehouse.UpdateSearchConfig:input_type -> google.cloud.visionai.v1.UpdateSearchConfigRequest
	41,  // 115: google.cloud.visionai.v1.Warehouse.GetSearchConfig:input_type -> google.cloud.visionai.v1.GetSearchConfigRequest
	42,  // 116: google.cloud.visionai.v1.Warehouse.DeleteSearchConfig:input_type -> google.cloud.visionai.v1.DeleteSearchConfigRequest
	43,  // 117: google.cloud.visionai.v1.Warehouse.ListSearchConfigs:input_type -> google.cloud.visionai.v1.ListSearchConfigsRequest
	57,  // 118: google.cloud.visionai.v1.Warehouse.SearchAssets:input_type -> google.cloud.visionai.v1.SearchAssetsRequest
	12,  // 119: google.cloud.visionai.v1.Warehouse.CreateAsset:output_type -> google.cloud.visionai.v1.Asset
	12,  // 120: google.cloud.visionai.v1.Warehouse.UpdateAsset:output_type -> google.cloud.visionai.v1.Asset
	12,  // 121: google.cloud.visionai.v1.Warehouse.GetAsset:output_type -> google.cloud.visionai.v1.Asset
	9,   // 122: google.cloud.visionai.v1.Warehouse.ListAssets:output_type -> google.cloud.visionai.v1.ListAssetsResponse
	93,  // 123: google.cloud.visionai.v1.Warehouse.DeleteAsset:output_type -> google.longrunning.Operation
	93,  // 124: google.cloud.visionai.v1.Warehouse.CreateCorpus:output_type -> google.longrunning.Operation
	15,  // 125: google.cloud.visionai.v1.Warehouse.GetCorpus:output_type -> google.cloud.visionai.v1.Corpus
	15,  // 126: google.cloud.visionai.v1.Warehouse.UpdateCorpus:output_type -> google.cloud.visionai.v1.Corpus
	19,  // 127: google.cloud.visionai.v1.Warehouse.ListCorpora:output_type -> google.cloud.visionai.v1.ListCorporaResponse
	94,  // 128: google.cloud.visionai.v1.Warehouse.DeleteCorpus:output_type -> google.protobuf.Empty
	22,  // 129: google.cloud.visionai.v1.Warehouse.CreateDataSchema:output_type -> google.cloud.visionai.v1.DataSchema
	22,  // 130: google.cloud.visionai.v1.Warehouse.UpdateDataSchema:output_type -> google.cloud.visionai.v1.DataSchema
	22,  // 131: google.cloud.visionai.v1.Warehouse.GetDataSchema:output_type -> google.cloud.visionai.v1.DataSchema
	94,  // 132: google.cloud.visionai.v1.Warehouse.DeleteDataSchema:output_type -> google.protobuf.Empty
	28,  // 133: google.cloud.visionai.v1.Warehouse.ListDataSchemas:output_type -> google.cloud.visionai.v1.ListDataSchemasResponse
	30,  // 134: google.cloud.visionai.v1.Warehouse.CreateAnnotation:output_type -> google.cloud.visionai.v1.Annotation
	30,  // 135: google.cloud.visionai.v1.Warehouse.GetAnnotation:output_type -> google.cloud.visionai.v1.Annotation
	35,  // 136: google.cloud.visionai.v1.Warehouse.ListAnnotations:output_type -> google.cloud.visionai.v1.ListAnnotationsResponse
	30,  // 137: google.cloud.visionai.v1.Warehouse.UpdateAnnotation:output_type -> google.cloud.visionai.v1.Annotation
	94,  // 138: google.cloud.visionai.v1.Warehouse.DeleteAnnotation:output_type -> google.protobuf.Empty
	52,  // 139: google.cloud.visionai.v1.Warehouse.IngestAsset:output_type -> google.cloud.visionai.v1.IngestAssetResponse
	54,  // 140: google.cloud.visionai.v1.Warehouse.ClipAsset:output_type -> google.cloud.visionai.v1.ClipAssetResponse
	56,  // 141: google.cloud.visionai.v1.Warehouse.GenerateHlsUri:output_type -> google.cloud.visionai.v1.GenerateHlsUriResponse
	45,  // 142: google.cloud.visionai.v1.Warehouse.CreateSearchConfig:output_type -> google.cloud.visionai.v1.SearchConfig
	45,  // 143: google.cloud.visionai.v1.Warehouse.UpdateSearchConfig:output_type -> google.cloud.visionai.v1.SearchConfig
	45,  // 144: google.cloud.visionai.v1.Warehouse.GetSearchConfig:output_type -> google.cloud.visionai.v1.SearchConfig
	94,  // 145: google.cloud.visionai.v1.Warehouse.DeleteSearchConfig:output_type -> google.protobuf.Empty
	44,  // 146: google.cloud.visionai.v1.Warehouse.ListSearchConfigs:output_type -> google.cloud.visionai.v1.ListSearchConfigsResponse
	61,  // 147: google.cloud.visionai.v1.Warehouse.SearchAssets:output_type -> google.cloud.visionai.v1.SearchAssetsResponse
	119, // [119:148] is the sub-list for method output_type
	90,  // [90:119] is the sub-list for method input_type
	90,  // [90:90] is the sub-list for extension type_name
	90,  // [90:90] is the sub-list for extension extendee
	0,   // [0:90] is the sub-list for field type_name
}

func init() { file_google_cloud_visionai_v1_warehouse_proto_init() }
func file_google_cloud_visionai_v1_warehouse_proto_init() {
	if File_google_cloud_visionai_v1_warehouse_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateAssetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAssetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListAssetsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListAssetsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateAssetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteAssetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Asset); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateCorpusRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateCorpusMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Corpus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetCorpusRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateCorpusRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListCorporaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListCorporaResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteCorpusRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateDataSchemaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DataSchema); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DataSchemaDetails); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateDataSchemaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDataSchemaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteDataSchemaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListDataSchemasRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListDataSchemasResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateAnnotationRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Annotation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserSpecifiedAnnotation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GeoCoordinate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AnnotationValue); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListAnnotationsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListAnnotationsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAnnotationRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateAnnotationRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteAnnotationRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateSearchConfigRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateSearchConfigRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetSearchConfigRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteSearchConfigRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListSearchConfigsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListSearchConfigsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FacetProperty); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchCriteriaProperty); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FacetValue); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FacetBucket); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FacetGroup); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IngestAssetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IngestAssetResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClipAssetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClipAssetResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GenerateHlsUriRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GenerateHlsUriResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchAssetsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteAssetMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AnnotationMatchingResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchResultItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchAssetsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntRange); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FloatRange); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringArray); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntRangeArray); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FloatRangeArray); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DateTimeRange); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DateTimeRangeArray); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CircleArea); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GeoLocationArray); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BoolValue); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Criteria); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Partition); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DataSchemaDetails_ProtoAnyConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DataSchemaDetails_SearchStrategy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FacetProperty_FixedRangeBucketSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FacetProperty_CustomRangeBucketSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FacetProperty_DateTimeBucketSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FacetBucket_Range); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IngestAssetRequest_Config); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IngestAssetRequest_TimeIndexedData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IngestAssetRequest_Config_VideoType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClipAssetResponse_TimeIndexedUri); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Partition_TemporalPartition); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_visionai_v1_warehouse_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Partition_SpatialPartition); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[0].OneofWrappers = []interface{}{}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[23].OneofWrappers = []interface{}{}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[27].OneofWrappers = []interface{}{
		(*AnnotationValue_IntValue)(nil),
		(*AnnotationValue_FloatValue)(nil),
		(*AnnotationValue_StrValue)(nil),
		(*AnnotationValue_DatetimeValue)(nil),
		(*AnnotationValue_GeoCoordinate)(nil),
		(*AnnotationValue_ProtoAnyValue)(nil),
		(*AnnotationValue_BoolValue)(nil),
		(*AnnotationValue_CustomizedStructDataValue)(nil),
	}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[40].OneofWrappers = []interface{}{
		(*FacetProperty_FixedRangeBucketSpec_)(nil),
		(*FacetProperty_CustomRangeBucketSpec_)(nil),
		(*FacetProperty_DatetimeBucketSpec)(nil),
	}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[42].OneofWrappers = []interface{}{
		(*FacetValue_StringValue)(nil),
		(*FacetValue_IntegerValue)(nil),
		(*FacetValue_DatetimeValue)(nil),
	}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[43].OneofWrappers = []interface{}{
		(*FacetBucket_Value)(nil),
		(*FacetBucket_Range_)(nil),
	}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[45].OneofWrappers = []interface{}{
		(*IngestAssetRequest_Config_)(nil),
		(*IngestAssetRequest_TimeIndexedData_)(nil),
	}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[56].OneofWrappers = []interface{}{}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[57].OneofWrappers = []interface{}{}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[66].OneofWrappers = []interface{}{
		(*Criteria_TextArray)(nil),
		(*Criteria_IntRangeArray)(nil),
		(*Criteria_FloatRangeArray)(nil),
		(*Criteria_DateTimeRangeArray)(nil),
		(*Criteria_GeoLocationArray)(nil),
		(*Criteria_BoolValue)(nil),
	}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[74].OneofWrappers = []interface{}{
		(*IngestAssetRequest_Config_VideoType_)(nil),
	}
	file_google_cloud_visionai_v1_warehouse_proto_msgTypes[79].OneofWrappers = []interface{}{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_cloud_visionai_v1_warehouse_proto_rawDesc,
			NumEnums:      6,
			NumMessages:   80,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_google_cloud_visionai_v1_warehouse_proto_goTypes,
		DependencyIndexes: file_google_cloud_visionai_v1_warehouse_proto_depIdxs,
		EnumInfos:         file_google_cloud_visionai_v1_warehouse_proto_enumTypes,
		MessageInfos:      file_google_cloud_visionai_v1_warehouse_proto_msgTypes,
	}.Build()
	File_google_cloud_visionai_v1_warehouse_proto = out.File
	file_google_cloud_visionai_v1_warehouse_proto_rawDesc = nil
	file_google_cloud_visionai_v1_warehouse_proto_goTypes = nil
	file_google_cloud_visionai_v1_warehouse_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// WarehouseClient is the client API for Warehouse service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type WarehouseClient interface {
	// Creates an asset inside corpus.
	CreateAsset(ctx context.Context, in *CreateAssetRequest, opts ...grpc.CallOption) (*Asset, error)
	// Updates an asset inside corpus.
	UpdateAsset(ctx context.Context, in *UpdateAssetRequest, opts ...grpc.CallOption) (*Asset, error)
	// Reads an asset inside corpus.
	GetAsset(ctx context.Context, in *GetAssetRequest, opts ...grpc.CallOption) (*Asset, error)
	// Lists an list of assets inside corpus.
	ListAssets(ctx context.Context, in *ListAssetsRequest, opts ...grpc.CallOption) (*ListAssetsResponse, error)
	// Deletes asset inside corpus.
	DeleteAsset(ctx context.Context, in *DeleteAssetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Creates a corpus inside a project.
	CreateCorpus(ctx context.Context, in *CreateCorpusRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Gets corpus details inside a project.
	GetCorpus(ctx context.Context, in *GetCorpusRequest, opts ...grpc.CallOption) (*Corpus, error)
	// Updates a corpus in a project.
	UpdateCorpus(ctx context.Context, in *UpdateCorpusRequest, opts ...grpc.CallOption) (*Corpus, error)
	// Lists all corpora in a project.
	ListCorpora(ctx context.Context, in *ListCorporaRequest, opts ...grpc.CallOption) (*ListCorporaResponse, error)
	// Deletes a corpus only if its empty.
	// Returns empty response.
	DeleteCorpus(ctx context.Context, in *DeleteCorpusRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Creates data schema inside corpus.
	CreateDataSchema(ctx context.Context, in *CreateDataSchemaRequest, opts ...grpc.CallOption) (*DataSchema, error)
	// Updates data schema inside corpus.
	UpdateDataSchema(ctx context.Context, in *UpdateDataSchemaRequest, opts ...grpc.CallOption) (*DataSchema, error)
	// Gets data schema inside corpus.
	GetDataSchema(ctx context.Context, in *GetDataSchemaRequest, opts ...grpc.CallOption) (*DataSchema, error)
	// Deletes data schema inside corpus.
	DeleteDataSchema(ctx context.Context, in *DeleteDataSchemaRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Lists a list of data schemas inside corpus.
	ListDataSchemas(ctx context.Context, in *ListDataSchemasRequest, opts ...grpc.CallOption) (*ListDataSchemasResponse, error)
	// Creates annotation inside asset.
	CreateAnnotation(ctx context.Context, in *CreateAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error)
	// Reads annotation inside asset.
	GetAnnotation(ctx context.Context, in *GetAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error)
	// Lists a list of annotations inside asset.
	ListAnnotations(ctx context.Context, in *ListAnnotationsRequest, opts ...grpc.CallOption) (*ListAnnotationsResponse, error)
	// Updates annotation inside asset.
	UpdateAnnotation(ctx context.Context, in *UpdateAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error)
	// Deletes annotation inside asset.
	DeleteAnnotation(ctx context.Context, in *DeleteAnnotationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Ingests data for the asset. It is not allowed to ingest a data chunk which
	// is already expired according to TTL.
	// This method is only available via the gRPC API (not HTTP since
	// bi-directional streaming is not supported via HTTP).
	IngestAsset(ctx context.Context, opts ...grpc.CallOption) (Warehouse_IngestAssetClient, error)
	// Generates clips for downloading. The api takes in a time range, and
	// generates a clip of the first content available after start_time and
	// before end_time, which may overflow beyond these bounds.
	// Returned clips are truncated if the total size of the clips are larger
	// than 100MB.
	ClipAsset(ctx context.Context, in *ClipAssetRequest, opts ...grpc.CallOption) (*ClipAssetResponse, error)
	// Generates a uri for an HLS manifest. The api takes in a collection of time
	// ranges, and generates a URI for an HLS manifest that covers all the
	// requested time ranges.
	GenerateHlsUri(ctx context.Context, in *GenerateHlsUriRequest, opts ...grpc.CallOption) (*GenerateHlsUriResponse, error)
	// Creates a search configuration inside a corpus.
	//
	// Please follow the rules below to create a valid CreateSearchConfigRequest.
	// --- General Rules ---
	//  1. Request.search_config_id must not be associated with an existing
	//     SearchConfig.
	//  2. Request must contain at least one non-empty search_criteria_property or
	//     facet_property.
	//  3. mapped_fields must not be empty, and must map to existing UGA keys.
	//  4. All mapped_fields must be of the same type.
	//  5. All mapped_fields must share the same granularity.
	//  6. All mapped_fields must share the same semantic SearchConfig match
	//     options.
	//
	// For property-specific rules, please reference the comments for
	// FacetProperty and SearchCriteriaProperty.
	CreateSearchConfig(ctx context.Context, in *CreateSearchConfigRequest, opts ...grpc.CallOption) (*SearchConfig, error)
	// Updates a search configuration inside a corpus.
	//
	// Please follow the rules below to create a valid UpdateSearchConfigRequest.
	// --- General Rules ---
	// 1. Request.search_configuration.name must already exist.
	// 2. Request must contain at least one non-empty search_criteria_property or
	// facet_property.
	//  3. mapped_fields must not be empty, and must map to existing UGA keys.
	//  4. All mapped_fields must be of the same type.
	//  5. All mapped_fields must share the same granularity.
	//  6. All mapped_fields must share the same semantic SearchConfig match
	//     options.
	//
	// For property-specific rules, please reference the comments for
	// FacetProperty and SearchCriteriaProperty.
	UpdateSearchConfig(ctx context.Context, in *UpdateSearchConfigRequest, opts ...grpc.CallOption) (*SearchConfig, error)
	// Gets a search configuration inside a corpus.
	GetSearchConfig(ctx context.Context, in *GetSearchConfigRequest, opts ...grpc.CallOption) (*SearchConfig, error)
	// Deletes a search configuration inside a corpus.
	//
	// For a DeleteSearchConfigRequest to be valid,
	// Request.search_configuration.name must already exist.
	DeleteSearchConfig(ctx context.Context, in *DeleteSearchConfigRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Lists all search configurations inside a corpus.
	ListSearchConfigs(ctx context.Context, in *ListSearchConfigsRequest, opts ...grpc.CallOption) (*ListSearchConfigsResponse, error)
	// Search media asset.
	SearchAssets(ctx context.Context, in *SearchAssetsRequest, opts ...grpc.CallOption) (*SearchAssetsResponse, error)
}

type warehouseClient struct {
	cc grpc.ClientConnInterface
}

func NewWarehouseClient(cc grpc.ClientConnInterface) WarehouseClient {
	return &warehouseClient{cc}
}

func (c *warehouseClient) CreateAsset(ctx context.Context, in *CreateAssetRequest, opts ...grpc.CallOption) (*Asset, error) {
	out := new(Asset)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/CreateAsset", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) UpdateAsset(ctx context.Context, in *UpdateAssetRequest, opts ...grpc.CallOption) (*Asset, error) {
	out := new(Asset)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/UpdateAsset", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) GetAsset(ctx context.Context, in *GetAssetRequest, opts ...grpc.CallOption) (*Asset, error) {
	out := new(Asset)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/GetAsset", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) ListAssets(ctx context.Context, in *ListAssetsRequest, opts ...grpc.CallOption) (*ListAssetsResponse, error) {
	out := new(ListAssetsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/ListAssets", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) DeleteAsset(ctx context.Context, in *DeleteAssetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/DeleteAsset", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) CreateCorpus(ctx context.Context, in *CreateCorpusRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/CreateCorpus", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) GetCorpus(ctx context.Context, in *GetCorpusRequest, opts ...grpc.CallOption) (*Corpus, error) {
	out := new(Corpus)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/GetCorpus", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) UpdateCorpus(ctx context.Context, in *UpdateCorpusRequest, opts ...grpc.CallOption) (*Corpus, error) {
	out := new(Corpus)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/UpdateCorpus", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) ListCorpora(ctx context.Context, in *ListCorporaRequest, opts ...grpc.CallOption) (*ListCorporaResponse, error) {
	out := new(ListCorporaResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/ListCorpora", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) DeleteCorpus(ctx context.Context, in *DeleteCorpusRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/DeleteCorpus", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) CreateDataSchema(ctx context.Context, in *CreateDataSchemaRequest, opts ...grpc.CallOption) (*DataSchema, error) {
	out := new(DataSchema)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/CreateDataSchema", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) UpdateDataSchema(ctx context.Context, in *UpdateDataSchemaRequest, opts ...grpc.CallOption) (*DataSchema, error) {
	out := new(DataSchema)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/UpdateDataSchema", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) GetDataSchema(ctx context.Context, in *GetDataSchemaRequest, opts ...grpc.CallOption) (*DataSchema, error) {
	out := new(DataSchema)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/GetDataSchema", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) DeleteDataSchema(ctx context.Context, in *DeleteDataSchemaRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/DeleteDataSchema", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) ListDataSchemas(ctx context.Context, in *ListDataSchemasRequest, opts ...grpc.CallOption) (*ListDataSchemasResponse, error) {
	out := new(ListDataSchemasResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/ListDataSchemas", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) CreateAnnotation(ctx context.Context, in *CreateAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error) {
	out := new(Annotation)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/CreateAnnotation", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) GetAnnotation(ctx context.Context, in *GetAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error) {
	out := new(Annotation)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/GetAnnotation", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) ListAnnotations(ctx context.Context, in *ListAnnotationsRequest, opts ...grpc.CallOption) (*ListAnnotationsResponse, error) {
	out := new(ListAnnotationsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/ListAnnotations", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) UpdateAnnotation(ctx context.Context, in *UpdateAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error) {
	out := new(Annotation)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/UpdateAnnotation", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) DeleteAnnotation(ctx context.Context, in *DeleteAnnotationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/DeleteAnnotation", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) IngestAsset(ctx context.Context, opts ...grpc.CallOption) (Warehouse_IngestAssetClient, error) {
	stream, err := c.cc.NewStream(ctx, &_Warehouse_serviceDesc.Streams[0], "/google.cloud.visionai.v1.Warehouse/IngestAsset", opts...)
	if err != nil {
		return nil, err
	}
	x := &warehouseIngestAssetClient{stream}
	return x, nil
}

type Warehouse_IngestAssetClient interface {
	Send(*IngestAssetRequest) error
	Recv() (*IngestAssetResponse, error)
	grpc.ClientStream
}

type warehouseIngestAssetClient struct {
	grpc.ClientStream
}

func (x *warehouseIngestAssetClient) Send(m *IngestAssetRequest) error {
	return x.ClientStream.SendMsg(m)
}

func (x *warehouseIngestAssetClient) Recv() (*IngestAssetResponse, error) {
	m := new(IngestAssetResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *warehouseClient) ClipAsset(ctx context.Context, in *ClipAssetRequest, opts ...grpc.CallOption) (*ClipAssetResponse, error) {
	out := new(ClipAssetResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/ClipAsset", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) GenerateHlsUri(ctx context.Context, in *GenerateHlsUriRequest, opts ...grpc.CallOption) (*GenerateHlsUriResponse, error) {
	out := new(GenerateHlsUriResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/GenerateHlsUri", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) CreateSearchConfig(ctx context.Context, in *CreateSearchConfigRequest, opts ...grpc.CallOption) (*SearchConfig, error) {
	out := new(SearchConfig)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/CreateSearchConfig", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) UpdateSearchConfig(ctx context.Context, in *UpdateSearchConfigRequest, opts ...grpc.CallOption) (*SearchConfig, error) {
	out := new(SearchConfig)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/UpdateSearchConfig", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) GetSearchConfig(ctx context.Context, in *GetSearchConfigRequest, opts ...grpc.CallOption) (*SearchConfig, error) {
	out := new(SearchConfig)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/GetSearchConfig", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) DeleteSearchConfig(ctx context.Context, in *DeleteSearchConfigRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/DeleteSearchConfig", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) ListSearchConfigs(ctx context.Context, in *ListSearchConfigsRequest, opts ...grpc.CallOption) (*ListSearchConfigsResponse, error) {
	out := new(ListSearchConfigsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/ListSearchConfigs", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *warehouseClient) SearchAssets(ctx context.Context, in *SearchAssetsRequest, opts ...grpc.CallOption) (*SearchAssetsResponse, error) {
	out := new(SearchAssetsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.visionai.v1.Warehouse/SearchAssets", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// WarehouseServer is the server API for Warehouse service.
type WarehouseServer interface {
	// Creates an asset inside corpus.
	CreateAsset(context.Context, *CreateAssetRequest) (*Asset, error)
	// Updates an asset inside corpus.
	UpdateAsset(context.Context, *UpdateAssetRequest) (*Asset, error)
	// Reads an asset inside corpus.
	GetAsset(context.Context, *GetAssetRequest) (*Asset, error)
	// Lists an list of assets inside corpus.
	ListAssets(context.Context, *ListAssetsRequest) (*ListAssetsResponse, error)
	// Deletes asset inside corpus.
	DeleteAsset(context.Context, *DeleteAssetRequest) (*longrunning.Operation, error)
	// Creates a corpus inside a project.
	CreateCorpus(context.Context, *CreateCorpusRequest) (*longrunning.Operation, error)
	// Gets corpus details inside a project.
	GetCorpus(context.Context, *GetCorpusRequest) (*Corpus, error)
	// Updates a corpus in a project.
	UpdateCorpus(context.Context, *UpdateCorpusRequest) (*Corpus, error)
	// Lists all corpora in a project.
	ListCorpora(context.Context, *ListCorporaRequest) (*ListCorporaResponse, error)
	// Deletes a corpus only if its empty.
	// Returns empty response.
	DeleteCorpus(context.Context, *DeleteCorpusRequest) (*emptypb.Empty, error)
	// Creates data schema inside corpus.
	CreateDataSchema(context.Context, *CreateDataSchemaRequest) (*DataSchema, error)
	// Updates data schema inside corpus.
	UpdateDataSchema(context.Context, *UpdateDataSchemaRequest) (*DataSchema, error)
	// Gets data schema inside corpus.
	GetDataSchema(context.Context, *GetDataSchemaRequest) (*DataSchema, error)
	// Deletes data schema inside corpus.
	DeleteDataSchema(context.Context, *DeleteDataSchemaRequest) (*emptypb.Empty, error)
	// Lists a list of data schemas inside corpus.
	ListDataSchemas(context.Context, *ListDataSchemasRequest) (*ListDataSchemasResponse, error)
	// Creates annotation inside asset.
	CreateAnnotation(context.Context, *CreateAnnotationRequest) (*Annotation, error)
	// Reads annotation inside asset.
	GetAnnotation(context.Context, *GetAnnotationRequest) (*Annotation, error)
	// Lists a list of annotations inside asset.
	ListAnnotations(context.Context, *ListAnnotationsRequest) (*ListAnnotationsResponse, error)
	// Updates annotation inside asset.
	UpdateAnnotation(context.Context, *UpdateAnnotationRequest) (*Annotation, error)
	// Deletes annotation inside asset.
	DeleteAnnotation(context.Context, *DeleteAnnotationRequest) (*emptypb.Empty, error)
	// Ingests data for the asset. It is not allowed to ingest a data chunk which
	// is already expired according to TTL.
	// This method is only available via the gRPC API (not HTTP since
	// bi-directional streaming is not supported via HTTP).
	IngestAsset(Warehouse_IngestAssetServer) error
	// Generates clips for downloading. The api takes in a time range, and
	// generates a clip of the first content available after start_time and
	// before end_time, which may overflow beyond these bounds.
	// Returned clips are truncated if the total size of the clips are larger
	// than 100MB.
	ClipAsset(context.Context, *ClipAssetRequest) (*ClipAssetResponse, error)
	// Generates a uri for an HLS manifest. The api takes in a collection of time
	// ranges, and generates a URI for an HLS manifest that covers all the
	// requested time ranges.
	GenerateHlsUri(context.Context, *GenerateHlsUriRequest) (*GenerateHlsUriResponse, error)
	// Creates a search configuration inside a corpus.
	//
	// Please follow the rules below to create a valid CreateSearchConfigRequest.
	// --- General Rules ---
	//  1. Request.search_config_id must not be associated with an existing
	//     SearchConfig.
	//  2. Request must contain at least one non-empty search_criteria_property or
	//     facet_property.
	//  3. mapped_fields must not be empty, and must map to existing UGA keys.
	//  4. All mapped_fields must be of the same type.
	//  5. All mapped_fields must share the same granularity.
	//  6. All mapped_fields must share the same semantic SearchConfig match
	//     options.
	//
	// For property-specific rules, please reference the comments for
	// FacetProperty and SearchCriteriaProperty.
	CreateSearchConfig(context.Context, *CreateSearchConfigRequest) (*SearchConfig, error)
	// Updates a search configuration inside a corpus.
	//
	// Please follow the rules below to create a valid UpdateSearchConfigRequest.
	// --- General Rules ---
	// 1. Request.search_configuration.name must already exist.
	// 2. Request must contain at least one non-empty search_criteria_property or
	// facet_property.
	//  3. mapped_fields must not be empty, and must map to existing UGA keys.
	//  4. All mapped_fields must be of the same type.
	//  5. All mapped_fields must share the same granularity.
	//  6. All mapped_fields must share the same semantic SearchConfig match
	//     options.
	//
	// For property-specific rules, please reference the comments for
	// FacetProperty and SearchCriteriaProperty.
	UpdateSearchConfig(context.Context, *UpdateSearchConfigRequest) (*SearchConfig, error)
	// Gets a search configuration inside a corpus.
	GetSearchConfig(context.Context, *GetSearchConfigRequest) (*SearchConfig, error)
	// Deletes a search configuration inside a corpus.
	//
	// For a DeleteSearchConfigRequest to be valid,
	// Request.search_configuration.name must already exist.
	DeleteSearchConfig(context.Context, *DeleteSearchConfigRequest) (*emptypb.Empty, error)
	// Lists all search configurations inside a corpus.
	ListSearchConfigs(context.Context, *ListSearchConfigsRequest) (*ListSearchConfigsResponse, error)
	// Search media asset.
	SearchAssets(context.Context, *SearchAssetsRequest) (*SearchAssetsResponse, error)
}

// UnimplementedWarehouseServer can be embedded to have forward compatible implementations.
type UnimplementedWarehouseServer struct {
}

func (*UnimplementedWarehouseServer) CreateAsset(context.Context, *CreateAssetRequest) (*Asset, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method CreateAsset not implemented")
}
func (*UnimplementedWarehouseServer) UpdateAsset(context.Context, *UpdateAssetRequest) (*Asset, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UpdateAsset not implemented")
}
func (*UnimplementedWarehouseServer) GetAsset(context.Context, *GetAssetRequest) (*Asset, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GetAsset not implemented")
}
func (*UnimplementedWarehouseServer) ListAssets(context.Context, *ListAssetsRequest) (*ListAssetsResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ListAssets not implemented")
}
func (*UnimplementedWarehouseServer) DeleteAsset(context.Context, *DeleteAssetRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method DeleteAsset not implemented")
}
func (*UnimplementedWarehouseServer) CreateCorpus(context.Context, *CreateCorpusRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method CreateCorpus not implemented")
}
func (*UnimplementedWarehouseServer) GetCorpus(context.Context, *GetCorpusRequest) (*Corpus, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GetCorpus not implemented")
}
func (*UnimplementedWarehouseServer) UpdateCorpus(context.Context, *UpdateCorpusRequest) (*Corpus, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UpdateCorpus not implemented")
}
func (*UnimplementedWarehouseServer) ListCorpora(context.Context, *ListCorporaRequest) (*ListCorporaResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ListCorpora not implemented")
}
func (*UnimplementedWarehouseServer) DeleteCorpus(context.Context, *DeleteCorpusRequest) (*emptypb.Empty, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method DeleteCorpus not implemented")
}
func (*UnimplementedWarehouseServer) CreateDataSchema(context.Context, *CreateDataSchemaRequest) (*DataSchema, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method CreateDataSchema not implemented")
}
func (*UnimplementedWarehouseServer) UpdateDataSchema(context.Context, *UpdateDataSchemaRequest) (*DataSchema, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UpdateDataSchema not implemented")
}
func (*UnimplementedWarehouseServer) GetDataSchema(context.Context, *GetDataSchemaRequest) (*DataSchema, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GetDataSchema not implemented")
}
func (*UnimplementedWarehouseServer) DeleteDataSchema(context.Context, *DeleteDataSchemaRequest) (*emptypb.Empty, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method DeleteDataSchema not implemented")
}
func (*UnimplementedWarehouseServer) ListDataSchemas(context.Context, *ListDataSchemasRequest) (*ListDataSchemasResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ListDataSchemas not implemented")
}
func (*UnimplementedWarehouseServer) CreateAnnotation(context.Context, *CreateAnnotationRequest) (*Annotation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method CreateAnnotation not implemented")
}
func (*UnimplementedWarehouseServer) GetAnnotation(context.Context, *GetAnnotationRequest) (*Annotation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GetAnnotation not implemented")
}
func (*UnimplementedWarehouseServer) ListAnnotations(context.Context, *ListAnnotationsRequest) (*ListAnnotationsResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ListAnnotations not implemented")
}
func (*UnimplementedWarehouseServer) UpdateAnnotation(context.Context, *UpdateAnnotationRequest) (*Annotation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UpdateAnnotation not implemented")
}
func (*UnimplementedWarehouseServer) DeleteAnnotation(context.Context, *DeleteAnnotationRequest) (*emptypb.Empty, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method DeleteAnnotation not implemented")
}
func (*UnimplementedWarehouseServer) IngestAsset(Warehouse_IngestAssetServer) error {
	return status1.Errorf(codes.Unimplemented, "method IngestAsset not implemented")
}
func (*UnimplementedWarehouseServer) ClipAsset(context.Context, *ClipAssetRequest) (*ClipAssetResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ClipAsset not implemented")
}
func (*UnimplementedWarehouseServer) GenerateHlsUri(context.Context, *GenerateHlsUriRequest) (*GenerateHlsUriResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GenerateHlsUri not implemented")
}
func (*UnimplementedWarehouseServer) CreateSearchConfig(context.Context, *CreateSearchConfigRequest) (*SearchConfig, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method CreateSearchConfig not implemented")
}
func (*UnimplementedWarehouseServer) UpdateSearchConfig(context.Context, *UpdateSearchConfigRequest) (*SearchConfig, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UpdateSearchConfig not implemented")
}
func (*UnimplementedWarehouseServer) GetSearchConfig(context.Context, *GetSearchConfigRequest) (*SearchConfig, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GetSearchConfig not implemented")
}
func (*UnimplementedWarehouseServer) DeleteSearchConfig(context.Context, *DeleteSearchConfigRequest) (*emptypb.Empty, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method DeleteSearchConfig not implemented")
}
func (*UnimplementedWarehouseServer) ListSearchConfigs(context.Context, *ListSearchConfigsRequest) (*ListSearchConfigsResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ListSearchConfigs not implemented")
}
func (*UnimplementedWarehouseServer) SearchAssets(context.Context, *SearchAssetsRequest) (*SearchAssetsResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method SearchAssets not implemented")
}

func RegisterWarehouseServer(s *grpc.Server, srv WarehouseServer) {
	s.RegisterService(&_Warehouse_serviceDesc, srv)
}

func _Warehouse_CreateAsset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateAssetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).CreateAsset(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/CreateAsset",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).CreateAsset(ctx, req.(*CreateAssetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_UpdateAsset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateAssetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).UpdateAsset(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/UpdateAsset",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).UpdateAsset(ctx, req.(*UpdateAssetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_GetAsset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetAssetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).GetAsset(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/GetAsset",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).GetAsset(ctx, req.(*GetAssetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_ListAssets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListAssetsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).ListAssets(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/ListAssets",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).ListAssets(ctx, req.(*ListAssetsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_DeleteAsset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteAssetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).DeleteAsset(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/DeleteAsset",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).DeleteAsset(ctx, req.(*DeleteAssetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_CreateCorpus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateCorpusRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).CreateCorpus(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/CreateCorpus",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).CreateCorpus(ctx, req.(*CreateCorpusRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_GetCorpus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetCorpusRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).GetCorpus(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/GetCorpus",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).GetCorpus(ctx, req.(*GetCorpusRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_UpdateCorpus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateCorpusRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).UpdateCorpus(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/UpdateCorpus",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).UpdateCorpus(ctx, req.(*UpdateCorpusRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_ListCorpora_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListCorporaRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).ListCorpora(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/ListCorpora",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).ListCorpora(ctx, req.(*ListCorporaRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_DeleteCorpus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteCorpusRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).DeleteCorpus(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/DeleteCorpus",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).DeleteCorpus(ctx, req.(*DeleteCorpusRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_CreateDataSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateDataSchemaRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).CreateDataSchema(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/CreateDataSchema",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).CreateDataSchema(ctx, req.(*CreateDataSchemaRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_UpdateDataSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateDataSchemaRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).UpdateDataSchema(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/UpdateDataSchema",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).UpdateDataSchema(ctx, req.(*UpdateDataSchemaRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_GetDataSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetDataSchemaRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).GetDataSchema(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/GetDataSchema",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).GetDataSchema(ctx, req.(*GetDataSchemaRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_DeleteDataSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteDataSchemaRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).DeleteDataSchema(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/DeleteDataSchema",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).DeleteDataSchema(ctx, req.(*DeleteDataSchemaRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_ListDataSchemas_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListDataSchemasRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).ListDataSchemas(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/ListDataSchemas",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).ListDataSchemas(ctx, req.(*ListDataSchemasRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_CreateAnnotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateAnnotationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).CreateAnnotation(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/CreateAnnotation",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).CreateAnnotation(ctx, req.(*CreateAnnotationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_GetAnnotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetAnnotationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).GetAnnotation(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/GetAnnotation",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).GetAnnotation(ctx, req.(*GetAnnotationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_ListAnnotations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListAnnotationsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).ListAnnotations(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/ListAnnotations",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).ListAnnotations(ctx, req.(*ListAnnotationsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_UpdateAnnotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateAnnotationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).UpdateAnnotation(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/UpdateAnnotation",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).UpdateAnnotation(ctx, req.(*UpdateAnnotationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_DeleteAnnotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteAnnotationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).DeleteAnnotation(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/DeleteAnnotation",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).DeleteAnnotation(ctx, req.(*DeleteAnnotationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_IngestAsset_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(WarehouseServer).IngestAsset(&warehouseIngestAssetServer{stream})
}

type Warehouse_IngestAssetServer interface {
	Send(*IngestAssetResponse) error
	Recv() (*IngestAssetRequest, error)
	grpc.ServerStream
}

type warehouseIngestAssetServer struct {
	grpc.ServerStream
}

func (x *warehouseIngestAssetServer) Send(m *IngestAssetResponse) error {
	return x.ServerStream.SendMsg(m)
}

func (x *warehouseIngestAssetServer) Recv() (*IngestAssetRequest, error) {
	m := new(IngestAssetRequest)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func _Warehouse_ClipAsset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ClipAssetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).ClipAsset(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/ClipAsset",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).ClipAsset(ctx, req.(*ClipAssetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_GenerateHlsUri_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GenerateHlsUriRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).GenerateHlsUri(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/GenerateHlsUri",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).GenerateHlsUri(ctx, req.(*GenerateHlsUriRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_CreateSearchConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateSearchConfigRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).CreateSearchConfig(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/CreateSearchConfig",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).CreateSearchConfig(ctx, req.(*CreateSearchConfigRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_UpdateSearchConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateSearchConfigRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).UpdateSearchConfig(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/UpdateSearchConfig",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).UpdateSearchConfig(ctx, req.(*UpdateSearchConfigRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_GetSearchConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetSearchConfigRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).GetSearchConfig(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/GetSearchConfig",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).GetSearchConfig(ctx, req.(*GetSearchConfigRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_DeleteSearchConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteSearchConfigRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).DeleteSearchConfig(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/DeleteSearchConfig",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).DeleteSearchConfig(ctx, req.(*DeleteSearchConfigRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_ListSearchConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListSearchConfigsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).ListSearchConfigs(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/ListSearchConfigs",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).ListSearchConfigs(ctx, req.(*ListSearchConfigsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Warehouse_SearchAssets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SearchAssetsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(WarehouseServer).SearchAssets(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.visionai.v1.Warehouse/SearchAssets",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(WarehouseServer).SearchAssets(ctx, req.(*SearchAssetsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _Warehouse_serviceDesc = grpc.ServiceDesc{
	ServiceName: "google.cloud.visionai.v1.Warehouse",
	HandlerType: (*WarehouseServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "CreateAsset",
			Handler:    _Warehouse_CreateAsset_Handler,
		},
		{
			MethodName: "UpdateAsset",
			Handler:    _Warehouse_UpdateAsset_Handler,
		},
		{
			MethodName: "GetAsset",
			Handler:    _Warehouse_GetAsset_Handler,
		},
		{
			MethodName: "ListAssets",
			Handler:    _Warehouse_ListAssets_Handler,
		},
		{
			MethodName: "DeleteAsset",
			Handler:    _Warehouse_DeleteAsset_Handler,
		},
		{
			MethodName: "CreateCorpus",
			Handler:    _Warehouse_CreateCorpus_Handler,
		},
		{
			MethodName: "GetCorpus",
			Handler:    _Warehouse_GetCorpus_Handler,
		},
		{
			MethodName: "UpdateCorpus",
			Handler:    _Warehouse_UpdateCorpus_Handler,
		},
		{
			MethodName: "ListCorpora",
			Handler:    _Warehouse_ListCorpora_Handler,
		},
		{
			MethodName: "DeleteCorpus",
			Handler:    _Warehouse_DeleteCorpus_Handler,
		},
		{
			MethodName: "CreateDataSchema",
			Handler:    _Warehouse_CreateDataSchema_Handler,
		},
		{
			MethodName: "UpdateDataSchema",
			Handler:    _Warehouse_UpdateDataSchema_Handler,
		},
		{
			MethodName: "GetDataSchema",
			Handler:    _Warehouse_GetDataSchema_Handler,
		},
		{
			MethodName: "DeleteDataSchema",
			Handler:    _Warehouse_DeleteDataSchema_Handler,
		},
		{
			MethodName: "ListDataSchemas",
			Handler:    _Warehouse_ListDataSchemas_Handler,
		},
		{
			MethodName: "CreateAnnotation",
			Handler:    _Warehouse_CreateAnnotation_Handler,
		},
		{
			MethodName: "GetAnnotation",
			Handler:    _Warehouse_GetAnnotation_Handler,
		},
		{
			MethodName: "ListAnnotations",
			Handler:    _Warehouse_ListAnnotations_Handler,
		},
		{
			MethodName: "UpdateAnnotation",
			Handler:    _Warehouse_UpdateAnnotation_Handler,
		},
		{
			MethodName: "DeleteAnnotation",
			Handler:    _Warehouse_DeleteAnnotation_Handler,
		},
		{
			MethodName: "ClipAsset",
			Handler:    _Warehouse_ClipAsset_Handler,
		},
		{
			MethodName: "GenerateHlsUri",
			Handler:    _Warehouse_GenerateHlsUri_Handler,
		},
		{
			MethodName: "CreateSearchConfig",
			Handler:    _Warehouse_CreateSearchConfig_Handler,
		},
		{
			MethodName: "UpdateSearchConfig",
			Handler:    _Warehouse_UpdateSearchConfig_Handler,
		},
		{
			MethodName: "GetSearchConfig",
			Handler:    _Warehouse_GetSearchConfig_Handler,
		},
		{
			MethodName: "DeleteSearchConfig",
			Handler:    _Warehouse_DeleteSearchConfig_Handler,
		},
		{
			MethodName: "ListSearchConfigs",
			Handler:    _Warehouse_ListSearchConfigs_Handler,
		},
		{
			MethodName: "SearchAssets",
			Handler:    _Warehouse_SearchAssets_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "IngestAsset",
			Handler:       _Warehouse_IngestAsset_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
	},
	Metadata: "google/cloud/visionai/v1/warehouse.proto",
}
