// Copyright 2025 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.35.2
// 	protoc        v4.25.7
// source: google/cloud/aiplatform/v1/model.proto

package aiplatformpb

import (
	reflect "reflect"
	sync "sync"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	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)
)

// Identifies a type of Model's prediction resources.
type Model_DeploymentResourcesType int32

const (
	// Should not be used.
	Model_DEPLOYMENT_RESOURCES_TYPE_UNSPECIFIED Model_DeploymentResourcesType = 0
	// Resources that are dedicated to the
	// [DeployedModel][google.cloud.aiplatform.v1.DeployedModel], and that need
	// a higher degree of manual configuration.
	Model_DEDICATED_RESOURCES Model_DeploymentResourcesType = 1
	// Resources that to large degree are decided by Vertex AI, and require
	// only a modest additional configuration.
	Model_AUTOMATIC_RESOURCES Model_DeploymentResourcesType = 2
	// Resources that can be shared by multiple
	// [DeployedModels][google.cloud.aiplatform.v1.DeployedModel]. A
	// pre-configured
	// [DeploymentResourcePool][google.cloud.aiplatform.v1.DeploymentResourcePool]
	// is required.
	Model_SHARED_RESOURCES Model_DeploymentResourcesType = 3
)

// Enum value maps for Model_DeploymentResourcesType.
var (
	Model_DeploymentResourcesType_name = map[int32]string{
		0: "DEPLOYMENT_RESOURCES_TYPE_UNSPECIFIED",
		1: "DEDICATED_RESOURCES",
		2: "AUTOMATIC_RESOURCES",
		3: "SHARED_RESOURCES",
	}
	Model_DeploymentResourcesType_value = map[string]int32{
		"DEPLOYMENT_RESOURCES_TYPE_UNSPECIFIED": 0,
		"DEDICATED_RESOURCES":                   1,
		"AUTOMATIC_RESOURCES":                   2,
		"SHARED_RESOURCES":                      3,
	}
)

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

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

func (Model_DeploymentResourcesType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_aiplatform_v1_model_proto_enumTypes[0].Descriptor()
}

func (Model_DeploymentResourcesType) Type() protoreflect.EnumType {
	return &file_google_cloud_aiplatform_v1_model_proto_enumTypes[0]
}

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

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

// The Model content that can be exported.
type Model_ExportFormat_ExportableContent int32

const (
	// Should not be used.
	Model_ExportFormat_EXPORTABLE_CONTENT_UNSPECIFIED Model_ExportFormat_ExportableContent = 0
	// Model artifact and any of its supported files. Will be exported to the
	// location specified by the `artifactDestination` field of the
	// [ExportModelRequest.output_config][google.cloud.aiplatform.v1.ExportModelRequest.output_config]
	// object.
	Model_ExportFormat_ARTIFACT Model_ExportFormat_ExportableContent = 1
	// The container image that is to be used when deploying this Model. Will
	// be exported to the location specified by the `imageDestination` field
	// of the
	// [ExportModelRequest.output_config][google.cloud.aiplatform.v1.ExportModelRequest.output_config]
	// object.
	Model_ExportFormat_IMAGE Model_ExportFormat_ExportableContent = 2
)

// Enum value maps for Model_ExportFormat_ExportableContent.
var (
	Model_ExportFormat_ExportableContent_name = map[int32]string{
		0: "EXPORTABLE_CONTENT_UNSPECIFIED",
		1: "ARTIFACT",
		2: "IMAGE",
	}
	Model_ExportFormat_ExportableContent_value = map[string]int32{
		"EXPORTABLE_CONTENT_UNSPECIFIED": 0,
		"ARTIFACT":                       1,
		"IMAGE":                          2,
	}
)

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

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

func (Model_ExportFormat_ExportableContent) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_aiplatform_v1_model_proto_enumTypes[1].Descriptor()
}

func (Model_ExportFormat_ExportableContent) Type() protoreflect.EnumType {
	return &file_google_cloud_aiplatform_v1_model_proto_enumTypes[1]
}

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

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

// Source of the model.
// Different from `objective` field, this `ModelSourceType` enum
// indicates the source from which the model was accessed or obtained,
// whereas the `objective` indicates the overall aim or function of this
// model.
type ModelSourceInfo_ModelSourceType int32

const (
	// Should not be used.
	ModelSourceInfo_MODEL_SOURCE_TYPE_UNSPECIFIED ModelSourceInfo_ModelSourceType = 0
	// The Model is uploaded by automl training pipeline.
	ModelSourceInfo_AUTOML ModelSourceInfo_ModelSourceType = 1
	// The Model is uploaded by user or custom training pipeline.
	ModelSourceInfo_CUSTOM ModelSourceInfo_ModelSourceType = 2
	// The Model is registered and sync'ed from BigQuery ML.
	ModelSourceInfo_BQML ModelSourceInfo_ModelSourceType = 3
	// The Model is saved or tuned from Model Garden.
	ModelSourceInfo_MODEL_GARDEN ModelSourceInfo_ModelSourceType = 4
	// The Model is saved or tuned from Genie.
	ModelSourceInfo_GENIE ModelSourceInfo_ModelSourceType = 5
	// The Model is uploaded by text embedding finetuning pipeline.
	ModelSourceInfo_CUSTOM_TEXT_EMBEDDING ModelSourceInfo_ModelSourceType = 6
	// The Model is saved or tuned from Marketplace.
	ModelSourceInfo_MARKETPLACE ModelSourceInfo_ModelSourceType = 7
)

// Enum value maps for ModelSourceInfo_ModelSourceType.
var (
	ModelSourceInfo_ModelSourceType_name = map[int32]string{
		0: "MODEL_SOURCE_TYPE_UNSPECIFIED",
		1: "AUTOML",
		2: "CUSTOM",
		3: "BQML",
		4: "MODEL_GARDEN",
		5: "GENIE",
		6: "CUSTOM_TEXT_EMBEDDING",
		7: "MARKETPLACE",
	}
	ModelSourceInfo_ModelSourceType_value = map[string]int32{
		"MODEL_SOURCE_TYPE_UNSPECIFIED": 0,
		"AUTOML":                        1,
		"CUSTOM":                        2,
		"BQML":                          3,
		"MODEL_GARDEN":                  4,
		"GENIE":                         5,
		"CUSTOM_TEXT_EMBEDDING":         6,
		"MARKETPLACE":                   7,
	}
)

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

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

func (ModelSourceInfo_ModelSourceType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_aiplatform_v1_model_proto_enumTypes[2].Descriptor()
}

func (ModelSourceInfo_ModelSourceType) Type() protoreflect.EnumType {
	return &file_google_cloud_aiplatform_v1_model_proto_enumTypes[2]
}

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

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

