cloud.google.com/go/aiplatform@v1.106.0/apiv1/aiplatformpb/study.pb.go (about)

     1  // Copyright 2025 Google LLC
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Code generated by protoc-gen-go. DO NOT EDIT.
    16  // versions:
    17  // 	protoc-gen-go v1.35.2
    18  // 	protoc        v4.25.7
    19  // source: google/cloud/aiplatform/v1/study.proto
    20  
    21  package aiplatformpb
    22  
    23  import (
    24  	_ "google.golang.org/genproto/googleapis/api/annotations"
    25  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    26  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    27  	durationpb "google.golang.org/protobuf/types/known/durationpb"
    28  	structpb "google.golang.org/protobuf/types/known/structpb"
    29  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    30  	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
    31  	reflect "reflect"
    32  	sync "sync"
    33  )
    34  
    35  const (
    36  	// Verify that this generated code is sufficiently up-to-date.
    37  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    38  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    39  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    40  )
    41  
    42  // Describes the Study state.
    43  type Study_State int32
    44  
    45  const (
    46  	// The study state is unspecified.
    47  	Study_STATE_UNSPECIFIED Study_State = 0
    48  	// The study is active.
    49  	Study_ACTIVE Study_State = 1
    50  	// The study is stopped due to an internal error.
    51  	Study_INACTIVE Study_State = 2
    52  	// The study is done when the service exhausts the parameter search space
    53  	// or max_trial_count is reached.
    54  	Study_COMPLETED Study_State = 3
    55  )
    56  
    57  // Enum value maps for Study_State.
    58  var (
    59  	Study_State_name = map[int32]string{
    60  		0: "STATE_UNSPECIFIED",
    61  		1: "ACTIVE",
    62  		2: "INACTIVE",
    63  		3: "COMPLETED",
    64  	}
    65  	Study_State_value = map[string]int32{
    66  		"STATE_UNSPECIFIED": 0,
    67  		"ACTIVE":            1,
    68  		"INACTIVE":          2,
    69  		"COMPLETED":         3,
    70  	}
    71  )
    72  
    73  func (x Study_State) Enum() *Study_State {
    74  	p := new(Study_State)
    75  	*p = x
    76  	return p
    77  }
    78  
    79  func (x Study_State) String() string {
    80  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    81  }
    82  
    83  func (Study_State) Descriptor() protoreflect.EnumDescriptor {
    84  	return file_google_cloud_aiplatform_v1_study_proto_enumTypes[0].Descriptor()
    85  }
    86  
    87  func (Study_State) Type() protoreflect.EnumType {
    88  	return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[0]
    89  }
    90  
    91  func (x Study_State) Number() protoreflect.EnumNumber {
    92  	return protoreflect.EnumNumber(x)
    93  }
    94  
    95  // Deprecated: Use Study_State.Descriptor instead.
    96  func (Study_State) EnumDescriptor() ([]byte, []int) {
    97  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{0, 0}
    98  }
    99  
   100  // Describes a Trial state.
   101  type Trial_State int32
   102  
   103  const (
   104  	// The Trial state is unspecified.
   105  	Trial_STATE_UNSPECIFIED Trial_State = 0
   106  	// Indicates that a specific Trial has been requested, but it has not yet
   107  	// been suggested by the service.
   108  	Trial_REQUESTED Trial_State = 1
   109  	// Indicates that the Trial has been suggested.
   110  	Trial_ACTIVE Trial_State = 2
   111  	// Indicates that the Trial should stop according to the service.
   112  	Trial_STOPPING Trial_State = 3
   113  	// Indicates that the Trial is completed successfully.
   114  	Trial_SUCCEEDED Trial_State = 4
   115  	// Indicates that the Trial should not be attempted again.
   116  	// The service will set a Trial to INFEASIBLE when it's done but missing
   117  	// the final_measurement.
   118  	Trial_INFEASIBLE Trial_State = 5
   119  )
   120  
   121  // Enum value maps for Trial_State.
   122  var (
   123  	Trial_State_name = map[int32]string{
   124  		0: "STATE_UNSPECIFIED",
   125  		1: "REQUESTED",
   126  		2: "ACTIVE",
   127  		3: "STOPPING",
   128  		4: "SUCCEEDED",
   129  		5: "INFEASIBLE",
   130  	}
   131  	Trial_State_value = map[string]int32{
   132  		"STATE_UNSPECIFIED": 0,
   133  		"REQUESTED":         1,
   134  		"ACTIVE":            2,
   135  		"STOPPING":          3,
   136  		"SUCCEEDED":         4,
   137  		"INFEASIBLE":        5,
   138  	}
   139  )
   140  
   141  func (x Trial_State) Enum() *Trial_State {
   142  	p := new(Trial_State)
   143  	*p = x
   144  	return p
   145  }
   146  
   147  func (x Trial_State) String() string {
   148  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   149  }
   150  
   151  func (Trial_State) Descriptor() protoreflect.EnumDescriptor {
   152  	return file_google_cloud_aiplatform_v1_study_proto_enumTypes[1].Descriptor()
   153  }
   154  
   155  func (Trial_State) Type() protoreflect.EnumType {
   156  	return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[1]
   157  }
   158  
   159  func (x Trial_State) Number() protoreflect.EnumNumber {
   160  	return protoreflect.EnumNumber(x)
   161  }
   162  
   163  // Deprecated: Use Trial_State.Descriptor instead.
   164  func (Trial_State) EnumDescriptor() ([]byte, []int) {
   165  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{1, 0}
   166  }
   167  
   168  // The available search algorithms for the Study.
   169  type StudySpec_Algorithm int32
   170  
   171  const (
   172  	// The default algorithm used by Vertex AI for [hyperparameter
   173  	// tuning](https://cloud.google.com/vertex-ai/docs/training/hyperparameter-tuning-overview)
   174  	// and [Vertex AI Vizier](https://cloud.google.com/vertex-ai/docs/vizier).
   175  	StudySpec_ALGORITHM_UNSPECIFIED StudySpec_Algorithm = 0
   176  	// Simple grid search within the feasible space. To use grid search,
   177  	// all parameters must be `INTEGER`, `CATEGORICAL`, or `DISCRETE`.
   178  	StudySpec_GRID_SEARCH StudySpec_Algorithm = 2
   179  	// Simple random search within the feasible space.
   180  	StudySpec_RANDOM_SEARCH StudySpec_Algorithm = 3
   181  )
   182  
   183  // Enum value maps for StudySpec_Algorithm.
   184  var (
   185  	StudySpec_Algorithm_name = map[int32]string{
   186  		0: "ALGORITHM_UNSPECIFIED",
   187  		2: "GRID_SEARCH",
   188  		3: "RANDOM_SEARCH",
   189  	}
   190  	StudySpec_Algorithm_value = map[string]int32{
   191  		"ALGORITHM_UNSPECIFIED": 0,
   192  		"GRID_SEARCH":           2,
   193  		"RANDOM_SEARCH":         3,
   194  	}
   195  )
   196  
   197  func (x StudySpec_Algorithm) Enum() *StudySpec_Algorithm {
   198  	p := new(StudySpec_Algorithm)
   199  	*p = x
   200  	return p
   201  }
   202  
   203  func (x StudySpec_Algorithm) String() string {
   204  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   205  }
   206  
   207  func (StudySpec_Algorithm) Descriptor() protoreflect.EnumDescriptor {
   208  	return file_google_cloud_aiplatform_v1_study_proto_enumTypes[2].Descriptor()
   209  }
   210  
   211  func (StudySpec_Algorithm) Type() protoreflect.EnumType {
   212  	return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[2]
   213  }
   214  
   215  func (x StudySpec_Algorithm) Number() protoreflect.EnumNumber {
   216  	return protoreflect.EnumNumber(x)
   217  }
   218  
   219  // Deprecated: Use StudySpec_Algorithm.Descriptor instead.
   220  func (StudySpec_Algorithm) EnumDescriptor() ([]byte, []int) {
   221  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 0}
   222  }
   223  
   224  // Describes the noise level of the repeated observations.
   225  //
   226  // "Noisy" means that the repeated observations with the same Trial parameters
   227  // may lead to different metric evaluations.
   228  type StudySpec_ObservationNoise int32
   229  
   230  const (
   231  	// The default noise level chosen by Vertex AI.
   232  	StudySpec_OBSERVATION_NOISE_UNSPECIFIED StudySpec_ObservationNoise = 0
   233  	// Vertex AI assumes that the objective function is (nearly)
   234  	// perfectly reproducible, and will never repeat the same Trial
   235  	// parameters.
   236  	StudySpec_LOW StudySpec_ObservationNoise = 1
   237  	// Vertex AI will estimate the amount of noise in metric
   238  	// evaluations, it may repeat the same Trial parameters more than once.
   239  	StudySpec_HIGH StudySpec_ObservationNoise = 2
   240  )
   241  
   242  // Enum value maps for StudySpec_ObservationNoise.
   243  var (
   244  	StudySpec_ObservationNoise_name = map[int32]string{
   245  		0: "OBSERVATION_NOISE_UNSPECIFIED",
   246  		1: "LOW",
   247  		2: "HIGH",
   248  	}
   249  	StudySpec_ObservationNoise_value = map[string]int32{
   250  		"OBSERVATION_NOISE_UNSPECIFIED": 0,
   251  		"LOW":                           1,
   252  		"HIGH":                          2,
   253  	}
   254  )
   255  
   256  func (x StudySpec_ObservationNoise) Enum() *StudySpec_ObservationNoise {
   257  	p := new(StudySpec_ObservationNoise)
   258  	*p = x
   259  	return p
   260  }
   261  
   262  func (x StudySpec_ObservationNoise) String() string {
   263  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   264  }
   265  
   266  func (StudySpec_ObservationNoise) Descriptor() protoreflect.EnumDescriptor {
   267  	return file_google_cloud_aiplatform_v1_study_proto_enumTypes[3].Descriptor()
   268  }
   269  
   270  func (StudySpec_ObservationNoise) Type() protoreflect.EnumType {
   271  	return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[3]
   272  }
   273  
   274  func (x StudySpec_ObservationNoise) Number() protoreflect.EnumNumber {
   275  	return protoreflect.EnumNumber(x)
   276  }
   277  
   278  // Deprecated: Use StudySpec_ObservationNoise.Descriptor instead.
   279  func (StudySpec_ObservationNoise) EnumDescriptor() ([]byte, []int) {
   280  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1}
   281  }
   282  
   283  // This indicates which measurement to use if/when the service automatically
   284  // selects the final measurement from previously reported intermediate
   285  // measurements. Choose this based on two considerations:
   286  //
   287  //	A) Do you expect your measurements to monotonically improve?
   288  //	   If so, choose LAST_MEASUREMENT. On the other hand, if you're in a
   289  //	   situation where your system can "over-train" and you expect the
   290  //	   performance to get better for a while but then start declining,
   291  //	   choose BEST_MEASUREMENT.
   292  //	B) Are your measurements significantly noisy and/or irreproducible?
   293  //	   If so, BEST_MEASUREMENT will tend to be over-optimistic, and it
   294  //	   may be better to choose LAST_MEASUREMENT.
   295  //	If both or neither of (A) and (B) apply, it doesn't matter which
   296  //	selection type is chosen.
   297  type StudySpec_MeasurementSelectionType int32
   298  
   299  const (
   300  	// Will be treated as LAST_MEASUREMENT.
   301  	StudySpec_MEASUREMENT_SELECTION_TYPE_UNSPECIFIED StudySpec_MeasurementSelectionType = 0
   302  	// Use the last measurement reported.
   303  	StudySpec_LAST_MEASUREMENT StudySpec_MeasurementSelectionType = 1
   304  	// Use the best measurement reported.
   305  	StudySpec_BEST_MEASUREMENT StudySpec_MeasurementSelectionType = 2
   306  )
   307  
   308  // Enum value maps for StudySpec_MeasurementSelectionType.
   309  var (
   310  	StudySpec_MeasurementSelectionType_name = map[int32]string{
   311  		0: "MEASUREMENT_SELECTION_TYPE_UNSPECIFIED",
   312  		1: "LAST_MEASUREMENT",
   313  		2: "BEST_MEASUREMENT",
   314  	}
   315  	StudySpec_MeasurementSelectionType_value = map[string]int32{
   316  		"MEASUREMENT_SELECTION_TYPE_UNSPECIFIED": 0,
   317  		"LAST_MEASUREMENT":                       1,
   318  		"BEST_MEASUREMENT":                       2,
   319  	}
   320  )
   321  
   322  func (x StudySpec_MeasurementSelectionType) Enum() *StudySpec_MeasurementSelectionType {
   323  	p := new(StudySpec_MeasurementSelectionType)
   324  	*p = x
   325  	return p
   326  }
   327  
   328  func (x StudySpec_MeasurementSelectionType) String() string {
   329  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   330  }
   331  
   332  func (StudySpec_MeasurementSelectionType) Descriptor() protoreflect.EnumDescriptor {
   333  	return file_google_cloud_aiplatform_v1_study_proto_enumTypes[4].Descriptor()
   334  }
   335  
   336  func (StudySpec_MeasurementSelectionType) Type() protoreflect.EnumType {
   337  	return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[4]
   338  }
   339  
   340  func (x StudySpec_MeasurementSelectionType) Number() protoreflect.EnumNumber {
   341  	return protoreflect.EnumNumber(x)
   342  }
   343  
   344  // Deprecated: Use StudySpec_MeasurementSelectionType.Descriptor instead.
   345  func (StudySpec_MeasurementSelectionType) EnumDescriptor() ([]byte, []int) {
   346  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 2}
   347  }
   348  
   349  // The available types of optimization goals.
   350  type StudySpec_MetricSpec_GoalType int32
   351  
   352  const (
   353  	// Goal Type will default to maximize.
   354  	StudySpec_MetricSpec_GOAL_TYPE_UNSPECIFIED StudySpec_MetricSpec_GoalType = 0
   355  	// Maximize the goal metric.
   356  	StudySpec_MetricSpec_MAXIMIZE StudySpec_MetricSpec_GoalType = 1
   357  	// Minimize the goal metric.
   358  	StudySpec_MetricSpec_MINIMIZE StudySpec_MetricSpec_GoalType = 2
   359  )
   360  
   361  // Enum value maps for StudySpec_MetricSpec_GoalType.
   362  var (
   363  	StudySpec_MetricSpec_GoalType_name = map[int32]string{
   364  		0: "GOAL_TYPE_UNSPECIFIED",
   365  		1: "MAXIMIZE",
   366  		2: "MINIMIZE",
   367  	}
   368  	StudySpec_MetricSpec_GoalType_value = map[string]int32{
   369  		"GOAL_TYPE_UNSPECIFIED": 0,
   370  		"MAXIMIZE":              1,
   371  		"MINIMIZE":              2,
   372  	}
   373  )
   374  
   375  func (x StudySpec_MetricSpec_GoalType) Enum() *StudySpec_MetricSpec_GoalType {
   376  	p := new(StudySpec_MetricSpec_GoalType)
   377  	*p = x
   378  	return p
   379  }
   380  
   381  func (x StudySpec_MetricSpec_GoalType) String() string {
   382  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   383  }
   384  
   385  func (StudySpec_MetricSpec_GoalType) Descriptor() protoreflect.EnumDescriptor {
   386  	return file_google_cloud_aiplatform_v1_study_proto_enumTypes[5].Descriptor()
   387  }
   388  
   389  func (StudySpec_MetricSpec_GoalType) Type() protoreflect.EnumType {
   390  	return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[5]
   391  }
   392  
   393  func (x StudySpec_MetricSpec_GoalType) Number() protoreflect.EnumNumber {
   394  	return protoreflect.EnumNumber(x)
   395  }
   396  
   397  // Deprecated: Use StudySpec_MetricSpec_GoalType.Descriptor instead.
   398  func (StudySpec_MetricSpec_GoalType) EnumDescriptor() ([]byte, []int) {
   399  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 0, 0}
   400  }
   401  
   402  // The type of scaling that should be applied to this parameter.
   403  type StudySpec_ParameterSpec_ScaleType int32
   404  
   405  const (
   406  	// By default, no scaling is applied.
   407  	StudySpec_ParameterSpec_SCALE_TYPE_UNSPECIFIED StudySpec_ParameterSpec_ScaleType = 0
   408  	// Scales the feasible space to (0, 1) linearly.
   409  	StudySpec_ParameterSpec_UNIT_LINEAR_SCALE StudySpec_ParameterSpec_ScaleType = 1
   410  	// Scales the feasible space logarithmically to (0, 1). The entire
   411  	// feasible space must be strictly positive.
   412  	StudySpec_ParameterSpec_UNIT_LOG_SCALE StudySpec_ParameterSpec_ScaleType = 2
   413  	// Scales the feasible space "reverse" logarithmically to (0, 1). The
   414  	// result is that values close to the top of the feasible space are spread
   415  	// out more than points near the bottom. The entire feasible space must be
   416  	// strictly positive.
   417  	StudySpec_ParameterSpec_UNIT_REVERSE_LOG_SCALE StudySpec_ParameterSpec_ScaleType = 3
   418  )
   419  
   420  // Enum value maps for StudySpec_ParameterSpec_ScaleType.
   421  var (
   422  	StudySpec_ParameterSpec_ScaleType_name = map[int32]string{
   423  		0: "SCALE_TYPE_UNSPECIFIED",
   424  		1: "UNIT_LINEAR_SCALE",
   425  		2: "UNIT_LOG_SCALE",
   426  		3: "UNIT_REVERSE_LOG_SCALE",
   427  	}
   428  	StudySpec_ParameterSpec_ScaleType_value = map[string]int32{
   429  		"SCALE_TYPE_UNSPECIFIED": 0,
   430  		"UNIT_LINEAR_SCALE":      1,
   431  		"UNIT_LOG_SCALE":         2,
   432  		"UNIT_REVERSE_LOG_SCALE": 3,
   433  	}
   434  )
   435  
   436  func (x StudySpec_ParameterSpec_ScaleType) Enum() *StudySpec_ParameterSpec_ScaleType {
   437  	p := new(StudySpec_ParameterSpec_ScaleType)
   438  	*p = x
   439  	return p
   440  }
   441  
   442  func (x StudySpec_ParameterSpec_ScaleType) String() string {
   443  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   444  }
   445  
   446  func (StudySpec_ParameterSpec_ScaleType) Descriptor() protoreflect.EnumDescriptor {
   447  	return file_google_cloud_aiplatform_v1_study_proto_enumTypes[6].Descriptor()
   448  }
   449  
   450  func (StudySpec_ParameterSpec_ScaleType) Type() protoreflect.EnumType {
   451  	return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[6]
   452  }
   453  
   454  func (x StudySpec_ParameterSpec_ScaleType) Number() protoreflect.EnumNumber {
   455  	return protoreflect.EnumNumber(x)
   456  }
   457  
   458  // Deprecated: Use StudySpec_ParameterSpec_ScaleType.Descriptor instead.
   459  func (StudySpec_ParameterSpec_ScaleType) EnumDescriptor() ([]byte, []int) {
   460  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 0}
   461  }
   462  
   463  // A message representing a Study.
   464  type Study struct {
   465  	state         protoimpl.MessageState
   466  	sizeCache     protoimpl.SizeCache
   467  	unknownFields protoimpl.UnknownFields
   468  
   469  	// Output only. The name of a study. The study's globally unique identifier.
   470  	// Format: `projects/{project}/locations/{location}/studies/{study}`
   471  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   472  	// Required. Describes the Study, default value is empty string.
   473  	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
   474  	// Required. Configuration of the Study.
   475  	StudySpec *StudySpec `protobuf:"bytes,3,opt,name=study_spec,json=studySpec,proto3" json:"study_spec,omitempty"`
   476  	// Output only. The detailed state of a Study.
   477  	State Study_State `protobuf:"varint,4,opt,name=state,proto3,enum=google.cloud.aiplatform.v1.Study_State" json:"state,omitempty"`
   478  	// Output only. Time at which the study was created.
   479  	CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
   480  	// Output only. A human readable reason why the Study is inactive.
   481  	// This should be empty if a study is ACTIVE or COMPLETED.
   482  	InactiveReason string `protobuf:"bytes,6,opt,name=inactive_reason,json=inactiveReason,proto3" json:"inactive_reason,omitempty"`
   483  }
   484  
   485  func (x *Study) Reset() {
   486  	*x = Study{}
   487  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[0]
   488  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   489  	ms.StoreMessageInfo(mi)
   490  }
   491  
   492  func (x *Study) String() string {
   493  	return protoimpl.X.MessageStringOf(x)
   494  }
   495  
   496  func (*Study) ProtoMessage() {}
   497  
   498  func (x *Study) ProtoReflect() protoreflect.Message {
   499  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[0]
   500  	if x != nil {
   501  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   502  		if ms.LoadMessageInfo() == nil {
   503  			ms.StoreMessageInfo(mi)
   504  		}
   505  		return ms
   506  	}
   507  	return mi.MessageOf(x)
   508  }
   509  
   510  // Deprecated: Use Study.ProtoReflect.Descriptor instead.
   511  func (*Study) Descriptor() ([]byte, []int) {
   512  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{0}
   513  }
   514  
   515  func (x *Study) GetName() string {
   516  	if x != nil {
   517  		return x.Name
   518  	}
   519  	return ""
   520  }
   521  
   522  func (x *Study) GetDisplayName() string {
   523  	if x != nil {
   524  		return x.DisplayName
   525  	}
   526  	return ""
   527  }
   528  
   529  func (x *Study) GetStudySpec() *StudySpec {
   530  	if x != nil {
   531  		return x.StudySpec
   532  	}
   533  	return nil
   534  }
   535  
   536  func (x *Study) GetState() Study_State {
   537  	if x != nil {
   538  		return x.State
   539  	}
   540  	return Study_STATE_UNSPECIFIED
   541  }
   542  
   543  func (x *Study) GetCreateTime() *timestamppb.Timestamp {
   544  	if x != nil {
   545  		return x.CreateTime
   546  	}
   547  	return nil
   548  }
   549  
   550  func (x *Study) GetInactiveReason() string {
   551  	if x != nil {
   552  		return x.InactiveReason
   553  	}
   554  	return ""
   555  }
   556  
   557  // A message representing a Trial. A Trial contains a unique set of Parameters
   558  // that has been or will be evaluated, along with the objective metrics got by
   559  // running the Trial.
   560  type Trial struct {
   561  	state         protoimpl.MessageState
   562  	sizeCache     protoimpl.SizeCache
   563  	unknownFields protoimpl.UnknownFields
   564  
   565  	// Output only. Resource name of the Trial assigned by the service.
   566  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   567  	// Output only. The identifier of the Trial assigned by the service.
   568  	Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
   569  	// Output only. The detailed state of the Trial.
   570  	State Trial_State `protobuf:"varint,3,opt,name=state,proto3,enum=google.cloud.aiplatform.v1.Trial_State" json:"state,omitempty"`
   571  	// Output only. The parameters of the Trial.
   572  	Parameters []*Trial_Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"`
   573  	// Output only. The final measurement containing the objective value.
   574  	FinalMeasurement *Measurement `protobuf:"bytes,5,opt,name=final_measurement,json=finalMeasurement,proto3" json:"final_measurement,omitempty"`
   575  	// Output only. A list of measurements that are strictly lexicographically
   576  	// ordered by their induced tuples (steps, elapsed_duration).
   577  	// These are used for early stopping computations.
   578  	Measurements []*Measurement `protobuf:"bytes,6,rep,name=measurements,proto3" json:"measurements,omitempty"`
   579  	// Output only. Time when the Trial was started.
   580  	StartTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
   581  	// Output only. Time when the Trial's status changed to `SUCCEEDED` or
   582  	// `INFEASIBLE`.
   583  	EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
   584  	// Output only. The identifier of the client that originally requested this
   585  	// Trial. Each client is identified by a unique client_id. When a client asks
   586  	// for a suggestion, Vertex AI Vizier will assign it a Trial. The client
   587  	// should evaluate the Trial, complete it, and report back to Vertex AI
   588  	// Vizier. If suggestion is asked again by same client_id before the Trial is
   589  	// completed, the same Trial will be returned. Multiple clients with
   590  	// different client_ids can ask for suggestions simultaneously, each of them
   591  	// will get their own Trial.
   592  	ClientId string `protobuf:"bytes,9,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
   593  	// Output only. A human readable string describing why the Trial is
   594  	// infeasible. This is set only if Trial state is `INFEASIBLE`.
   595  	InfeasibleReason string `protobuf:"bytes,10,opt,name=infeasible_reason,json=infeasibleReason,proto3" json:"infeasible_reason,omitempty"`
   596  	// Output only. The CustomJob name linked to the Trial.
   597  	// It's set for a HyperparameterTuningJob's Trial.
   598  	CustomJob string `protobuf:"bytes,11,opt,name=custom_job,json=customJob,proto3" json:"custom_job,omitempty"`
   599  	// Output only. URIs for accessing [interactive
   600  	// shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell)
   601  	// (one URI for each training node). Only available if this trial is part of
   602  	// a
   603  	// [HyperparameterTuningJob][google.cloud.aiplatform.v1.HyperparameterTuningJob]
   604  	// and the job's
   605  	// [trial_job_spec.enable_web_access][google.cloud.aiplatform.v1.CustomJobSpec.enable_web_access]
   606  	// field is `true`.
   607  	//
   608  	// The keys are names of each node used for the trial; for example,
   609  	// `workerpool0-0` for the primary node, `workerpool1-0` for the first node in
   610  	// the second worker pool, and `workerpool1-1` for the second node in the
   611  	// second worker pool.
   612  	//
   613  	// The values are the URIs for each node's interactive shell.
   614  	WebAccessUris map[string]string `protobuf:"bytes,12,rep,name=web_access_uris,json=webAccessUris,proto3" json:"web_access_uris,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   615  }
   616  
   617  func (x *Trial) Reset() {
   618  	*x = Trial{}
   619  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[1]
   620  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   621  	ms.StoreMessageInfo(mi)
   622  }
   623  
   624  func (x *Trial) String() string {
   625  	return protoimpl.X.MessageStringOf(x)
   626  }
   627  
   628  func (*Trial) ProtoMessage() {}
   629  
   630  func (x *Trial) ProtoReflect() protoreflect.Message {
   631  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[1]
   632  	if x != nil {
   633  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   634  		if ms.LoadMessageInfo() == nil {
   635  			ms.StoreMessageInfo(mi)
   636  		}
   637  		return ms
   638  	}
   639  	return mi.MessageOf(x)
   640  }
   641  
   642  // Deprecated: Use Trial.ProtoReflect.Descriptor instead.
   643  func (*Trial) Descriptor() ([]byte, []int) {
   644  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{1}
   645  }
   646  
   647  func (x *Trial) GetName() string {
   648  	if x != nil {
   649  		return x.Name
   650  	}
   651  	return ""
   652  }
   653  
   654  func (x *Trial) GetId() string {
   655  	if x != nil {
   656  		return x.Id
   657  	}
   658  	return ""
   659  }
   660  
   661  func (x *Trial) GetState() Trial_State {
   662  	if x != nil {
   663  		return x.State
   664  	}
   665  	return Trial_STATE_UNSPECIFIED
   666  }
   667  
   668  func (x *Trial) GetParameters() []*Trial_Parameter {
   669  	if x != nil {
   670  		return x.Parameters
   671  	}
   672  	return nil
   673  }
   674  
   675  func (x *Trial) GetFinalMeasurement() *Measurement {
   676  	if x != nil {
   677  		return x.FinalMeasurement
   678  	}
   679  	return nil
   680  }
   681  
   682  func (x *Trial) GetMeasurements() []*Measurement {
   683  	if x != nil {
   684  		return x.Measurements
   685  	}
   686  	return nil
   687  }
   688  
   689  func (x *Trial) GetStartTime() *timestamppb.Timestamp {
   690  	if x != nil {
   691  		return x.StartTime
   692  	}
   693  	return nil
   694  }
   695  
   696  func (x *Trial) GetEndTime() *timestamppb.Timestamp {
   697  	if x != nil {
   698  		return x.EndTime
   699  	}
   700  	return nil
   701  }
   702  
   703  func (x *Trial) GetClientId() string {
   704  	if x != nil {
   705  		return x.ClientId
   706  	}
   707  	return ""
   708  }
   709  
   710  func (x *Trial) GetInfeasibleReason() string {
   711  	if x != nil {
   712  		return x.InfeasibleReason
   713  	}
   714  	return ""
   715  }
   716  
   717  func (x *Trial) GetCustomJob() string {
   718  	if x != nil {
   719  		return x.CustomJob
   720  	}
   721  	return ""
   722  }
   723  
   724  func (x *Trial) GetWebAccessUris() map[string]string {
   725  	if x != nil {
   726  		return x.WebAccessUris
   727  	}
   728  	return nil
   729  }
   730  
   731  type TrialContext struct {
   732  	state         protoimpl.MessageState
   733  	sizeCache     protoimpl.SizeCache
   734  	unknownFields protoimpl.UnknownFields
   735  
   736  	// A human-readable field which can store a description of this context.
   737  	// This will become part of the resulting Trial's description field.
   738  	Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
   739  	// If/when a Trial is generated or selected from this Context,
   740  	// its Parameters will match any parameters specified here.
   741  	// (I.e. if this context specifies parameter name:'a' int_value:3,
   742  	// then a resulting Trial will have int_value:3 for its parameter named
   743  	// 'a'.) Note that we first attempt to match existing REQUESTED Trials with
   744  	// contexts, and if there are no matches, we generate suggestions in the
   745  	// subspace defined by the parameters specified here.
   746  	// NOTE: a Context without any Parameters matches the entire feasible search
   747  	//
   748  	//	space.
   749  	Parameters []*Trial_Parameter `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty"`
   750  }
   751  
   752  func (x *TrialContext) Reset() {
   753  	*x = TrialContext{}
   754  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[2]
   755  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   756  	ms.StoreMessageInfo(mi)
   757  }
   758  
   759  func (x *TrialContext) String() string {
   760  	return protoimpl.X.MessageStringOf(x)
   761  }
   762  
   763  func (*TrialContext) ProtoMessage() {}
   764  
   765  func (x *TrialContext) ProtoReflect() protoreflect.Message {
   766  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[2]
   767  	if x != nil {
   768  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   769  		if ms.LoadMessageInfo() == nil {
   770  			ms.StoreMessageInfo(mi)
   771  		}
   772  		return ms
   773  	}
   774  	return mi.MessageOf(x)
   775  }
   776  
   777  // Deprecated: Use TrialContext.ProtoReflect.Descriptor instead.
   778  func (*TrialContext) Descriptor() ([]byte, []int) {
   779  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{2}
   780  }
   781  
   782  func (x *TrialContext) GetDescription() string {
   783  	if x != nil {
   784  		return x.Description
   785  	}
   786  	return ""
   787  }
   788  
   789  func (x *TrialContext) GetParameters() []*Trial_Parameter {
   790  	if x != nil {
   791  		return x.Parameters
   792  	}
   793  	return nil
   794  }
   795  
   796  // Time-based Constraint for Study
   797  type StudyTimeConstraint struct {
   798  	state         protoimpl.MessageState
   799  	sizeCache     protoimpl.SizeCache
   800  	unknownFields protoimpl.UnknownFields
   801  
   802  	// Types that are assignable to Constraint:
   803  	//
   804  	//	*StudyTimeConstraint_MaxDuration
   805  	//	*StudyTimeConstraint_EndTime
   806  	Constraint isStudyTimeConstraint_Constraint `protobuf_oneof:"constraint"`
   807  }
   808  
   809  func (x *StudyTimeConstraint) Reset() {
   810  	*x = StudyTimeConstraint{}
   811  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[3]
   812  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   813  	ms.StoreMessageInfo(mi)
   814  }
   815  
   816  func (x *StudyTimeConstraint) String() string {
   817  	return protoimpl.X.MessageStringOf(x)
   818  }
   819  
   820  func (*StudyTimeConstraint) ProtoMessage() {}
   821  
   822  func (x *StudyTimeConstraint) ProtoReflect() protoreflect.Message {
   823  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[3]
   824  	if x != nil {
   825  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   826  		if ms.LoadMessageInfo() == nil {
   827  			ms.StoreMessageInfo(mi)
   828  		}
   829  		return ms
   830  	}
   831  	return mi.MessageOf(x)
   832  }
   833  
   834  // Deprecated: Use StudyTimeConstraint.ProtoReflect.Descriptor instead.
   835  func (*StudyTimeConstraint) Descriptor() ([]byte, []int) {
   836  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{3}
   837  }
   838  
   839  func (m *StudyTimeConstraint) GetConstraint() isStudyTimeConstraint_Constraint {
   840  	if m != nil {
   841  		return m.Constraint
   842  	}
   843  	return nil
   844  }
   845  
   846  func (x *StudyTimeConstraint) GetMaxDuration() *durationpb.Duration {
   847  	if x, ok := x.GetConstraint().(*StudyTimeConstraint_MaxDuration); ok {
   848  		return x.MaxDuration
   849  	}
   850  	return nil
   851  }
   852  
   853  func (x *StudyTimeConstraint) GetEndTime() *timestamppb.Timestamp {
   854  	if x, ok := x.GetConstraint().(*StudyTimeConstraint_EndTime); ok {
   855  		return x.EndTime
   856  	}
   857  	return nil
   858  }
   859  
   860  type isStudyTimeConstraint_Constraint interface {
   861  	isStudyTimeConstraint_Constraint()
   862  }
   863  
   864  type StudyTimeConstraint_MaxDuration struct {
   865  	// Counts the wallclock time passed since the creation of this Study.
   866  	MaxDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=max_duration,json=maxDuration,proto3,oneof"`
   867  }
   868  
   869  type StudyTimeConstraint_EndTime struct {
   870  	// Compares the wallclock time to this time. Must use UTC timezone.
   871  	EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3,oneof"`
   872  }
   873  
   874  func (*StudyTimeConstraint_MaxDuration) isStudyTimeConstraint_Constraint() {}
   875  
   876  func (*StudyTimeConstraint_EndTime) isStudyTimeConstraint_Constraint() {}
   877  
   878  // Represents specification of a Study.
   879  type StudySpec struct {
   880  	state         protoimpl.MessageState
   881  	sizeCache     protoimpl.SizeCache
   882  	unknownFields protoimpl.UnknownFields
   883  
   884  	// Types that are assignable to AutomatedStoppingSpec:
   885  	//
   886  	//	*StudySpec_DecayCurveStoppingSpec
   887  	//	*StudySpec_MedianAutomatedStoppingSpec_
   888  	//	*StudySpec_ConvexAutomatedStoppingSpec_
   889  	AutomatedStoppingSpec isStudySpec_AutomatedStoppingSpec `protobuf_oneof:"automated_stopping_spec"`
   890  	// Required. Metric specs for the Study.
   891  	Metrics []*StudySpec_MetricSpec `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty"`
   892  	// Required. The set of parameters to tune.
   893  	Parameters []*StudySpec_ParameterSpec `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty"`
   894  	// The search algorithm specified for the Study.
   895  	Algorithm StudySpec_Algorithm `protobuf:"varint,3,opt,name=algorithm,proto3,enum=google.cloud.aiplatform.v1.StudySpec_Algorithm" json:"algorithm,omitempty"`
   896  	// The observation noise level of the study.
   897  	// Currently only supported by the Vertex AI Vizier service. Not supported by
   898  	// HyperparameterTuningJob or TrainingPipeline.
   899  	ObservationNoise StudySpec_ObservationNoise `protobuf:"varint,6,opt,name=observation_noise,json=observationNoise,proto3,enum=google.cloud.aiplatform.v1.StudySpec_ObservationNoise" json:"observation_noise,omitempty"`
   900  	// Describe which measurement selection type will be used
   901  	MeasurementSelectionType StudySpec_MeasurementSelectionType `protobuf:"varint,7,opt,name=measurement_selection_type,json=measurementSelectionType,proto3,enum=google.cloud.aiplatform.v1.StudySpec_MeasurementSelectionType" json:"measurement_selection_type,omitempty"`
   902  	// Conditions for automated stopping of a Study. Enable automated stopping by
   903  	// configuring at least one condition.
   904  	StudyStoppingConfig *StudySpec_StudyStoppingConfig `protobuf:"bytes,11,opt,name=study_stopping_config,json=studyStoppingConfig,proto3,oneof" json:"study_stopping_config,omitempty"`
   905  }
   906  
   907  func (x *StudySpec) Reset() {
   908  	*x = StudySpec{}
   909  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[4]
   910  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   911  	ms.StoreMessageInfo(mi)
   912  }
   913  
   914  func (x *StudySpec) String() string {
   915  	return protoimpl.X.MessageStringOf(x)
   916  }
   917  
   918  func (*StudySpec) ProtoMessage() {}
   919  
   920  func (x *StudySpec) ProtoReflect() protoreflect.Message {
   921  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[4]
   922  	if x != nil {
   923  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   924  		if ms.LoadMessageInfo() == nil {
   925  			ms.StoreMessageInfo(mi)
   926  		}
   927  		return ms
   928  	}
   929  	return mi.MessageOf(x)
   930  }
   931  
   932  // Deprecated: Use StudySpec.ProtoReflect.Descriptor instead.
   933  func (*StudySpec) Descriptor() ([]byte, []int) {
   934  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4}
   935  }
   936  
   937  func (m *StudySpec) GetAutomatedStoppingSpec() isStudySpec_AutomatedStoppingSpec {
   938  	if m != nil {
   939  		return m.AutomatedStoppingSpec
   940  	}
   941  	return nil
   942  }
   943  
   944  func (x *StudySpec) GetDecayCurveStoppingSpec() *StudySpec_DecayCurveAutomatedStoppingSpec {
   945  	if x, ok := x.GetAutomatedStoppingSpec().(*StudySpec_DecayCurveStoppingSpec); ok {
   946  		return x.DecayCurveStoppingSpec
   947  	}
   948  	return nil
   949  }
   950  
   951  func (x *StudySpec) GetMedianAutomatedStoppingSpec() *StudySpec_MedianAutomatedStoppingSpec {
   952  	if x, ok := x.GetAutomatedStoppingSpec().(*StudySpec_MedianAutomatedStoppingSpec_); ok {
   953  		return x.MedianAutomatedStoppingSpec
   954  	}
   955  	return nil
   956  }
   957  
   958  func (x *StudySpec) GetConvexAutomatedStoppingSpec() *StudySpec_ConvexAutomatedStoppingSpec {
   959  	if x, ok := x.GetAutomatedStoppingSpec().(*StudySpec_ConvexAutomatedStoppingSpec_); ok {
   960  		return x.ConvexAutomatedStoppingSpec
   961  	}
   962  	return nil
   963  }
   964  
   965  func (x *StudySpec) GetMetrics() []*StudySpec_MetricSpec {
   966  	if x != nil {
   967  		return x.Metrics
   968  	}
   969  	return nil
   970  }
   971  
   972  func (x *StudySpec) GetParameters() []*StudySpec_ParameterSpec {
   973  	if x != nil {
   974  		return x.Parameters
   975  	}
   976  	return nil
   977  }
   978  
   979  func (x *StudySpec) GetAlgorithm() StudySpec_Algorithm {
   980  	if x != nil {
   981  		return x.Algorithm
   982  	}
   983  	return StudySpec_ALGORITHM_UNSPECIFIED
   984  }
   985  
   986  func (x *StudySpec) GetObservationNoise() StudySpec_ObservationNoise {
   987  	if x != nil {
   988  		return x.ObservationNoise
   989  	}
   990  	return StudySpec_OBSERVATION_NOISE_UNSPECIFIED
   991  }
   992  
   993  func (x *StudySpec) GetMeasurementSelectionType() StudySpec_MeasurementSelectionType {
   994  	if x != nil {
   995  		return x.MeasurementSelectionType
   996  	}
   997  	return StudySpec_MEASUREMENT_SELECTION_TYPE_UNSPECIFIED
   998  }
   999  
  1000  func (x *StudySpec) GetStudyStoppingConfig() *StudySpec_StudyStoppingConfig {
  1001  	if x != nil {
  1002  		return x.StudyStoppingConfig
  1003  	}
  1004  	return nil
  1005  }
  1006  
  1007  type isStudySpec_AutomatedStoppingSpec interface {
  1008  	isStudySpec_AutomatedStoppingSpec()
  1009  }
  1010  
  1011  type StudySpec_DecayCurveStoppingSpec struct {
  1012  	// The automated early stopping spec using decay curve rule.
  1013  	DecayCurveStoppingSpec *StudySpec_DecayCurveAutomatedStoppingSpec `protobuf:"bytes,4,opt,name=decay_curve_stopping_spec,json=decayCurveStoppingSpec,proto3,oneof"`
  1014  }
  1015  
  1016  type StudySpec_MedianAutomatedStoppingSpec_ struct {
  1017  	// The automated early stopping spec using median rule.
  1018  	MedianAutomatedStoppingSpec *StudySpec_MedianAutomatedStoppingSpec `protobuf:"bytes,5,opt,name=median_automated_stopping_spec,json=medianAutomatedStoppingSpec,proto3,oneof"`
  1019  }
  1020  
  1021  type StudySpec_ConvexAutomatedStoppingSpec_ struct {
  1022  	// The automated early stopping spec using convex stopping rule.
  1023  	ConvexAutomatedStoppingSpec *StudySpec_ConvexAutomatedStoppingSpec `protobuf:"bytes,9,opt,name=convex_automated_stopping_spec,json=convexAutomatedStoppingSpec,proto3,oneof"`
  1024  }
  1025  
  1026  func (*StudySpec_DecayCurveStoppingSpec) isStudySpec_AutomatedStoppingSpec() {}
  1027  
  1028  func (*StudySpec_MedianAutomatedStoppingSpec_) isStudySpec_AutomatedStoppingSpec() {}
  1029  
  1030  func (*StudySpec_ConvexAutomatedStoppingSpec_) isStudySpec_AutomatedStoppingSpec() {}
  1031  
  1032  // A message representing a Measurement of a Trial. A Measurement contains
  1033  // the Metrics got by executing a Trial using suggested hyperparameter
  1034  // values.
  1035  type Measurement struct {
  1036  	state         protoimpl.MessageState
  1037  	sizeCache     protoimpl.SizeCache
  1038  	unknownFields protoimpl.UnknownFields
  1039  
  1040  	// Output only. Time that the Trial has been running at the point of this
  1041  	// Measurement.
  1042  	ElapsedDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=elapsed_duration,json=elapsedDuration,proto3" json:"elapsed_duration,omitempty"`
  1043  	// Output only. The number of steps the machine learning model has been
  1044  	// trained for. Must be non-negative.
  1045  	StepCount int64 `protobuf:"varint,2,opt,name=step_count,json=stepCount,proto3" json:"step_count,omitempty"`
  1046  	// Output only. A list of metrics got by evaluating the objective functions
  1047  	// using suggested Parameter values.
  1048  	Metrics []*Measurement_Metric `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics,omitempty"`
  1049  }
  1050  
  1051  func (x *Measurement) Reset() {
  1052  	*x = Measurement{}
  1053  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[5]
  1054  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1055  	ms.StoreMessageInfo(mi)
  1056  }
  1057  
  1058  func (x *Measurement) String() string {
  1059  	return protoimpl.X.MessageStringOf(x)
  1060  }
  1061  
  1062  func (*Measurement) ProtoMessage() {}
  1063  
  1064  func (x *Measurement) ProtoReflect() protoreflect.Message {
  1065  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[5]
  1066  	if x != nil {
  1067  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1068  		if ms.LoadMessageInfo() == nil {
  1069  			ms.StoreMessageInfo(mi)
  1070  		}
  1071  		return ms
  1072  	}
  1073  	return mi.MessageOf(x)
  1074  }
  1075  
  1076  // Deprecated: Use Measurement.ProtoReflect.Descriptor instead.
  1077  func (*Measurement) Descriptor() ([]byte, []int) {
  1078  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{5}
  1079  }
  1080  
  1081  func (x *Measurement) GetElapsedDuration() *durationpb.Duration {
  1082  	if x != nil {
  1083  		return x.ElapsedDuration
  1084  	}
  1085  	return nil
  1086  }
  1087  
  1088  func (x *Measurement) GetStepCount() int64 {
  1089  	if x != nil {
  1090  		return x.StepCount
  1091  	}
  1092  	return 0
  1093  }
  1094  
  1095  func (x *Measurement) GetMetrics() []*Measurement_Metric {
  1096  	if x != nil {
  1097  		return x.Metrics
  1098  	}
  1099  	return nil
  1100  }
  1101  
  1102  // A message representing a parameter to be tuned.
  1103  type Trial_Parameter struct {
  1104  	state         protoimpl.MessageState
  1105  	sizeCache     protoimpl.SizeCache
  1106  	unknownFields protoimpl.UnknownFields
  1107  
  1108  	// Output only. The ID of the parameter. The parameter should be defined in
  1109  	// [StudySpec's
  1110  	// Parameters][google.cloud.aiplatform.v1.StudySpec.parameters].
  1111  	ParameterId string `protobuf:"bytes,1,opt,name=parameter_id,json=parameterId,proto3" json:"parameter_id,omitempty"`
  1112  	// Output only. The value of the parameter.
  1113  	// `number_value` will be set if a parameter defined in StudySpec is
  1114  	// in type 'INTEGER', 'DOUBLE' or 'DISCRETE'.
  1115  	// `string_value` will be set if a parameter defined in StudySpec is
  1116  	// in type 'CATEGORICAL'.
  1117  	Value *structpb.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
  1118  }
  1119  
  1120  func (x *Trial_Parameter) Reset() {
  1121  	*x = Trial_Parameter{}
  1122  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[6]
  1123  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1124  	ms.StoreMessageInfo(mi)
  1125  }
  1126  
  1127  func (x *Trial_Parameter) String() string {
  1128  	return protoimpl.X.MessageStringOf(x)
  1129  }
  1130  
  1131  func (*Trial_Parameter) ProtoMessage() {}
  1132  
  1133  func (x *Trial_Parameter) ProtoReflect() protoreflect.Message {
  1134  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[6]
  1135  	if x != nil {
  1136  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1137  		if ms.LoadMessageInfo() == nil {
  1138  			ms.StoreMessageInfo(mi)
  1139  		}
  1140  		return ms
  1141  	}
  1142  	return mi.MessageOf(x)
  1143  }
  1144  
  1145  // Deprecated: Use Trial_Parameter.ProtoReflect.Descriptor instead.
  1146  func (*Trial_Parameter) Descriptor() ([]byte, []int) {
  1147  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{1, 0}
  1148  }
  1149  
  1150  func (x *Trial_Parameter) GetParameterId() string {
  1151  	if x != nil {
  1152  		return x.ParameterId
  1153  	}
  1154  	return ""
  1155  }
  1156  
  1157  func (x *Trial_Parameter) GetValue() *structpb.Value {
  1158  	if x != nil {
  1159  		return x.Value
  1160  	}
  1161  	return nil
  1162  }
  1163  
  1164  // Represents a metric to optimize.
  1165  type StudySpec_MetricSpec struct {
  1166  	state         protoimpl.MessageState
  1167  	sizeCache     protoimpl.SizeCache
  1168  	unknownFields protoimpl.UnknownFields
  1169  
  1170  	// Required. The ID of the metric. Must not contain whitespaces and must be
  1171  	// unique amongst all MetricSpecs.
  1172  	MetricId string `protobuf:"bytes,1,opt,name=metric_id,json=metricId,proto3" json:"metric_id,omitempty"`
  1173  	// Required. The optimization goal of the metric.
  1174  	Goal StudySpec_MetricSpec_GoalType `protobuf:"varint,2,opt,name=goal,proto3,enum=google.cloud.aiplatform.v1.StudySpec_MetricSpec_GoalType" json:"goal,omitempty"`
  1175  	// Used for safe search. In the case, the metric will be a safety
  1176  	// metric. You must provide a separate metric for objective metric.
  1177  	SafetyConfig *StudySpec_MetricSpec_SafetyMetricConfig `protobuf:"bytes,3,opt,name=safety_config,json=safetyConfig,proto3,oneof" json:"safety_config,omitempty"`
  1178  }
  1179  
  1180  func (x *StudySpec_MetricSpec) Reset() {
  1181  	*x = StudySpec_MetricSpec{}
  1182  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[8]
  1183  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1184  	ms.StoreMessageInfo(mi)
  1185  }
  1186  
  1187  func (x *StudySpec_MetricSpec) String() string {
  1188  	return protoimpl.X.MessageStringOf(x)
  1189  }
  1190  
  1191  func (*StudySpec_MetricSpec) ProtoMessage() {}
  1192  
  1193  func (x *StudySpec_MetricSpec) ProtoReflect() protoreflect.Message {
  1194  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[8]
  1195  	if x != nil {
  1196  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1197  		if ms.LoadMessageInfo() == nil {
  1198  			ms.StoreMessageInfo(mi)
  1199  		}
  1200  		return ms
  1201  	}
  1202  	return mi.MessageOf(x)
  1203  }
  1204  
  1205  // Deprecated: Use StudySpec_MetricSpec.ProtoReflect.Descriptor instead.
  1206  func (*StudySpec_MetricSpec) Descriptor() ([]byte, []int) {
  1207  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 0}
  1208  }
  1209  
  1210  func (x *StudySpec_MetricSpec) GetMetricId() string {
  1211  	if x != nil {
  1212  		return x.MetricId
  1213  	}
  1214  	return ""
  1215  }
  1216  
  1217  func (x *StudySpec_MetricSpec) GetGoal() StudySpec_MetricSpec_GoalType {
  1218  	if x != nil {
  1219  		return x.Goal
  1220  	}
  1221  	return StudySpec_MetricSpec_GOAL_TYPE_UNSPECIFIED
  1222  }
  1223  
  1224  func (x *StudySpec_MetricSpec) GetSafetyConfig() *StudySpec_MetricSpec_SafetyMetricConfig {
  1225  	if x != nil {
  1226  		return x.SafetyConfig
  1227  	}
  1228  	return nil
  1229  }
  1230  
  1231  // Represents a single parameter to optimize.
  1232  type StudySpec_ParameterSpec struct {
  1233  	state         protoimpl.MessageState
  1234  	sizeCache     protoimpl.SizeCache
  1235  	unknownFields protoimpl.UnknownFields
  1236  
  1237  	// Types that are assignable to ParameterValueSpec:
  1238  	//
  1239  	//	*StudySpec_ParameterSpec_DoubleValueSpec_
  1240  	//	*StudySpec_ParameterSpec_IntegerValueSpec_
  1241  	//	*StudySpec_ParameterSpec_CategoricalValueSpec_
  1242  	//	*StudySpec_ParameterSpec_DiscreteValueSpec_
  1243  	ParameterValueSpec isStudySpec_ParameterSpec_ParameterValueSpec `protobuf_oneof:"parameter_value_spec"`
  1244  	// Required. The ID of the parameter. Must not contain whitespaces and must
  1245  	// be unique amongst all ParameterSpecs.
  1246  	ParameterId string `protobuf:"bytes,1,opt,name=parameter_id,json=parameterId,proto3" json:"parameter_id,omitempty"`
  1247  	// How the parameter should be scaled.
  1248  	// Leave unset for `CATEGORICAL` parameters.
  1249  	ScaleType StudySpec_ParameterSpec_ScaleType `protobuf:"varint,6,opt,name=scale_type,json=scaleType,proto3,enum=google.cloud.aiplatform.v1.StudySpec_ParameterSpec_ScaleType" json:"scale_type,omitempty"`
  1250  	// A conditional parameter node is active if the parameter's value matches
  1251  	// the conditional node's parent_value_condition.
  1252  	//
  1253  	// If two items in conditional_parameter_specs have the same name, they
  1254  	// must have disjoint parent_value_condition.
  1255  	ConditionalParameterSpecs []*StudySpec_ParameterSpec_ConditionalParameterSpec `protobuf:"bytes,10,rep,name=conditional_parameter_specs,json=conditionalParameterSpecs,proto3" json:"conditional_parameter_specs,omitempty"`
  1256  }
  1257  
  1258  func (x *StudySpec_ParameterSpec) Reset() {
  1259  	*x = StudySpec_ParameterSpec{}
  1260  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[9]
  1261  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1262  	ms.StoreMessageInfo(mi)
  1263  }
  1264  
  1265  func (x *StudySpec_ParameterSpec) String() string {
  1266  	return protoimpl.X.MessageStringOf(x)
  1267  }
  1268  
  1269  func (*StudySpec_ParameterSpec) ProtoMessage() {}
  1270  
  1271  func (x *StudySpec_ParameterSpec) ProtoReflect() protoreflect.Message {
  1272  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[9]
  1273  	if x != nil {
  1274  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1275  		if ms.LoadMessageInfo() == nil {
  1276  			ms.StoreMessageInfo(mi)
  1277  		}
  1278  		return ms
  1279  	}
  1280  	return mi.MessageOf(x)
  1281  }
  1282  
  1283  // Deprecated: Use StudySpec_ParameterSpec.ProtoReflect.Descriptor instead.
  1284  func (*StudySpec_ParameterSpec) Descriptor() ([]byte, []int) {
  1285  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1}
  1286  }
  1287  
  1288  func (m *StudySpec_ParameterSpec) GetParameterValueSpec() isStudySpec_ParameterSpec_ParameterValueSpec {
  1289  	if m != nil {
  1290  		return m.ParameterValueSpec
  1291  	}
  1292  	return nil
  1293  }
  1294  
  1295  func (x *StudySpec_ParameterSpec) GetDoubleValueSpec() *StudySpec_ParameterSpec_DoubleValueSpec {
  1296  	if x, ok := x.GetParameterValueSpec().(*StudySpec_ParameterSpec_DoubleValueSpec_); ok {
  1297  		return x.DoubleValueSpec
  1298  	}
  1299  	return nil
  1300  }
  1301  
  1302  func (x *StudySpec_ParameterSpec) GetIntegerValueSpec() *StudySpec_ParameterSpec_IntegerValueSpec {
  1303  	if x, ok := x.GetParameterValueSpec().(*StudySpec_ParameterSpec_IntegerValueSpec_); ok {
  1304  		return x.IntegerValueSpec
  1305  	}
  1306  	return nil
  1307  }
  1308  
  1309  func (x *StudySpec_ParameterSpec) GetCategoricalValueSpec() *StudySpec_ParameterSpec_CategoricalValueSpec {
  1310  	if x, ok := x.GetParameterValueSpec().(*StudySpec_ParameterSpec_CategoricalValueSpec_); ok {
  1311  		return x.CategoricalValueSpec
  1312  	}
  1313  	return nil
  1314  }
  1315  
  1316  func (x *StudySpec_ParameterSpec) GetDiscreteValueSpec() *StudySpec_ParameterSpec_DiscreteValueSpec {
  1317  	if x, ok := x.GetParameterValueSpec().(*StudySpec_ParameterSpec_DiscreteValueSpec_); ok {
  1318  		return x.DiscreteValueSpec
  1319  	}
  1320  	return nil
  1321  }
  1322  
  1323  func (x *StudySpec_ParameterSpec) GetParameterId() string {
  1324  	if x != nil {
  1325  		return x.ParameterId
  1326  	}
  1327  	return ""
  1328  }
  1329  
  1330  func (x *StudySpec_ParameterSpec) GetScaleType() StudySpec_ParameterSpec_ScaleType {
  1331  	if x != nil {
  1332  		return x.ScaleType
  1333  	}
  1334  	return StudySpec_ParameterSpec_SCALE_TYPE_UNSPECIFIED
  1335  }
  1336  
  1337  func (x *StudySpec_ParameterSpec) GetConditionalParameterSpecs() []*StudySpec_ParameterSpec_ConditionalParameterSpec {
  1338  	if x != nil {
  1339  		return x.ConditionalParameterSpecs
  1340  	}
  1341  	return nil
  1342  }
  1343  
  1344  type isStudySpec_ParameterSpec_ParameterValueSpec interface {
  1345  	isStudySpec_ParameterSpec_ParameterValueSpec()
  1346  }
  1347  
  1348  type StudySpec_ParameterSpec_DoubleValueSpec_ struct {
  1349  	// The value spec for a 'DOUBLE' parameter.
  1350  	DoubleValueSpec *StudySpec_ParameterSpec_DoubleValueSpec `protobuf:"bytes,2,opt,name=double_value_spec,json=doubleValueSpec,proto3,oneof"`
  1351  }
  1352  
  1353  type StudySpec_ParameterSpec_IntegerValueSpec_ struct {
  1354  	// The value spec for an 'INTEGER' parameter.
  1355  	IntegerValueSpec *StudySpec_ParameterSpec_IntegerValueSpec `protobuf:"bytes,3,opt,name=integer_value_spec,json=integerValueSpec,proto3,oneof"`
  1356  }
  1357  
  1358  type StudySpec_ParameterSpec_CategoricalValueSpec_ struct {
  1359  	// The value spec for a 'CATEGORICAL' parameter.
  1360  	CategoricalValueSpec *StudySpec_ParameterSpec_CategoricalValueSpec `protobuf:"bytes,4,opt,name=categorical_value_spec,json=categoricalValueSpec,proto3,oneof"`
  1361  }
  1362  
  1363  type StudySpec_ParameterSpec_DiscreteValueSpec_ struct {
  1364  	// The value spec for a 'DISCRETE' parameter.
  1365  	DiscreteValueSpec *StudySpec_ParameterSpec_DiscreteValueSpec `protobuf:"bytes,5,opt,name=discrete_value_spec,json=discreteValueSpec,proto3,oneof"`
  1366  }
  1367  
  1368  func (*StudySpec_ParameterSpec_DoubleValueSpec_) isStudySpec_ParameterSpec_ParameterValueSpec() {}
  1369  
  1370  func (*StudySpec_ParameterSpec_IntegerValueSpec_) isStudySpec_ParameterSpec_ParameterValueSpec() {}
  1371  
  1372  func (*StudySpec_ParameterSpec_CategoricalValueSpec_) isStudySpec_ParameterSpec_ParameterValueSpec() {
  1373  }
  1374  
  1375  func (*StudySpec_ParameterSpec_DiscreteValueSpec_) isStudySpec_ParameterSpec_ParameterValueSpec() {}
  1376  
  1377  // The decay curve automated stopping rule builds a Gaussian Process
  1378  // Regressor to predict the final objective value of a Trial based on the
  1379  // already completed Trials and the intermediate measurements of the current
  1380  // Trial. Early stopping is requested for the current Trial if there is very
  1381  // low probability to exceed the optimal value found so far.
  1382  type StudySpec_DecayCurveAutomatedStoppingSpec struct {
  1383  	state         protoimpl.MessageState
  1384  	sizeCache     protoimpl.SizeCache
  1385  	unknownFields protoimpl.UnknownFields
  1386  
  1387  	// True if
  1388  	// [Measurement.elapsed_duration][google.cloud.aiplatform.v1.Measurement.elapsed_duration]
  1389  	// is used as the x-axis of each Trials Decay Curve. Otherwise,
  1390  	// [Measurement.step_count][google.cloud.aiplatform.v1.Measurement.step_count]
  1391  	// will be used as the x-axis.
  1392  	UseElapsedDuration bool `protobuf:"varint,1,opt,name=use_elapsed_duration,json=useElapsedDuration,proto3" json:"use_elapsed_duration,omitempty"`
  1393  }
  1394  
  1395  func (x *StudySpec_DecayCurveAutomatedStoppingSpec) Reset() {
  1396  	*x = StudySpec_DecayCurveAutomatedStoppingSpec{}
  1397  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[10]
  1398  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1399  	ms.StoreMessageInfo(mi)
  1400  }
  1401  
  1402  func (x *StudySpec_DecayCurveAutomatedStoppingSpec) String() string {
  1403  	return protoimpl.X.MessageStringOf(x)
  1404  }
  1405  
  1406  func (*StudySpec_DecayCurveAutomatedStoppingSpec) ProtoMessage() {}
  1407  
  1408  func (x *StudySpec_DecayCurveAutomatedStoppingSpec) ProtoReflect() protoreflect.Message {
  1409  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[10]
  1410  	if x != nil {
  1411  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1412  		if ms.LoadMessageInfo() == nil {
  1413  			ms.StoreMessageInfo(mi)
  1414  		}
  1415  		return ms
  1416  	}
  1417  	return mi.MessageOf(x)
  1418  }
  1419  
  1420  // Deprecated: Use StudySpec_DecayCurveAutomatedStoppingSpec.ProtoReflect.Descriptor instead.
  1421  func (*StudySpec_DecayCurveAutomatedStoppingSpec) Descriptor() ([]byte, []int) {
  1422  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 2}
  1423  }
  1424  
  1425  func (x *StudySpec_DecayCurveAutomatedStoppingSpec) GetUseElapsedDuration() bool {
  1426  	if x != nil {
  1427  		return x.UseElapsedDuration
  1428  	}
  1429  	return false
  1430  }
  1431  
  1432  // The median automated stopping rule stops a pending Trial if the Trial's
  1433  // best objective_value is strictly below the median 'performance' of all
  1434  // completed Trials reported up to the Trial's last measurement.
  1435  // Currently, 'performance' refers to the running average of the objective
  1436  // values reported by the Trial in each measurement.
  1437  type StudySpec_MedianAutomatedStoppingSpec struct {
  1438  	state         protoimpl.MessageState
  1439  	sizeCache     protoimpl.SizeCache
  1440  	unknownFields protoimpl.UnknownFields
  1441  
  1442  	// True if median automated stopping rule applies on
  1443  	// [Measurement.elapsed_duration][google.cloud.aiplatform.v1.Measurement.elapsed_duration].
  1444  	// It means that elapsed_duration field of latest measurement of current
  1445  	// Trial is used to compute median objective value for each completed
  1446  	// Trials.
  1447  	UseElapsedDuration bool `protobuf:"varint,1,opt,name=use_elapsed_duration,json=useElapsedDuration,proto3" json:"use_elapsed_duration,omitempty"`
  1448  }
  1449  
  1450  func (x *StudySpec_MedianAutomatedStoppingSpec) Reset() {
  1451  	*x = StudySpec_MedianAutomatedStoppingSpec{}
  1452  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[11]
  1453  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1454  	ms.StoreMessageInfo(mi)
  1455  }
  1456  
  1457  func (x *StudySpec_MedianAutomatedStoppingSpec) String() string {
  1458  	return protoimpl.X.MessageStringOf(x)
  1459  }
  1460  
  1461  func (*StudySpec_MedianAutomatedStoppingSpec) ProtoMessage() {}
  1462  
  1463  func (x *StudySpec_MedianAutomatedStoppingSpec) ProtoReflect() protoreflect.Message {
  1464  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[11]
  1465  	if x != nil {
  1466  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1467  		if ms.LoadMessageInfo() == nil {
  1468  			ms.StoreMessageInfo(mi)
  1469  		}
  1470  		return ms
  1471  	}
  1472  	return mi.MessageOf(x)
  1473  }
  1474  
  1475  // Deprecated: Use StudySpec_MedianAutomatedStoppingSpec.ProtoReflect.Descriptor instead.
  1476  func (*StudySpec_MedianAutomatedStoppingSpec) Descriptor() ([]byte, []int) {
  1477  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 3}
  1478  }
  1479  
  1480  func (x *StudySpec_MedianAutomatedStoppingSpec) GetUseElapsedDuration() bool {
  1481  	if x != nil {
  1482  		return x.UseElapsedDuration
  1483  	}
  1484  	return false
  1485  }
  1486  
  1487  // Configuration for ConvexAutomatedStoppingSpec.
  1488  // When there are enough completed trials (configured by
  1489  // min_measurement_count), for pending trials with enough measurements and
  1490  // steps, the policy first computes an overestimate of the objective value at
  1491  // max_num_steps according to the slope of the incomplete objective value
  1492  // curve. No prediction can be made if the curve is completely flat. If the
  1493  // overestimation is worse than the best objective value of the completed
  1494  // trials, this pending trial will be early-stopped, but a last measurement
  1495  // will be added to the pending trial with max_num_steps and predicted
  1496  // objective value from the autoregression model.
  1497  type StudySpec_ConvexAutomatedStoppingSpec struct {
  1498  	state         protoimpl.MessageState
  1499  	sizeCache     protoimpl.SizeCache
  1500  	unknownFields protoimpl.UnknownFields
  1501  
  1502  	// Steps used in predicting the final objective for early stopped trials. In
  1503  	// general, it's set to be the same as the defined steps in training /
  1504  	// tuning. If not defined, it will learn it from the completed trials. When
  1505  	// use_steps is false, this field is set to the maximum elapsed seconds.
  1506  	MaxStepCount int64 `protobuf:"varint,1,opt,name=max_step_count,json=maxStepCount,proto3" json:"max_step_count,omitempty"`
  1507  	// Minimum number of steps for a trial to complete. Trials which do not have
  1508  	// a measurement with step_count > min_step_count won't be considered for
  1509  	// early stopping. It's ok to set it to 0, and a trial can be early stopped
  1510  	// at any stage. By default, min_step_count is set to be one-tenth of the
  1511  	// max_step_count.
  1512  	// When use_elapsed_duration is true, this field is set to the minimum
  1513  	// elapsed seconds.
  1514  	MinStepCount int64 `protobuf:"varint,2,opt,name=min_step_count,json=minStepCount,proto3" json:"min_step_count,omitempty"`
  1515  	// The minimal number of measurements in a Trial.  Early-stopping checks
  1516  	// will not trigger if less than min_measurement_count+1 completed trials or
  1517  	// pending trials with less than min_measurement_count measurements. If not
  1518  	// defined, the default value is 5.
  1519  	MinMeasurementCount int64 `protobuf:"varint,3,opt,name=min_measurement_count,json=minMeasurementCount,proto3" json:"min_measurement_count,omitempty"`
  1520  	// The hyper-parameter name used in the tuning job that stands for learning
  1521  	// rate. Leave it blank if learning rate is not in a parameter in tuning.
  1522  	// The learning_rate is used to estimate the objective value of the ongoing
  1523  	// trial.
  1524  	LearningRateParameterName string `protobuf:"bytes,4,opt,name=learning_rate_parameter_name,json=learningRateParameterName,proto3" json:"learning_rate_parameter_name,omitempty"`
  1525  	// This bool determines whether or not the rule is applied based on
  1526  	// elapsed_secs or steps. If use_elapsed_duration==false, the early stopping
  1527  	// decision is made according to the predicted objective values according to
  1528  	// the target steps. If use_elapsed_duration==true, elapsed_secs is used
  1529  	// instead of steps. Also, in this case, the parameters max_num_steps and
  1530  	// min_num_steps are overloaded to contain max_elapsed_seconds and
  1531  	// min_elapsed_seconds.
  1532  	UseElapsedDuration bool `protobuf:"varint,5,opt,name=use_elapsed_duration,json=useElapsedDuration,proto3" json:"use_elapsed_duration,omitempty"`
  1533  	// ConvexAutomatedStoppingSpec by default only updates the trials that needs
  1534  	// to be early stopped using a newly trained auto-regressive model. When
  1535  	// this flag is set to True, all stopped trials from the beginning are
  1536  	// potentially updated in terms of their `final_measurement`. Also, note
  1537  	// that the training logic of autoregressive models is different in this
  1538  	// case. Enabling this option has shown better results and this may be the
  1539  	// default option in the future.
  1540  	UpdateAllStoppedTrials *bool `protobuf:"varint,6,opt,name=update_all_stopped_trials,json=updateAllStoppedTrials,proto3,oneof" json:"update_all_stopped_trials,omitempty"`
  1541  }
  1542  
  1543  func (x *StudySpec_ConvexAutomatedStoppingSpec) Reset() {
  1544  	*x = StudySpec_ConvexAutomatedStoppingSpec{}
  1545  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[12]
  1546  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1547  	ms.StoreMessageInfo(mi)
  1548  }
  1549  
  1550  func (x *StudySpec_ConvexAutomatedStoppingSpec) String() string {
  1551  	return protoimpl.X.MessageStringOf(x)
  1552  }
  1553  
  1554  func (*StudySpec_ConvexAutomatedStoppingSpec) ProtoMessage() {}
  1555  
  1556  func (x *StudySpec_ConvexAutomatedStoppingSpec) ProtoReflect() protoreflect.Message {
  1557  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[12]
  1558  	if x != nil {
  1559  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1560  		if ms.LoadMessageInfo() == nil {
  1561  			ms.StoreMessageInfo(mi)
  1562  		}
  1563  		return ms
  1564  	}
  1565  	return mi.MessageOf(x)
  1566  }
  1567  
  1568  // Deprecated: Use StudySpec_ConvexAutomatedStoppingSpec.ProtoReflect.Descriptor instead.
  1569  func (*StudySpec_ConvexAutomatedStoppingSpec) Descriptor() ([]byte, []int) {
  1570  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 4}
  1571  }
  1572  
  1573  func (x *StudySpec_ConvexAutomatedStoppingSpec) GetMaxStepCount() int64 {
  1574  	if x != nil {
  1575  		return x.MaxStepCount
  1576  	}
  1577  	return 0
  1578  }
  1579  
  1580  func (x *StudySpec_ConvexAutomatedStoppingSpec) GetMinStepCount() int64 {
  1581  	if x != nil {
  1582  		return x.MinStepCount
  1583  	}
  1584  	return 0
  1585  }
  1586  
  1587  func (x *StudySpec_ConvexAutomatedStoppingSpec) GetMinMeasurementCount() int64 {
  1588  	if x != nil {
  1589  		return x.MinMeasurementCount
  1590  	}
  1591  	return 0
  1592  }
  1593  
  1594  func (x *StudySpec_ConvexAutomatedStoppingSpec) GetLearningRateParameterName() string {
  1595  	if x != nil {
  1596  		return x.LearningRateParameterName
  1597  	}
  1598  	return ""
  1599  }
  1600  
  1601  func (x *StudySpec_ConvexAutomatedStoppingSpec) GetUseElapsedDuration() bool {
  1602  	if x != nil {
  1603  		return x.UseElapsedDuration
  1604  	}
  1605  	return false
  1606  }
  1607  
  1608  func (x *StudySpec_ConvexAutomatedStoppingSpec) GetUpdateAllStoppedTrials() bool {
  1609  	if x != nil && x.UpdateAllStoppedTrials != nil {
  1610  		return *x.UpdateAllStoppedTrials
  1611  	}
  1612  	return false
  1613  }
  1614  
  1615  // The configuration (stopping conditions) for automated stopping of a Study.
  1616  // Conditions include trial budgets, time budgets, and convergence detection.
  1617  type StudySpec_StudyStoppingConfig struct {
  1618  	state         protoimpl.MessageState
  1619  	sizeCache     protoimpl.SizeCache
  1620  	unknownFields protoimpl.UnknownFields
  1621  
  1622  	// If true, a Study enters STOPPING_ASAP whenever it would normally enters
  1623  	// STOPPING state.
  1624  	//
  1625  	// The bottom line is: set to true if you want to interrupt on-going
  1626  	// evaluations of Trials as soon as the study stopping condition is met.
  1627  	// (Please see Study.State documentation for the source of truth).
  1628  	ShouldStopAsap *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=should_stop_asap,json=shouldStopAsap,proto3" json:"should_stop_asap,omitempty"`
  1629  	// Each "stopping rule" in this proto specifies an "if" condition. Before
  1630  	// Vizier would generate a new suggestion, it first checks each specified
  1631  	// stopping rule, from top to bottom in this list.
  1632  	// Note that the first few rules (e.g. minimum_runtime_constraint,
  1633  	// min_num_trials) will prevent other stopping rules from being evaluated
  1634  	// until they are met. For example, setting `min_num_trials=5` and
  1635  	// `always_stop_after= 1 hour` means that the Study will ONLY stop after it
  1636  	// has 5 COMPLETED trials, even if more than an hour has passed since its
  1637  	// creation. It follows the first applicable rule (whose "if" condition is
  1638  	// satisfied) to make a stopping decision. If none of the specified rules
  1639  	// are applicable, then Vizier decides that the study should not stop.
  1640  	// If Vizier decides that the study should stop, the study enters
  1641  	// STOPPING state (or STOPPING_ASAP if should_stop_asap = true).
  1642  	// IMPORTANT: The automatic study state transition happens precisely as
  1643  	// described above; that is, deleting trials or updating StudyConfig NEVER
  1644  	// automatically moves the study state back to ACTIVE. If you want to
  1645  	// _resume_ a Study that was stopped, 1) change the stopping conditions if
  1646  	// necessary, 2) activate the study, and then 3) ask for suggestions.
  1647  	// If the specified time or duration has not passed, do not stop the
  1648  	// study.
  1649  	MinimumRuntimeConstraint *StudyTimeConstraint `protobuf:"bytes,2,opt,name=minimum_runtime_constraint,json=minimumRuntimeConstraint,proto3" json:"minimum_runtime_constraint,omitempty"`
  1650  	// If the specified time or duration has passed, stop the study.
  1651  	MaximumRuntimeConstraint *StudyTimeConstraint `protobuf:"bytes,3,opt,name=maximum_runtime_constraint,json=maximumRuntimeConstraint,proto3" json:"maximum_runtime_constraint,omitempty"`
  1652  	// If there are fewer than this many COMPLETED trials, do not stop the
  1653  	// study.
  1654  	MinNumTrials *wrapperspb.Int32Value `protobuf:"bytes,4,opt,name=min_num_trials,json=minNumTrials,proto3" json:"min_num_trials,omitempty"`
  1655  	// If there are more than this many trials, stop the study.
  1656  	MaxNumTrials *wrapperspb.Int32Value `protobuf:"bytes,5,opt,name=max_num_trials,json=maxNumTrials,proto3" json:"max_num_trials,omitempty"`
  1657  	// If the objective value has not improved for this many consecutive
  1658  	// trials, stop the study.
  1659  	//
  1660  	// WARNING: Effective only for single-objective studies.
  1661  	MaxNumTrialsNoProgress *wrapperspb.Int32Value `protobuf:"bytes,6,opt,name=max_num_trials_no_progress,json=maxNumTrialsNoProgress,proto3" json:"max_num_trials_no_progress,omitempty"`
  1662  	// If the objective value has not improved for this much time, stop the
  1663  	// study.
  1664  	//
  1665  	// WARNING: Effective only for single-objective studies.
  1666  	MaxDurationNoProgress *durationpb.Duration `protobuf:"bytes,7,opt,name=max_duration_no_progress,json=maxDurationNoProgress,proto3" json:"max_duration_no_progress,omitempty"`
  1667  }
  1668  
  1669  func (x *StudySpec_StudyStoppingConfig) Reset() {
  1670  	*x = StudySpec_StudyStoppingConfig{}
  1671  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[13]
  1672  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1673  	ms.StoreMessageInfo(mi)
  1674  }
  1675  
  1676  func (x *StudySpec_StudyStoppingConfig) String() string {
  1677  	return protoimpl.X.MessageStringOf(x)
  1678  }
  1679  
  1680  func (*StudySpec_StudyStoppingConfig) ProtoMessage() {}
  1681  
  1682  func (x *StudySpec_StudyStoppingConfig) ProtoReflect() protoreflect.Message {
  1683  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[13]
  1684  	if x != nil {
  1685  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1686  		if ms.LoadMessageInfo() == nil {
  1687  			ms.StoreMessageInfo(mi)
  1688  		}
  1689  		return ms
  1690  	}
  1691  	return mi.MessageOf(x)
  1692  }
  1693  
  1694  // Deprecated: Use StudySpec_StudyStoppingConfig.ProtoReflect.Descriptor instead.
  1695  func (*StudySpec_StudyStoppingConfig) Descriptor() ([]byte, []int) {
  1696  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 5}
  1697  }
  1698  
  1699  func (x *StudySpec_StudyStoppingConfig) GetShouldStopAsap() *wrapperspb.BoolValue {
  1700  	if x != nil {
  1701  		return x.ShouldStopAsap
  1702  	}
  1703  	return nil
  1704  }
  1705  
  1706  func (x *StudySpec_StudyStoppingConfig) GetMinimumRuntimeConstraint() *StudyTimeConstraint {
  1707  	if x != nil {
  1708  		return x.MinimumRuntimeConstraint
  1709  	}
  1710  	return nil
  1711  }
  1712  
  1713  func (x *StudySpec_StudyStoppingConfig) GetMaximumRuntimeConstraint() *StudyTimeConstraint {
  1714  	if x != nil {
  1715  		return x.MaximumRuntimeConstraint
  1716  	}
  1717  	return nil
  1718  }
  1719  
  1720  func (x *StudySpec_StudyStoppingConfig) GetMinNumTrials() *wrapperspb.Int32Value {
  1721  	if x != nil {
  1722  		return x.MinNumTrials
  1723  	}
  1724  	return nil
  1725  }
  1726  
  1727  func (x *StudySpec_StudyStoppingConfig) GetMaxNumTrials() *wrapperspb.Int32Value {
  1728  	if x != nil {
  1729  		return x.MaxNumTrials
  1730  	}
  1731  	return nil
  1732  }
  1733  
  1734  func (x *StudySpec_StudyStoppingConfig) GetMaxNumTrialsNoProgress() *wrapperspb.Int32Value {
  1735  	if x != nil {
  1736  		return x.MaxNumTrialsNoProgress
  1737  	}
  1738  	return nil
  1739  }
  1740  
  1741  func (x *StudySpec_StudyStoppingConfig) GetMaxDurationNoProgress() *durationpb.Duration {
  1742  	if x != nil {
  1743  		return x.MaxDurationNoProgress
  1744  	}
  1745  	return nil
  1746  }
  1747  
  1748  // Used in safe optimization to specify threshold levels and risk tolerance.
  1749  type StudySpec_MetricSpec_SafetyMetricConfig struct {
  1750  	state         protoimpl.MessageState
  1751  	sizeCache     protoimpl.SizeCache
  1752  	unknownFields protoimpl.UnknownFields
  1753  
  1754  	// Safety threshold (boundary value between safe and unsafe). NOTE that if
  1755  	// you leave SafetyMetricConfig unset, a default value of 0 will be used.
  1756  	SafetyThreshold float64 `protobuf:"fixed64,1,opt,name=safety_threshold,json=safetyThreshold,proto3" json:"safety_threshold,omitempty"`
  1757  	// Desired minimum fraction of safe trials (over total number of trials)
  1758  	// that should be targeted by the algorithm at any time during the
  1759  	// study (best effort). This should be between 0.0 and 1.0 and a value of
  1760  	// 0.0 means that there is no minimum and an algorithm proceeds without
  1761  	// targeting any specific fraction. A value of 1.0 means that the
  1762  	// algorithm attempts to only Suggest safe Trials.
  1763  	DesiredMinSafeTrialsFraction *float64 `protobuf:"fixed64,2,opt,name=desired_min_safe_trials_fraction,json=desiredMinSafeTrialsFraction,proto3,oneof" json:"desired_min_safe_trials_fraction,omitempty"`
  1764  }
  1765  
  1766  func (x *StudySpec_MetricSpec_SafetyMetricConfig) Reset() {
  1767  	*x = StudySpec_MetricSpec_SafetyMetricConfig{}
  1768  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[14]
  1769  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1770  	ms.StoreMessageInfo(mi)
  1771  }
  1772  
  1773  func (x *StudySpec_MetricSpec_SafetyMetricConfig) String() string {
  1774  	return protoimpl.X.MessageStringOf(x)
  1775  }
  1776  
  1777  func (*StudySpec_MetricSpec_SafetyMetricConfig) ProtoMessage() {}
  1778  
  1779  func (x *StudySpec_MetricSpec_SafetyMetricConfig) ProtoReflect() protoreflect.Message {
  1780  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[14]
  1781  	if x != nil {
  1782  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1783  		if ms.LoadMessageInfo() == nil {
  1784  			ms.StoreMessageInfo(mi)
  1785  		}
  1786  		return ms
  1787  	}
  1788  	return mi.MessageOf(x)
  1789  }
  1790  
  1791  // Deprecated: Use StudySpec_MetricSpec_SafetyMetricConfig.ProtoReflect.Descriptor instead.
  1792  func (*StudySpec_MetricSpec_SafetyMetricConfig) Descriptor() ([]byte, []int) {
  1793  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 0, 0}
  1794  }
  1795  
  1796  func (x *StudySpec_MetricSpec_SafetyMetricConfig) GetSafetyThreshold() float64 {
  1797  	if x != nil {
  1798  		return x.SafetyThreshold
  1799  	}
  1800  	return 0
  1801  }
  1802  
  1803  func (x *StudySpec_MetricSpec_SafetyMetricConfig) GetDesiredMinSafeTrialsFraction() float64 {
  1804  	if x != nil && x.DesiredMinSafeTrialsFraction != nil {
  1805  		return *x.DesiredMinSafeTrialsFraction
  1806  	}
  1807  	return 0
  1808  }
  1809  
  1810  // Value specification for a parameter in `DOUBLE` type.
  1811  type StudySpec_ParameterSpec_DoubleValueSpec struct {
  1812  	state         protoimpl.MessageState
  1813  	sizeCache     protoimpl.SizeCache
  1814  	unknownFields protoimpl.UnknownFields
  1815  
  1816  	// Required. Inclusive minimum value of the parameter.
  1817  	MinValue float64 `protobuf:"fixed64,1,opt,name=min_value,json=minValue,proto3" json:"min_value,omitempty"`
  1818  	// Required. Inclusive maximum value of the parameter.
  1819  	MaxValue float64 `protobuf:"fixed64,2,opt,name=max_value,json=maxValue,proto3" json:"max_value,omitempty"`
  1820  	// A default value for a `DOUBLE` parameter that is assumed to be a
  1821  	// relatively good starting point.  Unset value signals that there is no
  1822  	// offered starting point.
  1823  	//
  1824  	// Currently only supported by the Vertex AI Vizier service. Not supported
  1825  	// by HyperparameterTuningJob or TrainingPipeline.
  1826  	DefaultValue *float64 `protobuf:"fixed64,4,opt,name=default_value,json=defaultValue,proto3,oneof" json:"default_value,omitempty"`
  1827  }
  1828  
  1829  func (x *StudySpec_ParameterSpec_DoubleValueSpec) Reset() {
  1830  	*x = StudySpec_ParameterSpec_DoubleValueSpec{}
  1831  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[15]
  1832  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1833  	ms.StoreMessageInfo(mi)
  1834  }
  1835  
  1836  func (x *StudySpec_ParameterSpec_DoubleValueSpec) String() string {
  1837  	return protoimpl.X.MessageStringOf(x)
  1838  }
  1839  
  1840  func (*StudySpec_ParameterSpec_DoubleValueSpec) ProtoMessage() {}
  1841  
  1842  func (x *StudySpec_ParameterSpec_DoubleValueSpec) ProtoReflect() protoreflect.Message {
  1843  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[15]
  1844  	if x != nil {
  1845  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1846  		if ms.LoadMessageInfo() == nil {
  1847  			ms.StoreMessageInfo(mi)
  1848  		}
  1849  		return ms
  1850  	}
  1851  	return mi.MessageOf(x)
  1852  }
  1853  
  1854  // Deprecated: Use StudySpec_ParameterSpec_DoubleValueSpec.ProtoReflect.Descriptor instead.
  1855  func (*StudySpec_ParameterSpec_DoubleValueSpec) Descriptor() ([]byte, []int) {
  1856  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 0}
  1857  }
  1858  
  1859  func (x *StudySpec_ParameterSpec_DoubleValueSpec) GetMinValue() float64 {
  1860  	if x != nil {
  1861  		return x.MinValue
  1862  	}
  1863  	return 0
  1864  }
  1865  
  1866  func (x *StudySpec_ParameterSpec_DoubleValueSpec) GetMaxValue() float64 {
  1867  	if x != nil {
  1868  		return x.MaxValue
  1869  	}
  1870  	return 0
  1871  }
  1872  
  1873  func (x *StudySpec_ParameterSpec_DoubleValueSpec) GetDefaultValue() float64 {
  1874  	if x != nil && x.DefaultValue != nil {
  1875  		return *x.DefaultValue
  1876  	}
  1877  	return 0
  1878  }
  1879  
  1880  // Value specification for a parameter in `INTEGER` type.
  1881  type StudySpec_ParameterSpec_IntegerValueSpec struct {
  1882  	state         protoimpl.MessageState
  1883  	sizeCache     protoimpl.SizeCache
  1884  	unknownFields protoimpl.UnknownFields
  1885  
  1886  	// Required. Inclusive minimum value of the parameter.
  1887  	MinValue int64 `protobuf:"varint,1,opt,name=min_value,json=minValue,proto3" json:"min_value,omitempty"`
  1888  	// Required. Inclusive maximum value of the parameter.
  1889  	MaxValue int64 `protobuf:"varint,2,opt,name=max_value,json=maxValue,proto3" json:"max_value,omitempty"`
  1890  	// A default value for an `INTEGER` parameter that is assumed to be a
  1891  	// relatively good starting point.  Unset value signals that there is no
  1892  	// offered starting point.
  1893  	//
  1894  	// Currently only supported by the Vertex AI Vizier service. Not supported
  1895  	// by HyperparameterTuningJob or TrainingPipeline.
  1896  	DefaultValue *int64 `protobuf:"varint,4,opt,name=default_value,json=defaultValue,proto3,oneof" json:"default_value,omitempty"`
  1897  }
  1898  
  1899  func (x *StudySpec_ParameterSpec_IntegerValueSpec) Reset() {
  1900  	*x = StudySpec_ParameterSpec_IntegerValueSpec{}
  1901  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[16]
  1902  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1903  	ms.StoreMessageInfo(mi)
  1904  }
  1905  
  1906  func (x *StudySpec_ParameterSpec_IntegerValueSpec) String() string {
  1907  	return protoimpl.X.MessageStringOf(x)
  1908  }
  1909  
  1910  func (*StudySpec_ParameterSpec_IntegerValueSpec) ProtoMessage() {}
  1911  
  1912  func (x *StudySpec_ParameterSpec_IntegerValueSpec) ProtoReflect() protoreflect.Message {
  1913  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[16]
  1914  	if x != nil {
  1915  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1916  		if ms.LoadMessageInfo() == nil {
  1917  			ms.StoreMessageInfo(mi)
  1918  		}
  1919  		return ms
  1920  	}
  1921  	return mi.MessageOf(x)
  1922  }
  1923  
  1924  // Deprecated: Use StudySpec_ParameterSpec_IntegerValueSpec.ProtoReflect.Descriptor instead.
  1925  func (*StudySpec_ParameterSpec_IntegerValueSpec) Descriptor() ([]byte, []int) {
  1926  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 1}
  1927  }
  1928  
  1929  func (x *StudySpec_ParameterSpec_IntegerValueSpec) GetMinValue() int64 {
  1930  	if x != nil {
  1931  		return x.MinValue
  1932  	}
  1933  	return 0
  1934  }
  1935  
  1936  func (x *StudySpec_ParameterSpec_IntegerValueSpec) GetMaxValue() int64 {
  1937  	if x != nil {
  1938  		return x.MaxValue
  1939  	}
  1940  	return 0
  1941  }
  1942  
  1943  func (x *StudySpec_ParameterSpec_IntegerValueSpec) GetDefaultValue() int64 {
  1944  	if x != nil && x.DefaultValue != nil {
  1945  		return *x.DefaultValue
  1946  	}
  1947  	return 0
  1948  }
  1949  
  1950  // Value specification for a parameter in `CATEGORICAL` type.
  1951  type StudySpec_ParameterSpec_CategoricalValueSpec struct {
  1952  	state         protoimpl.MessageState
  1953  	sizeCache     protoimpl.SizeCache
  1954  	unknownFields protoimpl.UnknownFields
  1955  
  1956  	// Required. The list of possible categories.
  1957  	Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
  1958  	// A default value for a `CATEGORICAL` parameter that is assumed to be a
  1959  	// relatively good starting point.  Unset value signals that there is no
  1960  	// offered starting point.
  1961  	//
  1962  	// Currently only supported by the Vertex AI Vizier service. Not supported
  1963  	// by HyperparameterTuningJob or TrainingPipeline.
  1964  	DefaultValue *string `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3,oneof" json:"default_value,omitempty"`
  1965  }
  1966  
  1967  func (x *StudySpec_ParameterSpec_CategoricalValueSpec) Reset() {
  1968  	*x = StudySpec_ParameterSpec_CategoricalValueSpec{}
  1969  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[17]
  1970  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1971  	ms.StoreMessageInfo(mi)
  1972  }
  1973  
  1974  func (x *StudySpec_ParameterSpec_CategoricalValueSpec) String() string {
  1975  	return protoimpl.X.MessageStringOf(x)
  1976  }
  1977  
  1978  func (*StudySpec_ParameterSpec_CategoricalValueSpec) ProtoMessage() {}
  1979  
  1980  func (x *StudySpec_ParameterSpec_CategoricalValueSpec) ProtoReflect() protoreflect.Message {
  1981  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[17]
  1982  	if x != nil {
  1983  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1984  		if ms.LoadMessageInfo() == nil {
  1985  			ms.StoreMessageInfo(mi)
  1986  		}
  1987  		return ms
  1988  	}
  1989  	return mi.MessageOf(x)
  1990  }
  1991  
  1992  // Deprecated: Use StudySpec_ParameterSpec_CategoricalValueSpec.ProtoReflect.Descriptor instead.
  1993  func (*StudySpec_ParameterSpec_CategoricalValueSpec) Descriptor() ([]byte, []int) {
  1994  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 2}
  1995  }
  1996  
  1997  func (x *StudySpec_ParameterSpec_CategoricalValueSpec) GetValues() []string {
  1998  	if x != nil {
  1999  		return x.Values
  2000  	}
  2001  	return nil
  2002  }
  2003  
  2004  func (x *StudySpec_ParameterSpec_CategoricalValueSpec) GetDefaultValue() string {
  2005  	if x != nil && x.DefaultValue != nil {
  2006  		return *x.DefaultValue
  2007  	}
  2008  	return ""
  2009  }
  2010  
  2011  // Value specification for a parameter in `DISCRETE` type.
  2012  type StudySpec_ParameterSpec_DiscreteValueSpec struct {
  2013  	state         protoimpl.MessageState
  2014  	sizeCache     protoimpl.SizeCache
  2015  	unknownFields protoimpl.UnknownFields
  2016  
  2017  	// Required. A list of possible values.
  2018  	// The list should be in increasing order and at least 1e-10 apart.
  2019  	// For instance, this parameter might have possible settings of 1.5, 2.5,
  2020  	// and 4.0. This list should not contain more than 1,000 values.
  2021  	Values []float64 `protobuf:"fixed64,1,rep,packed,name=values,proto3" json:"values,omitempty"`
  2022  	// A default value for a `DISCRETE` parameter that is assumed to be a
  2023  	// relatively good starting point.  Unset value signals that there is no
  2024  	// offered starting point.  It automatically rounds to the
  2025  	// nearest feasible discrete point.
  2026  	//
  2027  	// Currently only supported by the Vertex AI Vizier service. Not supported
  2028  	// by HyperparameterTuningJob or TrainingPipeline.
  2029  	DefaultValue *float64 `protobuf:"fixed64,3,opt,name=default_value,json=defaultValue,proto3,oneof" json:"default_value,omitempty"`
  2030  }
  2031  
  2032  func (x *StudySpec_ParameterSpec_DiscreteValueSpec) Reset() {
  2033  	*x = StudySpec_ParameterSpec_DiscreteValueSpec{}
  2034  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[18]
  2035  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2036  	ms.StoreMessageInfo(mi)
  2037  }
  2038  
  2039  func (x *StudySpec_ParameterSpec_DiscreteValueSpec) String() string {
  2040  	return protoimpl.X.MessageStringOf(x)
  2041  }
  2042  
  2043  func (*StudySpec_ParameterSpec_DiscreteValueSpec) ProtoMessage() {}
  2044  
  2045  func (x *StudySpec_ParameterSpec_DiscreteValueSpec) ProtoReflect() protoreflect.Message {
  2046  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[18]
  2047  	if x != nil {
  2048  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2049  		if ms.LoadMessageInfo() == nil {
  2050  			ms.StoreMessageInfo(mi)
  2051  		}
  2052  		return ms
  2053  	}
  2054  	return mi.MessageOf(x)
  2055  }
  2056  
  2057  // Deprecated: Use StudySpec_ParameterSpec_DiscreteValueSpec.ProtoReflect.Descriptor instead.
  2058  func (*StudySpec_ParameterSpec_DiscreteValueSpec) Descriptor() ([]byte, []int) {
  2059  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 3}
  2060  }
  2061  
  2062  func (x *StudySpec_ParameterSpec_DiscreteValueSpec) GetValues() []float64 {
  2063  	if x != nil {
  2064  		return x.Values
  2065  	}
  2066  	return nil
  2067  }
  2068  
  2069  func (x *StudySpec_ParameterSpec_DiscreteValueSpec) GetDefaultValue() float64 {
  2070  	if x != nil && x.DefaultValue != nil {
  2071  		return *x.DefaultValue
  2072  	}
  2073  	return 0
  2074  }
  2075  
  2076  // Represents a parameter spec with condition from its parent parameter.
  2077  type StudySpec_ParameterSpec_ConditionalParameterSpec struct {
  2078  	state         protoimpl.MessageState
  2079  	sizeCache     protoimpl.SizeCache
  2080  	unknownFields protoimpl.UnknownFields
  2081  
  2082  	// A set of parameter values from the parent ParameterSpec's feasible
  2083  	// space.
  2084  	//
  2085  	// Types that are assignable to ParentValueCondition:
  2086  	//
  2087  	//	*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues
  2088  	//	*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues
  2089  	//	*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues
  2090  	ParentValueCondition isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition `protobuf_oneof:"parent_value_condition"`
  2091  	// Required. The spec for a conditional parameter.
  2092  	ParameterSpec *StudySpec_ParameterSpec `protobuf:"bytes,1,opt,name=parameter_spec,json=parameterSpec,proto3" json:"parameter_spec,omitempty"`
  2093  }
  2094  
  2095  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) Reset() {
  2096  	*x = StudySpec_ParameterSpec_ConditionalParameterSpec{}
  2097  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[19]
  2098  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2099  	ms.StoreMessageInfo(mi)
  2100  }
  2101  
  2102  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) String() string {
  2103  	return protoimpl.X.MessageStringOf(x)
  2104  }
  2105  
  2106  func (*StudySpec_ParameterSpec_ConditionalParameterSpec) ProtoMessage() {}
  2107  
  2108  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) ProtoReflect() protoreflect.Message {
  2109  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[19]
  2110  	if x != nil {
  2111  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2112  		if ms.LoadMessageInfo() == nil {
  2113  			ms.StoreMessageInfo(mi)
  2114  		}
  2115  		return ms
  2116  	}
  2117  	return mi.MessageOf(x)
  2118  }
  2119  
  2120  // Deprecated: Use StudySpec_ParameterSpec_ConditionalParameterSpec.ProtoReflect.Descriptor instead.
  2121  func (*StudySpec_ParameterSpec_ConditionalParameterSpec) Descriptor() ([]byte, []int) {
  2122  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 4}
  2123  }
  2124  
  2125  func (m *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParentValueCondition() isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition {
  2126  	if m != nil {
  2127  		return m.ParentValueCondition
  2128  	}
  2129  	return nil
  2130  }
  2131  
  2132  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParentDiscreteValues() *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition {
  2133  	if x, ok := x.GetParentValueCondition().(*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues); ok {
  2134  		return x.ParentDiscreteValues
  2135  	}
  2136  	return nil
  2137  }
  2138  
  2139  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParentIntValues() *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition {
  2140  	if x, ok := x.GetParentValueCondition().(*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues); ok {
  2141  		return x.ParentIntValues
  2142  	}
  2143  	return nil
  2144  }
  2145  
  2146  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParentCategoricalValues() *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition {
  2147  	if x, ok := x.GetParentValueCondition().(*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues); ok {
  2148  		return x.ParentCategoricalValues
  2149  	}
  2150  	return nil
  2151  }
  2152  
  2153  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParameterSpec() *StudySpec_ParameterSpec {
  2154  	if x != nil {
  2155  		return x.ParameterSpec
  2156  	}
  2157  	return nil
  2158  }
  2159  
  2160  type isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition interface {
  2161  	isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition()
  2162  }
  2163  
  2164  type StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues struct {
  2165  	// The spec for matching values from a parent parameter of
  2166  	// `DISCRETE` type.
  2167  	ParentDiscreteValues *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition `protobuf:"bytes,2,opt,name=parent_discrete_values,json=parentDiscreteValues,proto3,oneof"`
  2168  }
  2169  
  2170  type StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues struct {
  2171  	// The spec for matching values from a parent parameter of `INTEGER`
  2172  	// type.
  2173  	ParentIntValues *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition `protobuf:"bytes,3,opt,name=parent_int_values,json=parentIntValues,proto3,oneof"`
  2174  }
  2175  
  2176  type StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues struct {
  2177  	// The spec for matching values from a parent parameter of
  2178  	// `CATEGORICAL` type.
  2179  	ParentCategoricalValues *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition `protobuf:"bytes,4,opt,name=parent_categorical_values,json=parentCategoricalValues,proto3,oneof"`
  2180  }
  2181  
  2182  func (*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues) isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition() {
  2183  }
  2184  
  2185  func (*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues) isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition() {
  2186  }
  2187  
  2188  func (*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues) isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition() {
  2189  }
  2190  
  2191  // Represents the spec to match discrete values from parent parameter.
  2192  type StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition struct {
  2193  	state         protoimpl.MessageState
  2194  	sizeCache     protoimpl.SizeCache
  2195  	unknownFields protoimpl.UnknownFields
  2196  
  2197  	// Required. Matches values of the parent parameter of 'DISCRETE' type.
  2198  	// All values must exist in `discrete_value_spec` of parent parameter.
  2199  	//
  2200  	// The Epsilon of the value matching is 1e-10.
  2201  	Values []float64 `protobuf:"fixed64,1,rep,packed,name=values,proto3" json:"values,omitempty"`
  2202  }
  2203  
  2204  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) Reset() {
  2205  	*x = StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition{}
  2206  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[20]
  2207  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2208  	ms.StoreMessageInfo(mi)
  2209  }
  2210  
  2211  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) String() string {
  2212  	return protoimpl.X.MessageStringOf(x)
  2213  }
  2214  
  2215  func (*StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) ProtoMessage() {}
  2216  
  2217  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) ProtoReflect() protoreflect.Message {
  2218  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[20]
  2219  	if x != nil {
  2220  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2221  		if ms.LoadMessageInfo() == nil {
  2222  			ms.StoreMessageInfo(mi)
  2223  		}
  2224  		return ms
  2225  	}
  2226  	return mi.MessageOf(x)
  2227  }
  2228  
  2229  // Deprecated: Use StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition.ProtoReflect.Descriptor instead.
  2230  func (*StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) Descriptor() ([]byte, []int) {
  2231  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 4, 0}
  2232  }
  2233  
  2234  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) GetValues() []float64 {
  2235  	if x != nil {
  2236  		return x.Values
  2237  	}
  2238  	return nil
  2239  }
  2240  
  2241  // Represents the spec to match integer values from parent parameter.
  2242  type StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition struct {
  2243  	state         protoimpl.MessageState
  2244  	sizeCache     protoimpl.SizeCache
  2245  	unknownFields protoimpl.UnknownFields
  2246  
  2247  	// Required. Matches values of the parent parameter of 'INTEGER' type.
  2248  	// All values must lie in `integer_value_spec` of parent parameter.
  2249  	Values []int64 `protobuf:"varint,1,rep,packed,name=values,proto3" json:"values,omitempty"`
  2250  }
  2251  
  2252  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) Reset() {
  2253  	*x = StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition{}
  2254  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[21]
  2255  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2256  	ms.StoreMessageInfo(mi)
  2257  }
  2258  
  2259  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) String() string {
  2260  	return protoimpl.X.MessageStringOf(x)
  2261  }
  2262  
  2263  func (*StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) ProtoMessage() {}
  2264  
  2265  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) ProtoReflect() protoreflect.Message {
  2266  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[21]
  2267  	if x != nil {
  2268  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2269  		if ms.LoadMessageInfo() == nil {
  2270  			ms.StoreMessageInfo(mi)
  2271  		}
  2272  		return ms
  2273  	}
  2274  	return mi.MessageOf(x)
  2275  }
  2276  
  2277  // Deprecated: Use StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition.ProtoReflect.Descriptor instead.
  2278  func (*StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) Descriptor() ([]byte, []int) {
  2279  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 4, 1}
  2280  }
  2281  
  2282  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) GetValues() []int64 {
  2283  	if x != nil {
  2284  		return x.Values
  2285  	}
  2286  	return nil
  2287  }
  2288  
  2289  // Represents the spec to match categorical values from parent parameter.
  2290  type StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition struct {
  2291  	state         protoimpl.MessageState
  2292  	sizeCache     protoimpl.SizeCache
  2293  	unknownFields protoimpl.UnknownFields
  2294  
  2295  	// Required. Matches values of the parent parameter of 'CATEGORICAL'
  2296  	// type. All values must exist in `categorical_value_spec` of parent
  2297  	// parameter.
  2298  	Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
  2299  }
  2300  
  2301  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) Reset() {
  2302  	*x = StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition{}
  2303  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[22]
  2304  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2305  	ms.StoreMessageInfo(mi)
  2306  }
  2307  
  2308  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) String() string {
  2309  	return protoimpl.X.MessageStringOf(x)
  2310  }
  2311  
  2312  func (*StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) ProtoMessage() {}
  2313  
  2314  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) ProtoReflect() protoreflect.Message {
  2315  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[22]
  2316  	if x != nil {
  2317  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2318  		if ms.LoadMessageInfo() == nil {
  2319  			ms.StoreMessageInfo(mi)
  2320  		}
  2321  		return ms
  2322  	}
  2323  	return mi.MessageOf(x)
  2324  }
  2325  
  2326  // Deprecated: Use StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition.ProtoReflect.Descriptor instead.
  2327  func (*StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) Descriptor() ([]byte, []int) {
  2328  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 4, 2}
  2329  }
  2330  
  2331  func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) GetValues() []string {
  2332  	if x != nil {
  2333  		return x.Values
  2334  	}
  2335  	return nil
  2336  }
  2337  
  2338  // A message representing a metric in the measurement.
  2339  type Measurement_Metric struct {
  2340  	state         protoimpl.MessageState
  2341  	sizeCache     protoimpl.SizeCache
  2342  	unknownFields protoimpl.UnknownFields
  2343  
  2344  	// Output only. The ID of the Metric. The Metric should be defined in
  2345  	// [StudySpec's Metrics][google.cloud.aiplatform.v1.StudySpec.metrics].
  2346  	MetricId string `protobuf:"bytes,1,opt,name=metric_id,json=metricId,proto3" json:"metric_id,omitempty"`
  2347  	// Output only. The value for this metric.
  2348  	Value float64 `protobuf:"fixed64,2,opt,name=value,proto3" json:"value,omitempty"`
  2349  }
  2350  
  2351  func (x *Measurement_Metric) Reset() {
  2352  	*x = Measurement_Metric{}
  2353  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[23]
  2354  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2355  	ms.StoreMessageInfo(mi)
  2356  }
  2357  
  2358  func (x *Measurement_Metric) String() string {
  2359  	return protoimpl.X.MessageStringOf(x)
  2360  }
  2361  
  2362  func (*Measurement_Metric) ProtoMessage() {}
  2363  
  2364  func (x *Measurement_Metric) ProtoReflect() protoreflect.Message {
  2365  	mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[23]
  2366  	if x != nil {
  2367  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2368  		if ms.LoadMessageInfo() == nil {
  2369  			ms.StoreMessageInfo(mi)
  2370  		}
  2371  		return ms
  2372  	}
  2373  	return mi.MessageOf(x)
  2374  }
  2375  
  2376  // Deprecated: Use Measurement_Metric.ProtoReflect.Descriptor instead.
  2377  func (*Measurement_Metric) Descriptor() ([]byte, []int) {
  2378  	return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{5, 0}
  2379  }
  2380  
  2381  func (x *Measurement_Metric) GetMetricId() string {
  2382  	if x != nil {
  2383  		return x.MetricId
  2384  	}
  2385  	return ""
  2386  }
  2387  
  2388  func (x *Measurement_Metric) GetValue() float64 {
  2389  	if x != nil {
  2390  		return x.Value
  2391  	}
  2392  	return 0
  2393  }
  2394  
  2395  var File_google_cloud_aiplatform_v1_study_proto protoreflect.FileDescriptor
  2396  
  2397  var file_google_cloud_aiplatform_v1_study_proto_rawDesc = []byte{
  2398  	0x0a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61,
  2399  	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75,
  2400  	0x64, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2401  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
  2402  	0x6d, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
  2403  	0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e,
  2404  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,
  2405  	0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2406  	0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2407  	0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2408  	0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2409  	0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f,
  2410  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
  2411  	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
  2412  	0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  2413  	0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
  2414  	0xef, 0x03, 0x0a, 0x05, 0x53, 0x74, 0x75, 0x64, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
  2415  	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61,
  2416  	0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61,
  2417  	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64,
  2418  	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x73, 0x74,
  2419  	0x75, 0x64, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
  2420  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69,
  2421  	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64,
  2422  	0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x73, 0x74, 0x75, 0x64,
  2423  	0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04,
  2424  	0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  2425  	0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76,
  2426  	0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0,
  2427  	0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65,
  2428  	0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
  2429  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  2430  	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
  2431  	0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x69,
  2432  	0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x06,
  2433  	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x69, 0x6e, 0x61, 0x63, 0x74,
  2434  	0x69, 0x76, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x05, 0x53, 0x74, 0x61,
  2435  	0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
  2436  	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54,
  2437  	0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56,
  2438  	0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44,
  2439  	0x10, 0x03, 0x3a, 0x5d, 0xea, 0x41, 0x5a, 0x0a, 0x1f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66,
  2440  	0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
  2441  	0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x75, 0x64, 0x79, 0x12, 0x37, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
  2442  	0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63,
  2443  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2444  	0x7d, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x75, 0x64, 0x79,
  2445  	0x7d, 0x22, 0xf7, 0x08, 0x0a, 0x05, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e,
  2446  	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04,
  2447  	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  2448  	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61,
  2449  	0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2450  	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
  2451  	0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74,
  2452  	0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x50, 0x0a,
  2453  	0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
  2454  	0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
  2455  	0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54,
  2456  	0x72, 0x69, 0x61, 0x6c, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x42, 0x03,
  2457  	0xe0, 0x41, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12,
  2458  	0x59, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65,
  2459  	0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f,
  2460  	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74,
  2461  	0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d,
  2462  	0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x4d,
  2463  	0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x0c, 0x6d, 0x65,
  2464  	0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
  2465  	0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
  2466  	0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
  2467  	0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c,
  2468  	0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x0a,
  2469  	0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
  2470  	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  2471  	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41,
  2472  	0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08,
  2473  	0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
  2474  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  2475  	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
  2476  	0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65,
  2477  	0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03,
  2478  	0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x69, 0x6e,
  2479  	0x66, 0x65, 0x61, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18,
  2480  	0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x69, 0x6e, 0x66, 0x65,
  2481  	0x61, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0a,
  2482  	0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
  2483  	0x42, 0x2b, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74,
  2484  	0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
  2485  	0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x52, 0x09, 0x63,
  2486  	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x12, 0x61, 0x0a, 0x0f, 0x77, 0x65, 0x62, 0x5f,
  2487  	0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28,
  2488  	0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
  2489  	0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54,
  2490  	0x72, 0x69, 0x61, 0x6c, 0x2e, 0x57, 0x65, 0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72,
  2491  	0x69, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x77, 0x65,
  2492  	0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 0x69, 0x73, 0x1a, 0x66, 0x0a, 0x09, 0x50,
  2493  	0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x61,
  2494  	0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
  2495  	0xe0, 0x41, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x64,
  2496  	0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2497  	0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2498  	0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x76, 0x61,
  2499  	0x6c, 0x75, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x57, 0x65, 0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,
  2500  	0x55, 0x72, 0x69, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
  2501  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
  2502  	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
  2503  	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x66, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15,
  2504  	0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
  2505  	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54,
  2506  	0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02,
  2507  	0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0d,
  2508  	0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0e, 0x0a,
  2509  	0x0a, 0x49, 0x4e, 0x46, 0x45, 0x41, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x3a, 0x6c, 0xea,
  2510  	0x41, 0x69, 0x0a, 0x1f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67,
  2511  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x72,
  2512  	0x69, 0x61, 0x6c, 0x12, 0x46, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70,
  2513  	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2514  	0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x74, 0x75,
  2515  	0x64, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x75, 0x64, 0x79, 0x7d, 0x2f, 0x74, 0x72, 0x69,
  2516  	0x61, 0x6c, 0x73, 0x2f, 0x7b, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x7d, 0x22, 0x7d, 0x0a, 0x0c, 0x54,
  2517  	0x72, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64,
  2518  	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2519  	0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a,
  2520  	0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
  2521  	0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
  2522  	0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54,
  2523  	0x72, 0x69, 0x61, 0x6c, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0a,
  2524  	0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x13, 0x53,
  2525  	0x74, 0x75, 0x64, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69,
  2526  	0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
  2527  	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2528  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
  2529  	0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
  2530  	0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02,
  2531  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  2532  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
  2533  	0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x63,
  2534  	0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x22, 0xe4, 0x28, 0x0a, 0x09, 0x53, 0x74,
  2535  	0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x82, 0x01, 0x0a, 0x19, 0x64, 0x65, 0x63, 0x61,
  2536  	0x79, 0x5f, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67,
  2537  	0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f,
  2538  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61,
  2539  	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70,
  2540  	0x65, 0x63, 0x2e, 0x44, 0x65, 0x63, 0x61, 0x79, 0x43, 0x75, 0x72, 0x76, 0x65, 0x41, 0x75, 0x74,
  2541  	0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70,
  2542  	0x65, 0x63, 0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x63, 0x61, 0x79, 0x43, 0x75, 0x72, 0x76, 0x65,
  2543  	0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x88, 0x01, 0x0a,
  2544  	0x1e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65,
  2545  	0x64, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18,
  2546  	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
  2547  	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
  2548  	0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x64,
  2549  	0x69, 0x61, 0x6e, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70,
  2550  	0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x1b, 0x6d, 0x65, 0x64, 0x69,
  2551  	0x61, 0x6e, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70,
  2552  	0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x88, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6e, 0x76,
  2553  	0x65, 0x78, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x6f,
  2554  	0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
  2555  	0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
  2556  	0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
  2557  	0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x78, 0x41, 0x75,
  2558  	0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53,
  2559  	0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x78, 0x41, 0x75, 0x74,
  2560  	0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70,
  2561  	0x65, 0x63, 0x12, 0x4f, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20,
  2562  	0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
  2563  	0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31,
  2564  	0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69,
  2565  	0x63, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72,
  2566  	0x69, 0x63, 0x73, 0x12, 0x58, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
  2567  	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2568  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
  2569  	0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50,
  2570  	0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41,
  2571  	0x02, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a,
  2572  	0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
  2573  	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
  2574  	0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
  2575  	0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68,
  2576  	0x6d, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x63, 0x0a, 0x11,
  2577  	0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x69, 0x73,
  2578  	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2579  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
  2580  	0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4f,
  2581  	0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x52,
  2582  	0x10, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x69, 0x73,
  2583  	0x65, 0x12, 0x7c, 0x0a, 0x1a, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
  2584  	0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
  2585  	0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
  2586  	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
  2587  	0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x61,
  2588  	0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
  2589  	0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x18, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65,
  2590  	0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12,
  2591  	0x72, 0x0a, 0x15, 0x73, 0x74, 0x75, 0x64, 0x79, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e,
  2592  	0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39,
  2593  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69,
  2594  	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64,
  2595  	0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x74, 0x6f, 0x70, 0x70,
  2596  	0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x13, 0x73, 0x74, 0x75,
  2597  	0x64, 0x79, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  2598  	0x88, 0x01, 0x01, 0x1a, 0xfa, 0x03, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70,
  2599  	0x65, 0x63, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18,
  2600  	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x72,
  2601  	0x69, 0x63, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,
  2602  	0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2603  	0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e,
  2604  	0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
  2605  	0x53, 0x70, 0x65, 0x63, 0x2e, 0x47, 0x6f, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0,
  2606  	0x41, 0x02, 0x52, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x6d, 0x0a, 0x0d, 0x73, 0x61, 0x66, 0x65,
  2607  	0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2608  	0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61,
  2609  	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75,
  2610  	0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65,
  2611  	0x63, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f,
  2612  	0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x43, 0x6f,
  2613  	0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x1a, 0xb1, 0x01, 0x0a, 0x12, 0x53, 0x61, 0x66, 0x65,
  2614  	0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29,
  2615  	0x0a, 0x10, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
  2616  	0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79,
  2617  	0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4b, 0x0a, 0x20, 0x64, 0x65, 0x73,
  2618  	0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x72,
  2619  	0x69, 0x61, 0x6c, 0x73, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
  2620  	0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x69,
  2621  	0x6e, 0x53, 0x61, 0x66, 0x65, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x72, 0x61, 0x63, 0x74,
  2622  	0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72,
  2623  	0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x61,
  2624  	0x6c, 0x73, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x08, 0x47,
  2625  	0x6f, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x4f, 0x41, 0x4c, 0x5f,
  2626  	0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
  2627  	0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x01,
  2628  	0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x42, 0x10,
  2629  	0x0a, 0x0e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  2630  	0x1a, 0xa8, 0x11, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70,
  2631  	0x65, 0x63, 0x12, 0x71, 0x0a, 0x11, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c,
  2632  	0x75, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e,
  2633  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70,
  2634  	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79,
  2635  	0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70,
  2636  	0x65, 0x63, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70,
  2637  	0x65, 0x63, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75,
  2638  	0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x74, 0x0a, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72,
  2639  	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28,
  2640  	0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
  2641  	0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53,
  2642  	0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
  2643  	0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61,
  2644  	0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x67,
  2645  	0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x80, 0x01, 0x0a, 0x16,
  2646  	0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75,
  2647  	0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67,
  2648  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c,
  2649  	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53,
  2650  	0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65,
  2651  	0x63, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x61, 0x6c,
  2652  	0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x14, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f,
  2653  	0x72, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x77,
  2654  	0x0a, 0x13, 0x64, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
  2655  	0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f,
  2656  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61,
  2657  	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70,
  2658  	0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63,
  2659  	0x2e, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70,
  2660  	0x65, 0x63, 0x48, 0x00, 0x52, 0x11, 0x64, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x56, 0x61,
  2661  	0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x61, 0x6d,
  2662  	0x65, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
  2663  	0x41, 0x02, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
  2664  	0x5c, 0x0a, 0x0a, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20,
  2665  	0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
  2666  	0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31,
  2667  	0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d,
  2668  	0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x54, 0x79,
  2669  	0x70, 0x65, 0x52, 0x09, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x8c, 0x01,
  2670  	0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x61,
  2671  	0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x0a, 0x20,
  2672  	0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
  2673  	0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31,
  2674  	0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d,
  2675  	0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
  2676  	0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65,
  2677  	0x63, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x61,
  2678  	0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x73, 0x1a, 0x91, 0x01, 0x0a,
  2679  	0x0f, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63,
  2680  	0x12, 0x20, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20,
  2681  	0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c,
  2682  	0x75, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
  2683  	0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x56,
  2684  	0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
  2685  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x64,
  2686  	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10,
  2687  	0x0a, 0x0e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
  2688  	0x1a, 0x92, 0x01, 0x0a, 0x10, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75,
  2689  	0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c,
  2690  	0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6d,
  2691  	0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76,
  2692  	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
  2693  	0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65, 0x66,
  2694  	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
  2695  	0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
  2696  	0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
  2697  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x6f, 0x0a, 0x14, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
  2698  	0x69, 0x63, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1b, 0x0a,
  2699  	0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0,
  2700  	0x41, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65,
  2701  	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
  2702  	0x09, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75,
  2703  	0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
  2704  	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x6c, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65,
  2705  	0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1b, 0x0a, 0x06, 0x76,
  2706  	0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02,
  2707  	0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61,
  2708  	0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48,
  2709  	0x00, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88,
  2710  	0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76,
  2711  	0x61, 0x6c, 0x75, 0x65, 0x1a, 0x8c, 0x06, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
  2712  	0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65,
  2713  	0x63, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73,
  2714  	0x63, 0x72, 0x65, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01,
  2715  	0x28, 0x0b, 0x32, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2716  	0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e,
  2717  	0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
  2718  	0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
  2719  	0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63,
  2720  	0x2e, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f,
  2721  	0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e,
  2722  	0x74, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12,
  2723  	0x8c, 0x01, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76,
  2724  	0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5e, 0x2e, 0x67, 0x6f,
  2725  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61,
  2726  	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70,
  2727  	0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63,
  2728  	0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61,
  2729  	0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c,
  2730  	0x75, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x70,
  2731  	0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0xa4,
  2732  	0x01, 0x0a, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f,
  2733  	0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01,
  2734  	0x28, 0x0b, 0x32, 0x66, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2735  	0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e,
  2736  	0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
  2737  	0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
  2738  	0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63,
  2739  	0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75,
  2740  	0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x70, 0x61,
  2741  	0x72, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x56,
  2742  	0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
  2743  	0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e,
  2744  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70,
  2745  	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79,
  2746  	0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70,
  2747  	0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
  2748  	0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x35, 0x0a, 0x16, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65,
  2749  	0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
  2750  	0x12, 0x1b, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x01,
  2751  	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x30, 0x0a,
  2752  	0x11, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
  2753  	0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
  2754  	0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a,
  2755  	0x38, 0x0a, 0x19, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x61,
  2756  	0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06,
  2757  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
  2758  	0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x61, 0x72,
  2759  	0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74,
  2760  	0x69, 0x6f, 0x6e, 0x22, 0x6e, 0x0a, 0x09, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65,
  2761  	0x12, 0x1a, 0x0a, 0x16, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55,
  2762  	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11,
  2763  	0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x41, 0x52, 0x5f, 0x53, 0x43, 0x41, 0x4c,
  2764  	0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x5f,
  2765  	0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x49, 0x54, 0x5f,
  2766  	0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x53, 0x43, 0x41, 0x4c,
  2767  	0x45, 0x10, 0x03, 0x42, 0x16, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
  2768  	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x1a, 0x53, 0x0a, 0x1f, 0x44,
  2769  	0x65, 0x63, 0x61, 0x79, 0x43, 0x75, 0x72, 0x76, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74,
  2770  	0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x30,
  2771  	0x0a, 0x14, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x75,
  2772  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x75, 0x73,
  2773  	0x65, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2774  	0x1a, 0x4f, 0x0a, 0x1b, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61,
  2775  	0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12,
  2776  	0x30, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x64,
  2777  	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x75,
  2778  	0x73, 0x65, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
  2779  	0x6e, 0x1a, 0xee, 0x02, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x78, 0x41, 0x75, 0x74, 0x6f,
  2780  	0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65,
  2781  	0x63, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f,
  2782  	0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x53, 0x74,
  2783  	0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x73,
  2784  	0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
  2785  	0x0c, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a,
  2786  	0x15, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
  2787  	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x69,
  2788  	0x6e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e,
  2789  	0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61,
  2790  	0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d,
  2791  	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e,
  2792  	0x67, 0x52, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4e, 0x61,
  2793  	0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65,
  2794  	0x64, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
  2795  	0x52, 0x12, 0x75, 0x73, 0x65, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61,
  2796  	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61,
  2797  	0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x61, 0x6c,
  2798  	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74,
  2799  	0x65, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x54, 0x72, 0x69, 0x61, 0x6c,
  2800  	0x73, 0x88, 0x01, 0x01, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
  2801  	0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x61,
  2802  	0x6c, 0x73, 0x1a, 0xec, 0x04, 0x0a, 0x13, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x74, 0x6f, 0x70,
  2803  	0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x68,
  2804  	0x6f, 0x75, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x73, 0x61, 0x70, 0x18, 0x01,
  2805  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  2806  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
  2807  	0x52, 0x0e, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x73, 0x61, 0x70,
  2808  	0x12, 0x6d, 0x0a, 0x1a, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x75, 0x6e, 0x74,
  2809  	0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x02,
  2810  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  2811  	0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76,
  2812  	0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74,
  2813  	0x72, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x18, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x75,
  2814  	0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12,
  2815  	0x6d, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69,
  2816  	0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20,
  2817  	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
  2818  	0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31,
  2819  	0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72,
  2820  	0x61, 0x69, 0x6e, 0x74, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x75, 0x6e,
  2821  	0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x41,
  2822  	0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x73,
  2823  	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2824  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61,
  2825  	0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x54, 0x72, 0x69, 0x61, 0x6c,
  2826  	0x73, 0x12, 0x41, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x69,
  2827  	0x61, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2828  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33,
  2829  	0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x54, 0x72,
  2830  	0x69, 0x61, 0x6c, 0x73, 0x12, 0x57, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f,
  2831  	0x74, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x6e, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65,
  2832  	0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2833  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32,
  2834  	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x54, 0x72, 0x69,
  2835  	0x61, 0x6c, 0x73, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x52, 0x0a,
  2836  	0x18, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f,
  2837  	0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2838  	0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2839  	0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x44,
  2840  	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73,
  2841  	0x73, 0x22, 0x4a, 0x0a, 0x09, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x19,
  2842  	0x0a, 0x15, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50,
  2843  	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x52, 0x49,
  2844  	0x44, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x41,
  2845  	0x4e, 0x44, 0x4f, 0x4d, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x10, 0x03, 0x22, 0x48, 0x0a,
  2846  	0x10, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x69, 0x73,
  2847  	0x65, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x41, 0x54, 0x49, 0x4f, 0x4e,
  2848  	0x5f, 0x4e, 0x4f, 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
  2849  	0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x08, 0x0a,
  2850  	0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x02, 0x22, 0x72, 0x0a, 0x18, 0x4d, 0x65, 0x61, 0x73, 0x75,
  2851  	0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
  2852  	0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x4d, 0x45,
  2853  	0x4e, 0x54, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50,
  2854  	0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
  2855  	0x14, 0x0a, 0x10, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x4d,
  2856  	0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x4d, 0x45,
  2857  	0x41, 0x53, 0x55, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x42, 0x19, 0x0a, 0x17, 0x61,
  2858  	0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e,
  2859  	0x67, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x74, 0x75, 0x64, 0x79,
  2860  	0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  2861  	0x22, 0x92, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
  2862  	0x12, 0x49, 0x0a, 0x10, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x75, 0x72, 0x61,
  2863  	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
  2864  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
  2865  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x65, 0x6c, 0x61, 0x70,
  2866  	0x73, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x73,
  2867  	0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42,
  2868  	0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
  2869  	0x4d, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
  2870  	0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
  2871  	0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
  2872  	0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
  2873  	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x45,
  2874  	0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x72,
  2875  	0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03,
  2876  	0x52, 0x08, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61,
  2877  	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05,
  2878  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0xc8, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f,
  2879  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61,
  2880  	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x53, 0x74, 0x75, 0x64, 0x79, 0x50,
  2881  	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f,
  2882  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c,
  2883  	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70,
  2884  	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74,
  2885  	0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2886  	0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
  2887  	0x2e, 0x56, 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f,
  2888  	0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31,
  2889  	0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64,
  2890  	0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31,
  2891  	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  2892  }
  2893  
  2894  var (
  2895  	file_google_cloud_aiplatform_v1_study_proto_rawDescOnce sync.Once
  2896  	file_google_cloud_aiplatform_v1_study_proto_rawDescData = file_google_cloud_aiplatform_v1_study_proto_rawDesc
  2897  )
  2898  
  2899  func file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP() []byte {
  2900  	file_google_cloud_aiplatform_v1_study_proto_rawDescOnce.Do(func() {
  2901  		file_google_cloud_aiplatform_v1_study_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1_study_proto_rawDescData)
  2902  	})
  2903  	return file_google_cloud_aiplatform_v1_study_proto_rawDescData
  2904  }
  2905  
  2906  var file_google_cloud_aiplatform_v1_study_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
  2907  var file_google_cloud_aiplatform_v1_study_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
  2908  var file_google_cloud_aiplatform_v1_study_proto_goTypes = []any{
  2909  	(Study_State)(0),                                         // 0: google.cloud.aiplatform.v1.Study.State
  2910  	(Trial_State)(0),                                         // 1: google.cloud.aiplatform.v1.Trial.State
  2911  	(StudySpec_Algorithm)(0),                                 // 2: google.cloud.aiplatform.v1.StudySpec.Algorithm
  2912  	(StudySpec_ObservationNoise)(0),                          // 3: google.cloud.aiplatform.v1.StudySpec.ObservationNoise
  2913  	(StudySpec_MeasurementSelectionType)(0),                  // 4: google.cloud.aiplatform.v1.StudySpec.MeasurementSelectionType
  2914  	(StudySpec_MetricSpec_GoalType)(0),                       // 5: google.cloud.aiplatform.v1.StudySpec.MetricSpec.GoalType
  2915  	(StudySpec_ParameterSpec_ScaleType)(0),                   // 6: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ScaleType
  2916  	(*Study)(nil),                                            // 7: google.cloud.aiplatform.v1.Study
  2917  	(*Trial)(nil),                                            // 8: google.cloud.aiplatform.v1.Trial
  2918  	(*TrialContext)(nil),                                     // 9: google.cloud.aiplatform.v1.TrialContext
  2919  	(*StudyTimeConstraint)(nil),                              // 10: google.cloud.aiplatform.v1.StudyTimeConstraint
  2920  	(*StudySpec)(nil),                                        // 11: google.cloud.aiplatform.v1.StudySpec
  2921  	(*Measurement)(nil),                                      // 12: google.cloud.aiplatform.v1.Measurement
  2922  	(*Trial_Parameter)(nil),                                  // 13: google.cloud.aiplatform.v1.Trial.Parameter
  2923  	nil,                                                      // 14: google.cloud.aiplatform.v1.Trial.WebAccessUrisEntry
  2924  	(*StudySpec_MetricSpec)(nil),                             // 15: google.cloud.aiplatform.v1.StudySpec.MetricSpec
  2925  	(*StudySpec_ParameterSpec)(nil),                          // 16: google.cloud.aiplatform.v1.StudySpec.ParameterSpec
  2926  	(*StudySpec_DecayCurveAutomatedStoppingSpec)(nil),        // 17: google.cloud.aiplatform.v1.StudySpec.DecayCurveAutomatedStoppingSpec
  2927  	(*StudySpec_MedianAutomatedStoppingSpec)(nil),            // 18: google.cloud.aiplatform.v1.StudySpec.MedianAutomatedStoppingSpec
  2928  	(*StudySpec_ConvexAutomatedStoppingSpec)(nil),            // 19: google.cloud.aiplatform.v1.StudySpec.ConvexAutomatedStoppingSpec
  2929  	(*StudySpec_StudyStoppingConfig)(nil),                    // 20: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig
  2930  	(*StudySpec_MetricSpec_SafetyMetricConfig)(nil),          // 21: google.cloud.aiplatform.v1.StudySpec.MetricSpec.SafetyMetricConfig
  2931  	(*StudySpec_ParameterSpec_DoubleValueSpec)(nil),          // 22: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DoubleValueSpec
  2932  	(*StudySpec_ParameterSpec_IntegerValueSpec)(nil),         // 23: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.IntegerValueSpec
  2933  	(*StudySpec_ParameterSpec_CategoricalValueSpec)(nil),     // 24: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.CategoricalValueSpec
  2934  	(*StudySpec_ParameterSpec_DiscreteValueSpec)(nil),        // 25: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DiscreteValueSpec
  2935  	(*StudySpec_ParameterSpec_ConditionalParameterSpec)(nil), // 26: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec
  2936  	(*StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition)(nil),    // 27: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.DiscreteValueCondition
  2937  	(*StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition)(nil),         // 28: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.IntValueCondition
  2938  	(*StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition)(nil), // 29: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.CategoricalValueCondition
  2939  	(*Measurement_Metric)(nil),    // 30: google.cloud.aiplatform.v1.Measurement.Metric
  2940  	(*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp
  2941  	(*durationpb.Duration)(nil),   // 32: google.protobuf.Duration
  2942  	(*structpb.Value)(nil),        // 33: google.protobuf.Value
  2943  	(*wrapperspb.BoolValue)(nil),  // 34: google.protobuf.BoolValue
  2944  	(*wrapperspb.Int32Value)(nil), // 35: google.protobuf.Int32Value
  2945  }
  2946  var file_google_cloud_aiplatform_v1_study_proto_depIdxs = []int32{
  2947  	11, // 0: google.cloud.aiplatform.v1.Study.study_spec:type_name -> google.cloud.aiplatform.v1.StudySpec
  2948  	0,  // 1: google.cloud.aiplatform.v1.Study.state:type_name -> google.cloud.aiplatform.v1.Study.State
  2949  	31, // 2: google.cloud.aiplatform.v1.Study.create_time:type_name -> google.protobuf.Timestamp
  2950  	1,  // 3: google.cloud.aiplatform.v1.Trial.state:type_name -> google.cloud.aiplatform.v1.Trial.State
  2951  	13, // 4: google.cloud.aiplatform.v1.Trial.parameters:type_name -> google.cloud.aiplatform.v1.Trial.Parameter
  2952  	12, // 5: google.cloud.aiplatform.v1.Trial.final_measurement:type_name -> google.cloud.aiplatform.v1.Measurement
  2953  	12, // 6: google.cloud.aiplatform.v1.Trial.measurements:type_name -> google.cloud.aiplatform.v1.Measurement
  2954  	31, // 7: google.cloud.aiplatform.v1.Trial.start_time:type_name -> google.protobuf.Timestamp
  2955  	31, // 8: google.cloud.aiplatform.v1.Trial.end_time:type_name -> google.protobuf.Timestamp
  2956  	14, // 9: google.cloud.aiplatform.v1.Trial.web_access_uris:type_name -> google.cloud.aiplatform.v1.Trial.WebAccessUrisEntry
  2957  	13, // 10: google.cloud.aiplatform.v1.TrialContext.parameters:type_name -> google.cloud.aiplatform.v1.Trial.Parameter
  2958  	32, // 11: google.cloud.aiplatform.v1.StudyTimeConstraint.max_duration:type_name -> google.protobuf.Duration
  2959  	31, // 12: google.cloud.aiplatform.v1.StudyTimeConstraint.end_time:type_name -> google.protobuf.Timestamp
  2960  	17, // 13: google.cloud.aiplatform.v1.StudySpec.decay_curve_stopping_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.DecayCurveAutomatedStoppingSpec
  2961  	18, // 14: google.cloud.aiplatform.v1.StudySpec.median_automated_stopping_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.MedianAutomatedStoppingSpec
  2962  	19, // 15: google.cloud.aiplatform.v1.StudySpec.convex_automated_stopping_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ConvexAutomatedStoppingSpec
  2963  	15, // 16: google.cloud.aiplatform.v1.StudySpec.metrics:type_name -> google.cloud.aiplatform.v1.StudySpec.MetricSpec
  2964  	16, // 17: google.cloud.aiplatform.v1.StudySpec.parameters:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec
  2965  	2,  // 18: google.cloud.aiplatform.v1.StudySpec.algorithm:type_name -> google.cloud.aiplatform.v1.StudySpec.Algorithm
  2966  	3,  // 19: google.cloud.aiplatform.v1.StudySpec.observation_noise:type_name -> google.cloud.aiplatform.v1.StudySpec.ObservationNoise
  2967  	4,  // 20: google.cloud.aiplatform.v1.StudySpec.measurement_selection_type:type_name -> google.cloud.aiplatform.v1.StudySpec.MeasurementSelectionType
  2968  	20, // 21: google.cloud.aiplatform.v1.StudySpec.study_stopping_config:type_name -> google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig
  2969  	32, // 22: google.cloud.aiplatform.v1.Measurement.elapsed_duration:type_name -> google.protobuf.Duration
  2970  	30, // 23: google.cloud.aiplatform.v1.Measurement.metrics:type_name -> google.cloud.aiplatform.v1.Measurement.Metric
  2971  	33, // 24: google.cloud.aiplatform.v1.Trial.Parameter.value:type_name -> google.protobuf.Value
  2972  	5,  // 25: google.cloud.aiplatform.v1.StudySpec.MetricSpec.goal:type_name -> google.cloud.aiplatform.v1.StudySpec.MetricSpec.GoalType
  2973  	21, // 26: google.cloud.aiplatform.v1.StudySpec.MetricSpec.safety_config:type_name -> google.cloud.aiplatform.v1.StudySpec.MetricSpec.SafetyMetricConfig
  2974  	22, // 27: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.double_value_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DoubleValueSpec
  2975  	23, // 28: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.integer_value_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.IntegerValueSpec
  2976  	24, // 29: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.categorical_value_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.CategoricalValueSpec
  2977  	25, // 30: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.discrete_value_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DiscreteValueSpec
  2978  	6,  // 31: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.scale_type:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ScaleType
  2979  	26, // 32: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.conditional_parameter_specs:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec
  2980  	34, // 33: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.should_stop_asap:type_name -> google.protobuf.BoolValue
  2981  	10, // 34: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.minimum_runtime_constraint:type_name -> google.cloud.aiplatform.v1.StudyTimeConstraint
  2982  	10, // 35: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.maximum_runtime_constraint:type_name -> google.cloud.aiplatform.v1.StudyTimeConstraint
  2983  	35, // 36: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.min_num_trials:type_name -> google.protobuf.Int32Value
  2984  	35, // 37: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.max_num_trials:type_name -> google.protobuf.Int32Value
  2985  	35, // 38: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.max_num_trials_no_progress:type_name -> google.protobuf.Int32Value
  2986  	32, // 39: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.max_duration_no_progress:type_name -> google.protobuf.Duration
  2987  	27, // 40: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.parent_discrete_values:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.DiscreteValueCondition
  2988  	28, // 41: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.parent_int_values:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.IntValueCondition
  2989  	29, // 42: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.parent_categorical_values:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.CategoricalValueCondition
  2990  	16, // 43: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.parameter_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec
  2991  	44, // [44:44] is the sub-list for method output_type
  2992  	44, // [44:44] is the sub-list for method input_type
  2993  	44, // [44:44] is the sub-list for extension type_name
  2994  	44, // [44:44] is the sub-list for extension extendee
  2995  	0,  // [0:44] is the sub-list for field type_name
  2996  }
  2997  
  2998  func init() { file_google_cloud_aiplatform_v1_study_proto_init() }
  2999  func file_google_cloud_aiplatform_v1_study_proto_init() {
  3000  	if File_google_cloud_aiplatform_v1_study_proto != nil {
  3001  		return
  3002  	}
  3003  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[3].OneofWrappers = []any{
  3004  		(*StudyTimeConstraint_MaxDuration)(nil),
  3005  		(*StudyTimeConstraint_EndTime)(nil),
  3006  	}
  3007  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[4].OneofWrappers = []any{
  3008  		(*StudySpec_DecayCurveStoppingSpec)(nil),
  3009  		(*StudySpec_MedianAutomatedStoppingSpec_)(nil),
  3010  		(*StudySpec_ConvexAutomatedStoppingSpec_)(nil),
  3011  	}
  3012  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[8].OneofWrappers = []any{}
  3013  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[9].OneofWrappers = []any{
  3014  		(*StudySpec_ParameterSpec_DoubleValueSpec_)(nil),
  3015  		(*StudySpec_ParameterSpec_IntegerValueSpec_)(nil),
  3016  		(*StudySpec_ParameterSpec_CategoricalValueSpec_)(nil),
  3017  		(*StudySpec_ParameterSpec_DiscreteValueSpec_)(nil),
  3018  	}
  3019  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[12].OneofWrappers = []any{}
  3020  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[14].OneofWrappers = []any{}
  3021  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[15].OneofWrappers = []any{}
  3022  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[16].OneofWrappers = []any{}
  3023  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[17].OneofWrappers = []any{}
  3024  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[18].OneofWrappers = []any{}
  3025  	file_google_cloud_aiplatform_v1_study_proto_msgTypes[19].OneofWrappers = []any{
  3026  		(*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues)(nil),
  3027  		(*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues)(nil),
  3028  		(*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues)(nil),
  3029  	}
  3030  	type x struct{}
  3031  	out := protoimpl.TypeBuilder{
  3032  		File: protoimpl.DescBuilder{
  3033  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  3034  			RawDescriptor: file_google_cloud_aiplatform_v1_study_proto_rawDesc,
  3035  			NumEnums:      7,
  3036  			NumMessages:   24,
  3037  			NumExtensions: 0,
  3038  			NumServices:   0,
  3039  		},
  3040  		GoTypes:           file_google_cloud_aiplatform_v1_study_proto_goTypes,
  3041  		DependencyIndexes: file_google_cloud_aiplatform_v1_study_proto_depIdxs,
  3042  		EnumInfos:         file_google_cloud_aiplatform_v1_study_proto_enumTypes,
  3043  		MessageInfos:      file_google_cloud_aiplatform_v1_study_proto_msgTypes,
  3044  	}.Build()
  3045  	File_google_cloud_aiplatform_v1_study_proto = out.File
  3046  	file_google_cloud_aiplatform_v1_study_proto_rawDesc = nil
  3047  	file_google_cloud_aiplatform_v1_study_proto_goTypes = nil
  3048  	file_google_cloud_aiplatform_v1_study_proto_depIdxs = nil
  3049  }