// A trained machine learning Model.
type Model struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The resource name of the Model.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Output only. Immutable. The version ID of the model.
	// A new version is committed when a new model version is uploaded or
	// trained under an existing model id. It is an auto-incrementing decimal
	// number in string representation.
	VersionId string `protobuf:"bytes,28,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"`
	// User provided version aliases so that a model version can be referenced via
	// alias (i.e.
	// `projects/{project}/locations/{location}/models/{model_id}@{version_alias}`
	// instead of auto-generated version id (i.e.
	// `projects/{project}/locations/{location}/models/{model_id}@{version_id})`.
	// The format is [a-z][a-zA-Z0-9-]{0,126}[a-z0-9] to distinguish from
	// version_id. A default version alias will be created for the first version
	// of the model, and there must be exactly one default version alias for a
	// model.
	VersionAliases []string `protobuf:"bytes,29,rep,name=version_aliases,json=versionAliases,proto3" json:"version_aliases,omitempty"`
	// Output only. Timestamp when this version was created.
	VersionCreateTime *timestamppb.Timestamp `protobuf:"bytes,31,opt,name=version_create_time,json=versionCreateTime,proto3" json:"version_create_time,omitempty"`
	// Output only. Timestamp when this version was most recently updated.
	VersionUpdateTime *timestamppb.Timestamp `protobuf:"bytes,32,opt,name=version_update_time,json=versionUpdateTime,proto3" json:"version_update_time,omitempty"`
	// Required. The display name of the Model.
	// The name can be up to 128 characters long and can consist of any UTF-8
	// characters.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// The description of the Model.
	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	// The description of this version.
	VersionDescription string `protobuf:"bytes,30,opt,name=version_description,json=versionDescription,proto3" json:"version_description,omitempty"`
	// The default checkpoint id of a model version.
	DefaultCheckpointId string `protobuf:"bytes,53,opt,name=default_checkpoint_id,json=defaultCheckpointId,proto3" json:"default_checkpoint_id,omitempty"`
	// The schemata that describe formats of the Model's predictions and
	// explanations as given and returned via
	// [PredictionService.Predict][google.cloud.aiplatform.v1.PredictionService.Predict]
	// and
	// [PredictionService.Explain][google.cloud.aiplatform.v1.PredictionService.Explain].
	PredictSchemata *PredictSchemata `protobuf:"bytes,4,opt,name=predict_schemata,json=predictSchemata,proto3" json:"predict_schemata,omitempty"`
	// Immutable. Points to a YAML file stored on Google Cloud Storage describing
	// additional information about the Model, that is specific to it. Unset if
	// the Model does not have any additional information. The schema is defined
	// as an OpenAPI 3.0.2 [Schema
	// Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject).
	// AutoML Models always have this field populated by Vertex AI, if no
	// additional metadata is needed, this field is set to an empty string.
	// Note: The URI given on output will be immutable and probably different,
	// including the URI scheme, than the one given on input. The output URI will
	// point to a location where the user only has a read access.
	MetadataSchemaUri string `protobuf:"bytes,5,opt,name=metadata_schema_uri,json=metadataSchemaUri,proto3" json:"metadata_schema_uri,omitempty"`
	// Immutable. An additional information about the Model; the schema of the
	// metadata can be found in
	// [metadata_schema][google.cloud.aiplatform.v1.Model.metadata_schema_uri].
	// Unset if the Model does not have any additional information.
	Metadata *structpb.Value `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"`
	// Output only. The formats in which this Model may be exported. If empty,
	// this Model is not available for export.
	SupportedExportFormats []*Model_ExportFormat `protobuf:"bytes,20,rep,name=supported_export_formats,json=supportedExportFormats,proto3" json:"supported_export_formats,omitempty"`
	// Output only. The resource name of the TrainingPipeline that uploaded this
	// Model, if any.
	TrainingPipeline string `protobuf:"bytes,7,opt,name=training_pipeline,json=trainingPipeline,proto3" json:"training_pipeline,omitempty"`
	// Optional. This field is populated if the model is produced by a pipeline
	// job.
	PipelineJob string `protobuf:"bytes,47,opt,name=pipeline_job,json=pipelineJob,proto3" json:"pipeline_job,omitempty"`
	// Input only. The specification of the container that is to be used when
	// deploying this Model. The specification is ingested upon
	// [ModelService.UploadModel][google.cloud.aiplatform.v1.ModelService.UploadModel],
	// and all binaries it contains are copied and stored internally by Vertex AI.
	// Not required for AutoML Models.
	ContainerSpec *ModelContainerSpec `protobuf:"bytes,9,opt,name=container_spec,json=containerSpec,proto3" json:"container_spec,omitempty"`
	// Immutable. The path to the directory containing the Model artifact and any
	// of its supporting files. Not required for AutoML Models.
	ArtifactUri string `protobuf:"bytes,26,opt,name=artifact_uri,json=artifactUri,proto3" json:"artifact_uri,omitempty"`
	// Output only. When this Model is deployed, its prediction resources are
	// described by the `prediction_resources` field of the
	// [Endpoint.deployed_models][google.cloud.aiplatform.v1.Endpoint.deployed_models]
	// object. Because not all Models support all resource configuration types,
	// the configuration types this Model supports are listed here. If no
	// configuration types are listed, the Model cannot be deployed to an
	// [Endpoint][google.cloud.aiplatform.v1.Endpoint] and does not support
	// online predictions
	// ([PredictionService.Predict][google.cloud.aiplatform.v1.PredictionService.Predict]
	// or
	// [PredictionService.Explain][google.cloud.aiplatform.v1.PredictionService.Explain]).
	// Such a Model can serve predictions by using a
	// [BatchPredictionJob][google.cloud.aiplatform.v1.BatchPredictionJob], if it
	// has at least one entry each in
	// [supported_input_storage_formats][google.cloud.aiplatform.v1.Model.supported_input_storage_formats]
	// and
	// [supported_output_storage_formats][google.cloud.aiplatform.v1.Model.supported_output_storage_formats].
	SupportedDeploymentResourcesTypes []Model_DeploymentResourcesType `protobuf:"varint,10,rep,packed,name=supported_deployment_resources_types,json=supportedDeploymentResourcesTypes,proto3,enum=google.cloud.aiplatform.v1.Model_DeploymentResourcesType" json:"supported_deployment_resources_types,omitempty"`
	// Output only. The formats this Model supports in
	// [BatchPredictionJob.input_config][google.cloud.aiplatform.v1.BatchPredictionJob.input_config].
	// If
	// [PredictSchemata.instance_schema_uri][google.cloud.aiplatform.v1.PredictSchemata.instance_schema_uri]
	// exists, the instances should be given as per that schema.
	//
	// The possible formats are:
	//
	// * `jsonl`
	// The JSON Lines format, where each instance is a single line. Uses
	// [GcsSource][google.cloud.aiplatform.v1.BatchPredictionJob.InputConfig.gcs_source].
	//
	// * `csv`
	// The CSV format, where each instance is a single comma-separated line.
	// The first line in the file is the header, containing comma-separated field
	// names. Uses
	// [GcsSource][google.cloud.aiplatform.v1.BatchPredictionJob.InputConfig.gcs_source].
	//
	// * `tf-record`
	// The TFRecord format, where each instance is a single record in tfrecord
	// syntax. Uses
	// [GcsSource][google.cloud.aiplatform.v1.BatchPredictionJob.InputConfig.gcs_source].
	//
	// * `tf-record-gzip`
	// Similar to `tf-record`, but the file is gzipped. Uses
	// [GcsSource][google.cloud.aiplatform.v1.BatchPredictionJob.InputConfig.gcs_source].
	//
	// * `bigquery`
	// Each instance is a single row in BigQuery. Uses
	// [BigQuerySource][google.cloud.aiplatform.v1.BatchPredictionJob.InputConfig.bigquery_source].
	//
	// * `file-list`
	// Each line of the file is the location of an instance to process, uses
	// `gcs_source` field of the
	// [InputConfig][google.cloud.aiplatform.v1.BatchPredictionJob.InputConfig]
	// object.
	//
	// If this Model doesn't support any of these formats it means it cannot be
	// used with a
	// [BatchPredictionJob][google.cloud.aiplatform.v1.BatchPredictionJob].
	// However, if it has
	// [supported_deployment_resources_types][google.cloud.aiplatform.v1.Model.supported_deployment_resources_types],
	// it could serve online predictions by using
	// [PredictionService.Predict][google.cloud.aiplatform.v1.PredictionService.Predict]
	// or
	// [PredictionService.Explain][google.cloud.aiplatform.v1.PredictionService.Explain].
	SupportedInputStorageFormats []string `protobuf:"bytes,11,rep,name=supported_input_storage_formats,json=supportedInputStorageFormats,proto3" json:"supported_input_storage_formats,omitempty"`
	// Output only. The formats this Model supports in
	// [BatchPredictionJob.output_config][google.cloud.aiplatform.v1.BatchPredictionJob.output_config].
	// If both
	// [PredictSchemata.instance_schema_uri][google.cloud.aiplatform.v1.PredictSchemata.instance_schema_uri]
	// and
	// [PredictSchemata.prediction_schema_uri][google.cloud.aiplatform.v1.PredictSchemata.prediction_schema_uri]
	// exist, the predictions are returned together with their instances. In other
	// words, the prediction has the original instance data first, followed by the
	// actual prediction content (as per the schema).
	//
	// The possible formats are:
	//
	// * `jsonl`
	// The JSON Lines format, where each prediction is a single line. Uses
	// [GcsDestination][google.cloud.aiplatform.v1.BatchPredictionJob.OutputConfig.gcs_destination].
	//
	// * `csv`
	// The CSV format, where each prediction is a single comma-separated line.
	// The first line in the file is the header, containing comma-separated field
	// names. Uses
	// [GcsDestination][google.cloud.aiplatform.v1.BatchPredictionJob.OutputConfig.gcs_destination].
	//
	// * `bigquery`
	// Each prediction is a single row in a BigQuery table, uses
	// [BigQueryDestination][google.cloud.aiplatform.v1.BatchPredictionJob.OutputConfig.bigquery_destination]
	// .
	//
	// If this Model doesn't support any of these formats it means it cannot be
	// used with a
	// [BatchPredictionJob][google.cloud.aiplatform.v1.BatchPredictionJob].
	// However, if it has
	// [supported_deployment_resources_types][google.cloud.aiplatform.v1.Model.supported_deployment_resources_types],
	// it could serve online predictions by using
	// [PredictionService.Predict][google.cloud.aiplatform.v1.PredictionService.Predict]
	// or
	// [PredictionService.Explain][google.cloud.aiplatform.v1.PredictionService.Explain].
	SupportedOutputStorageFormats []string `protobuf:"bytes,12,rep,name=supported_output_storage_formats,json=supportedOutputStorageFormats,proto3" json:"supported_output_storage_formats,omitempty"`
	// Output only. Timestamp when this Model was uploaded into Vertex AI.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Output only. Timestamp when this Model was most recently updated.
	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
	// Output only. The pointers to DeployedModels created from this Model. Note
	// that Model could have been deployed to Endpoints in different Locations.
	DeployedModels []*DeployedModelRef `protobuf:"bytes,15,rep,name=deployed_models,json=deployedModels,proto3" json:"deployed_models,omitempty"`
	// The default explanation specification for this Model.
	//
	// The Model can be used for
	// [requesting
	// explanation][google.cloud.aiplatform.v1.PredictionService.Explain] after
	// being [deployed][google.cloud.aiplatform.v1.EndpointService.DeployModel] if
	// it is populated. The Model can be used for [batch
	// explanation][google.cloud.aiplatform.v1.BatchPredictionJob.generate_explanation]
	// if it is populated.
	//
	// All fields of the explanation_spec can be overridden by
	// [explanation_spec][google.cloud.aiplatform.v1.DeployedModel.explanation_spec]
	// of
	// [DeployModelRequest.deployed_model][google.cloud.aiplatform.v1.DeployModelRequest.deployed_model],
	// or
	// [explanation_spec][google.cloud.aiplatform.v1.BatchPredictionJob.explanation_spec]
	// of [BatchPredictionJob][google.cloud.aiplatform.v1.BatchPredictionJob].
	//
	// If the default explanation specification is not set for this Model, this
	// Model can still be used for
	// [requesting
	// explanation][google.cloud.aiplatform.v1.PredictionService.Explain] by
	// setting
	// [explanation_spec][google.cloud.aiplatform.v1.DeployedModel.explanation_spec]
	// of
	// [DeployModelRequest.deployed_model][google.cloud.aiplatform.v1.DeployModelRequest.deployed_model]
	// and for [batch
	// explanation][google.cloud.aiplatform.v1.BatchPredictionJob.generate_explanation]
	// by setting
	// [explanation_spec][google.cloud.aiplatform.v1.BatchPredictionJob.explanation_spec]
	// of [BatchPredictionJob][google.cloud.aiplatform.v1.BatchPredictionJob].
	ExplanationSpec *ExplanationSpec `protobuf:"bytes,23,opt,name=explanation_spec,json=explanationSpec,proto3" json:"explanation_spec,omitempty"`
	// Used to perform consistent read-modify-write updates. If not set, a blind
	// "overwrite" update happens.
	Etag string `protobuf:"bytes,16,opt,name=etag,proto3" json:"etag,omitempty"`
	// The labels with user-defined metadata to organize your Models.
	//
	// Label keys and values can be no longer than 64 characters
	// (Unicode codepoints), can only contain lowercase letters, numeric
	// characters, underscores and dashes. International characters are allowed.
	//
	// See https://goo.gl/xmQnxf for more information and examples of labels.
	Labels map[string]string `protobuf:"bytes,17,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Stats of data used for training or evaluating the Model.
	//
	// Only populated when the Model is trained by a TrainingPipeline with
	// [data_input_config][google.cloud.aiplatform.v1.TrainingPipeline.input_data_config].
	DataStats *Model_DataStats `protobuf:"bytes,21,opt,name=data_stats,json=dataStats,proto3" json:"data_stats,omitempty"`
	// Customer-managed encryption key spec for a Model. If set, this
	// Model and all sub-resources of this Model will be secured by this key.
	EncryptionSpec *EncryptionSpec `protobuf:"bytes,24,opt,name=encryption_spec,json=encryptionSpec,proto3" json:"encryption_spec,omitempty"`
	// Output only. Source of a model. It can either be automl training pipeline,
	// custom training pipeline, BigQuery ML, or saved and tuned from Genie or
	// Model Garden.
	ModelSourceInfo *ModelSourceInfo `protobuf:"bytes,38,opt,name=model_source_info,json=modelSourceInfo,proto3" json:"model_source_info,omitempty"`
	// Output only. If this Model is a copy of another Model, this contains info
	// about the original.
	OriginalModelInfo *Model_OriginalModelInfo `protobuf:"bytes,34,opt,name=original_model_info,json=originalModelInfo,proto3" json:"original_model_info,omitempty"`
	// Output only. The resource name of the Artifact that was created in
	// MetadataStore when creating the Model. The Artifact resource name pattern
	// is
	// `projects/{project}/locations/{location}/metadataStores/{metadata_store}/artifacts/{artifact}`.
	MetadataArtifact string `protobuf:"bytes,44,opt,name=metadata_artifact,json=metadataArtifact,proto3" json:"metadata_artifact,omitempty"`
	// Optional. User input field to specify the base model source. Currently it
	// only supports specifing the Model Garden models and Genie models.
	BaseModelSource *Model_BaseModelSource `protobuf:"bytes,50,opt,name=base_model_source,json=baseModelSource,proto3" json:"base_model_source,omitempty"`
	// Output only. Reserved for future use.
	SatisfiesPzs bool `protobuf:"varint,51,opt,name=satisfies_pzs,json=satisfiesPzs,proto3" json:"satisfies_pzs,omitempty"`
	// Output only. Reserved for future use.
	SatisfiesPzi bool `protobuf:"varint,52,opt,name=satisfies_pzi,json=satisfiesPzi,proto3" json:"satisfies_pzi,omitempty"`
	// Optional. Output only. The checkpoints of the model.
	Checkpoints []*Checkpoint `protobuf:"bytes,57,rep,name=checkpoints,proto3" json:"checkpoints,omitempty"`
}

func (x *Model) Reset() {
	*x = Model{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Model) ProtoMessage() {}

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

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

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

func (x *Model) GetVersionId() string {
	if x != nil {
		return x.VersionId
	}
	return ""
}

func (x *Model) GetVersionAliases() []string {
	if x != nil {
		return x.VersionAliases
	}
	return nil
}

func (x *Model) GetVersionCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.VersionCreateTime
	}
	return nil
}

func (x *Model) GetVersionUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.VersionUpdateTime
	}
	return nil
}

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

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

func (x *Model) GetVersionDescription() string {
	if x != nil {
		return x.VersionDescription
	}
	return ""
}

func (x *Model) GetDefaultCheckpointId() string {
	if x != nil {
		return x.DefaultCheckpointId
	}
	return ""
}

func (x *Model) GetPredictSchemata() *PredictSchemata {
	if x != nil {
		return x.PredictSchemata
	}
	return nil
}

func (x *Model) GetMetadataSchemaUri() string {
	if x != nil {
		return x.MetadataSchemaUri
	}
	return ""
}

func (x *Model) GetMetadata() *structpb.Value {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *Model) GetSupportedExportFormats() []*Model_ExportFormat {
	if x != nil {
		return x.SupportedExportFormats
	}
	return nil
}

func (x *Model) GetTrainingPipeline() string {
	if x != nil {
		return x.TrainingPipeline
	}
	return ""
}

func (x *Model) GetPipelineJob() string {
	if x != nil {
		return x.PipelineJob
	}
	return ""
}

func (x *Model) GetContainerSpec() *ModelContainerSpec {
	if x != nil {
		return x.ContainerSpec
	}
	return nil
}

func (x *Model) GetArtifactUri() string {
	if x != nil {
		return x.ArtifactUri
	}
	return ""
}

func (x *Model) GetSupportedDeploymentResourcesTypes() []Model_DeploymentResourcesType {
	if x != nil {
		return x.SupportedDeploymentResourcesTypes
	}
	return nil
}

func (x *Model) GetSupportedInputStorageFormats() []string {
	if x != nil {
		return x.SupportedInputStorageFormats
	}
	return nil
}

func (x *Model) GetSupportedOutputStorageFormats() []string {
	if x != nil {
		return x.SupportedOutputStorageFormats
	}
	return nil
}

func (x *Model) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *Model) GetUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

func (x *Model) GetDeployedModels() []*DeployedModelRef {
	if x != nil {
		return x.DeployedModels
	}
	return nil
}

func (x *Model) GetExplanationSpec() *ExplanationSpec {
	if x != nil {
		return x.ExplanationSpec
	}
	return nil
}

func (x *Model) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

func (x *Model) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *Model) GetDataStats() *Model_DataStats {
	if x != nil {
		return x.DataStats
	}
	return nil
}

func (x *Model) GetEncryptionSpec() *EncryptionSpec {
	if x != nil {
		return x.EncryptionSpec
	}
	return nil
}

func (x *Model) GetModelSourceInfo() *ModelSourceInfo {
	if x != nil {
		return x.ModelSourceInfo
	}
	return nil
}

func (x *Model) GetOriginalModelInfo() *Model_OriginalModelInfo {
	if x != nil {
		return x.OriginalModelInfo
	}
	return nil
}

func (x *Model) GetMetadataArtifact() string {
	if x != nil {
		return x.MetadataArtifact
	}
	return ""
}

func (x *Model) GetBaseModelSource() *Model_BaseModelSource {
	if x != nil {
		return x.BaseModelSource
	}
	return nil
}

func (x *Model) GetSatisfiesPzs() bool {
	if x != nil {
		return x.SatisfiesPzs
	}
	return false
}

func (x *Model) GetSatisfiesPzi() bool {
	if x != nil {
		return x.SatisfiesPzi
	}
	return false
}

func (x *Model) GetCheckpoints() []*Checkpoint {
	if x != nil {
		return x.Checkpoints
	}
	return nil
}

// Contains information about the Large Model.
type LargeModelReference struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The unique name of the large Foundation or pre-built model. Like
	// "chat-bison", "text-bison". Or model name with version ID, like
	// "chat-bison@001", "text-bison@005", etc.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *LargeModelReference) Reset() {
	*x = LargeModelReference{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*LargeModelReference) ProtoMessage() {}

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

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

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

// Contains information about the source of the models generated from Model
// Garden.
type ModelGardenSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The model garden source model resource name.
	PublicModelName string `protobuf:"bytes,1,opt,name=public_model_name,json=publicModelName,proto3" json:"public_model_name,omitempty"`
	// Optional. The model garden source model version ID.
	VersionId string `protobuf:"bytes,3,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"`
	// Optional. Whether to avoid pulling the model from the HF cache.
	SkipHfModelCache bool `protobuf:"varint,4,opt,name=skip_hf_model_cache,json=skipHfModelCache,proto3" json:"skip_hf_model_cache,omitempty"`
}

func (x *ModelGardenSource) Reset() {
	*x = ModelGardenSource{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ModelGardenSource) ProtoMessage() {}

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

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

func (x *ModelGardenSource) GetPublicModelName() string {
	if x != nil {
		return x.PublicModelName
	}
	return ""
}

func (x *ModelGardenSource) GetVersionId() string {
	if x != nil {
		return x.VersionId
	}
	return ""
}

func (x *ModelGardenSource) GetSkipHfModelCache() bool {
	if x != nil {
		return x.SkipHfModelCache
	}
	return false
}

// Contains information about the source of the models generated from Generative
// AI Studio.
type GenieSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The public base model URI.
	BaseModelUri string `protobuf:"bytes,1,opt,name=base_model_uri,json=baseModelUri,proto3" json:"base_model_uri,omitempty"`
}

func (x *GenieSource) Reset() {
	*x = GenieSource{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GenieSource) ProtoMessage() {}

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

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

func (x *GenieSource) GetBaseModelUri() string {
	if x != nil {
		return x.BaseModelUri
	}
	return ""
}

// Contains the schemata used in Model's predictions and explanations via
// [PredictionService.Predict][google.cloud.aiplatform.v1.PredictionService.Predict],
// [PredictionService.Explain][google.cloud.aiplatform.v1.PredictionService.Explain]
// and [BatchPredictionJob][google.cloud.aiplatform.v1.BatchPredictionJob].
type PredictSchemata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Immutable. Points to a YAML file stored on Google Cloud Storage describing
	// the format of a single instance, which are used in
	// [PredictRequest.instances][google.cloud.aiplatform.v1.PredictRequest.instances],
	// [ExplainRequest.instances][google.cloud.aiplatform.v1.ExplainRequest.instances]
	// and
	// [BatchPredictionJob.input_config][google.cloud.aiplatform.v1.BatchPredictionJob.input_config].
	// The schema is defined as an OpenAPI 3.0.2 [Schema
	// Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject).
	// AutoML Models always have this field populated by Vertex AI.
	// Note: The URI given on output will be immutable and probably different,
	// including the URI scheme, than the one given on input. The output URI will
	// point to a location where the user only has a read access.
	InstanceSchemaUri string `protobuf:"bytes,1,opt,name=instance_schema_uri,json=instanceSchemaUri,proto3" json:"instance_schema_uri,omitempty"`
	// Immutable. Points to a YAML file stored on Google Cloud Storage describing
	// the parameters of prediction and explanation via
	// [PredictRequest.parameters][google.cloud.aiplatform.v1.PredictRequest.parameters],
	// [ExplainRequest.parameters][google.cloud.aiplatform.v1.ExplainRequest.parameters]
	// and
	// [BatchPredictionJob.model_parameters][google.cloud.aiplatform.v1.BatchPredictionJob.model_parameters].
	// The schema is defined as an OpenAPI 3.0.2 [Schema
	// Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject).
	// AutoML Models always have this field populated by Vertex AI, if no
	// parameters are supported, then it is set to an empty string.
	// Note: The URI given on output will be immutable and probably different,
	// including the URI scheme, than the one given on input. The output URI will
	// point to a location where the user only has a read access.
	ParametersSchemaUri string `protobuf:"bytes,2,opt,name=parameters_schema_uri,json=parametersSchemaUri,proto3" json:"parameters_schema_uri,omitempty"`
	// Immutable. Points to a YAML file stored on Google Cloud Storage describing
	// the format of a single prediction produced by this Model, which are
	// returned via
	// [PredictResponse.predictions][google.cloud.aiplatform.v1.PredictResponse.predictions],
	// [ExplainResponse.explanations][google.cloud.aiplatform.v1.ExplainResponse.explanations],
	// and
	// [BatchPredictionJob.output_config][google.cloud.aiplatform.v1.BatchPredictionJob.output_config].
	// The schema is defined as an OpenAPI 3.0.2 [Schema
	// Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject).
	// AutoML Models always have this field populated by Vertex AI.
	// Note: The URI given on output will be immutable and probably different,
	// including the URI scheme, than the one given on input. The output URI will
	// point to a location where the user only has a read access.
	PredictionSchemaUri string `protobuf:"bytes,3,opt,name=prediction_schema_uri,json=predictionSchemaUri,proto3" json:"prediction_schema_uri,omitempty"`
}

func (x *PredictSchemata) Reset() {
	*x = PredictSchemata{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PredictSchemata) ProtoMessage() {}

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

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

func (x *PredictSchemata) GetInstanceSchemaUri() string {
	if x != nil {
		return x.InstanceSchemaUri
	}
	return ""
}

func (x *PredictSchemata) GetParametersSchemaUri() string {
	if x != nil {
		return x.ParametersSchemaUri
	}
	return ""
}

func (x *PredictSchemata) GetPredictionSchemaUri() string {
	if x != nil {
		return x.PredictionSchemaUri
	}
	return ""
}

// Specification of a container for serving predictions. Some fields in this
// message correspond to fields in the [Kubernetes Container v1 core
// specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core).
type ModelContainerSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Immutable. URI of the Docker image to be used as the custom
	// container for serving predictions. This URI must identify an image in
	// Artifact Registry or Container Registry. Learn more about the [container
	// publishing
	// requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#publishing),
	// including permissions requirements for the Vertex AI Service Agent.
	//
	// The container image is ingested upon
	// [ModelService.UploadModel][google.cloud.aiplatform.v1.ModelService.UploadModel],
	// stored internally, and this original path is afterwards not used.
	//
	// To learn about the requirements for the Docker image itself, see
	// [Custom container
	// requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#).
	//
	// You can use the URI to one of Vertex AI's [pre-built container images for
	// prediction](https://cloud.google.com/vertex-ai/docs/predictions/pre-built-containers)
	// in this field.
	ImageUri string `protobuf:"bytes,1,opt,name=image_uri,json=imageUri,proto3" json:"image_uri,omitempty"`
	// Immutable. Specifies the command that runs when the container starts. This
	// overrides the container's
	// [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint).
	// Specify this field as an array of executable and arguments, similar to a
	// Docker `ENTRYPOINT`'s "exec" form, not its "shell" form.
	//
	// If you do not specify this field, then the container's `ENTRYPOINT` runs,
	// in conjunction with the
	// [args][google.cloud.aiplatform.v1.ModelContainerSpec.args] field or the
	// container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd),
	// if either exists. If this field is not specified and the container does not
	// have an `ENTRYPOINT`, then refer to the Docker documentation about [how
	// `CMD` and `ENTRYPOINT`
	// interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact).
	//
	// If you specify this field, then you can also specify the `args` field to
	// provide additional arguments for this command. However, if you specify this
	// field, then the container's `CMD` is ignored. See the
	// [Kubernetes documentation about how the
	// `command` and `args` fields interact with a container's `ENTRYPOINT` and
	// `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes).
	//
	// In this field, you can reference [environment variables set by Vertex
	// AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables)
	// and environment variables set in the
	// [env][google.cloud.aiplatform.v1.ModelContainerSpec.env] field. You cannot
	// reference environment variables set in the Docker image. In order for
	// environment variables to be expanded, reference them by using the following
	// syntax: <code>$(<var>VARIABLE_NAME</var>)</code> Note that this differs
	// from Bash variable expansion, which does not use parentheses. If a variable
	// cannot be resolved, the reference in the input string is used unchanged. To
	// avoid variable expansion, you can escape this syntax with `$$`; for
	// example: <code>$$(<var>VARIABLE_NAME</var>)</code> This field corresponds
	// to the `command` field of the Kubernetes Containers [v1 core
	// API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core).
	Command []string `protobuf:"bytes,2,rep,name=command,proto3" json:"command,omitempty"`
	// Immutable. Specifies arguments for the command that runs when the container
	// starts. This overrides the container's
	// [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd). Specify
	// this field as an array of executable and arguments, similar to a Docker
	// `CMD`'s "default parameters" form.
	//
	// If you don't specify this field but do specify the
	// [command][google.cloud.aiplatform.v1.ModelContainerSpec.command] field,
	// then the command from the `command` field runs without any additional
	// arguments. See the [Kubernetes documentation about how the `command` and
	// `args` fields interact with a container's `ENTRYPOINT` and
	// `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes).
	//
	// If you don't specify this field and don't specify the `command` field,
	// then the container's
	// [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and
	// `CMD` determine what runs based on their default behavior. See the Docker
	// documentation about [how `CMD` and `ENTRYPOINT`
	// interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact).
	//
	// In this field, you can reference [environment variables
	// set by Vertex
	// AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables)
	// and environment variables set in the
	// [env][google.cloud.aiplatform.v1.ModelContainerSpec.env] field. You cannot
	// reference environment variables set in the Docker image. In order for
	// environment variables to be expanded, reference them by using the following
	// syntax: <code>$(<var>VARIABLE_NAME</var>)</code> Note that this differs
	// from Bash variable expansion, which does not use parentheses. If a variable
	// cannot be resolved, the reference in the input string is used unchanged. To
	// avoid variable expansion, you can escape this syntax with `$$`; for
	// example: <code>$$(<var>VARIABLE_NAME</var>)</code> This field corresponds
	// to the `args` field of the Kubernetes Containers [v1 core
	// API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core).
	Args []string `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"`
	// Immutable. List of environment variables to set in the container. After the
	// container starts running, code running in the container can read these
	// environment variables.
	//
	// Additionally, the
	// [command][google.cloud.aiplatform.v1.ModelContainerSpec.command] and
	// [args][google.cloud.aiplatform.v1.ModelContainerSpec.args] fields can
	// reference these variables. Later entries in this list can also reference
	// earlier entries. For example, the following example sets the variable
	// `VAR_2` to have the value `foo bar`:
	//
	// ```json
	// [
	//
	//	{
	//	  "name": "VAR_1",
	//	  "value": "foo"
	//	},
	//	{
	//	  "name": "VAR_2",
	//	  "value": "$(VAR_1) bar"
	//	}
	//
	// ]
	// ```
	//
	// If you switch the order of the variables in the example, then the expansion
	// does not occur.
	//
	// This field corresponds to the `env` field of the Kubernetes Containers
	// [v1 core
	// API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core).
	Env []*EnvVar `protobuf:"bytes,4,rep,name=env,proto3" json:"env,omitempty"`
	// Immutable. List of ports to expose from the container. Vertex AI sends any
	// prediction requests that it receives to the first port on this list. Vertex
	// AI also sends
	// [liveness and health
	// checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#liveness)
	// to this port.
	//
	// If you do not specify this field, it defaults to following value:
	//
	// ```json
	// [
	//
	//	{
	//	  "containerPort": 8080
	//	}
	//
	// ]
	// ```
	//
	// Vertex AI does not use ports other than the first one listed. This field
	// corresponds to the `ports` field of the Kubernetes Containers
	// [v1 core
	// API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core).
	Ports []*Port `protobuf:"bytes,5,rep,name=ports,proto3" json:"ports,omitempty"`
	// Immutable. HTTP path on the container to send prediction requests to.
	// Vertex AI forwards requests sent using
	// [projects.locations.endpoints.predict][google.cloud.aiplatform.v1.PredictionService.Predict]
	// to this path on the container's IP address and port. Vertex AI then returns
	// the container's response in the API response.
	//
	// For example, if you set this field to `/foo`, then when Vertex AI
	// receives a prediction request, it forwards the request body in a POST
	// request to the `/foo` path on the port of your container specified by the
	// first value of this `ModelContainerSpec`'s
	// [ports][google.cloud.aiplatform.v1.ModelContainerSpec.ports] field.
	//
	// If you don't specify this field, it defaults to the following value when
	// you [deploy this Model to an
	// Endpoint][google.cloud.aiplatform.v1.EndpointService.DeployModel]:
	// <code>/v1/endpoints/<var>ENDPOINT</var>/deployedModels/<var>DEPLOYED_MODEL</var>:predict</code>
	// The placeholders in this value are replaced as follows:
	//
	//   - <var>ENDPOINT</var>: The last segment (following `endpoints/`)of the
	//     Endpoint.name][] field of the Endpoint where this Model has been
	//     deployed. (Vertex AI makes this value available to your container code
	//     as the [`AIP_ENDPOINT_ID` environment
	//     variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)
	//
	// * <var>DEPLOYED_MODEL</var>:
	// [DeployedModel.id][google.cloud.aiplatform.v1.DeployedModel.id] of the
	// `DeployedModel`.
	//
	//	(Vertex AI makes this value available to your container code
	//	as the [`AIP_DEPLOYED_MODEL_ID` environment
	//	variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)
	PredictRoute string `protobuf:"bytes,6,opt,name=predict_route,json=predictRoute,proto3" json:"predict_route,omitempty"`
	// Immutable. HTTP path on the container to send health checks to. Vertex AI
	// intermittently sends GET requests to this path on the container's IP
	// address and port to check that the container is healthy. Read more about
	// [health
	// checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#health).
	//
	// For example, if you set this field to `/bar`, then Vertex AI
	// intermittently sends a GET request to the `/bar` path on the port of your
	// container specified by the first value of this `ModelContainerSpec`'s
	// [ports][google.cloud.aiplatform.v1.ModelContainerSpec.ports] field.
	//
	// If you don't specify this field, it defaults to the following value when
	// you [deploy this Model to an
	// Endpoint][google.cloud.aiplatform.v1.EndpointService.DeployModel]:
	// <code>/v1/endpoints/<var>ENDPOINT</var>/deployedModels/<var>DEPLOYED_MODEL</var>:predict</code>
	// The placeholders in this value are replaced as follows:
	//
	//   - <var>ENDPOINT</var>: The last segment (following `endpoints/`)of the
	//     Endpoint.name][] field of the Endpoint where this Model has been
	//     deployed. (Vertex AI makes this value available to your container code
	//     as the [`AIP_ENDPOINT_ID` environment
	//     variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)
	//
	// * <var>DEPLOYED_MODEL</var>:
	// [DeployedModel.id][google.cloud.aiplatform.v1.DeployedModel.id] of the
	// `DeployedModel`.
	//
	//	(Vertex AI makes this value available to your container code as the
	//	[`AIP_DEPLOYED_MODEL_ID` environment
	//	variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)
	HealthRoute string `protobuf:"bytes,7,opt,name=health_route,json=healthRoute,proto3" json:"health_route,omitempty"`
	// Immutable. Invoke route prefix for the custom container. "/*" is the only
	// supported value right now. By setting this field, any non-root route on
	// this model will be accessible with invoke http call eg: "/invoke/foo/bar",
	// however the [PredictionService.Invoke] RPC is not supported yet.
	//
	// Only one of `predict_route` or `invoke_route_prefix` can be set, and we
	// default to using `predict_route` if this field is not set. If this field
	// is set, the Model can only be deployed to dedicated endpoint.
	InvokeRoutePrefix string `protobuf:"bytes,15,opt,name=invoke_route_prefix,json=invokeRoutePrefix,proto3" json:"invoke_route_prefix,omitempty"`
	// Immutable. List of ports to expose from the container. Vertex AI sends gRPC
	// prediction requests that it receives to the first port on this list. Vertex
	// AI also sends liveness and health checks to this port.
	//
	// If you do not specify this field, gRPC requests to the container will be
	// disabled.
	//
	// Vertex AI does not use ports other than the first one listed. This field
	// corresponds to the `ports` field of the Kubernetes Containers v1 core API.
	GrpcPorts []*Port `protobuf:"bytes,9,rep,name=grpc_ports,json=grpcPorts,proto3" json:"grpc_ports,omitempty"`
	// Immutable. Deployment timeout.
	// Limit for deployment timeout is 2 hours.
	DeploymentTimeout *durationpb.Duration `protobuf:"bytes,10,opt,name=deployment_timeout,json=deploymentTimeout,proto3" json:"deployment_timeout,omitempty"`
	// Immutable. The amount of the VM memory to reserve as the shared memory for
	// the model in megabytes.
	SharedMemorySizeMb int64 `protobuf:"varint,11,opt,name=shared_memory_size_mb,json=sharedMemorySizeMb,proto3" json:"shared_memory_size_mb,omitempty"`
	// Immutable. Specification for Kubernetes startup probe.
	StartupProbe *Probe `protobuf:"bytes,12,opt,name=startup_probe,json=startupProbe,proto3" json:"startup_probe,omitempty"`
	// Immutable. Specification for Kubernetes readiness probe.
	HealthProbe *Probe `protobuf:"bytes,13,opt,name=health_probe,json=healthProbe,proto3" json:"health_probe,omitempty"`
	// Immutable. Specification for Kubernetes liveness probe.
	LivenessProbe *Probe `protobuf:"bytes,14,opt,name=liveness_probe,json=livenessProbe,proto3" json:"liveness_probe,omitempty"`
}

func (x *ModelContainerSpec) Reset() {
	*x = ModelContainerSpec{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ModelContainerSpec) ProtoMessage() {}

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

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

func (x *ModelContainerSpec) GetImageUri() string {
	if x != nil {
		return x.ImageUri
	}
	return ""
}

func (x *ModelContainerSpec) GetCommand() []string {
	if x != nil {
		return x.Command
	}
	return nil
}

func (x *ModelContainerSpec) GetArgs() []string {
	if x != nil {
		return x.Args
	}
	return nil
}

func (x *ModelContainerSpec) GetEnv() []*EnvVar {
	if x != nil {
		return x.Env
	}
	return nil
}

func (x *ModelContainerSpec) GetPorts() []*Port {
	if x != nil {
		return x.Ports
	}
	return nil
}

func (x *ModelContainerSpec) GetPredictRoute() string {
	if x != nil {
		return x.PredictRoute
	}
	return ""
}

func (x *ModelContainerSpec) GetHealthRoute() string {
	if x != nil {
		return x.HealthRoute
	}
	return ""
}

func (x *ModelContainerSpec) GetInvokeRoutePrefix() string {
	if x != nil {
		return x.InvokeRoutePrefix
	}
	return ""
}

func (x *ModelContainerSpec) GetGrpcPorts() []*Port {
	if x != nil {
		return x.GrpcPorts
	}
	return nil
}

func (x *ModelContainerSpec) GetDeploymentTimeout() *durationpb.Duration {
	if x != nil {
		return x.DeploymentTimeout
	}
	return nil
}

func (x *ModelContainerSpec) GetSharedMemorySizeMb() int64 {
	if x != nil {
		return x.SharedMemorySizeMb
	}
	return 0
}

func (x *ModelContainerSpec) GetStartupProbe() *Probe {
	if x != nil {
		return x.StartupProbe
	}
	return nil
}

func (x *ModelContainerSpec) GetHealthProbe() *Probe {
	if x != nil {
		return x.HealthProbe
	}
	return nil
}

func (x *ModelContainerSpec) GetLivenessProbe() *Probe {
	if x != nil {
		return x.LivenessProbe
	}
	return nil
}

// Represents a network port in a container.
type Port struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The number of the port to expose on the pod's IP address.
	// Must be a valid port number, between 1 and 65535 inclusive.
	ContainerPort int32 `protobuf:"varint,3,opt,name=container_port,json=containerPort,proto3" json:"container_port,omitempty"`
}

func (x *Port) Reset() {
	*x = Port{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Port) ProtoMessage() {}

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

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

func (x *Port) GetContainerPort() int32 {
	if x != nil {
		return x.ContainerPort
	}
	return 0
}

// Detail description of the source information of the model.
type ModelSourceInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Type of the model source.
	SourceType ModelSourceInfo_ModelSourceType `protobuf:"varint,1,opt,name=source_type,json=sourceType,proto3,enum=google.cloud.aiplatform.v1.ModelSourceInfo_ModelSourceType" json:"source_type,omitempty"`
	// If this Model is copy of another Model. If true then
	// [source_type][google.cloud.aiplatform.v1.ModelSourceInfo.source_type]
	// pertains to the original.
	Copy bool `protobuf:"varint,2,opt,name=copy,proto3" json:"copy,omitempty"`
}

func (x *ModelSourceInfo) Reset() {
	*x = ModelSourceInfo{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ModelSourceInfo) ProtoMessage() {}

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

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

func (x *ModelSourceInfo) GetSourceType() ModelSourceInfo_ModelSourceType {
	if x != nil {
		return x.SourceType
	}
	return ModelSourceInfo_MODEL_SOURCE_TYPE_UNSPECIFIED
}

func (x *ModelSourceInfo) GetCopy() bool {
	if x != nil {
		return x.Copy
	}
	return false
}

// Probe describes a health check to be performed against a container to
// determine whether it is alive or ready to receive traffic.
type Probe struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to ProbeType:
	//
	//	*Probe_Exec
	//	*Probe_HttpGet
	//	*Probe_Grpc
	//	*Probe_TcpSocket
	ProbeType isProbe_ProbeType `protobuf_oneof:"probe_type"`
	// How often (in seconds) to perform the probe. Default to 10 seconds.
	// Minimum value is 1. Must be less than timeout_seconds.
	//
	// Maps to Kubernetes probe argument 'periodSeconds'.
	PeriodSeconds int32 `protobuf:"varint,2,opt,name=period_seconds,json=periodSeconds,proto3" json:"period_seconds,omitempty"`
	// Number of seconds after which the probe times out. Defaults to 1 second.
	// Minimum value is 1. Must be greater or equal to period_seconds.
	//
	// Maps to Kubernetes probe argument 'timeoutSeconds'.
	TimeoutSeconds int32 `protobuf:"varint,3,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"`
	// Number of consecutive failures before the probe is considered failed.
	// Defaults to 3. Minimum value is 1.
	//
	// Maps to Kubernetes probe argument 'failureThreshold'.
	FailureThreshold int32 `protobuf:"varint,7,opt,name=failure_threshold,json=failureThreshold,proto3" json:"failure_threshold,omitempty"`
	// Number of consecutive successes before the probe is considered successful.
	// Defaults to 1. Minimum value is 1.
	//
	// Maps to Kubernetes probe argument 'successThreshold'.
	SuccessThreshold int32 `protobuf:"varint,8,opt,name=success_threshold,json=successThreshold,proto3" json:"success_threshold,omitempty"`
	// Number of seconds to wait before starting the probe. Defaults to 0.
	// Minimum value is 0.
	//
	// Maps to Kubernetes probe argument 'initialDelaySeconds'.
	InitialDelaySeconds int32 `protobuf:"varint,9,opt,name=initial_delay_seconds,json=initialDelaySeconds,proto3" json:"initial_delay_seconds,omitempty"`
}

func (x *Probe) Reset() {
	*x = Probe{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Probe) ProtoMessage() {}

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

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

func (m *Probe) GetProbeType() isProbe_ProbeType {
	if m != nil {
		return m.ProbeType
	}
	return nil
}

func (x *Probe) GetExec() *Probe_ExecAction {
	if x, ok := x.GetProbeType().(*Probe_Exec); ok {
		return x.Exec
	}
	return nil
}

func (x *Probe) GetHttpGet() *Probe_HttpGetAction {
	if x, ok := x.GetProbeType().(*Probe_HttpGet); ok {
		return x.HttpGet
	}
	return nil
}

func (x *Probe) GetGrpc() *Probe_GrpcAction {
	if x, ok := x.GetProbeType().(*Probe_Grpc); ok {
		return x.Grpc
	}
	return nil
}

func (x *Probe) GetTcpSocket() *Probe_TcpSocketAction {
	if x, ok := x.GetProbeType().(*Probe_TcpSocket); ok {
		return x.TcpSocket
	}
	return nil
}

func (x *Probe) GetPeriodSeconds() int32 {
	if x != nil {
		return x.PeriodSeconds
	}
	return 0
}

func (x *Probe) GetTimeoutSeconds() int32 {
	if x != nil {
		return x.TimeoutSeconds
	}
	return 0
}

func (x *Probe) GetFailureThreshold() int32 {
	if x != nil {
		return x.FailureThreshold
	}
	return 0
}

func (x *Probe) GetSuccessThreshold() int32 {
	if x != nil {
		return x.SuccessThreshold
	}
	return 0
}

func (x *Probe) GetInitialDelaySeconds() int32 {
	if x != nil {
		return x.InitialDelaySeconds
	}
	return 0
}

type isProbe_ProbeType interface {
	isProbe_ProbeType()
}

type Probe_Exec struct {
	// ExecAction probes the health of a container by executing a command.
	Exec *Probe_ExecAction `protobuf:"bytes,1,opt,name=exec,proto3,oneof"`
}

type Probe_HttpGet struct {
	// HttpGetAction probes the health of a container by sending an HTTP GET
	// request.
	HttpGet *Probe_HttpGetAction `protobuf:"bytes,4,opt,name=http_get,json=httpGet,proto3,oneof"`
}

type Probe_Grpc struct {
	// GrpcAction probes the health of a container by sending a gRPC request.
	Grpc *Probe_GrpcAction `protobuf:"bytes,5,opt,name=grpc,proto3,oneof"`
}

type Probe_TcpSocket struct {
	// TcpSocketAction probes the health of a container by opening a TCP socket
	// connection.
	TcpSocket *Probe_TcpSocketAction `protobuf:"bytes,6,opt,name=tcp_socket,json=tcpSocket,proto3,oneof"`
}

func (*Probe_Exec) isProbe_ProbeType() {}

func (*Probe_HttpGet) isProbe_ProbeType() {}

func (*Probe_Grpc) isProbe_ProbeType() {}

func (*Probe_TcpSocket) isProbe_ProbeType() {}

// Describes the machine learning model version checkpoint.
type Checkpoint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the checkpoint.
	CheckpointId string `protobuf:"bytes,1,opt,name=checkpoint_id,json=checkpointId,proto3" json:"checkpoint_id,omitempty"`
	// The epoch of the checkpoint.
	Epoch int64 `protobuf:"varint,2,opt,name=epoch,proto3" json:"epoch,omitempty"`
	// The step of the checkpoint.
	Step int64 `protobuf:"varint,3,opt,name=step,proto3" json:"step,omitempty"`
}

func (x *Checkpoint) Reset() {
	*x = Checkpoint{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Checkpoint) ProtoMessage() {}

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

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

func (x *Checkpoint) GetCheckpointId() string {
	if x != nil {
		return x.CheckpointId
	}
	return ""
}

func (x *Checkpoint) GetEpoch() int64 {
	if x != nil {
		return x.Epoch
	}
	return 0
}

func (x *Checkpoint) GetStep() int64 {
	if x != nil {
		return x.Step
	}
	return 0
}

// Represents export format supported by the Model.
// All formats export to Google Cloud Storage.
type Model_ExportFormat struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. The ID of the export format.
	// The possible format IDs are:
	//
	// * `tflite`
	// Used for Android mobile devices.
	//
	// * `edgetpu-tflite`
	// Used for [Edge TPU](https://cloud.google.com/edge-tpu/) devices.
	//
	// * `tf-saved-model`
	// A tensorflow model in SavedModel format.
	//
	// * `tf-js`
	// A [TensorFlow.js](https://www.tensorflow.org/js) model that can be used
	// in the browser and in Node.js using JavaScript.
	//
	// * `core-ml`
	// Used for iOS mobile devices.
	//
	// * `custom-trained`
	// A Model that was uploaded or trained by custom code.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Output only. The content of this Model that may be exported.
	ExportableContents []Model_ExportFormat_ExportableContent `protobuf:"varint,2,rep,packed,name=exportable_contents,json=exportableContents,proto3,enum=google.cloud.aiplatform.v1.Model_ExportFormat_ExportableContent" json:"exportable_contents,omitempty"`
}

func (x *Model_ExportFormat) Reset() {
	*x = Model_ExportFormat{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Model_ExportFormat) ProtoMessage() {}

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

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

func (x *Model_ExportFormat) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Model_ExportFormat) GetExportableContents() []Model_ExportFormat_ExportableContent {
	if x != nil {
		return x.ExportableContents
	}
	return nil
}

// Stats of data used for train or evaluate the Model.
type Model_DataStats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Number of DataItems that were used for training this Model.
	TrainingDataItemsCount int64 `protobuf:"varint,1,opt,name=training_data_items_count,json=trainingDataItemsCount,proto3" json:"training_data_items_count,omitempty"`
	// Number of DataItems that were used for validating this Model during
	// training.
	ValidationDataItemsCount int64 `protobuf:"varint,2,opt,name=validation_data_items_count,json=validationDataItemsCount,proto3" json:"validation_data_items_count,omitempty"`
	// Number of DataItems that were used for evaluating this Model. If the
	// Model is evaluated multiple times, this will be the number of test
	// DataItems used by the first evaluation. If the Model is not evaluated,
	// the number is 0.
	TestDataItemsCount int64 `protobuf:"varint,3,opt,name=test_data_items_count,json=testDataItemsCount,proto3" json:"test_data_items_count,omitempty"`
	// Number of Annotations that are used for training this Model.
	TrainingAnnotationsCount int64 `protobuf:"varint,4,opt,name=training_annotations_count,json=trainingAnnotationsCount,proto3" json:"training_annotations_count,omitempty"`
	// Number of Annotations that are used for validating this Model during
	// training.
	ValidationAnnotationsCount int64 `protobuf:"varint,5,opt,name=validation_annotations_count,json=validationAnnotationsCount,proto3" json:"validation_annotations_count,omitempty"`
	// Number of Annotations that are used for evaluating this Model. If the
	// Model is evaluated multiple times, this will be the number of test
	// Annotations used by the first evaluation. If the Model is not evaluated,
	// the number is 0.
	TestAnnotationsCount int64 `protobuf:"varint,6,opt,name=test_annotations_count,json=testAnnotationsCount,proto3" json:"test_annotations_count,omitempty"`
}

func (x *Model_DataStats) Reset() {
	*x = Model_DataStats{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Model_DataStats) ProtoMessage() {}

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

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

func (x *Model_DataStats) GetTrainingDataItemsCount() int64 {
	if x != nil {
		return x.TrainingDataItemsCount
	}
	return 0
}

func (x *Model_DataStats) GetValidationDataItemsCount() int64 {
	if x != nil {
		return x.ValidationDataItemsCount
	}
	return 0
}

func (x *Model_DataStats) GetTestDataItemsCount() int64 {
	if x != nil {
		return x.TestDataItemsCount
	}
	return 0
}

func (x *Model_DataStats) GetTrainingAnnotationsCount() int64 {
	if x != nil {
		return x.TrainingAnnotationsCount
	}
	return 0
}

func (x *Model_DataStats) GetValidationAnnotationsCount() int64 {
	if x != nil {
		return x.ValidationAnnotationsCount
	}
	return 0
}

func (x *Model_DataStats) GetTestAnnotationsCount() int64 {
	if x != nil {
		return x.TestAnnotationsCount
	}
	return 0
}

// Contains information about the original Model if this Model is a copy.
type Model_OriginalModelInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. The resource name of the Model this Model is a copy of,
	// including the revision. Format:
	// `projects/{project}/locations/{location}/models/{model_id}@{version_id}`
	Model string `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
}

func (x *Model_OriginalModelInfo) Reset() {
	*x = Model_OriginalModelInfo{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Model_OriginalModelInfo) ProtoMessage() {}

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

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

func (x *Model_OriginalModelInfo) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

// User input field to specify the base model source. Currently it only
// supports specifing the Model Garden models and Genie models.
type Model_BaseModelSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Source:
	//
	//	*Model_BaseModelSource_ModelGardenSource
	//	*Model_BaseModelSource_GenieSource
	Source isModel_BaseModelSource_Source `protobuf_oneof:"source"`
}

func (x *Model_BaseModelSource) Reset() {
	*x = Model_BaseModelSource{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Model_BaseModelSource) ProtoMessage() {}

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

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

func (m *Model_BaseModelSource) GetSource() isModel_BaseModelSource_Source {
	if m != nil {
		return m.Source
	}
	return nil
}

func (x *Model_BaseModelSource) GetModelGardenSource() *ModelGardenSource {
	if x, ok := x.GetSource().(*Model_BaseModelSource_ModelGardenSource); ok {
		return x.ModelGardenSource
	}
	return nil
}

func (x *Model_BaseModelSource) GetGenieSource() *GenieSource {
	if x, ok := x.GetSource().(*Model_BaseModelSource_GenieSource); ok {
		return x.GenieSource
	}
	return nil
}

type isModel_BaseModelSource_Source interface {
	isModel_BaseModelSource_Source()
}

type Model_BaseModelSource_ModelGardenSource struct {
	// Source information of Model Garden models.
	ModelGardenSource *ModelGardenSource `protobuf:"bytes,1,opt,name=model_garden_source,json=modelGardenSource,proto3,oneof"`
}

type Model_BaseModelSource_GenieSource struct {
	// Information about the base model of Genie models.
	GenieSource *GenieSource `protobuf:"bytes,2,opt,name=genie_source,json=genieSource,proto3,oneof"`
}

func (*Model_BaseModelSource_ModelGardenSource) isModel_BaseModelSource_Source() {}

func (*Model_BaseModelSource_GenieSource) isModel_BaseModelSource_Source() {}

// ExecAction specifies a command to execute.
type Probe_ExecAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Command is the command line to execute inside the container, the working
	// directory for the command is root ('/') in the container's filesystem.
	// The command is simply exec'd, it is not run inside a shell, so
	// traditional shell instructions ('|', etc) won't work. To use a shell, you
	// need to explicitly call out to that shell. Exit status of 0 is treated as
	// live/healthy and non-zero is unhealthy.
	Command []string `protobuf:"bytes,1,rep,name=command,proto3" json:"command,omitempty"`
}

func (x *Probe_ExecAction) Reset() {
	*x = Probe_ExecAction{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Probe_ExecAction) ProtoMessage() {}

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

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

func (x *Probe_ExecAction) GetCommand() []string {
	if x != nil {
		return x.Command
	}
	return nil
}

// HttpGetAction describes an action based on HTTP Get requests.
type Probe_HttpGetAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Path to access on the HTTP server.
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Number of the port to access on the container.
	// Number must be in the range 1 to 65535.
	Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
	// Host name to connect to, defaults to the model serving container's IP.
	// You probably want to set "Host" in httpHeaders instead.
	Host string `protobuf:"bytes,3,opt,name=host,proto3" json:"host,omitempty"`
	// Scheme to use for connecting to the host.
	// Defaults to HTTP. Acceptable values are "HTTP" or "HTTPS".
	Scheme string `protobuf:"bytes,4,opt,name=scheme,proto3" json:"scheme,omitempty"`
	// Custom headers to set in the request. HTTP allows repeated headers.
	HttpHeaders []*Probe_HttpHeader `protobuf:"bytes,5,rep,name=http_headers,json=httpHeaders,proto3" json:"http_headers,omitempty"`
}

func (x *Probe_HttpGetAction) Reset() {
	*x = Probe_HttpGetAction{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Probe_HttpGetAction) ProtoMessage() {}

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

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

func (x *Probe_HttpGetAction) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *Probe_HttpGetAction) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *Probe_HttpGetAction) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *Probe_HttpGetAction) GetScheme() string {
	if x != nil {
		return x.Scheme
	}
	return ""
}

func (x *Probe_HttpGetAction) GetHttpHeaders() []*Probe_HttpHeader {
	if x != nil {
		return x.HttpHeaders
	}
	return nil
}

// GrpcAction checks the health of a container using a gRPC service.
type Probe_GrpcAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Port number of the gRPC service. Number must be in the range 1 to 65535.
	Port int32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
	// Service is the name of the service to place in the gRPC
	// HealthCheckRequest (see
	// https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
	//
	// If this is not specified, the default behavior is defined by gRPC.
	Service string `protobuf:"bytes,2,opt,name=service,proto3" json:"service,omitempty"`
}

func (x *Probe_GrpcAction) Reset() {
	*x = Probe_GrpcAction{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Probe_GrpcAction) ProtoMessage() {}

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

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

func (x *Probe_GrpcAction) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *Probe_GrpcAction) GetService() string {
	if x != nil {
		return x.Service
	}
	return ""
}

// TcpSocketAction probes the health of a container by opening a TCP socket
// connection.
type Probe_TcpSocketAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Number of the port to access on the container.
	// Number must be in the range 1 to 65535.
	Port int32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
	// Optional: Host name to connect to, defaults to the model serving
	// container's IP.
	Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"`
}

func (x *Probe_TcpSocketAction) Reset() {
	*x = Probe_TcpSocketAction{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Probe_TcpSocketAction) ProtoMessage() {}

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

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

func (x *Probe_TcpSocketAction) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *Probe_TcpSocketAction) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

// HttpHeader describes a custom header to be used in HTTP probes
type Probe_HttpHeader struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The header field name.
	// This will be canonicalized upon output, so case-variant names will be
	// understood as the same header.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The header field value
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *Probe_HttpHeader) Reset() {
	*x = Probe_HttpHeader{}
	mi := &file_google_cloud_aiplatform_v1_model_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Probe_HttpHeader) ProtoMessage() {}

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

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

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

func (x *Probe_HttpHeader) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

var File_google_cloud_aiplatform_v1_model_proto protoreflect.FileDescriptor

var file_google_cloud_aiplatform_v1_model_proto_rawDesc = []byte{
	0x0a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61,
	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64,
	0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x2e, 0x76, 0x31, 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, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61,
	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70,
	0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76,
	0x31, 0x2f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65,
	0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
	0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x76, 0x5f, 0x76, 0x61, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x1a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f,
	0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78,
	0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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,
	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, 0x22, 0xb6,
	0x1c, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0a,
	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x06, 0xe0, 0x41, 0x05, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x61,
	0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x13,
	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x76, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4f, 0x0a,
	0x13, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x76, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 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, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x76, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65,
	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x65, 0x66,
	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f,
	0x69, 0x64, 0x18, 0x35, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
	0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x56, 0x0a,
	0x10, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74,
	0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x53, 0x63, 0x68,
	0x65, 0x6d, 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x72, 0x69, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x12, 0x6d, 0x0a, 0x18, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64,
	0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18,
	0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
	0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46,
	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x73, 0x75, 0x70, 0x70,
	0x6f, 0x72, 0x74, 0x65, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61,
	0x74, 0x73, 0x12, 0x5f, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70,
	0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0,
	0x41, 0x03, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
	0x2f, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e,
	0x65, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c,
	0x69, 0x6e, 0x65, 0x12, 0x50, 0x0a, 0x0c, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f,
	0x6a, 0x6f, 0x62, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x01, 0xfa, 0x41,
	0x27, 0x0a, 0x25, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x69, 0x70,
	0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x0b, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69,
	0x6e, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x5a, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
	0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70,
	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0,
	0x41, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65,
	0x63, 0x12, 0x26, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72,
	0x69, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x61, 0x72,
	0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x55, 0x72, 0x69, 0x12, 0x8f, 0x01, 0x0a, 0x24, 0x73, 0x75,
	0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65,
	0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c,
	0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x54,
	0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x21, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72,
	0x74, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x1f, 0x73,
	0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73,
	0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x0b,
	0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1c, 0x73, 0x75, 0x70, 0x70, 0x6f,
	0x72, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
	0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f,
	0x72, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72,
	0x61, 0x67, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28,
	0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65,
	0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x6f,
	0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x0f, 0x64, 0x65, 0x70,
	0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x66,
	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d,
	0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61,
	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70,
	0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x65, 0x78,
	0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a,
	0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61,
	0x67, 0x12, 0x45, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
	0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61,
	0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e,
	0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53,
	0x74, 0x61, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70,
	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5c, 0x0a, 0x11, 0x6d, 0x6f, 0x64,
	0x65, 0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x26,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76,
	0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66,
	0x6f, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x68, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69,
	0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x22,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76,
	0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11,
	0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x30, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x72,
	0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x03, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x72, 0x74, 0x69, 0x66,
	0x61, 0x63, 0x74, 0x12, 0x62, 0x0a, 0x11, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
	0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69,
	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73,
	0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03,
	0xe0, 0x41, 0x03, 0x52, 0x0c, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a,
	0x73, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70,
	0x7a, 0x69, 0x18, 0x34, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x73,
	0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x69, 0x12, 0x50, 0x0a, 0x0b, 0x63,
	0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68,
	0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x01,
	0x52, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0xed, 0x01,
	0x0a, 0x0c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x13,
	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x02, 0x69, 0x64, 0x12, 0x76, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x62, 0x6c,
	0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e,
	0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f,
	0x64, 0x65, 0x6c, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
	0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x12, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x61,
	0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x50, 0x0a, 0x11, 0x45,
	0x78, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x12, 0x22, 0x0a, 0x1e, 0x45, 0x58, 0x50, 0x4f, 0x52, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43,
	0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54,
	0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x02, 0x1a, 0xee, 0x02,
	0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x74,
	0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x69, 0x74, 0x65,
	0x6d, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16,
	0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d,
	0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x5f,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x73,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x61,
	0x74, 0x61, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x49, 0x74,
	0x65, 0x6d, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x1a, 0x74, 0x72, 0x61, 0x69,
	0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x74, 0x72,
	0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x1c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x65, 0x73, 0x74,
	0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e,
	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x52,
	0x0a, 0x11, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x61, 0x69, 0x70, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, 0x64,
	0x65, 0x6c, 0x1a, 0xca, 0x01, 0x0a, 0x0f, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x13, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f,
	0x67, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31,
	0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x47, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x53, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x48, 0x00, 0x52, 0x11, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x47, 0x61, 0x72, 0x64, 0x65,
	0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x69, 0x65,
	0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70,
	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x69, 0x65,
	0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x69, 0x65, 0x53,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a,
	0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x44,
	0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59,
	0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x53, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
	0x00, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x45, 0x44, 0x49, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x52,
	0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x55,
	0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45,
	0x53, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x52, 0x45,
	0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x53, 0x10, 0x03, 0x3a, 0x5c, 0xea, 0x41, 0x59, 0x0a, 0x1f,
	0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12,
	0x36, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f,
	0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x22, 0x2e, 0x0a, 0x13, 0x4c, 0x61, 0x72, 0x67, 0x65,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x17,
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x47, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2f, 0x0a,
	0x11, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x70,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22,
	0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x49, 0x64, 0x12, 0x32, 0x0a, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x68, 0x66, 0x5f, 0x6d, 0x6f,
	0x64, 0x65, 0x6c, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42,
	0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x6b, 0x69, 0x70, 0x48, 0x66, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x22, 0x38, 0x0a, 0x0b, 0x47, 0x65, 0x6e, 0x69, 0x65, 0x53,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x6f,
	0x64, 0x65, 0x6c, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x55, 0x72, 0x69,
	0x22, 0xb8, 0x01, 0x0a, 0x0f, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
	0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
	0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x72, 0x69, 0x12, 0x37, 0x0a, 0x15, 0x70, 0x61, 0x72,
	0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x75,
	0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x13, 0x70,
	0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55,
	0x72, 0x69, 0x12, 0x37, 0x0a, 0x15, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x13, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x72, 0x69, 0x22, 0xa4, 0x06, 0x0a, 0x12,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x70,
	0x65, 0x63, 0x12, 0x23, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x08, 0x69,
	0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61,
	0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x07, 0x63,
	0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12,
	0x39, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72,
	0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x3b, 0x0a, 0x05, 0x70, 0x6f,
	0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66,
	0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x05,
	0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x69,
	0x63, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
	0xe0, 0x41, 0x05, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x6f, 0x75, 0x74,
	0x65, 0x12, 0x26, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x72, 0x6f, 0x75, 0x74,
	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x68, 0x65,
	0x61, 0x6c, 0x74, 0x68, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x6e, 0x76,
	0x6f, 0x6b, 0x65, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
	0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x11, 0x69, 0x6e, 0x76,
	0x6f, 0x6b, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x44,
	0x0a, 0x0a, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e,
	0x50, 0x6f, 0x72, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x09, 0x67, 0x72, 0x70, 0x63, 0x50,
	0x6f, 0x72, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65,
	0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 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, 0x05,
	0x52, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x6f, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x15, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x65,
	0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x12, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x4d, 0x62, 0x12, 0x4b, 0x0a, 0x0d, 0x73,
	0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x0c, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e,
	0x50, 0x72, 0x6f, 0x62, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x75, 0x70, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x6c,
	0x74, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69,
	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62,
	0x65, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x72,
	0x6f, 0x62, 0x65, 0x12, 0x4d, 0x0a, 0x0e, 0x6c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x5f,
	0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61,
	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x42, 0x03,
	0xe0, 0x41, 0x05, 0x52, 0x0d, 0x6c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f,
	0x62, 0x65, 0x22, 0x2d, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f,
	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x72,
	0x74, 0x22, 0xa5, 0x02, 0x0a, 0x0f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5c, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74,
	0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x70, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x04, 0x63, 0x6f, 0x70, 0x79, 0x22, 0x9f, 0x01, 0x0a, 0x0f, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x4d,
	0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a,
	0x0a, 0x06, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x4c, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55,
	0x53, 0x54, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x51, 0x4d, 0x4c, 0x10, 0x03,
	0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x47, 0x41, 0x52, 0x44, 0x45, 0x4e,
	0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x45, 0x4e, 0x49, 0x45, 0x10, 0x05, 0x12, 0x19, 0x0a,
	0x15, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x45, 0x4d, 0x42,
	0x45, 0x44, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x41, 0x52, 0x4b,
	0x45, 0x54, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x07, 0x22, 0xab, 0x07, 0x0a, 0x05, 0x50, 0x72,
	0x6f, 0x62, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x72, 0x6f, 0x62, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48,
	0x00, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x12, 0x4c, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, 0x5f,
	0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66,
	0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x2e, 0x48, 0x74, 0x74,
	0x70, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x68, 0x74,
	0x74, 0x70, 0x47, 0x65, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x41, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x48, 0x00, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x12, 0x52, 0x0a, 0x0a, 0x74, 0x63, 0x70,
	0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70,
	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65,
	0x2e, 0x54, 0x63, 0x70, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x48, 0x00, 0x52, 0x09, 0x74, 0x63, 0x70, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x25, 0x0a,
	0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63,
	0x6f, 0x6e, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f,
	0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74,
	0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2b, 0x0a,
	0x11, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
	0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
	0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75,
	0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68,
	0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x69, 0x74, 0x69,
	0x61, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44,
	0x65, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, 0x26, 0x0a, 0x0a, 0x45,
	0x78, 0x65, 0x63, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d,
	0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d,
	0x61, 0x6e, 0x64, 0x1a, 0xb4, 0x01, 0x0a, 0x0d, 0x48, 0x74, 0x74, 0x70, 0x47, 0x65, 0x74, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a,
	0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73,
	0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x4f, 0x0a, 0x0c, 0x68, 0x74, 0x74,
	0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61,
	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f,
	0x62, 0x65, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0b, 0x68,
	0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0a, 0x47, 0x72,
	0x70, 0x63, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07,
	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x39, 0x0a, 0x0f, 0x54, 0x63, 0x70, 0x53, 0x6f, 0x63,
	0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a,
	0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73,
	0x74, 0x1a, 0x36, 0x0a, 0x0a, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x72, 0x6f,
	0x62, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5b, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x63, 0x6b,
	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
	0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68,
	0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70,
	0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68,
	0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
	0x73, 0x74, 0x65, 0x70, 0x42, 0xc8, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74,
	0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x72,
	0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61,
	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66,
	0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
	0x56, 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75,
	0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xea,
	0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a,
	0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62,
	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_cloud_aiplatform_v1_model_proto_rawDescOnce sync.Once
	file_google_cloud_aiplatform_v1_model_proto_rawDescData = file_google_cloud_aiplatform_v1_model_proto_rawDesc
)

func file_google_cloud_aiplatform_v1_model_proto_rawDescGZIP() []byte {
	file_google_cloud_aiplatform_v1_model_proto_rawDescOnce.Do(func() {
		file_google_cloud_aiplatform_v1_model_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1_model_proto_rawDescData)
	})
	return file_google_cloud_aiplatform_v1_model_proto_rawDescData
}

var file_google_cloud_aiplatform_v1_model_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_google_cloud_aiplatform_v1_model_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_google_cloud_aiplatform_v1_model_proto_goTypes = []any{
	(Model_DeploymentResourcesType)(0),        // 0: google.cloud.aiplatform.v1.Model.DeploymentResourcesType
	(Model_ExportFormat_ExportableContent)(0), // 1: google.cloud.aiplatform.v1.Model.ExportFormat.ExportableContent
	(ModelSourceInfo_ModelSourceType)(0),      // 2: google.cloud.aiplatform.v1.ModelSourceInfo.ModelSourceType
	(*Model)(nil),                             // 3: google.cloud.aiplatform.v1.Model
	(*LargeModelReference)(nil),               // 4: google.cloud.aiplatform.v1.LargeModelReference
	(*ModelGardenSource)(nil),                 // 5: google.cloud.aiplatform.v1.ModelGardenSource
	(*GenieSource)(nil),                       // 6: google.cloud.aiplatform.v1.GenieSource
	(*PredictSchemata)(nil),                   // 7: google.cloud.aiplatform.v1.PredictSchemata
	(*ModelContainerSpec)(nil),                // 8: google.cloud.aiplatform.v1.ModelContainerSpec
	(*Port)(nil),                              // 9: google.cloud.aiplatform.v1.Port
	(*ModelSourceInfo)(nil),                   // 10: google.cloud.aiplatform.v1.ModelSourceInfo
	(*Probe)(nil),                             // 11: google.cloud.aiplatform.v1.Probe
	(*Checkpoint)(nil),                        // 12: google.cloud.aiplatform.v1.Checkpoint
	(*Model_ExportFormat)(nil),                // 13: google.cloud.aiplatform.v1.Model.ExportFormat
	(*Model_DataStats)(nil),                   // 14: google.cloud.aiplatform.v1.Model.DataStats
	(*Model_OriginalModelInfo)(nil),           // 15: google.cloud.aiplatform.v1.Model.OriginalModelInfo
	(*Model_BaseModelSource)(nil),             // 16: google.cloud.aiplatform.v1.Model.BaseModelSource
	nil,                                       // 17: google.cloud.aiplatform.v1.Model.LabelsEntry
	(*Probe_ExecAction)(nil),                  // 18: google.cloud.aiplatform.v1.Probe.ExecAction
	(*Probe_HttpGetAction)(nil),               // 19: google.cloud.aiplatform.v1.Probe.HttpGetAction
	(*Probe_GrpcAction)(nil),                  // 20: google.cloud.aiplatform.v1.Probe.GrpcAction
	(*Probe_TcpSocketAction)(nil),             // 21: google.cloud.aiplatform.v1.Probe.TcpSocketAction
	(*Probe_HttpHeader)(nil),                  // 22: google.cloud.aiplatform.v1.Probe.HttpHeader
	(*timestamppb.Timestamp)(nil),             // 23: google.protobuf.Timestamp
	(*structpb.Value)(nil),                    // 24: google.protobuf.Value
	(*DeployedModelRef)(nil),                  // 25: google.cloud.aiplatform.v1.DeployedModelRef
	(*ExplanationSpec)(nil),                   // 26: google.cloud.aiplatform.v1.ExplanationSpec
	(*EncryptionSpec)(nil),                    // 27: google.cloud.aiplatform.v1.EncryptionSpec
	(*EnvVar)(nil),                            // 28: google.cloud.aiplatform.v1.EnvVar
	(*durationpb.Duration)(nil),               // 29: google.protobuf.Duration
}
var file_google_cloud_aiplatform_v1_model_proto_depIdxs = []int32{
	23, // 0: google.cloud.aiplatform.v1.Model.version_create_time:type_name -> google.protobuf.Timestamp
	23, // 1: google.cloud.aiplatform.v1.Model.version_update_time:type_name -> google.protobuf.Timestamp
	7,  // 2: google.cloud.aiplatform.v1.Model.predict_schemata:type_name -> google.cloud.aiplatform.v1.PredictSchemata
	24, // 3: google.cloud.aiplatform.v1.Model.metadata:type_name -> google.protobuf.Value
	13, // 4: google.cloud.aiplatform.v1.Model.supported_export_formats:type_name -> google.cloud.aiplatform.v1.Model.ExportFormat
	8,  // 5: google.cloud.aiplatform.v1.Model.container_spec:type_name -> google.cloud.aiplatform.v1.ModelContainerSpec
	0,  // 6: google.cloud.aiplatform.v1.Model.supported_deployment_resources_types:type_name -> google.cloud.aiplatform.v1.Model.DeploymentResourcesType
	23, // 7: google.cloud.aiplatform.v1.Model.create_time:type_name -> google.protobuf.Timestamp
	23, // 8: google.cloud.aiplatform.v1.Model.update_time:type_name -> google.protobuf.Timestamp
	25, // 9: google.cloud.aiplatform.v1.Model.deployed_models:type_name -> google.cloud.aiplatform.v1.DeployedModelRef
	26, // 10: google.cloud.aiplatform.v1.Model.explanation_spec:type_name -> google.cloud.aiplatform.v1.ExplanationSpec
	17, // 11: google.cloud.aiplatform.v1.Model.labels:type_name -> google.cloud.aiplatform.v1.Model.LabelsEntry
	14, // 12: google.cloud.aiplatform.v1.Model.data_stats:type_name -> google.cloud.aiplatform.v1.Model.DataStats
	27, // 13: google.cloud.aiplatform.v1.Model.encryption_spec:type_name -> google.cloud.aiplatform.v1.EncryptionSpec
	10, // 14: google.cloud.aiplatform.v1.Model.model_source_info:type_name -> google.cloud.aiplatform.v1.ModelSourceInfo
	15, // 15: google.cloud.aiplatform.v1.Model.original_model_info:type_name -> google.cloud.aiplatform.v1.Model.OriginalModelInfo
	16, // 16: google.cloud.aiplatform.v1.Model.base_model_source:type_name -> google.cloud.aiplatform.v1.Model.BaseModelSource
	12, // 17: google.cloud.aiplatform.v1.Model.checkpoints:type_name -> google.cloud.aiplatform.v1.Checkpoint
	28, // 18: google.cloud.aiplatform.v1.ModelContainerSpec.env:type_name -> google.cloud.aiplatform.v1.EnvVar
	9,  // 19: google.cloud.aiplatform.v1.ModelContainerSpec.ports:type_name -> google.cloud.aiplatform.v1.Port
	9,  // 20: google.cloud.aiplatform.v1.ModelContainerSpec.grpc_ports:type_name -> google.cloud.aiplatform.v1.Port
	29, // 21: google.cloud.aiplatform.v1.ModelContainerSpec.deployment_timeout:type_name -> google.protobuf.Duration
	11, // 22: google.cloud.aiplatform.v1.ModelContainerSpec.startup_probe:type_name -> google.cloud.aiplatform.v1.Probe
	11, // 23: google.cloud.aiplatform.v1.ModelContainerSpec.health_probe:type_name -> google.cloud.aiplatform.v1.Probe
	11, // 24: google.cloud.aiplatform.v1.ModelContainerSpec.liveness_probe:type_name -> google.cloud.aiplatform.v1.Probe
	2,  // 25: google.cloud.aiplatform.v1.ModelSourceInfo.source_type:type_name -> google.cloud.aiplatform.v1.ModelSourceInfo.ModelSourceType
	18, // 26: google.cloud.aiplatform.v1.Probe.exec:type_name -> google.cloud.aiplatform.v1.Probe.ExecAction
	19, // 27: google.cloud.aiplatform.v1.Probe.http_get:type_name -> google.cloud.aiplatform.v1.Probe.HttpGetAction
	20, // 28: google.cloud.aiplatform.v1.Probe.grpc:type_name -> google.cloud.aiplatform.v1.Probe.GrpcAction
	21, // 29: google.cloud.aiplatform.v1.Probe.tcp_socket:type_name -> google.cloud.aiplatform.v1.Probe.TcpSocketAction
	1,  // 30: google.cloud.aiplatform.v1.Model.ExportFormat.exportable_contents:type_name -> google.cloud.aiplatform.v1.Model.ExportFormat.ExportableContent
	5,  // 31: google.cloud.aiplatform.v1.Model.BaseModelSource.model_garden_source:type_name -> google.cloud.aiplatform.v1.ModelGardenSource
	6,  // 32: google.cloud.aiplatform.v1.Model.BaseModelSource.genie_source:type_name -> google.cloud.aiplatform.v1.GenieSource
	22, // 33: google.cloud.aiplatform.v1.Probe.HttpGetAction.http_headers:type_name -> google.cloud.aiplatform.v1.Probe.HttpHeader
	34, // [34:34] is the sub-list for method output_type
	34, // [34:34] is the sub-list for method input_type
	34, // [34:34] is the sub-list for extension type_name
	34, // [34:34] is the sub-list for extension extendee
	0,  // [0:34] is the sub-list for field type_name
}

func init() { file_google_cloud_aiplatform_v1_model_proto_init() }
func file_google_cloud_aiplatform_v1_model_proto_init() {
	if File_google_cloud_aiplatform_v1_model_proto != nil {
		return
	}
	file_google_cloud_aiplatform_v1_deployed_model_ref_proto_init()
	file_google_cloud_aiplatform_v1_encryption_spec_proto_init()
	file_google_cloud_aiplatform_v1_env_var_proto_init()
	file_google_cloud_aiplatform_v1_explanation_proto_init()
	file_google_cloud_aiplatform_v1_model_proto_msgTypes[8].OneofWrappers = []any{
		(*Probe_Exec)(nil),
		(*Probe_HttpGet)(nil),
		(*Probe_Grpc)(nil),
		(*Probe_TcpSocket)(nil),
	}
	file_google_cloud_aiplatform_v1_model_proto_msgTypes[13].OneofWrappers = []any{
		(*Model_BaseModelSource_ModelGardenSource)(nil),
		(*Model_BaseModelSource_GenieSource)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_cloud_aiplatform_v1_model_proto_rawDesc,
			NumEnums:      3,
			NumMessages:   20,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_cloud_aiplatform_v1_model_proto_goTypes,
		DependencyIndexes: file_google_cloud_aiplatform_v1_model_proto_depIdxs,
		EnumInfos:         file_google_cloud_aiplatform_v1_model_proto_enumTypes,
		MessageInfos:      file_google_cloud_aiplatform_v1_model_proto_msgTypes,
	}.Build()
	File_google_cloud_aiplatform_v1_model_proto = out.File
	file_google_cloud_aiplatform_v1_model_proto_rawDesc = nil
	file_google_cloud_aiplatform_v1_model_proto_goTypes = nil
	file_google_cloud_aiplatform_v1_model_proto_depIdxs = nil
}
