From 9f9a99a3e5bf2b4f986f282bcaa721540fa52c40 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Tue, 19 Feb 2019 20:57:59 -0800 Subject: [PATCH 01/17] Initial commit --- pkg/controller/studyjob/katib_api_util.go | 13 +++++++++ pkg/controller/studyjob/utils.go | 35 +++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index 10fd19a79c8..f953c2117d2 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -30,6 +30,19 @@ func initializeStudy(instance *katibv1alpha1.StudyJob, ns string) error { return validErr } + //Validate HP job + if getJobType(instance) == jobTypeNAS { + if validJobErr := validateHPJob(instance); validJobErr != nil { + instance.Status.Condition = katibv1alpha1.ConditionFailed + return validJobErr + } + } else { + if validJobErr := validateNASJob(instance); validJobErr != nil { + instance.Status.Condition = katibv1alpha1.ConditionFailed + return validJobErr + } + } + if instance.Spec.SuggestionSpec.SuggestionAlgorithm == "" { instance.Spec.SuggestionSpec.SuggestionAlgorithm = "random" } diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index b0fae6e6d9c..80c666ecb98 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -14,6 +14,7 @@ package studyjob import ( "fmt" "log" + "reflect" katibapi "github.com/kubeflow/katib/pkg/api" katibv1alpha1 "github.com/kubeflow/katib/pkg/api/operators/apis/studyjob/v1alpha1" @@ -209,3 +210,37 @@ func contains(l []string, s string) bool { } return false } + +func validateHPJob(instance *katibv1alpha1.StudyJob) error { + log.Printf("Validation for the HP job") + if instance.Spec.ParameterConfigs == nil { + return fmt.Errorf("No Spec.ParameterConfigs specified") + } + err := validateParameterConfigs(instance.Spec.ParameterConfigs, jobTypeHP) + if err != nil { + return err + } + return nil +} + +func validateNASJob(instance *katibv1alpha1.StudyJob) error { + log.Printf("Validation for the NAS job") + return nil +} + +func validateParameterConfigs(parameterConfigs []katibv1alpha1.ParameterConfig, jobType string) error { + for _, pc := range parameterConfigs { + if pc.Name == "" { + return fmt.Errorf("Missed Name in ParameterConfig: %v", pc) + } + if pc.ParameterType == "" { + return fmt.Errorf("Missed ParameterType in ParameterConfig: %v", pc) + } + if pc.ParameterType == katibv1alpha1.ParameterTypeCategorical { + if reflect.DeepEqual(pc.Feasible, katibv1alpha1.FeasibleSpace{}) { + return fmt.Errorf("Missed Feasible in ParameterConfig: %v", pc) + } + } + } + return nil +} From 0b171abad928a638f190001d6dea53bcc61e5f18 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Wed, 20 Feb 2019 15:02:41 -0800 Subject: [PATCH 02/17] Add validation for NAS config --- pkg/controller/studyjob/utils.go | 56 +++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index 80c666ecb98..34196bda348 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -225,20 +225,68 @@ func validateHPJob(instance *katibv1alpha1.StudyJob) error { func validateNASJob(instance *katibv1alpha1.StudyJob) error { log.Printf("Validation for the NAS job") + if instance.Spec.NasConfig == nil { + return fmt.Errorf("No Spec.NasConfig specified") + } + + if reflect.DeepEqual(instance.Spec.NasConfig.GraphConfig, katibv1alpha1.GraphConfig{}) { + return fmt.Errorf("Missing GraphConfig in NasConfig: %v", instance.Spec.NasConfig) + } + + if instance.Spec.NasConfig.GraphConfig.InputSize == nil { + return fmt.Errorf("Missing InputSize in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) + } + + if instance.Spec.NasConfig.GraphConfig.OutputSize == nil { + return fmt.Errorf("Missing OutputSize in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) + } + + if instance.Spec.NasConfig.GraphConfig.NumLayers == 0 { + return fmt.Errorf("Missing NumLayers in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) + } + + if instance.Spec.NasConfig.Operations == nil { + return fmt.Errorf("Missing Operations in NasConfig: %v", instance.Spec.NasConfig) + } + + for _, op := range instance.Spec.NasConfig.Operations { + if op.OperationType == "" { + return fmt.Errorf("Missing OperationType in Operation: %v", op) + } + err := validateParameterConfigs(op.ParameterConfigs, jobTypeNAS) + if err != nil { + return err + } + } + return nil } func validateParameterConfigs(parameterConfigs []katibv1alpha1.ParameterConfig, jobType string) error { for _, pc := range parameterConfigs { if pc.Name == "" { - return fmt.Errorf("Missed Name in ParameterConfig: %v", pc) + return fmt.Errorf("Missing Name in ParameterConfig: %v", pc) } if pc.ParameterType == "" { - return fmt.Errorf("Missed ParameterType in ParameterConfig: %v", pc) + return fmt.Errorf("Missing ParameterType in ParameterConfig: %v", pc) + } + if reflect.DeepEqual(pc.Feasible, katibv1alpha1.FeasibleSpace{}) { + return fmt.Errorf("Missing Feasible in ParameterConfig: %v", pc) } if pc.ParameterType == katibv1alpha1.ParameterTypeCategorical { - if reflect.DeepEqual(pc.Feasible, katibv1alpha1.FeasibleSpace{}) { - return fmt.Errorf("Missed Feasible in ParameterConfig: %v", pc) + if pc.Feasible.List == nil { + return fmt.Errorf("Missing List in ParameterConfig.Feasible: %v", pc.Feasible) + } + } + if pc.ParameterType == katibv1alpha1.ParameterTypeDouble || pc.ParameterType == katibv1alpha1.ParameterTypeInt { + if pc.Feasible.Min == "" { + return fmt.Errorf("Missing Min in ParameterConfig.Feasible: %v", pc.Feasible) + } + if pc.Feasible.Max == "" { + return fmt.Errorf("Missing Max in ParameterConfig.Feasible: %v", pc.Feasible) + } + if jobType == jobTypeNAS && pc.Feasible.Step == "" && pc.ParameterType == katibv1alpha1.ParameterTypeDouble { + return fmt.Errorf("Missing Step in ParameterConfig.Feasible for NAS job: %v", pc.Feasible) } } } From 46221b26bed53452df04eaaa848550c3a3daafc7 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Wed, 20 Feb 2019 15:50:00 -0800 Subject: [PATCH 03/17] Fix validation --- pkg/controller/studyjob/katib_api_util.go | 5 +++-- pkg/controller/studyjob/utils.go | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index f953c2117d2..c4f0c471456 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -30,13 +30,14 @@ func initializeStudy(instance *katibv1alpha1.StudyJob, ns string) error { return validErr } - //Validate HP job - if getJobType(instance) == jobTypeNAS { + if getJobType(instance) != jobTypeNAS { + //Validate HP job if validJobErr := validateHPJob(instance); validJobErr != nil { instance.Status.Condition = katibv1alpha1.ConditionFailed return validJobErr } } else { + //Validate NAS job if validJobErr := validateNASJob(instance); validJobErr != nil { instance.Status.Condition = katibv1alpha1.ConditionFailed return validJobErr diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index 34196bda348..a86080089f4 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -253,6 +253,9 @@ func validateNASJob(instance *katibv1alpha1.StudyJob) error { if op.OperationType == "" { return fmt.Errorf("Missing OperationType in Operation: %v", op) } + if op.ParameterConfigs == nil { + return fmt.Errorf("Missing ParameterConfig in Operation: %v", op) + } err := validateParameterConfigs(op.ParameterConfigs, jobTypeNAS) if err != nil { return err From c5c284f5c513cdd1df2db789f693ab9baccfde15 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Wed, 20 Feb 2019 18:17:31 -0800 Subject: [PATCH 04/17] Add algorithmType in NasConfig validation --- pkg/controller/studyjob/const.go | 11 ++++++----- pkg/controller/studyjob/utils.go | 10 +++++----- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/pkg/controller/studyjob/const.go b/pkg/controller/studyjob/const.go index bce9bd15902..30827ab353d 100644 --- a/pkg/controller/studyjob/const.go +++ b/pkg/controller/studyjob/const.go @@ -12,11 +12,12 @@ limitations under the License. package studyjob const ( - DefaultJobWorker = "Job" - TFJobWorker = "TFJob" - PyTorchJobWorker = "PyTorchJob" - jobTypeNAS = "NAS" - jobTypeHP = "HP" + DefaultJobWorker = "Job" + TFJobWorker = "TFJob" + PyTorchJobWorker = "PyTorchJob" + jobTypeNAS = "NAS" + jobTypeHP = "HP" + suggestionAlgorithmRL = "nasrl" ) var ValidWorkerKindList = [...]string{DefaultJobWorker, TFJobWorker, PyTorchJobWorker} diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index 978a379708a..9350ee3297e 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -212,7 +212,7 @@ func validateHPJob(instance *katibv1alpha1.StudyJob) error { if instance.Spec.ParameterConfigs == nil { return fmt.Errorf("No Spec.ParameterConfigs specified") } - err := validateParameterConfigs(instance.Spec.ParameterConfigs, jobTypeHP) + err := validateParameterConfigs(instance.Spec.ParameterConfigs, jobTypeHP, instance.Spec.SuggestionSpec.SuggestionAlgorithm) if err != nil { return err } @@ -237,7 +237,7 @@ func validateNASJob(instance *katibv1alpha1.StudyJob) error { return fmt.Errorf("Missing OutputSize in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) } - if instance.Spec.NasConfig.GraphConfig.NumLayers == 0 { + if instance.Spec.NasConfig.GraphConfig.NumLayers == 0 && instance.Spec.SuggestionSpec.SuggestionAlgorithm == suggestionAlgorithmRL { return fmt.Errorf("Missing NumLayers in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) } @@ -252,7 +252,7 @@ func validateNASJob(instance *katibv1alpha1.StudyJob) error { if op.ParameterConfigs == nil { return fmt.Errorf("Missing ParameterConfig in Operation: %v", op) } - err := validateParameterConfigs(op.ParameterConfigs, jobTypeNAS) + err := validateParameterConfigs(op.ParameterConfigs, jobTypeNAS, instance.Spec.SuggestionSpec.SuggestionAlgorithm) if err != nil { return err } @@ -261,7 +261,7 @@ func validateNASJob(instance *katibv1alpha1.StudyJob) error { return nil } -func validateParameterConfigs(parameterConfigs []katibv1alpha1.ParameterConfig, jobType string) error { +func validateParameterConfigs(parameterConfigs []katibv1alpha1.ParameterConfig, jobType string, suggestionAlgorithm string) error { for _, pc := range parameterConfigs { if pc.Name == "" { return fmt.Errorf("Missing Name in ParameterConfig: %v", pc) @@ -284,7 +284,7 @@ func validateParameterConfigs(parameterConfigs []katibv1alpha1.ParameterConfig, if pc.Feasible.Max == "" { return fmt.Errorf("Missing Max in ParameterConfig.Feasible: %v", pc.Feasible) } - if jobType == jobTypeNAS && pc.Feasible.Step == "" && pc.ParameterType == katibv1alpha1.ParameterTypeDouble { + if jobType == jobTypeNAS && pc.Feasible.Step == "" && pc.ParameterType == katibv1alpha1.ParameterTypeDouble && suggestionAlgorithm == suggestionAlgorithmRL { return fmt.Errorf("Missing Step in ParameterConfig.Feasible for NAS job: %v", pc.Feasible) } } From 36958e0196968ad1a0f544b820a95b84d4a0876e Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Wed, 20 Feb 2019 20:57:02 -0800 Subject: [PATCH 05/17] Add Discrete ParameterType to validation --- pkg/controller/studyjob/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index 9350ee3297e..8e7773094d1 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -272,7 +272,7 @@ func validateParameterConfigs(parameterConfigs []katibv1alpha1.ParameterConfig, if reflect.DeepEqual(pc.Feasible, katibv1alpha1.FeasibleSpace{}) { return fmt.Errorf("Missing Feasible in ParameterConfig: %v", pc) } - if pc.ParameterType == katibv1alpha1.ParameterTypeCategorical { + if pc.ParameterType == katibv1alpha1.ParameterTypeCategorical || pc.ParameterType == katibv1alpha1.ParameterTypeDiscrete { if pc.Feasible.List == nil { return fmt.Errorf("Missing List in ParameterConfig.Feasible: %v", pc.Feasible) } From 76f8397980979ae2c97932330196933e23d4cfd4 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Thu, 21 Feb 2019 14:14:27 -0800 Subject: [PATCH 06/17] Move validation to webhook Change GetJobType function Make a list with NAS algorithms --- pkg/controller/studyjob/const.go | 14 +++++----- pkg/controller/studyjob/katib_api_util.go | 24 +++-------------- pkg/controller/studyjob/utils.go | 33 +++++++++++++++-------- 3 files changed, 33 insertions(+), 38 deletions(-) diff --git a/pkg/controller/studyjob/const.go b/pkg/controller/studyjob/const.go index 30827ab353d..2d9b268d343 100644 --- a/pkg/controller/studyjob/const.go +++ b/pkg/controller/studyjob/const.go @@ -12,12 +12,14 @@ limitations under the License. package studyjob const ( - DefaultJobWorker = "Job" - TFJobWorker = "TFJob" - PyTorchJobWorker = "PyTorchJob" - jobTypeNAS = "NAS" - jobTypeHP = "HP" - suggestionAlgorithmRL = "nasrl" + DefaultJobWorker = "Job" + TFJobWorker = "TFJob" + PyTorchJobWorker = "PyTorchJob" + jobTypeNAS = "NAS" + jobTypeHP = "HP" + suggestionNASRL = "nasrl" ) var ValidWorkerKindList = [...]string{DefaultJobWorker, TFJobWorker, PyTorchJobWorker} + +var suggestionNASList = []string{suggestionNASRL} diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index 8026c995bff..6ee4c85809a 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -25,24 +25,6 @@ import ( ) func initializeStudy(instance *katibv1alpha1.StudyJob) error { - if validErr := validateStudy(instance); validErr != nil { - instance.Status.Condition = katibv1alpha1.ConditionFailed - return validErr - } - - if getJobType(instance) != jobTypeNAS { - //Validate HP job - if validJobErr := validateHPJob(instance); validJobErr != nil { - instance.Status.Condition = katibv1alpha1.ConditionFailed - return validJobErr - } - } else { - //Validate NAS job - if validJobErr := validateNASJob(instance); validJobErr != nil { - instance.Status.Condition = katibv1alpha1.ConditionFailed - return validJobErr - } - } if instance.Spec.SuggestionSpec.SuggestionAlgorithm == "" { instance.Spec.SuggestionSpec.SuggestionAlgorithm = "random" @@ -92,15 +74,15 @@ func initializeStudy(instance *katibv1alpha1.StudyJob) error { } func getStudyConf(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConfig, error) { - jobType := getJobType(instance) + jobType := getJobType(instance.Spec.SuggestionSpec.SuggestionAlgorithm) if jobType == jobTypeNAS { return populateConfigForNAS(instance) } return populateConfigForHP(instance) } -func getJobType(instance *katibv1alpha1.StudyJob) string { - if instance.Spec.NasConfig != nil { +func getJobType(suggestionAlgorithm string) string { + if contains(suggestionNASList, suggestionAlgorithm) { return jobTypeNAS } return jobTypeHP diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index 8e7773094d1..713518a47f3 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -102,6 +102,21 @@ func getWorkerKind(workerSpec *katibv1alpha1.WorkerSpec) (*schema.GroupVersionKi } func validateStudy(instance *katibv1alpha1.StudyJob) error { + + if getJobType(instance.Spec.SuggestionSpec.SuggestionAlgorithm) != jobTypeNAS { + //Validate HP job + if validJobErr := validateHPJob(instance); validJobErr != nil { + instance.Status.Condition = katibv1alpha1.ConditionFailed + return validJobErr + } + } else { + //Validate NAS job + if validJobErr := validateNASJob(instance); validJobErr != nil { + instance.Status.Condition = katibv1alpha1.ConditionFailed + return validJobErr + } + } + if instance.Spec.SuggestionSpec == nil { return fmt.Errorf("No Spec.SuggestionSpec specified.") } @@ -156,6 +171,7 @@ func validateStudy(instance *katibv1alpha1.StudyJob) error { if mcjob.GetNamespace() != namespace || mcjob.GetName() != workerID { return fmt.Errorf("Invalid metricsCollector template.") } + return nil } @@ -212,14 +228,12 @@ func validateHPJob(instance *katibv1alpha1.StudyJob) error { if instance.Spec.ParameterConfigs == nil { return fmt.Errorf("No Spec.ParameterConfigs specified") } - err := validateParameterConfigs(instance.Spec.ParameterConfigs, jobTypeHP, instance.Spec.SuggestionSpec.SuggestionAlgorithm) - if err != nil { - return err - } - return nil + return validateParameterConfigs(instance.Spec.ParameterConfigs, jobTypeHP, instance.Spec.SuggestionSpec.SuggestionAlgorithm) + } func validateNASJob(instance *katibv1alpha1.StudyJob) error { + log.Printf("Validation for the NAS job") if instance.Spec.NasConfig == nil { return fmt.Errorf("No Spec.NasConfig specified") @@ -237,7 +251,7 @@ func validateNASJob(instance *katibv1alpha1.StudyJob) error { return fmt.Errorf("Missing OutputSize in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) } - if instance.Spec.NasConfig.GraphConfig.NumLayers == 0 && instance.Spec.SuggestionSpec.SuggestionAlgorithm == suggestionAlgorithmRL { + if instance.Spec.NasConfig.GraphConfig.NumLayers == 0 && contains(suggestionNASList, instance.Spec.SuggestionSpec.SuggestionAlgorithm) { return fmt.Errorf("Missing NumLayers in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) } @@ -252,10 +266,7 @@ func validateNASJob(instance *katibv1alpha1.StudyJob) error { if op.ParameterConfigs == nil { return fmt.Errorf("Missing ParameterConfig in Operation: %v", op) } - err := validateParameterConfigs(op.ParameterConfigs, jobTypeNAS, instance.Spec.SuggestionSpec.SuggestionAlgorithm) - if err != nil { - return err - } + return validateParameterConfigs(op.ParameterConfigs, jobTypeNAS, instance.Spec.SuggestionSpec.SuggestionAlgorithm) } return nil @@ -284,7 +295,7 @@ func validateParameterConfigs(parameterConfigs []katibv1alpha1.ParameterConfig, if pc.Feasible.Max == "" { return fmt.Errorf("Missing Max in ParameterConfig.Feasible: %v", pc.Feasible) } - if jobType == jobTypeNAS && pc.Feasible.Step == "" && pc.ParameterType == katibv1alpha1.ParameterTypeDouble && suggestionAlgorithm == suggestionAlgorithmRL { + if jobType == jobTypeNAS && pc.Feasible.Step == "" && pc.ParameterType == katibv1alpha1.ParameterTypeDouble && contains(suggestionNASList, suggestionAlgorithm) { return fmt.Errorf("Missing Step in ParameterConfig.Feasible for NAS job: %v", pc.Feasible) } } From c3e54cb43f4c932bd785cc83b191315fdda159bf Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Tue, 26 Feb 2019 19:48:17 -0800 Subject: [PATCH 07/17] Add ValidateSuggestionParameters function in Katib API --- cmd/manager/main.go | 19 + pkg/api/api.pb.go | 483 +++++++++++++--------- pkg/api/api.pb.gw.go | 46 +++ pkg/api/api.proto | 19 + pkg/api/api.swagger.json | 53 +++ pkg/api/gen-doc/api.md | 35 ++ pkg/api/gen-doc/index.html | 75 ++++ pkg/api/python/api_pb2.py | 164 +++++++- pkg/api/python/api_pb2_grpc.py | 18 + pkg/controller/studyjob/katib_api_util.go | 44 ++ pkg/controller/studyjob/utils.go | 14 - 11 files changed, 750 insertions(+), 220 deletions(-) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 67611edbdd7..96a3ab7527d 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -115,6 +115,25 @@ func (s *server) GetSuggestions(ctx context.Context, in *api_pb.GetSuggestionsRe return r, nil } +func (s *server) ValidateSuggestionParameters(ctx context.Context, in *api_pb.ValidateSuggestionParametersRequest) (*api_pb.ValidateSuggestionParametersReply, error) { + if in.SuggestionAlgorithm == "" { + return &api_pb.ValidateSuggestionParametersReply{IsValid: false}, errors.New("No suggest algorithm specified") + } + conn, err := grpc.Dial("vizier-suggestion-"+in.SuggestionAlgorithm+":6789", grpc.WithInsecure()) + if err != nil { + return &api_pb.ValidateSuggestionParametersReply{IsValid: false}, err + } + defer conn.Close() + c := api_pb.NewManagerClient(conn) + + r, err := c.ValidateSuggestionParameters(ctx, in) + + if err != nil { + return &api_pb.ValidateSuggestionParametersReply{IsValid: false}, err + } + return r, nil +} + func (s *server) RegisterWorker(ctx context.Context, in *api_pb.RegisterWorkerRequest) (*api_pb.RegisterWorkerReply, error) { wid, err := dbIf.CreateWorker(in.Worker) return &api_pb.RegisterWorkerReply{WorkerId: wid}, err diff --git a/pkg/api/api.pb.go b/pkg/api/api.pb.go index 9044ae2ce8e..0ce5be21fb2 100644 --- a/pkg/api/api.pb.go +++ b/pkg/api/api.pb.go @@ -86,6 +86,8 @@ It has these top-level messages: GetEarlyStoppingParameterListRequest EarlyStoppingParameterSet GetEarlyStoppingParameterListReply + ValidateSuggestionParametersRequest + ValidateSuggestionParametersReply */ package api @@ -2198,6 +2200,58 @@ func (m *GetEarlyStoppingParameterListReply) GetEarlyStoppingParameterSets() []* return nil } +type ValidateSuggestionParametersRequest struct { + StudyConfig *StudyConfig `protobuf:"bytes,1,opt,name=study_config,json=studyConfig" json:"study_config,omitempty"` + SuggestionAlgorithm string `protobuf:"bytes,2,opt,name=suggestion_algorithm,json=suggestionAlgorithm" json:"suggestion_algorithm,omitempty"` + SuggestionParameters []*SuggestionParameter `protobuf:"bytes,3,rep,name=suggestion_parameters,json=suggestionParameters" json:"suggestion_parameters,omitempty"` +} + +func (m *ValidateSuggestionParametersRequest) Reset() { *m = ValidateSuggestionParametersRequest{} } +func (m *ValidateSuggestionParametersRequest) String() string { return proto.CompactTextString(m) } +func (*ValidateSuggestionParametersRequest) ProtoMessage() {} +func (*ValidateSuggestionParametersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{78} +} + +func (m *ValidateSuggestionParametersRequest) GetStudyConfig() *StudyConfig { + if m != nil { + return m.StudyConfig + } + return nil +} + +func (m *ValidateSuggestionParametersRequest) GetSuggestionAlgorithm() string { + if m != nil { + return m.SuggestionAlgorithm + } + return "" +} + +func (m *ValidateSuggestionParametersRequest) GetSuggestionParameters() []*SuggestionParameter { + if m != nil { + return m.SuggestionParameters + } + return nil +} + +type ValidateSuggestionParametersReply struct { + IsValid bool `protobuf:"varint,1,opt,name=is_valid,json=isValid" json:"is_valid,omitempty"` +} + +func (m *ValidateSuggestionParametersReply) Reset() { *m = ValidateSuggestionParametersReply{} } +func (m *ValidateSuggestionParametersReply) String() string { return proto.CompactTextString(m) } +func (*ValidateSuggestionParametersReply) ProtoMessage() {} +func (*ValidateSuggestionParametersReply) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{79} +} + +func (m *ValidateSuggestionParametersReply) GetIsValid() bool { + if m != nil { + return m.IsValid + } + return false +} + func init() { proto.RegisterType((*FeasibleSpace)(nil), "api.FeasibleSpace") proto.RegisterType((*ParameterConfig)(nil), "api.ParameterConfig") @@ -2280,6 +2334,8 @@ func init() { proto.RegisterType((*GetEarlyStoppingParameterListRequest)(nil), "api.GetEarlyStoppingParameterListRequest") proto.RegisterType((*EarlyStoppingParameterSet)(nil), "api.EarlyStoppingParameterSet") proto.RegisterType((*GetEarlyStoppingParameterListReply)(nil), "api.GetEarlyStoppingParameterListReply") + proto.RegisterType((*ValidateSuggestionParametersRequest)(nil), "api.ValidateSuggestionParametersRequest") + proto.RegisterType((*ValidateSuggestionParametersReply)(nil), "api.ValidateSuggestionParametersReply") proto.RegisterEnum("api.ParameterType", ParameterType_name, ParameterType_value) proto.RegisterEnum("api.OptimizationType", OptimizationType_name, OptimizationType_value) proto.RegisterEnum("api.State", State_name, State_value) @@ -2365,6 +2421,9 @@ type ManagerClient interface { ReportMetricsLogs(ctx context.Context, in *ReportMetricsLogsRequest, opts ...grpc.CallOption) (*ReportMetricsLogsReply, error) GetSavedStudies(ctx context.Context, in *GetSavedStudiesRequest, opts ...grpc.CallOption) (*GetSavedStudiesReply, error) GetSavedModels(ctx context.Context, in *GetSavedModelsRequest, opts ...grpc.CallOption) (*GetSavedModelsReply, error) + // * + // Validate Suggestion Parameters from Study Job. + ValidateSuggestionParameters(ctx context.Context, in *ValidateSuggestionParametersRequest, opts ...grpc.CallOption) (*ValidateSuggestionParametersReply, error) } type managerClient struct { @@ -2600,6 +2659,15 @@ func (c *managerClient) GetSavedModels(ctx context.Context, in *GetSavedModelsRe return out, nil } +func (c *managerClient) ValidateSuggestionParameters(ctx context.Context, in *ValidateSuggestionParametersRequest, opts ...grpc.CallOption) (*ValidateSuggestionParametersReply, error) { + out := new(ValidateSuggestionParametersReply) + err := grpc.Invoke(ctx, "/api.Manager/ValidateSuggestionParameters", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for Manager service type ManagerServer interface { @@ -2672,6 +2740,9 @@ type ManagerServer interface { ReportMetricsLogs(context.Context, *ReportMetricsLogsRequest) (*ReportMetricsLogsReply, error) GetSavedStudies(context.Context, *GetSavedStudiesRequest) (*GetSavedStudiesReply, error) GetSavedModels(context.Context, *GetSavedModelsRequest) (*GetSavedModelsReply, error) + // * + // Validate Suggestion Parameters from Study Job. + ValidateSuggestionParameters(context.Context, *ValidateSuggestionParametersRequest) (*ValidateSuggestionParametersReply, error) } func RegisterManagerServer(s *grpc.Server, srv ManagerServer) { @@ -3128,6 +3199,24 @@ func _Manager_GetSavedModels_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Manager_ValidateSuggestionParameters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ValidateSuggestionParametersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ManagerServer).ValidateSuggestionParameters(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/api.Manager/ValidateSuggestionParameters", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ManagerServer).ValidateSuggestionParameters(ctx, req.(*ValidateSuggestionParametersRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Manager_serviceDesc = grpc.ServiceDesc{ ServiceName: "api.Manager", HandlerType: (*ManagerServer)(nil), @@ -3232,6 +3321,10 @@ var _Manager_serviceDesc = grpc.ServiceDesc{ MethodName: "GetSavedModels", Handler: _Manager_GetSavedModels_Handler, }, + { + MethodName: "ValidateSuggestionParameters", + Handler: _Manager_ValidateSuggestionParameters_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "api.proto", @@ -3368,197 +3461,201 @@ var _EarlyStopping_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 3060 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x4b, 0x73, 0x1b, 0xc7, - 0xf1, 0xf7, 0x12, 0x7c, 0xa1, 0x41, 0x82, 0xd0, 0xf0, 0x05, 0x82, 0x22, 0x45, 0x8e, 0x68, 0x49, - 0xd6, 0x83, 0xb4, 0x21, 0xbf, 0x44, 0xcb, 0x7f, 0x97, 0x44, 0xd2, 0xfc, 0xa3, 0x4c, 0x82, 0xac, - 0x25, 0x14, 0xfa, 0x51, 0x65, 0xd4, 0x92, 0x18, 0x42, 0x2b, 0x03, 0xd8, 0x0d, 0x76, 0x29, 0x99, - 0x72, 0xf9, 0x92, 0x4b, 0x72, 0x49, 0x95, 0x93, 0x54, 0x2e, 0x39, 0xf8, 0x98, 0x0f, 0x90, 0x2a, - 0x57, 0x2a, 0x97, 0x5c, 0x72, 0xca, 0x21, 0xa7, 0x54, 0xaa, 0xf2, 0x01, 0x72, 0x4b, 0x3e, 0x44, - 0x6a, 0x7a, 0x66, 0x77, 0x67, 0x17, 0xbb, 0x0b, 0x58, 0xb2, 0x73, 0xc3, 0xce, 0xf4, 0xe3, 0xd7, - 0xdd, 0xd3, 0xdd, 0x33, 0x4d, 0x42, 0xd6, 0xb0, 0xcd, 0x75, 0xbb, 0x6b, 0xb9, 0x16, 0xc9, 0x18, - 0xb6, 0x59, 0xba, 0xdc, 0xb4, 0xac, 0x66, 0x8b, 0x6d, 0x18, 0xb6, 0xb9, 0x61, 0x74, 0x3a, 0x96, - 0x6b, 0xb8, 0xa6, 0xd5, 0x71, 0x04, 0x09, 0xfd, 0x0c, 0x26, 0x3f, 0x64, 0x86, 0x63, 0x9e, 0xb4, - 0xd8, 0x91, 0x6d, 0x9c, 0x32, 0x52, 0x80, 0x4c, 0xdb, 0xf8, 0xb2, 0xa8, 0xad, 0x68, 0x37, 0xb2, - 0x3a, 0xff, 0x89, 0x2b, 0x66, 0xa7, 0x38, 0x24, 0x57, 0xcc, 0x0e, 0x21, 0x30, 0xdc, 0x32, 0x1d, - 0xb7, 0x98, 0x59, 0xc9, 0xdc, 0xc8, 0xea, 0xf8, 0x9b, 0xaf, 0x39, 0x2e, 0xb3, 0x8b, 0xc3, 0x48, - 0x86, 0xbf, 0xe9, 0x37, 0x1a, 0x4c, 0x1d, 0x1a, 0x5d, 0xa3, 0xcd, 0x5c, 0xd6, 0xdd, 0xb2, 0x3a, - 0x67, 0x66, 0x93, 0xd3, 0x75, 0x8c, 0x36, 0x93, 0x0a, 0xf0, 0x37, 0xb9, 0x07, 0x79, 0xdb, 0x23, - 0xab, 0xbb, 0x17, 0x36, 0x43, 0x65, 0xf9, 0x32, 0x59, 0xe7, 0xb6, 0xf8, 0x12, 0x6a, 0x17, 0x36, - 0xd3, 0x27, 0x6d, 0xf5, 0x93, 0xac, 0xc3, 0xf8, 0x99, 0xc4, 0x5f, 0xcc, 0xac, 0x68, 0x37, 0x72, - 0x92, 0x29, 0x64, 0x94, 0xee, 0xd3, 0x50, 0x1b, 0xb2, 0xbe, 0xbc, 0x1f, 0x1a, 0xcb, 0x0c, 0x8c, - 0x3c, 0x35, 0x5a, 0xe7, 0x02, 0x48, 0x56, 0x17, 0x1f, 0xf4, 0x57, 0x1a, 0x4c, 0xee, 0x33, 0xb7, - 0x6b, 0x9e, 0x3a, 0x7b, 0x56, 0xf3, 0x88, 0xb9, 0x64, 0x11, 0xb2, 0xcf, 0xac, 0xee, 0x17, 0xac, - 0x5b, 0x37, 0x1b, 0x52, 0xf7, 0xb8, 0x58, 0xa8, 0x34, 0x48, 0x19, 0x26, 0xda, 0x82, 0xba, 0xde, - 0xb2, 0x9a, 0x4e, 0x71, 0x68, 0x25, 0x73, 0x23, 0x57, 0x9e, 0x42, 0xed, 0x81, 0x18, 0x3d, 0xd7, - 0xf6, 0x7f, 0x3b, 0x64, 0x03, 0x26, 0xa5, 0x40, 0xc7, 0x35, 0xdc, 0x73, 0x07, 0x01, 0xe4, 0xcb, - 0x80, 0x4c, 0x47, 0xae, 0xe1, 0x32, 0x7d, 0x42, 0x10, 0x1c, 0xe1, 0x3e, 0xbd, 0x0b, 0x63, 0x52, - 0x56, 0xac, 0x0f, 0x7c, 0x43, 0x86, 0x54, 0x43, 0xee, 0x43, 0x41, 0x32, 0xfd, 0x84, 0x7f, 0xd7, - 0xcc, 0x36, 0xe3, 0xdc, 0xae, 0x19, 0x70, 0xf3, 0xdf, 0x09, 0xdc, 0x07, 0x00, 0x01, 0xfc, 0x58, - 0xad, 0x77, 0x60, 0x14, 0x49, 0x3d, 0x9b, 0x67, 0x55, 0x9b, 0x7d, 0x95, 0xba, 0x24, 0xa2, 0x1f, - 0xc0, 0xf4, 0xd1, 0x79, 0xb3, 0xc9, 0x1c, 0x7e, 0x9c, 0xd3, 0x63, 0x1a, 0x8f, 0xe8, 0x21, 0xcc, - 0xed, 0x18, 0xdd, 0xd6, 0xc5, 0x91, 0x6b, 0xd9, 0xb6, 0xd9, 0x69, 0xbe, 0x88, 0x8c, 0x0d, 0xc8, - 0xd4, 0x8c, 0xe6, 0xf7, 0x60, 0xf8, 0x02, 0x26, 0x8f, 0xdc, 0xf3, 0xc6, 0xc5, 0xc1, 0x53, 0xd6, - 0x7d, 0x6a, 0xb2, 0x67, 0x49, 0xac, 0xd6, 0xb3, 0x0e, 0xeb, 0x7a, 0xac, 0xf8, 0x41, 0xf2, 0x30, - 0x64, 0x36, 0xe4, 0xd9, 0x1a, 0x32, 0x1b, 0x64, 0x05, 0x72, 0x0d, 0xe6, 0x9c, 0x76, 0x4d, 0x9b, - 0x7b, 0x40, 0x26, 0x9e, 0xba, 0x44, 0xff, 0xa4, 0xc1, 0x48, 0xad, 0x6b, 0x1a, 0x2d, 0xb2, 0x00, - 0xe3, 0x2e, 0xff, 0x11, 0x9c, 0xb8, 0x31, 0xfc, 0xae, 0x34, 0xf8, 0x96, 0xc3, 0x11, 0xf1, 0x2d, - 0xa1, 0x6f, 0x0c, 0xbf, 0x2b, 0x0d, 0x72, 0x17, 0x82, 0x13, 0x5e, 0x77, 0x98, 0x48, 0xf8, 0x5c, - 0x39, 0x1f, 0x4e, 0x05, 0x7d, 0xc2, 0x27, 0xe2, 0xa7, 0xfb, 0x3a, 0x4c, 0x59, 0x27, 0x4f, 0xd8, - 0xa9, 0x6b, 0x3e, 0x65, 0x75, 0xe1, 0x01, 0x01, 0x2d, 0xef, 0x2f, 0x63, 0x30, 0xc9, 0x65, 0x18, - 0x76, 0x8d, 0xa6, 0x53, 0x1c, 0x41, 0xa1, 0xe3, 0x28, 0xb4, 0x66, 0x34, 0x75, 0x5c, 0xa5, 0xff, - 0xd0, 0x60, 0xf4, 0x18, 0xcf, 0x6c, 0x7a, 0xbe, 0xa4, 0xc0, 0x57, 0x8d, 0xce, 0x84, 0x8d, 0x26, - 0x30, 0xcc, 0x53, 0xd6, 0xab, 0x56, 0x98, 0xbe, 0x14, 0x46, 0x65, 0xfa, 0x8c, 0xf4, 0xa4, 0x8f, - 0xdc, 0x21, 0x14, 0x26, 0x6a, 0xac, 0x6d, 0xb7, 0x0c, 0x97, 0x1d, 0x1a, 0xee, 0xe3, 0xe2, 0x28, - 0xf2, 0x87, 0xd6, 0x7c, 0xbb, 0xc6, 0x62, 0xed, 0xfa, 0xa3, 0x06, 0xd9, 0xaa, 0xe1, 0xc8, 0x6a, - 0x78, 0x17, 0x26, 0x9a, 0x5d, 0xc3, 0x7e, 0x5c, 0x3f, 0xc5, 0x6f, 0xb4, 0x2e, 0x57, 0x2e, 0x20, - 0xcf, 0x2e, 0xdf, 0x10, 0x74, 0x7a, 0xae, 0x19, 0x7c, 0x90, 0x7b, 0x00, 0x96, 0xcd, 0xba, 0xa2, - 0x8e, 0xa3, 0xd1, 0xb9, 0xf2, 0x02, 0xb2, 0xf8, 0x82, 0xd7, 0x0f, 0x7c, 0x02, 0x5d, 0x21, 0x2e, - 0x6d, 0x02, 0x04, 0x3b, 0xe4, 0x36, 0x64, 0xfd, 0xbd, 0xa2, 0xa6, 0xc4, 0xd6, 0xa7, 0xd1, 0x03, - 0x02, 0xda, 0x82, 0x9c, 0x02, 0x89, 0x2c, 0x01, 0x74, 0xce, 0xdb, 0xf5, 0x96, 0x71, 0xc1, 0xba, - 0x0e, 0x02, 0x1f, 0xd1, 0xb3, 0x9d, 0xf3, 0xf6, 0x1e, 0x2e, 0xf0, 0x6d, 0xb3, 0x63, 0x9f, 0xbb, - 0x75, 0xc7, 0x7c, 0xce, 0x30, 0xa3, 0x47, 0xf4, 0x2c, 0xae, 0x1c, 0x99, 0xcf, 0x19, 0xb9, 0x02, - 0x39, 0xeb, 0xdc, 0xf5, 0xf7, 0x33, 0xb8, 0x0f, 0x62, 0x89, 0x13, 0xd0, 0xbf, 0x68, 0x90, 0xf5, - 0x61, 0x90, 0x35, 0x98, 0xf4, 0x81, 0x60, 0xe0, 0xc4, 0x31, 0x08, 0x2f, 0x92, 0x3d, 0xb8, 0x14, - 0x9c, 0x57, 0xe1, 0x51, 0xcf, 0x3f, 0x57, 0xc2, 0x76, 0xad, 0x47, 0xda, 0x92, 0xa3, 0x17, 0xec, - 0xc8, 0x4a, 0xe9, 0x21, 0x14, 0xa2, 0x54, 0x64, 0x1d, 0xc6, 0x3c, 0xb9, 0xc2, 0x5f, 0x33, 0xe1, - 0x5c, 0x90, 0xe1, 0xf2, 0x88, 0xe8, 0x77, 0xc3, 0x90, 0xc3, 0x7c, 0x4f, 0xe9, 0x7e, 0xf1, 0xd9, - 0xfe, 0x10, 0x2e, 0x59, 0xb6, 0x6b, 0xb6, 0xcd, 0xe7, 0x08, 0x58, 0xb4, 0x22, 0x51, 0xd7, 0x67, - 0xa5, 0x2d, 0xc1, 0x2e, 0x76, 0xa3, 0x82, 0x15, 0x59, 0x21, 0xb7, 0x22, 0x32, 0x9a, 0x96, 0xd1, - 0xc2, 0x23, 0xaf, 0x85, 0x89, 0x77, 0x2d, 0xa3, 0x45, 0xaa, 0x71, 0xce, 0x1b, 0x41, 0xe7, 0xad, - 0xca, 0x4c, 0xf0, 0xed, 0x18, 0xc0, 0x7d, 0xe4, 0x0e, 0x10, 0xe3, 0xf4, 0x94, 0x39, 0x4e, 0xdd, - 0x66, 0xdd, 0xb6, 0xe9, 0x38, 0x78, 0x5a, 0x47, 0xf1, 0xca, 0x70, 0x49, 0xec, 0x1c, 0x06, 0x1b, - 0xe9, 0x59, 0x43, 0x5e, 0x87, 0x99, 0x48, 0x51, 0xa9, 0xa3, 0x1f, 0xc7, 0xd1, 0x65, 0x24, 0x5c, - 0x59, 0xaa, 0xdc, 0xab, 0x45, 0x18, 0x93, 0x2d, 0xb2, 0x98, 0x45, 0x9d, 0xde, 0x27, 0xf7, 0xf7, - 0x13, 0xeb, 0xa4, 0xd2, 0x28, 0x82, 0xf0, 0x37, 0x7e, 0x90, 0x3b, 0x00, 0x1d, 0xc3, 0xf1, 0xf2, - 0x30, 0x87, 0x76, 0xe7, 0xc3, 0x49, 0xa5, 0x67, 0x3b, 0x7e, 0xe2, 0x2e, 0xc0, 0xf8, 0x13, 0xeb, - 0x44, 0x44, 0x65, 0x42, 0xd4, 0x96, 0x27, 0xd6, 0x09, 0xf7, 0xfa, 0x0f, 0x72, 0x6e, 0x2a, 0x40, - 0xb6, 0xba, 0xcc, 0x70, 0x19, 0x3a, 0x5d, 0x67, 0x3f, 0x3d, 0x67, 0x8e, 0xcb, 0xab, 0x85, 0xa8, - 0x75, 0x31, 0xd5, 0x42, 0x89, 0x8e, 0x9e, 0x73, 0x82, 0x0f, 0x7a, 0x07, 0x0a, 0x21, 0x51, 0x76, - 0xeb, 0x22, 0x54, 0x34, 0xb5, 0x50, 0xd1, 0xa4, 0x1b, 0x40, 0xb6, 0x59, 0x8b, 0x45, 0x34, 0xa7, - 0x30, 0xdc, 0x81, 0x42, 0x88, 0xa1, 0x8f, 0xfc, 0xdb, 0x30, 0xb5, 0xcb, 0xdc, 0x41, 0x85, 0x6f, - 0xc3, 0x64, 0x40, 0xcd, 0x25, 0xbf, 0x90, 0x0b, 0x66, 0x61, 0xda, 0x93, 0xb2, 0x67, 0x3a, 0xae, - 0xd4, 0x4b, 0x0f, 0xe1, 0x52, 0x78, 0x99, 0x2b, 0x78, 0x0f, 0xa6, 0x84, 0x02, 0x4b, 0x76, 0x68, - 0x2f, 0x62, 0x24, 0xd0, 0xe1, 0x35, 0x6f, 0x3d, 0xef, 0xa8, 0x9f, 0x0e, 0x7d, 0xdb, 0x0b, 0x1b, - 0x76, 0x5d, 0xcf, 0xbe, 0x15, 0x18, 0xc1, 0xbe, 0x23, 0xc1, 0x8a, 0xbe, 0x22, 0x28, 0xc4, 0x46, - 0x10, 0x23, 0xc9, 0x27, 0x7d, 0x98, 0xd0, 0xb2, 0x39, 0xf9, 0x2e, 0x73, 0x91, 0xd6, 0x19, 0xc0, - 0x89, 0x6f, 0x42, 0x5e, 0x21, 0xe7, 0xb2, 0x29, 0x8c, 0xa2, 0x2c, 0xcf, 0x36, 0x15, 0x92, 0xdc, - 0x91, 0x81, 0x0a, 0x19, 0x92, 0x02, 0xe9, 0x0d, 0x0c, 0x94, 0x02, 0xbf, 0xbf, 0xd1, 0xf7, 0x61, - 0x56, 0x67, 0x4d, 0xd3, 0x71, 0x59, 0x57, 0x34, 0x7a, 0x4f, 0xcd, 0x55, 0x18, 0x15, 0xed, 0x5d, - 0xf2, 0xe6, 0x90, 0x57, 0xd2, 0xc8, 0x2d, 0x5a, 0x86, 0xe9, 0x28, 0x37, 0x57, 0x9b, 0x76, 0x57, - 0xa0, 0x16, 0x10, 0x7e, 0xd9, 0x13, 0xf4, 0x03, 0x78, 0x8e, 0x37, 0x31, 0x5f, 0x9a, 0xb8, 0x96, - 0x66, 0xf5, 0xac, 0x27, 0xce, 0xe1, 0x4d, 0xcc, 0xe4, 0x25, 0xa3, 0x6d, 0xf3, 0xf3, 0x8f, 0xd5, - 0x79, 0x5c, 0x07, 0xd3, 0xd9, 0x92, 0x2b, 0x94, 0x40, 0x21, 0xa4, 0xd0, 0x6e, 0x5d, 0xd0, 0x33, - 0x3c, 0x75, 0x83, 0x63, 0x50, 0x9d, 0x3e, 0x14, 0xbe, 0xc5, 0x84, 0x8c, 0xcd, 0x44, 0x8c, 0x7d, - 0x17, 0xe3, 0xa7, 0xaa, 0x26, 0xaf, 0xc2, 0x98, 0xd8, 0xf6, 0xe2, 0x1e, 0xf2, 0xac, 0xb7, 0x47, - 0x3f, 0x83, 0xe2, 0x23, 0xbb, 0x61, 0xb8, 0xec, 0xd8, 0x7f, 0x33, 0x30, 0x0f, 0x68, 0xea, 0x5d, - 0x2c, 0xb8, 0x41, 0x0d, 0x25, 0xdd, 0xa0, 0x68, 0x11, 0xe6, 0x62, 0x84, 0x73, 0xc7, 0xfc, 0x56, - 0x83, 0xa2, 0x8f, 0xf8, 0xc3, 0xf3, 0x56, 0xab, 0xd2, 0x39, 0xb3, 0x7e, 0x3c, 0x07, 0x91, 0x6b, - 0x30, 0x65, 0x75, 0x5a, 0x17, 0x75, 0x7e, 0x71, 0x73, 0x5c, 0xfe, 0xda, 0xc2, 0xde, 0x38, 0xae, - 0x4f, 0xf2, 0xe5, 0x3d, 0x5c, 0xdd, 0xb3, 0x9a, 0xf4, 0x5b, 0x0d, 0xf2, 0x61, 0x50, 0xfc, 0x84, - 0x1e, 0x27, 0x9f, 0x50, 0x79, 0x6d, 0xed, 0xb9, 0x3d, 0x0f, 0x0d, 0x70, 0x7b, 0x8e, 0x3e, 0xff, - 0x32, 0xfd, 0x9f, 0x7f, 0xf4, 0x13, 0x98, 0x8b, 0xf1, 0x1b, 0x0f, 0xf8, 0x07, 0x70, 0x49, 0xda, - 0x7f, 0x76, 0xde, 0x6a, 0xd5, 0xcd, 0xce, 0x99, 0xe5, 0x85, 0x7e, 0x5a, 0x81, 0xec, 0x33, 0x4d, - 0x3d, 0x0b, 0x7d, 0x3b, 0xf4, 0x6f, 0x1a, 0xcc, 0xf2, 0x1a, 0xe9, 0x3f, 0xb4, 0x06, 0x39, 0xb1, - 0x6f, 0xc0, 0x8c, 0xe3, 0x33, 0xd4, 0x8d, 0x56, 0xd3, 0xea, 0x9a, 0xee, 0xe3, 0xb6, 0x0c, 0xce, - 0x74, 0xb0, 0xf7, 0xc0, 0xdb, 0x22, 0xaf, 0x42, 0xbe, 0x2b, 0x04, 0xd7, 0x3b, 0xe7, 0xed, 0x13, - 0xd6, 0xc5, 0x68, 0x8d, 0xe8, 0x93, 0x72, 0xb5, 0x8a, 0x8b, 0x64, 0x0d, 0xf2, 0x2d, 0xab, 0x59, - 0x57, 0x72, 0x72, 0x18, 0x73, 0x72, 0xa2, 0x65, 0x35, 0x8f, 0xfd, 0xb4, 0x5c, 0x80, 0x71, 0xf4, - 0x29, 0x87, 0x36, 0x22, 0xa0, 0xe1, 0x77, 0xa5, 0x41, 0xef, 0x89, 0x4e, 0xa0, 0x9a, 0x33, 0x68, - 0x3d, 0xfc, 0xa5, 0x06, 0x8b, 0x9c, 0xf7, 0xb1, 0x75, 0xde, 0x6a, 0x7c, 0xbf, 0x32, 0xf2, 0x2e, - 0x14, 0x19, 0x7f, 0x69, 0xd6, 0x1d, 0xf9, 0xd4, 0xec, 0x71, 0xca, 0x1c, 0x53, 0x5f, 0xa2, 0x81, - 0x5f, 0x52, 0x4c, 0x39, 0x84, 0x85, 0x78, 0x38, 0xa2, 0x4d, 0xce, 0x39, 0xb8, 0x83, 0x2a, 0x55, - 0x87, 0x69, 0xe8, 0xb0, 0x69, 0x27, 0xc2, 0x57, 0x69, 0x38, 0xb4, 0x8b, 0x95, 0x49, 0x9e, 0xb2, - 0x97, 0xaf, 0x8e, 0x57, 0x61, 0xd2, 0x3b, 0xca, 0xfc, 0xae, 0xe6, 0xc8, 0x71, 0x91, 0x77, 0xbe, - 0xf9, 0x2d, 0xcd, 0xa1, 0x07, 0x58, 0xa5, 0x7c, 0x9d, 0x1c, 0xfb, 0x7d, 0x28, 0x28, 0x29, 0xc0, - 0x33, 0x27, 0xdc, 0x82, 0x43, 0xc3, 0x14, 0x3d, 0xdf, 0x56, 0x3f, 0x1d, 0xea, 0x40, 0x51, 0x67, - 0xb6, 0xd5, 0x75, 0x03, 0xb2, 0x41, 0x6c, 0x89, 0x53, 0x9a, 0x19, 0x58, 0x69, 0x11, 0xe6, 0x62, - 0x94, 0xf2, 0xa2, 0xf6, 0x67, 0x0d, 0xb2, 0xfb, 0x56, 0x83, 0x89, 0xba, 0xb1, 0x04, 0x20, 0x00, - 0x28, 0x8f, 0x80, 0x2c, 0xae, 0xe0, 0x9d, 0x35, 0x54, 0xae, 0x86, 0x22, 0xe5, 0x6a, 0x1d, 0xc0, - 0xaf, 0x14, 0x4e, 0xc2, 0x4b, 0x5c, 0xa1, 0x20, 0xd7, 0x82, 0x0b, 0xf0, 0x30, 0x12, 0x4f, 0xa8, - 0x86, 0x04, 0xd7, 0xe1, 0x25, 0x80, 0x36, 0x07, 0x58, 0xb7, 0xf9, 0x83, 0x56, 0x1c, 0xb2, 0x2c, - 0xae, 0xf0, 0xd7, 0x2c, 0x7d, 0x0b, 0x72, 0xdb, 0x86, 0x6b, 0x1c, 0x31, 0x17, 0x2d, 0x88, 0x7b, - 0xc0, 0x10, 0x18, 0x46, 0x5e, 0x81, 0x18, 0x7f, 0x53, 0x13, 0x0a, 0x47, 0xc6, 0xd3, 0xf0, 0x25, - 0xb2, 0x8f, 0xf5, 0xf1, 0xef, 0xa0, 0xc8, 0x94, 0x23, 0xd3, 0x3b, 0xe5, 0x28, 0x40, 0x5e, 0x51, - 0xc5, 0x9d, 0xfe, 0x0b, 0x4d, 0x68, 0x47, 0xc7, 0x7b, 0xda, 0xd7, 0x60, 0x04, 0xad, 0x92, 0x25, - 0x5b, 0xb8, 0xce, 0x0f, 0x8d, 0x2e, 0x36, 0xc9, 0x2d, 0x18, 0x6f, 0x18, 0xae, 0x21, 0xeb, 0x75, - 0x70, 0xb7, 0x54, 0x7c, 0xa0, 0x8f, 0x35, 0xc4, 0x07, 0x59, 0x85, 0x09, 0x97, 0x75, 0x1c, 0xab, - 0x5b, 0x3f, 0xb1, 0x8c, 0x6e, 0x43, 0x5e, 0x00, 0x72, 0x62, 0xed, 0x21, 0x5f, 0xf2, 0xc0, 0x49, - 0x24, 0x1c, 0x5c, 0x11, 0xab, 0x35, 0x5f, 0x6c, 0x70, 0xc8, 0x26, 0xf3, 0x8e, 0x27, 0xdd, 0x86, - 0x99, 0x9e, 0x1d, 0x9e, 0x10, 0xb7, 0x01, 0x8f, 0xa9, 0xc9, 0xd2, 0xae, 0xa2, 0x1e, 0x09, 0x7d, - 0x5b, 0x54, 0x6c, 0x2e, 0x05, 0xb5, 0x3a, 0x83, 0xb9, 0x9f, 0xbe, 0x2f, 0x4a, 0xa3, 0xca, 0xc7, - 0x95, 0x5f, 0x83, 0x51, 0xf4, 0x8c, 0x13, 0x1a, 0x10, 0x04, 0x7e, 0x93, 0xbb, 0x54, 0x0f, 0xc0, - 0x87, 0xdc, 0xfe, 0x12, 0x47, 0x9e, 0x6e, 0x02, 0x89, 0xc8, 0xe4, 0x88, 0x06, 0x0a, 0x24, 0xfd, - 0xa7, 0x06, 0xcb, 0x47, 0x6a, 0xa9, 0xf7, 0xb3, 0xe4, 0x47, 0x6a, 0x61, 0x6a, 0xa9, 0xce, 0x84, - 0x4a, 0x35, 0xd9, 0x87, 0x59, 0x45, 0x9a, 0x92, 0xc5, 0x22, 0x31, 0x8b, 0x22, 0x9c, 0xbd, 0x48, - 0x75, 0x05, 0x44, 0x00, 0x9f, 0xde, 0x83, 0xcb, 0x89, 0x96, 0xc9, 0x97, 0x83, 0x8f, 0x44, 0x0b, - 0x37, 0x8d, 0xf7, 0x60, 0x79, 0xb7, 0xaf, 0x53, 0x92, 0x98, 0xdb, 0x70, 0x79, 0x37, 0x4d, 0x6f, - 0xa2, 0x99, 0xda, 0x0b, 0x99, 0xf9, 0x7f, 0xb0, 0x1a, 0xaf, 0x4e, 0x79, 0xc3, 0xa5, 0x3d, 0x7b, - 0xbe, 0xd3, 0x60, 0x2e, 0x86, 0x9b, 0x27, 0x6e, 0xb2, 0x91, 0x2f, 0x12, 0xf9, 0x44, 0xbb, 0x33, - 0x2f, 0x64, 0xf7, 0x73, 0xb8, 0x92, 0x66, 0x37, 0xf7, 0xf4, 0x31, 0x2c, 0xc4, 0x69, 0x54, 0x7b, - 0xe5, 0x62, 0x92, 0x56, 0xde, 0xbf, 0xe6, 0x9d, 0xd8, 0x75, 0x87, 0x96, 0x61, 0x96, 0xdf, 0x09, - 0x02, 0xb6, 0x01, 0xfc, 0x3c, 0x0b, 0xd3, 0x51, 0x1e, 0x5e, 0xe7, 0xfe, 0xa3, 0xc1, 0xea, 0x11, - 0x73, 0xe3, 0x47, 0xec, 0xff, 0xbb, 0x5b, 0x53, 0x24, 0x15, 0x8f, 0x61, 0x21, 0x22, 0xb4, 0x27, - 0x1d, 0x85, 0xe7, 0xe2, 0x71, 0xeb, 0xf3, 0x2c, 0xde, 0x1e, 0x7a, 0x1f, 0xae, 0xa4, 0x59, 0xdb, - 0x27, 0x2f, 0xc5, 0x59, 0xef, 0xef, 0xab, 0x24, 0x7e, 0x71, 0x66, 0x52, 0xb5, 0xa7, 0x5a, 0xae, - 0xbd, 0x84, 0xe5, 0x0f, 0x60, 0x2d, 0x51, 0xf7, 0x80, 0xa9, 0xfa, 0x57, 0x0d, 0x16, 0xe2, 0x05, - 0xf4, 0xc9, 0xd6, 0x17, 0x3f, 0x23, 0xa9, 0xee, 0xc8, 0xbc, 0x84, 0x3b, 0x7e, 0xae, 0x01, 0xed, - 0xe3, 0x0f, 0x1e, 0x0e, 0x03, 0x96, 0x92, 0xf4, 0xab, 0x69, 0xbc, 0x9c, 0x82, 0x81, 0x67, 0x72, - 0x89, 0x25, 0x6d, 0x39, 0x37, 0x1f, 0xc1, 0x64, 0xe8, 0xef, 0x95, 0xa4, 0x00, 0x13, 0x8f, 0xaa, - 0x1f, 0x55, 0x0f, 0x8e, 0xab, 0xf5, 0xda, 0x27, 0x87, 0x3b, 0x85, 0x57, 0x08, 0xc0, 0xe8, 0xf6, - 0xc1, 0xa3, 0x87, 0x7b, 0x3b, 0x05, 0x8d, 0x8c, 0x41, 0xa6, 0x52, 0xad, 0x15, 0x86, 0xc8, 0x04, - 0x8c, 0x6f, 0x57, 0x8e, 0xb6, 0xf4, 0x9d, 0xda, 0x4e, 0x21, 0x43, 0xa6, 0x20, 0xb7, 0xf5, 0xa0, - 0xb6, 0xb3, 0x7b, 0xa0, 0x57, 0xb6, 0x1e, 0xec, 0x15, 0x86, 0x6f, 0xfe, 0x3f, 0x14, 0xa2, 0xb3, - 0x67, 0x52, 0x84, 0x19, 0x4f, 0xf2, 0xc1, 0x61, 0xad, 0xb2, 0x5f, 0xf9, 0xf4, 0x41, 0xad, 0x72, - 0x50, 0x2d, 0xbc, 0xc2, 0x85, 0xed, 0x57, 0xaa, 0x7c, 0x85, 0xeb, 0xe0, 0x5f, 0x0f, 0x3e, 0x16, - 0x5f, 0x43, 0x37, 0x77, 0x61, 0x04, 0xdf, 0xff, 0x24, 0x07, 0x63, 0x87, 0x3b, 0xd5, 0xed, 0x4a, - 0x75, 0xb7, 0xf0, 0x0a, 0xff, 0xd0, 0x1f, 0x55, 0xab, 0xfc, 0x43, 0x23, 0x93, 0x90, 0xdd, 0x3a, - 0xd8, 0x3f, 0xdc, 0xdb, 0xa9, 0xed, 0x6c, 0x17, 0x86, 0x38, 0xde, 0x8f, 0x2a, 0x7b, 0x7b, 0x3b, - 0xdb, 0x85, 0x0c, 0xc9, 0xc2, 0xc8, 0x8e, 0xae, 0x1f, 0xe8, 0x85, 0x2f, 0xcb, 0xff, 0x9e, 0x87, - 0xb1, 0x7d, 0xa3, 0x63, 0x34, 0x59, 0x97, 0xb4, 0x21, 0xa7, 0xcc, 0x3b, 0xc9, 0x3c, 0x3a, 0xb0, - 0x77, 0x98, 0x5a, 0x9a, 0xed, 0xdd, 0xe0, 0x65, 0x6b, 0xfd, 0x67, 0x7f, 0xff, 0xd7, 0x6f, 0x86, - 0x6e, 0xd0, 0x22, 0xfe, 0xc1, 0x5c, 0x0a, 0xdd, 0x50, 0xc8, 0x36, 0x43, 0x03, 0x48, 0xf2, 0x39, - 0x8c, 0x7b, 0x43, 0x44, 0x22, 0x86, 0xba, 0x91, 0xf1, 0x66, 0x89, 0x44, 0x56, 0xb9, 0x96, 0x1b, - 0xa8, 0x85, 0x92, 0x95, 0x90, 0x16, 0x8f, 0x66, 0xe3, 0x2b, 0x2f, 0x51, 0xbe, 0x26, 0x4f, 0x20, - 0xa7, 0x8c, 0x57, 0xa5, 0x39, 0xbd, 0x13, 0x5a, 0x69, 0x4e, 0x74, 0x12, 0x4b, 0x6f, 0xa1, 0xa2, - 0x57, 0xc9, 0xd5, 0x90, 0x22, 0x85, 0x4c, 0xd5, 0x75, 0x0a, 0x13, 0xea, 0x40, 0x94, 0x14, 0x43, - 0xc8, 0x95, 0x5c, 0x2e, 0xcd, 0xc5, 0xec, 0x70, 0x75, 0xab, 0xa8, 0x6e, 0x91, 0x2c, 0xc4, 0xda, - 0x85, 0x42, 0xcf, 0xbc, 0xf8, 0x88, 0xbf, 0x4c, 0xaa, 0xf1, 0x51, 0x87, 0x8d, 0xa1, 0xf8, 0x04, - 0x73, 0x45, 0x7a, 0x1d, 0x35, 0xac, 0xc6, 0xc6, 0x07, 0xc9, 0x36, 0xc5, 0x78, 0x91, 0x9c, 0x40, - 0xd6, 0x9f, 0x7a, 0x92, 0x59, 0x0f, 0x6f, 0x68, 0x68, 0x5a, 0x9a, 0x8e, 0x2e, 0x73, 0x0d, 0xaf, - 0xa1, 0x86, 0xab, 0x64, 0x35, 0x6a, 0x83, 0x20, 0x52, 0x1d, 0x26, 0x82, 0x2f, 0x0c, 0x99, 0x09, - 0xc9, 0xea, 0x09, 0xbe, 0x62, 0x42, 0x62, 0xf0, 0x91, 0x66, 0xe3, 0x2b, 0x6f, 0x9a, 0xf5, 0x35, - 0x71, 0x20, 0x1f, 0x1e, 0x72, 0x92, 0x12, 0xca, 0x8b, 0x9d, 0x9b, 0x96, 0x8a, 0xb1, 0x7b, 0xca, - 0x29, 0xa0, 0x8b, 0x21, 0x8d, 0x61, 0xca, 0x4d, 0x39, 0x59, 0x25, 0x9f, 0x01, 0x04, 0x83, 0x43, - 0xe2, 0x47, 0x3a, 0x3c, 0xee, 0x28, 0xcd, 0xf4, 0xac, 0x73, 0x45, 0x57, 0x50, 0xd1, 0x02, 0x99, - 0x8f, 0x9a, 0xe6, 0x89, 0x7b, 0x0e, 0x97, 0x7a, 0xc6, 0x7f, 0x64, 0x09, 0x65, 0x25, 0xcd, 0x1c, - 0x4b, 0x8b, 0x49, 0xdb, 0x4a, 0xb4, 0x4a, 0xcb, 0x21, 0x8d, 0x3d, 0xc4, 0x9b, 0xda, 0x4d, 0xf2, - 0x4c, 0x99, 0xbc, 0xfa, 0xa3, 0xbc, 0xa5, 0xb0, 0x1d, 0x91, 0xb9, 0xa3, 0xd4, 0x1d, 0x3f, 0x5e, - 0xa3, 0xd7, 0x50, 0xf7, 0x0a, 0x59, 0x8e, 0xb7, 0xd6, 0xd7, 0xd1, 0xc1, 0x01, 0xbc, 0x32, 0x75, - 0x92, 0x61, 0x8c, 0x9d, 0xac, 0x95, 0x8a, 0xb1, 0x7b, 0x8a, 0xbe, 0x48, 0x18, 0xc3, 0x94, 0xdc, - 0xd0, 0x6f, 0x34, 0xf1, 0x18, 0x8b, 0xce, 0x86, 0xc8, 0x8a, 0x2f, 0x3a, 0x61, 0x8a, 0x55, 0x5a, - 0x4e, 0xa1, 0xe0, 0x10, 0xde, 0x46, 0x08, 0xaf, 0xd3, 0x5b, 0x09, 0xc9, 0x11, 0xc7, 0xc9, 0x21, - 0x7d, 0x8e, 0x87, 0xca, 0xfb, 0xa7, 0x13, 0xff, 0x50, 0x85, 0x87, 0x4d, 0xc1, 0xa1, 0x52, 0x07, - 0x42, 0x94, 0xa2, 0xce, 0xcb, 0xb4, 0xe7, 0x50, 0x49, 0x2a, 0x2e, 0xff, 0xd7, 0x1a, 0xcc, 0x27, - 0x3c, 0x8a, 0xc8, 0x55, 0x71, 0x15, 0x4e, 0x7d, 0xf7, 0x94, 0x56, 0xd3, 0x89, 0x38, 0x8e, 0x0d, - 0xc4, 0xf1, 0x1a, 0x5d, 0x0b, 0xe1, 0x48, 0x60, 0xe1, 0xa0, 0x7e, 0xa7, 0xc1, 0xfc, 0x6e, 0x2a, - 0xa8, 0xdd, 0x41, 0x40, 0xa5, 0x3d, 0xba, 0xe8, 0x3b, 0x08, 0xea, 0x0d, 0xb2, 0x91, 0x7c, 0x26, - 0x02, 0x96, 0x8d, 0xaf, 0xbc, 0x8b, 0xd4, 0xd7, 0xe4, 0xf7, 0x1a, 0x94, 0x92, 0xdf, 0x19, 0xe4, - 0x5a, 0x8a, 0x6a, 0xb5, 0x13, 0xac, 0xf5, 0xa5, 0xe3, 0x28, 0x37, 0x11, 0xe5, 0x9b, 0xa4, 0x3c, - 0x00, 0x4a, 0xce, 0xa5, 0x16, 0xd9, 0x6f, 0x35, 0x28, 0x25, 0x5f, 0xad, 0x25, 0xd0, 0xbe, 0x2f, - 0x0d, 0x09, 0xb4, 0xcf, 0x1d, 0x9d, 0x96, 0x11, 0xe8, 0x6d, 0x7a, 0x3d, 0x1a, 0xe3, 0x04, 0x2e, - 0x1e, 0x66, 0xe9, 0xc9, 0x74, 0x80, 0xbb, 0x03, 0x02, 0xec, 0x73, 0x8d, 0x4f, 0xf6, 0x64, 0x02, - 0x97, 0x1a, 0xf2, 0x3f, 0x68, 0xb0, 0x94, 0x7a, 0x35, 0x25, 0xaf, 0xa5, 0x63, 0x50, 0x03, 0x7f, - 0x7d, 0x10, 0x52, 0x8e, 0xf8, 0x7d, 0x44, 0xfc, 0x0e, 0x79, 0x6b, 0x30, 0xc4, 0xd1, 0xf0, 0x7f, - 0x0a, 0x59, 0x7f, 0xbc, 0x27, 0xfb, 0x78, 0x74, 0xb2, 0x28, 0xfb, 0x78, 0x64, 0x0a, 0x28, 0xef, - 0x22, 0x74, 0x2e, 0x1c, 0x4a, 0x8f, 0x88, 0x47, 0x4e, 0xca, 0xc6, 0xe1, 0x91, 0x22, 0x5b, 0x1d, - 0x60, 0x29, 0xb2, 0x95, 0x21, 0x5e, 0xb2, 0x6c, 0x24, 0xe2, 0xb2, 0x9f, 0xc3, 0xa5, 0x9e, 0x99, - 0xb0, 0xec, 0x36, 0x49, 0x03, 0x6a, 0xd9, 0x6d, 0x12, 0x46, 0xc9, 0xb2, 0xd3, 0xd1, 0xe5, 0x48, - 0x13, 0x8f, 0x10, 0x73, 0xdd, 0x96, 0xf8, 0x23, 0xbb, 0x32, 0x49, 0x24, 0x7e, 0x23, 0x8b, 0x99, - 0x3c, 0x96, 0x16, 0xe2, 0x37, 0xb9, 0xd6, 0x35, 0xd4, 0xba, 0x4c, 0x2e, 0xf7, 0x64, 0xae, 0x2a, - 0xfd, 0x0b, 0xd1, 0xe1, 0x82, 0xe1, 0xa1, 0xd2, 0xe1, 0x7a, 0x26, 0x91, 0x4a, 0x87, 0x8b, 0x4c, - 0x1b, 0xe9, 0x55, 0xd4, 0xb6, 0x44, 0x16, 0x63, 0xb5, 0x09, 0xca, 0x72, 0x0d, 0x20, 0x28, 0x1b, - 0xe4, 0xc3, 0x1f, 0xa6, 0xb9, 0x96, 0x4d, 0x98, 0x0c, 0x1d, 0x48, 0xf2, 0xf1, 0x8f, 0xd5, 0x44, - 0x4f, 0x46, 0xf1, 0x7f, 0x6f, 0xef, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x10, 0x0e, 0xe0, 0x6c, - 0xab, 0x2b, 0x00, 0x00, + // 3131 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x6f, 0x23, 0xc7, + 0x11, 0xf6, 0x88, 0x7a, 0xb1, 0x28, 0x51, 0x54, 0xeb, 0xb1, 0x14, 0xf5, 0x58, 0xa9, 0x25, 0xef, + 0x6a, 0x5f, 0x92, 0xcd, 0xf5, 0x6b, 0xe5, 0xb5, 0x8d, 0x5d, 0x49, 0x56, 0x08, 0x4b, 0x94, 0x30, + 0xe2, 0x5a, 0x7e, 0x00, 0x26, 0x46, 0x62, 0x8b, 0x3b, 0x6b, 0x92, 0xc3, 0x70, 0x46, 0xbb, 0xd6, + 0x1a, 0xbe, 0xe4, 0x92, 0x5c, 0x02, 0x38, 0xaf, 0x4b, 0x0e, 0x3e, 0xfa, 0x07, 0x04, 0x30, 0x82, + 0x5c, 0x72, 0xc9, 0x29, 0x87, 0x9c, 0x82, 0x00, 0x39, 0xe4, 0x98, 0x63, 0x7e, 0x44, 0xd0, 0xd5, + 0x3d, 0x33, 0x3d, 0xc3, 0x99, 0x11, 0xad, 0xb5, 0x83, 0xdc, 0x38, 0xdd, 0xf5, 0xf8, 0xaa, 0xaa, + 0xab, 0xaa, 0xbb, 0x24, 0x48, 0x1b, 0x6d, 0x73, 0xad, 0xdd, 0xb1, 0x1c, 0x8b, 0xa4, 0x8c, 0xb6, + 0x59, 0x98, 0xab, 0x5b, 0x56, 0xbd, 0xc1, 0xd6, 0x8d, 0xb6, 0xb9, 0x6e, 0xb4, 0x5a, 0x96, 0x63, + 0x38, 0xa6, 0xd5, 0xb2, 0x05, 0x09, 0xfd, 0x14, 0x46, 0xdf, 0x67, 0x86, 0x6d, 0x1e, 0x37, 0xd8, + 0x61, 0xdb, 0x38, 0x61, 0x24, 0x07, 0xa9, 0xa6, 0xf1, 0x45, 0x5e, 0x5b, 0xd4, 0x56, 0xd3, 0x3a, + 0xff, 0x89, 0x2b, 0x66, 0x2b, 0xdf, 0x27, 0x57, 0xcc, 0x16, 0x21, 0xd0, 0xdf, 0x30, 0x6d, 0x27, + 0x9f, 0x5a, 0x4c, 0xad, 0xa6, 0x75, 0xfc, 0xcd, 0xd7, 0x6c, 0x87, 0xb5, 0xf3, 0xfd, 0x48, 0x86, + 0xbf, 0xe9, 0xd7, 0x1a, 0x8c, 0x1d, 0x18, 0x1d, 0xa3, 0xc9, 0x1c, 0xd6, 0xd9, 0xb4, 0x5a, 0xa7, + 0x66, 0x9d, 0xd3, 0xb5, 0x8c, 0x26, 0x93, 0x0a, 0xf0, 0x37, 0xb9, 0x07, 0xd9, 0xb6, 0x4b, 0x56, + 0x75, 0xce, 0xdb, 0x0c, 0x95, 0x65, 0x8b, 0x64, 0x8d, 0xdb, 0xe2, 0x49, 0xa8, 0x9c, 0xb7, 0x99, + 0x3e, 0xda, 0x56, 0x3f, 0xc9, 0x1a, 0x0c, 0x9f, 0x4a, 0xfc, 0xf9, 0xd4, 0xa2, 0xb6, 0x9a, 0x91, + 0x4c, 0x01, 0xa3, 0x74, 0x8f, 0x86, 0xb6, 0x21, 0xed, 0xc9, 0xfb, 0xa1, 0xb1, 0x4c, 0xc2, 0xc0, + 0x53, 0xa3, 0x71, 0x26, 0x80, 0xa4, 0x75, 0xf1, 0x41, 0x7f, 0xa5, 0xc1, 0xe8, 0x1e, 0x73, 0x3a, + 0xe6, 0x89, 0xbd, 0x6b, 0xd5, 0x0f, 0x99, 0x43, 0x66, 0x21, 0xfd, 0xcc, 0xea, 0x7c, 0xce, 0x3a, + 0x55, 0xb3, 0x26, 0x75, 0x0f, 0x8b, 0x85, 0x52, 0x8d, 0x14, 0x61, 0xa4, 0x29, 0xa8, 0xab, 0x0d, + 0xab, 0x6e, 0xe7, 0xfb, 0x16, 0x53, 0xab, 0x99, 0xe2, 0x18, 0x6a, 0xf7, 0xc5, 0xe8, 0x99, 0xa6, + 0xf7, 0xdb, 0x26, 0xeb, 0x30, 0x2a, 0x05, 0xda, 0x8e, 0xe1, 0x9c, 0xd9, 0x08, 0x20, 0x5b, 0x04, + 0x64, 0x3a, 0x74, 0x0c, 0x87, 0xe9, 0x23, 0x82, 0xe0, 0x10, 0xf7, 0xe9, 0x5d, 0x18, 0x92, 0xb2, + 0x22, 0x7d, 0xe0, 0x19, 0xd2, 0xa7, 0x1a, 0x72, 0x1f, 0x72, 0x92, 0xe9, 0x43, 0xfe, 0x5d, 0x31, + 0x9b, 0x8c, 0x73, 0x3b, 0xa6, 0xcf, 0xcd, 0x7f, 0xc7, 0x70, 0xef, 0x03, 0xf8, 0xf0, 0x23, 0xb5, + 0xde, 0x81, 0x41, 0x24, 0x75, 0x6d, 0x9e, 0x52, 0x6d, 0xf6, 0x54, 0xea, 0x92, 0x88, 0xbe, 0x07, + 0x13, 0x87, 0x67, 0xf5, 0x3a, 0xb3, 0xf9, 0x71, 0x4e, 0x8e, 0x69, 0x34, 0xa2, 0x87, 0x30, 0xbd, + 0x6d, 0x74, 0x1a, 0xe7, 0x87, 0x8e, 0xd5, 0x6e, 0x9b, 0xad, 0xfa, 0x65, 0x64, 0xac, 0x43, 0xaa, + 0x62, 0xd4, 0xbf, 0x07, 0xc3, 0xe7, 0x30, 0x7a, 0xe8, 0x9c, 0xd5, 0xce, 0xf7, 0x9f, 0xb2, 0xce, + 0x53, 0x93, 0x3d, 0x8b, 0x63, 0xb5, 0x9e, 0xb5, 0x58, 0xc7, 0x65, 0xc5, 0x0f, 0x92, 0x85, 0x3e, + 0xb3, 0x26, 0xcf, 0x56, 0x9f, 0x59, 0x23, 0x8b, 0x90, 0xa9, 0x31, 0xfb, 0xa4, 0x63, 0xb6, 0xb9, + 0x07, 0x64, 0xe2, 0xa9, 0x4b, 0xf4, 0x4f, 0x1a, 0x0c, 0x54, 0x3a, 0xa6, 0xd1, 0x20, 0x33, 0x30, + 0xec, 0xf0, 0x1f, 0xfe, 0x89, 0x1b, 0xc2, 0xef, 0x52, 0x8d, 0x6f, 0xd9, 0x1c, 0x11, 0xdf, 0x12, + 0xfa, 0x86, 0xf0, 0xbb, 0x54, 0x23, 0x77, 0xc1, 0x3f, 0xe1, 0x55, 0x9b, 0x89, 0x84, 0xcf, 0x14, + 0xb3, 0xc1, 0x54, 0xd0, 0x47, 0x3c, 0x22, 0x7e, 0xba, 0xaf, 0xc3, 0x98, 0x75, 0xfc, 0x84, 0x9d, + 0x38, 0xe6, 0x53, 0x56, 0x15, 0x1e, 0x10, 0xd0, 0xb2, 0xde, 0x32, 0x06, 0x93, 0xcc, 0x41, 0xbf, + 0x63, 0xd4, 0xed, 0xfc, 0x00, 0x0a, 0x1d, 0x46, 0xa1, 0x15, 0xa3, 0xae, 0xe3, 0x2a, 0xfd, 0x87, + 0x06, 0x83, 0x47, 0x78, 0x66, 0x93, 0xf3, 0x25, 0x01, 0xbe, 0x6a, 0x74, 0x2a, 0x68, 0x34, 0x81, + 0x7e, 0x9e, 0xb2, 0x6e, 0xb5, 0xc2, 0xf4, 0xa5, 0x30, 0x28, 0xd3, 0x67, 0xa0, 0x2b, 0x7d, 0xe4, + 0x0e, 0xa1, 0x30, 0x52, 0x61, 0xcd, 0x76, 0xc3, 0x70, 0xd8, 0x81, 0xe1, 0x3c, 0xce, 0x0f, 0x22, + 0x7f, 0x60, 0xcd, 0xb3, 0x6b, 0x28, 0xd2, 0xae, 0x3f, 0x6a, 0x90, 0x2e, 0x1b, 0xb6, 0xac, 0x86, + 0x77, 0x61, 0xa4, 0xde, 0x31, 0xda, 0x8f, 0xab, 0x27, 0xf8, 0x8d, 0xd6, 0x65, 0x8a, 0x39, 0xe4, + 0xd9, 0xe1, 0x1b, 0x82, 0x4e, 0xcf, 0xd4, 0xfd, 0x0f, 0x72, 0x0f, 0xc0, 0x6a, 0xb3, 0x8e, 0xa8, + 0xe3, 0x68, 0x74, 0xa6, 0x38, 0x83, 0x2c, 0x9e, 0xe0, 0xb5, 0x7d, 0x8f, 0x40, 0x57, 0x88, 0x0b, + 0x1b, 0x00, 0xfe, 0x0e, 0xb9, 0x0d, 0x69, 0x6f, 0x2f, 0xaf, 0x29, 0xb1, 0xf5, 0x68, 0x74, 0x9f, + 0x80, 0x36, 0x20, 0xa3, 0x40, 0x22, 0xf3, 0x00, 0xad, 0xb3, 0x66, 0xb5, 0x61, 0x9c, 0xb3, 0x8e, + 0x8d, 0xc0, 0x07, 0xf4, 0x74, 0xeb, 0xac, 0xb9, 0x8b, 0x0b, 0x7c, 0xdb, 0x6c, 0xb5, 0xcf, 0x9c, + 0xaa, 0x6d, 0x3e, 0x67, 0x98, 0xd1, 0x03, 0x7a, 0x1a, 0x57, 0x0e, 0xcd, 0xe7, 0x8c, 0x5c, 0x85, + 0x8c, 0x75, 0xe6, 0x78, 0xfb, 0x29, 0xdc, 0x07, 0xb1, 0xc4, 0x09, 0xe8, 0x5f, 0x34, 0x48, 0x7b, + 0x30, 0xc8, 0x0a, 0x8c, 0x7a, 0x40, 0x30, 0x70, 0xe2, 0x18, 0x04, 0x17, 0xc9, 0x2e, 0x8c, 0xfb, + 0xe7, 0x55, 0x78, 0xd4, 0xf5, 0xcf, 0xd5, 0xa0, 0x5d, 0x6b, 0xa1, 0xb6, 0x64, 0xeb, 0xb9, 0x76, + 0x68, 0xa5, 0xf0, 0x10, 0x72, 0x61, 0x2a, 0xb2, 0x06, 0x43, 0xae, 0x5c, 0xe1, 0xaf, 0xc9, 0x60, + 0x2e, 0xc8, 0x70, 0xb9, 0x44, 0xf4, 0xbb, 0x7e, 0xc8, 0x60, 0xbe, 0x27, 0x74, 0xbf, 0xe8, 0x6c, + 0x7f, 0x08, 0xe3, 0x56, 0xdb, 0x31, 0x9b, 0xe6, 0x73, 0x04, 0x2c, 0x5a, 0x91, 0xa8, 0xeb, 0x53, + 0xd2, 0x16, 0x7f, 0x17, 0xbb, 0x51, 0xce, 0x0a, 0xad, 0x90, 0x5b, 0x21, 0x19, 0x75, 0xcb, 0x68, + 0xe0, 0x91, 0xd7, 0x82, 0xc4, 0x3b, 0x96, 0xd1, 0x20, 0xe5, 0x28, 0xe7, 0x0d, 0xa0, 0xf3, 0x96, + 0x64, 0x26, 0x78, 0x76, 0xf4, 0xe0, 0x3e, 0x72, 0x07, 0x88, 0x71, 0x72, 0xc2, 0x6c, 0xbb, 0xda, + 0x66, 0x9d, 0xa6, 0x69, 0xdb, 0x78, 0x5a, 0x07, 0xf1, 0xca, 0x30, 0x2e, 0x76, 0x0e, 0xfc, 0x8d, + 0xe4, 0xac, 0x21, 0xaf, 0xc0, 0x64, 0xa8, 0xa8, 0x54, 0xd1, 0x8f, 0xc3, 0xe8, 0x32, 0x12, 0xac, + 0x2c, 0x65, 0xee, 0xd5, 0x3c, 0x0c, 0xc9, 0x16, 0x99, 0x4f, 0xa3, 0x4e, 0xf7, 0x93, 0xfb, 0xfb, + 0x89, 0x75, 0x5c, 0xaa, 0xe5, 0x41, 0xf8, 0x1b, 0x3f, 0xc8, 0x1d, 0x80, 0x96, 0x61, 0xbb, 0x79, + 0x98, 0x41, 0xbb, 0xb3, 0xc1, 0xa4, 0xd2, 0xd3, 0x2d, 0x2f, 0x71, 0x67, 0x60, 0xf8, 0x89, 0x75, + 0x2c, 0xa2, 0x32, 0x22, 0x6a, 0xcb, 0x13, 0xeb, 0x98, 0x7b, 0xfd, 0x07, 0x39, 0x37, 0x25, 0x20, + 0x9b, 0x1d, 0x66, 0x38, 0x0c, 0x9d, 0xae, 0xb3, 0x9f, 0x9e, 0x31, 0xdb, 0xe1, 0xd5, 0x42, 0xd4, + 0xba, 0x88, 0x6a, 0xa1, 0x44, 0x47, 0xcf, 0xd8, 0xfe, 0x07, 0xbd, 0x03, 0xb9, 0x80, 0xa8, 0x76, + 0xe3, 0x3c, 0x50, 0x34, 0xb5, 0x40, 0xd1, 0xa4, 0xeb, 0x40, 0xb6, 0x58, 0x83, 0x85, 0x34, 0x27, + 0x30, 0xdc, 0x81, 0x5c, 0x80, 0xe1, 0x02, 0xf9, 0xb7, 0x61, 0x6c, 0x87, 0x39, 0xbd, 0x0a, 0xdf, + 0x82, 0x51, 0x9f, 0x9a, 0x4b, 0xbe, 0x94, 0x0b, 0xa6, 0x60, 0xc2, 0x95, 0xb2, 0x6b, 0xda, 0x8e, + 0xd4, 0x4b, 0x0f, 0x60, 0x3c, 0xb8, 0xcc, 0x15, 0xbc, 0x0d, 0x63, 0x42, 0x81, 0x25, 0x3b, 0xb4, + 0x1b, 0x31, 0xe2, 0xeb, 0x70, 0x9b, 0xb7, 0x9e, 0xb5, 0xd5, 0x4f, 0x9b, 0xbe, 0xe1, 0x86, 0x0d, + 0xbb, 0xae, 0x6b, 0xdf, 0x22, 0x0c, 0x60, 0xdf, 0x91, 0x60, 0x45, 0x5f, 0x11, 0x14, 0x62, 0xc3, + 0x8f, 0x91, 0xe4, 0x93, 0x3e, 0x8c, 0x69, 0xd9, 0x9c, 0x7c, 0x87, 0x39, 0x48, 0x6b, 0xf7, 0xe0, + 0xc4, 0xd7, 0x20, 0xab, 0x90, 0x73, 0xd9, 0x14, 0x06, 0x51, 0x96, 0x6b, 0x9b, 0x0a, 0x49, 0xee, + 0xc8, 0x40, 0x05, 0x0c, 0x49, 0x80, 0xf4, 0x2a, 0x06, 0x4a, 0x81, 0x7f, 0xb1, 0xd1, 0xf7, 0x61, + 0x4a, 0x67, 0x75, 0xd3, 0x76, 0x58, 0x47, 0x34, 0x7a, 0x57, 0xcd, 0x32, 0x0c, 0x8a, 0xf6, 0x2e, + 0x79, 0x33, 0xc8, 0x2b, 0x69, 0xe4, 0x16, 0x2d, 0xc2, 0x44, 0x98, 0x9b, 0xab, 0x4d, 0xba, 0x2b, + 0x50, 0x0b, 0x08, 0xbf, 0xec, 0x09, 0xfa, 0x1e, 0x3c, 0xc7, 0x9b, 0x98, 0x27, 0x4d, 0x5c, 0x4b, + 0xd3, 0x7a, 0xda, 0x15, 0x67, 0xf3, 0x26, 0x66, 0xf2, 0x92, 0xd1, 0x6c, 0xf3, 0xf3, 0x8f, 0xd5, + 0x79, 0x58, 0x07, 0xd3, 0xde, 0x94, 0x2b, 0x94, 0x40, 0x2e, 0xa0, 0xb0, 0xdd, 0x38, 0xa7, 0xa7, + 0x78, 0xea, 0x7a, 0xc7, 0xa0, 0x3a, 0xbd, 0x2f, 0x78, 0x8b, 0x09, 0x18, 0x9b, 0x0a, 0x19, 0xfb, + 0x16, 0xc6, 0x4f, 0x55, 0x4d, 0x5e, 0x86, 0x21, 0xb1, 0xed, 0xc6, 0x3d, 0xe0, 0x59, 0x77, 0x8f, + 0x7e, 0x0a, 0xf9, 0x47, 0xed, 0x9a, 0xe1, 0xb0, 0x23, 0xef, 0xcd, 0xc0, 0x5c, 0xa0, 0x89, 0x77, + 0x31, 0xff, 0x06, 0xd5, 0x17, 0x77, 0x83, 0xa2, 0x79, 0x98, 0x8e, 0x10, 0xce, 0x1d, 0xf3, 0x3b, + 0x0d, 0xf2, 0x1e, 0xe2, 0xf7, 0xcf, 0x1a, 0x8d, 0x52, 0xeb, 0xd4, 0xfa, 0xf1, 0x1c, 0x44, 0xae, + 0xc1, 0x98, 0xd5, 0x6a, 0x9c, 0x57, 0xf9, 0xc5, 0xcd, 0x76, 0xf8, 0x6b, 0x0b, 0x7b, 0xe3, 0xb0, + 0x3e, 0xca, 0x97, 0x77, 0x71, 0x75, 0xd7, 0xaa, 0xd3, 0x6f, 0x34, 0xc8, 0x06, 0x41, 0xf1, 0x13, + 0x7a, 0x14, 0x7f, 0x42, 0xe5, 0xb5, 0xb5, 0xeb, 0xf6, 0xdc, 0xd7, 0xc3, 0xed, 0x39, 0xfc, 0xfc, + 0x4b, 0x5d, 0xfc, 0xfc, 0xa3, 0x1f, 0xc3, 0x74, 0x84, 0xdf, 0x78, 0xc0, 0xdf, 0x83, 0x71, 0x69, + 0xff, 0xe9, 0x59, 0xa3, 0x51, 0x35, 0x5b, 0xa7, 0x96, 0x1b, 0xfa, 0x09, 0x05, 0xb2, 0xc7, 0x34, + 0xf6, 0x2c, 0xf0, 0x6d, 0xd3, 0xbf, 0x69, 0x30, 0xc5, 0x6b, 0xa4, 0xf7, 0xd0, 0xea, 0xe5, 0xc4, + 0xbe, 0x0a, 0x93, 0xb6, 0xc7, 0x50, 0x35, 0x1a, 0x75, 0xab, 0x63, 0x3a, 0x8f, 0x9b, 0x32, 0x38, + 0x13, 0xfe, 0xde, 0x03, 0x77, 0x8b, 0xbc, 0x0c, 0xd9, 0x8e, 0x10, 0x5c, 0x6d, 0x9d, 0x35, 0x8f, + 0x59, 0x07, 0xa3, 0x35, 0xa0, 0x8f, 0xca, 0xd5, 0x32, 0x2e, 0x92, 0x15, 0xc8, 0x36, 0xac, 0x7a, + 0x55, 0xc9, 0xc9, 0x7e, 0xcc, 0xc9, 0x91, 0x86, 0x55, 0x3f, 0xf2, 0xd2, 0x72, 0x06, 0x86, 0xd1, + 0xa7, 0x1c, 0xda, 0x80, 0x80, 0x86, 0xdf, 0xa5, 0x1a, 0xbd, 0x27, 0x3a, 0x81, 0x6a, 0x4e, 0xaf, + 0xf5, 0xf0, 0x97, 0x1a, 0xcc, 0x72, 0xde, 0xc7, 0xd6, 0x59, 0xa3, 0xf6, 0xfd, 0xca, 0xc8, 0x5b, + 0x90, 0x67, 0xfc, 0xa5, 0x59, 0xb5, 0xe5, 0x53, 0xb3, 0xcb, 0x29, 0xd3, 0x4c, 0x7d, 0x89, 0xfa, + 0x7e, 0x49, 0x30, 0xe5, 0x00, 0x66, 0xa2, 0xe1, 0x88, 0x36, 0x39, 0x6d, 0xe3, 0x0e, 0xaa, 0x54, + 0x1d, 0xa6, 0xa1, 0xc3, 0x26, 0xec, 0x10, 0x5f, 0xa9, 0x66, 0xd3, 0x0e, 0x56, 0x26, 0x79, 0xca, + 0x5e, 0xbc, 0x3a, 0x2e, 0xc3, 0xa8, 0x7b, 0x94, 0xf9, 0x5d, 0xcd, 0x96, 0xe3, 0x22, 0xf7, 0x7c, + 0xf3, 0x5b, 0x9a, 0x4d, 0xf7, 0xb1, 0x4a, 0x79, 0x3a, 0x39, 0xf6, 0xfb, 0x90, 0x53, 0x52, 0x80, + 0x67, 0x4e, 0xb0, 0x05, 0x07, 0x86, 0x29, 0x7a, 0xb6, 0xa9, 0x7e, 0xda, 0xd4, 0x86, 0xbc, 0xce, + 0xda, 0x56, 0xc7, 0xf1, 0xc9, 0x7a, 0xb1, 0x25, 0x4a, 0x69, 0xaa, 0x67, 0xa5, 0x79, 0x98, 0x8e, + 0x50, 0xca, 0x8b, 0xda, 0x9f, 0x35, 0x48, 0xef, 0x59, 0x35, 0x26, 0xea, 0xc6, 0x3c, 0x80, 0x00, + 0xa0, 0x3c, 0x02, 0xd2, 0xb8, 0x82, 0x77, 0xd6, 0x40, 0xb9, 0xea, 0x0b, 0x95, 0xab, 0x35, 0x00, + 0xaf, 0x52, 0xd8, 0x31, 0x2f, 0x71, 0x85, 0x82, 0x5c, 0xf3, 0x2f, 0xc0, 0xfd, 0x48, 0x3c, 0xa2, + 0x1a, 0xe2, 0x5f, 0x87, 0xe7, 0x01, 0x9a, 0x1c, 0x60, 0xb5, 0xcd, 0x1f, 0xb4, 0xe2, 0x90, 0xa5, + 0x71, 0x85, 0xbf, 0x66, 0xe9, 0xeb, 0x90, 0xd9, 0x32, 0x1c, 0xe3, 0x90, 0x39, 0x68, 0x41, 0xd4, + 0x03, 0x86, 0x40, 0x3f, 0xf2, 0x0a, 0xc4, 0xf8, 0x9b, 0x9a, 0x90, 0x3b, 0x34, 0x9e, 0x06, 0x2f, + 0x91, 0x17, 0x58, 0x1f, 0xfd, 0x0e, 0x0a, 0x4d, 0x39, 0x52, 0xdd, 0x53, 0x8e, 0x1c, 0x64, 0x15, + 0x55, 0xdc, 0xe9, 0xbf, 0xd0, 0x84, 0x76, 0x74, 0xbc, 0xab, 0x7d, 0x05, 0x06, 0xd0, 0x2a, 0x59, + 0xb2, 0x85, 0xeb, 0xbc, 0xd0, 0xe8, 0x62, 0x93, 0xdc, 0x82, 0xe1, 0x9a, 0xe1, 0x18, 0xb2, 0x5e, + 0xfb, 0x77, 0x4b, 0xc5, 0x07, 0xfa, 0x50, 0x4d, 0x7c, 0x90, 0x25, 0x18, 0x71, 0x58, 0xcb, 0xb6, + 0x3a, 0xd5, 0x63, 0xcb, 0xe8, 0xd4, 0xe4, 0x05, 0x20, 0x23, 0xd6, 0x1e, 0xf2, 0x25, 0x17, 0x9c, + 0x44, 0xc2, 0xc1, 0xe5, 0xb1, 0x5a, 0xf3, 0xc5, 0x1a, 0x87, 0x6c, 0x32, 0xf7, 0x78, 0xd2, 0x2d, + 0x98, 0xec, 0xda, 0xe1, 0x09, 0x71, 0x1b, 0xf0, 0x98, 0x9a, 0x2c, 0xe9, 0x2a, 0xea, 0x92, 0xd0, + 0x37, 0x44, 0xc5, 0xe6, 0x52, 0x50, 0xab, 0xdd, 0x9b, 0xfb, 0xe9, 0x3b, 0xa2, 0x34, 0xaa, 0x7c, + 0x5c, 0xf9, 0x35, 0x18, 0x44, 0xcf, 0xd8, 0x81, 0x01, 0x81, 0xef, 0x37, 0xb9, 0x4b, 0x75, 0x1f, + 0x7c, 0xc0, 0xed, 0x2f, 0x70, 0xe4, 0xe9, 0x06, 0x90, 0x90, 0x4c, 0x8e, 0xa8, 0xa7, 0x40, 0xd2, + 0x7f, 0x6a, 0xb0, 0x70, 0xa8, 0x96, 0x7a, 0x2f, 0x4b, 0x7e, 0xa4, 0x16, 0xa6, 0x96, 0xea, 0x54, + 0xa0, 0x54, 0x93, 0x3d, 0x98, 0x52, 0xa4, 0x29, 0x59, 0x2c, 0x12, 0x33, 0x2f, 0xc2, 0xd9, 0x8d, + 0x54, 0x57, 0x40, 0xf8, 0xf0, 0xe9, 0x3d, 0x98, 0x8b, 0xb5, 0x4c, 0xbe, 0x1c, 0x3c, 0x24, 0x5a, + 0xb0, 0x69, 0xbc, 0x0d, 0x0b, 0x3b, 0x17, 0x3a, 0x25, 0x8e, 0xb9, 0x09, 0x73, 0x3b, 0x49, 0x7a, + 0x63, 0xcd, 0xd4, 0x2e, 0x65, 0xe6, 0xbb, 0xb0, 0x14, 0xad, 0x4e, 0x79, 0xc3, 0x25, 0x3d, 0x7b, + 0xbe, 0xd3, 0x60, 0x3a, 0x82, 0x9b, 0x27, 0x6e, 0xbc, 0x91, 0x97, 0x89, 0x7c, 0xac, 0xdd, 0xa9, + 0x4b, 0xd9, 0xfd, 0x1c, 0xae, 0x26, 0xd9, 0xcd, 0x3d, 0x7d, 0x04, 0x33, 0x51, 0x1a, 0xd5, 0x5e, + 0x39, 0x1b, 0xa7, 0x95, 0xf7, 0xaf, 0x2b, 0x76, 0xe4, 0xba, 0x4d, 0x8b, 0x30, 0xc5, 0xef, 0x04, + 0x3e, 0x5b, 0x0f, 0x7e, 0x9e, 0x82, 0x89, 0x30, 0x0f, 0xaf, 0x73, 0xff, 0xd1, 0x60, 0xe9, 0x90, + 0x39, 0xd1, 0x23, 0xf6, 0xff, 0xdd, 0xad, 0x29, 0x94, 0x8a, 0x47, 0x30, 0x13, 0x12, 0xda, 0x95, + 0x8e, 0xc2, 0x73, 0xd1, 0xb8, 0xf5, 0x2b, 0x2c, 0xda, 0x1e, 0x7a, 0x1f, 0xae, 0x26, 0x59, 0x7b, + 0x41, 0x5e, 0x8a, 0xb3, 0x7e, 0xb1, 0xaf, 0xe2, 0xf8, 0xc5, 0x99, 0x49, 0xd4, 0x9e, 0x68, 0xb9, + 0xf6, 0x02, 0x96, 0x3f, 0x80, 0x95, 0x58, 0xdd, 0x3d, 0xa6, 0xea, 0x5f, 0x35, 0x98, 0x89, 0x16, + 0x70, 0x41, 0xb6, 0x5e, 0xfe, 0x8c, 0x24, 0xba, 0x23, 0xf5, 0x02, 0xee, 0xf8, 0xb9, 0x06, 0xf4, + 0x02, 0x7f, 0xf0, 0x70, 0x18, 0x30, 0x1f, 0xa7, 0x5f, 0x4d, 0xe3, 0x85, 0x04, 0x0c, 0x3c, 0x93, + 0x0b, 0x2c, 0x6e, 0xcb, 0xa6, 0xff, 0xd2, 0x60, 0xf9, 0x43, 0xa3, 0x61, 0xf2, 0xd7, 0x76, 0x52, + 0xc9, 0xbf, 0xcc, 0x4c, 0xed, 0xff, 0xa0, 0x4e, 0xbe, 0x0b, 0x4b, 0xc9, 0xd6, 0xc9, 0x9c, 0x33, + 0xed, 0xea, 0x53, 0x4e, 0x87, 0x76, 0x0d, 0xeb, 0x43, 0xa6, 0x8d, 0x6c, 0x37, 0x1f, 0xc1, 0x68, + 0xe0, 0xcf, 0xb9, 0x24, 0x07, 0x23, 0x8f, 0xca, 0x1f, 0x94, 0xf7, 0x8f, 0xca, 0xd5, 0xca, 0xc7, + 0x07, 0xdb, 0xb9, 0x97, 0x08, 0xc0, 0xe0, 0xd6, 0xfe, 0xa3, 0x87, 0xbb, 0xdb, 0x39, 0x8d, 0x0c, + 0x41, 0xaa, 0x54, 0xae, 0xe4, 0xfa, 0xc8, 0x08, 0x0c, 0x6f, 0x95, 0x0e, 0x37, 0xf5, 0xed, 0xca, + 0x76, 0x2e, 0x45, 0xc6, 0x20, 0xb3, 0xf9, 0xa0, 0xb2, 0xbd, 0xb3, 0xaf, 0x97, 0x36, 0x1f, 0xec, + 0xe6, 0xfa, 0x6f, 0xfe, 0x04, 0x72, 0xe1, 0xd1, 0x3c, 0xc9, 0xc3, 0xa4, 0x2b, 0x79, 0xff, 0xa0, + 0x52, 0xda, 0x2b, 0x7d, 0xf2, 0xa0, 0x52, 0xda, 0x2f, 0xe7, 0x5e, 0xe2, 0xc2, 0xf6, 0x4a, 0x65, + 0xbe, 0xc2, 0x75, 0xf0, 0xaf, 0x07, 0x1f, 0x89, 0xaf, 0xbe, 0x9b, 0x3b, 0x30, 0x80, 0xe3, 0x11, + 0x92, 0x81, 0xa1, 0x83, 0xed, 0xf2, 0x56, 0xa9, 0xbc, 0x93, 0x7b, 0x89, 0x7f, 0xe8, 0x8f, 0xca, + 0x65, 0xfe, 0xa1, 0x91, 0x51, 0x48, 0x6f, 0xee, 0xef, 0x1d, 0xec, 0x6e, 0x57, 0xb6, 0xb7, 0x72, + 0x7d, 0x1c, 0xef, 0x07, 0xa5, 0xdd, 0xdd, 0xed, 0xad, 0x5c, 0x8a, 0xa4, 0x61, 0x60, 0x5b, 0xd7, + 0xf7, 0xf5, 0xdc, 0x17, 0xc5, 0xdf, 0xce, 0xc0, 0xd0, 0x9e, 0xd1, 0x32, 0xea, 0xac, 0x43, 0x9a, + 0x90, 0x51, 0xc6, 0xc1, 0xe4, 0x0a, 0x3a, 0xbd, 0x7b, 0xd6, 0x5c, 0x98, 0xea, 0xde, 0xe0, 0x55, + 0x7d, 0xed, 0x67, 0x7f, 0xff, 0xf7, 0x6f, 0xfa, 0x56, 0x69, 0x1e, 0xff, 0x9f, 0x40, 0x0a, 0x5d, + 0x57, 0xc8, 0x36, 0x02, 0x67, 0x89, 0x7c, 0x06, 0xc3, 0xee, 0x8c, 0x95, 0x88, 0x99, 0x77, 0x68, + 0xfa, 0x5b, 0x20, 0xa1, 0x55, 0xae, 0x65, 0x15, 0xb5, 0x50, 0xb2, 0x18, 0xd0, 0xe2, 0xd2, 0xac, + 0x7f, 0xe9, 0xd6, 0x91, 0xaf, 0xc8, 0x13, 0xc8, 0x28, 0xd3, 0x67, 0x69, 0x4e, 0xf7, 0x00, 0x5b, + 0x9a, 0x13, 0x1e, 0x54, 0xd3, 0x5b, 0xa8, 0xe8, 0x65, 0xb2, 0x1c, 0x50, 0xa4, 0x90, 0xa9, 0xba, + 0x4e, 0x60, 0x44, 0x9d, 0x17, 0x93, 0x7c, 0x00, 0xb9, 0x52, 0xea, 0x0a, 0xd3, 0x11, 0x3b, 0x5c, + 0xdd, 0x12, 0xaa, 0x9b, 0x25, 0x33, 0x91, 0x76, 0xa1, 0xd0, 0x53, 0x37, 0x3e, 0xe2, 0x0f, 0xb7, + 0x6a, 0x7c, 0xd4, 0x59, 0x6c, 0x20, 0x3e, 0xfe, 0xd8, 0x95, 0x5e, 0x47, 0x0d, 0x4b, 0x91, 0xf1, + 0x41, 0xb2, 0x0d, 0x31, 0x7d, 0x25, 0xc7, 0x90, 0xf6, 0x86, 0xc2, 0x64, 0xca, 0xc5, 0x1b, 0x98, + 0x29, 0x17, 0x26, 0xc2, 0xcb, 0x5c, 0xc3, 0x0d, 0xd4, 0xb0, 0x4c, 0x96, 0xc2, 0x36, 0x08, 0x22, + 0xd5, 0x61, 0x22, 0xf8, 0xc2, 0x90, 0xc9, 0x80, 0xac, 0xae, 0xe0, 0x2b, 0x26, 0xc4, 0x06, 0x1f, + 0x69, 0xd6, 0xbf, 0x74, 0x87, 0x7d, 0x5f, 0x11, 0x1b, 0xb2, 0xc1, 0x19, 0x30, 0x29, 0xa0, 0xbc, + 0xc8, 0xb1, 0x72, 0x21, 0x1f, 0xb9, 0xa7, 0x9c, 0x02, 0x3a, 0x1b, 0xd0, 0x18, 0xa4, 0xdc, 0x90, + 0x83, 0x67, 0xf2, 0x29, 0x80, 0x3f, 0x57, 0x25, 0x5e, 0xa4, 0x83, 0xd3, 0xa0, 0xc2, 0x64, 0xd7, + 0x3a, 0x57, 0x74, 0x15, 0x15, 0xcd, 0x90, 0x2b, 0x61, 0xd3, 0x5c, 0x71, 0xcf, 0x61, 0xbc, 0x6b, + 0x3a, 0x4a, 0xe6, 0x51, 0x56, 0xdc, 0x48, 0xb6, 0x30, 0x1b, 0xb7, 0xad, 0x44, 0xab, 0xb0, 0x10, + 0xd0, 0xd8, 0x45, 0xbc, 0xa1, 0xdd, 0x24, 0xcf, 0x94, 0xc1, 0xb4, 0x37, 0xe9, 0x9c, 0x0f, 0xda, + 0x11, 0x1a, 0xcb, 0x4a, 0xdd, 0xd1, 0xd3, 0x47, 0x7a, 0x0d, 0x75, 0x2f, 0x92, 0x85, 0x68, 0x6b, + 0x3d, 0x1d, 0x2d, 0xfc, 0xfb, 0x84, 0x32, 0x94, 0x93, 0x61, 0x8c, 0x1c, 0x3c, 0x16, 0xf2, 0x91, + 0x7b, 0x8a, 0xbe, 0x50, 0x18, 0x83, 0x94, 0xdc, 0xd0, 0xaf, 0x35, 0xf1, 0x56, 0x0d, 0x8f, 0xce, + 0xc8, 0xa2, 0x27, 0x3a, 0x66, 0xc8, 0x57, 0x58, 0x48, 0xa0, 0xe0, 0x10, 0xde, 0x40, 0x08, 0xaf, + 0xd0, 0x5b, 0x31, 0xc9, 0x11, 0xc5, 0xc9, 0x21, 0x7d, 0x86, 0x87, 0xca, 0xfd, 0x9f, 0x1c, 0xef, + 0x50, 0x05, 0x67, 0x71, 0xfe, 0xa1, 0x52, 0xe7, 0x65, 0x94, 0xa2, 0xce, 0x39, 0xda, 0x75, 0xa8, + 0x24, 0x15, 0x97, 0xff, 0x6b, 0x0d, 0xae, 0xc4, 0xbc, 0x19, 0xc9, 0xb2, 0xe8, 0xbb, 0x89, 0xcf, + 0xc2, 0xc2, 0x52, 0x32, 0x11, 0xc7, 0xb1, 0x8e, 0x38, 0x6e, 0xd0, 0x95, 0x00, 0x8e, 0x18, 0x16, + 0x0e, 0xea, 0xf7, 0x1a, 0x5c, 0xd9, 0x49, 0x04, 0xb5, 0xd3, 0x0b, 0xa8, 0xa4, 0x37, 0x29, 0x7d, + 0x13, 0x41, 0xbd, 0x4a, 0xd6, 0xe3, 0xcf, 0x84, 0xcf, 0xb2, 0xfe, 0xa5, 0x7b, 0xcf, 0xfc, 0x8a, + 0x7c, 0xab, 0x41, 0x21, 0xfe, 0x19, 0x46, 0xae, 0x25, 0xa8, 0x56, 0x3b, 0xc1, 0xca, 0x85, 0x74, + 0x1c, 0xe5, 0x06, 0xa2, 0x7c, 0x8d, 0x14, 0x7b, 0x40, 0xc9, 0xb9, 0xd4, 0x22, 0xfb, 0x8d, 0x06, + 0x85, 0xf8, 0x97, 0x87, 0x04, 0x7a, 0xe1, 0x43, 0x4c, 0x02, 0xbd, 0xe0, 0x09, 0x43, 0x8b, 0x08, + 0xf4, 0x36, 0xbd, 0x1e, 0x8e, 0x71, 0x0c, 0x17, 0x0f, 0xb3, 0xf4, 0x64, 0x32, 0xc0, 0x9d, 0x1e, + 0x01, 0x5e, 0xf0, 0xca, 0x89, 0xf7, 0x64, 0x0c, 0x97, 0x1a, 0xf2, 0x3f, 0x68, 0x30, 0x9f, 0x78, + 0x73, 0x27, 0x37, 0x92, 0x31, 0xa8, 0x81, 0xbf, 0xde, 0x0b, 0x29, 0x47, 0xfc, 0x0e, 0x22, 0x7e, + 0x93, 0xbc, 0xde, 0x1b, 0xe2, 0x70, 0xf8, 0x3f, 0x81, 0xb4, 0x37, 0xfd, 0x94, 0x7d, 0x3c, 0x3c, + 0x78, 0x95, 0x7d, 0x3c, 0x34, 0x24, 0x95, 0x77, 0x11, 0x3a, 0x1d, 0x0c, 0xa5, 0x4b, 0xc4, 0x23, + 0x27, 0x65, 0xe3, 0x6c, 0x4d, 0x91, 0xad, 0xce, 0xf7, 0x14, 0xd9, 0xca, 0x8c, 0x33, 0x5e, 0x36, + 0x12, 0x71, 0xd9, 0xcf, 0x61, 0xbc, 0x6b, 0x64, 0x2e, 0xbb, 0x4d, 0xdc, 0xfc, 0x5e, 0x76, 0x9b, + 0x98, 0x49, 0xbb, 0xec, 0x74, 0x74, 0x21, 0xd4, 0xc4, 0x43, 0xc4, 0x5c, 0xb7, 0x25, 0xfe, 0x07, + 0x41, 0x19, 0xb4, 0x12, 0xaf, 0x91, 0x45, 0x0c, 0x66, 0x0b, 0x33, 0xd1, 0x9b, 0x5c, 0xeb, 0x0a, + 0x6a, 0x5d, 0x20, 0x73, 0x5d, 0x99, 0xab, 0x4a, 0xff, 0x5c, 0x74, 0x38, 0x7f, 0xb6, 0xaa, 0x74, + 0xb8, 0xae, 0x41, 0xad, 0xd2, 0xe1, 0x42, 0xc3, 0x58, 0xba, 0x8c, 0xda, 0xe6, 0xc9, 0x6c, 0xa4, + 0x36, 0x29, 0xfa, 0x5b, 0x0d, 0xe6, 0x92, 0x1e, 0x46, 0x64, 0x15, 0xe5, 0xf7, 0xf0, 0x32, 0x2c, + 0x5c, 0xeb, 0x81, 0x92, 0xe3, 0x7a, 0x0d, 0x71, 0xad, 0xd1, 0x1b, 0x01, 0x5c, 0x49, 0x7c, 0x1b, + 0xda, 0xcd, 0x62, 0x05, 0xc0, 0xdf, 0x22, 0xef, 0xff, 0x30, 0xb7, 0x80, 0xa2, 0x09, 0xa3, 0x81, + 0xcc, 0x21, 0x1f, 0xfd, 0x58, 0xdd, 0xfe, 0x78, 0x10, 0xff, 0x87, 0xfa, 0xee, 0x7f, 0x03, 0x00, + 0x00, 0xff, 0xff, 0xe4, 0x21, 0xae, 0x36, 0x73, 0x2d, 0x00, 0x00, } diff --git a/pkg/api/api.pb.gw.go b/pkg/api/api.pb.gw.go index 8903e6991ec..85178b392d3 100644 --- a/pkg/api/api.pb.gw.go +++ b/pkg/api/api.pb.gw.go @@ -469,6 +469,19 @@ func request_Manager_GetSavedModels_0(ctx context.Context, marshaler runtime.Mar } +func request_Manager_ValidateSuggestionParameters_0(ctx context.Context, marshaler runtime.Marshaler, client ManagerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ValidateSuggestionParametersRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ValidateSuggestionParameters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + // RegisterManagerHandlerFromEndpoint is same as RegisterManagerHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterManagerHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { @@ -1224,6 +1237,35 @@ func RegisterManagerHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr }) + mux.Handle("POST", pattern_Manager_ValidateSuggestionParameters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Manager_ValidateSuggestionParameters_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Manager_ValidateSuggestionParameters_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1277,6 +1319,8 @@ var ( pattern_Manager_GetSavedStudies_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "Manager", "GetSavedStudies"}, "")) pattern_Manager_GetSavedModels_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "Manager", "GetSavedModels"}, "")) + + pattern_Manager_ValidateSuggestionParameters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "Manager", "ValidateSuggestionParameters"}, "")) ) var ( @@ -1329,4 +1373,6 @@ var ( forward_Manager_GetSavedStudies_0 = runtime.ForwardResponseMessage forward_Manager_GetSavedModels_0 = runtime.ForwardResponseMessage + + forward_Manager_ValidateSuggestionParameters_0 = runtime.ForwardResponseMessage ) diff --git a/pkg/api/api.proto b/pkg/api/api.proto index 7511123567c..c3338b05a92 100644 --- a/pkg/api/api.proto +++ b/pkg/api/api.proto @@ -212,6 +212,15 @@ service Manager { get: "/api/Manager/GetSavedModels" }; }; + /** + * Validate Suggestion Parameters from Study Job. + */ + rpc ValidateSuggestionParameters(ValidateSuggestionParametersRequest) returns (ValidateSuggestionParametersReply){ + option (google.api.http) = { + post: "/api/Manager/ValidateSuggestionParameters" + body: "*" + }; + }; } service Suggestion { @@ -782,3 +791,13 @@ message EarlyStoppingParameterSet { message GetEarlyStoppingParameterListReply { repeated EarlyStoppingParameterSet early_stopping_parameter_sets = 1; } + +message ValidateSuggestionParametersRequest { + StudyConfig study_config = 1; + string suggestion_algorithm = 2; + repeated SuggestionParameter suggestion_parameters = 3; +} + +message ValidateSuggestionParametersReply { + bool is_valid = 1; +} \ No newline at end of file diff --git a/pkg/api/api.swagger.json b/pkg/api/api.swagger.json index 8efbdb3333b..9273c56664d 100644 --- a/pkg/api/api.swagger.json +++ b/pkg/api/api.swagger.json @@ -670,6 +670,33 @@ "Manager" ] } + }, + "/api/Manager/ValidateSuggestionParameters": { + "post": { + "summary": "* \nValidate Suggestion Parameters from Study Job.", + "operationId": "ValidateSuggestionParameters", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiValidateSuggestionParametersReply" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/apiValidateSuggestionParametersRequest" + } + } + ], + "tags": [ + "Manager" + ] + } } }, "definitions": { @@ -1483,6 +1510,32 @@ }, "description": "* \nUpdate a Status of Worker." }, + "apiValidateSuggestionParametersReply": { + "type": "object", + "properties": { + "is_valid": { + "type": "boolean", + "format": "boolean" + } + } + }, + "apiValidateSuggestionParametersRequest": { + "type": "object", + "properties": { + "study_config": { + "$ref": "#/definitions/apiStudyConfig" + }, + "suggestion_algorithm": { + "type": "string" + }, + "suggestion_parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/apiSuggestionParameter" + } + } + } + }, "apiWorker": { "type": "object", "properties": { diff --git a/pkg/api/gen-doc/api.md b/pkg/api/gen-doc/api.md index c17a0cf2147..e7bff78e194 100644 --- a/pkg/api/gen-doc/api.md +++ b/pkg/api/gen-doc/api.md @@ -83,6 +83,8 @@ - [Trial](#api.Trial) - [UpdateWorkerStateReply](#api.UpdateWorkerStateReply) - [UpdateWorkerStateRequest](#api.UpdateWorkerStateRequest) + - [ValidateSuggestionParametersReply](#api.ValidateSuggestionParametersReply) + - [ValidateSuggestionParametersRequest](#api.ValidateSuggestionParametersRequest) - [Worker](#api.Worker) - [WorkerFullInfo](#api.WorkerFullInfo) @@ -1338,6 +1340,38 @@ Update a Status of Worker. + + +### ValidateSuggestionParametersReply + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| is_valid | [bool](#bool) | | | + + + + + + + + +### ValidateSuggestionParametersRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| study_config | [StudyConfig](#api.StudyConfig) | | | +| suggestion_algorithm | [string](#string) | | | +| suggestion_parameters | [SuggestionParameter](#api.SuggestionParameter) | repeated | | + + + + + + ### Worker @@ -1472,6 +1506,7 @@ https://cloud.google.com/service-infrastructure/docs/service-management/referenc | ReportMetricsLogs | [ReportMetricsLogsRequest](#api.ReportMetricsLogsRequest) | [ReportMetricsLogsReply](#api.ReportMetricsLogsRequest) | Report a logs of metrics for workers. The logs for each worker must have timestamp and must be ordered in time series. When the log you reported are already reported before, it will be dismissed and get no error. | | GetSavedStudies | [GetSavedStudiesRequest](#api.GetSavedStudiesRequest) | [GetSavedStudiesReply](#api.GetSavedStudiesRequest) | | | GetSavedModels | [GetSavedModelsRequest](#api.GetSavedModelsRequest) | [GetSavedModelsReply](#api.GetSavedModelsRequest) | | +| ValidateSuggestionParameters | [ValidateSuggestionParametersRequest](#api.ValidateSuggestionParametersRequest) | [ValidateSuggestionParametersReply](#api.ValidateSuggestionParametersRequest) | Validate Suggestion Parameters from Study Job. | diff --git a/pkg/api/gen-doc/index.html b/pkg/api/gen-doc/index.html index 82404e6b26d..009b9aa1e22 100644 --- a/pkg/api/gen-doc/index.html +++ b/pkg/api/gen-doc/index.html @@ -494,6 +494,14 @@

Table of Contents

MUpdateWorkerStateRequest +
  • + MValidateSuggestionParametersReply +
  • + +
  • + MValidateSuggestionParametersRequest +
  • +
  • MWorker
  • @@ -2751,6 +2759,66 @@

    UpdateWorkerStateRequest

    +

    ValidateSuggestionParametersReply

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    is_validbool

    + + + + +

    ValidateSuggestionParametersRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    study_configStudyConfig

    suggestion_algorithmstring

    suggestion_parametersSuggestionParameterrepeated

    + + + +

    Worker

    A process of evaluation for a trial.

    Types of worker supported by Katib are k8s Job, TF-Job, and Pytorch-Job.

    @@ -3181,6 +3249,13 @@

    Manager

    + + ValidateSuggestionParameters + ValidateSuggestionParametersRequest + ValidateSuggestionParametersReply +

    Validate Suggestion Parameters from Study Job.

    + + diff --git a/pkg/api/python/api_pb2.py b/pkg/api/python/api_pb2.py index c381417cf3a..ec22e0ff3fa 100644 --- a/pkg/api/python/api_pb2.py +++ b/pkg/api/python/api_pb2.py @@ -21,7 +21,7 @@ name='api.proto', package='api', syntax='proto3', - serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x83\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\xeb\x17\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels2T\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') + serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x83\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet\"\xa4\x01\n#ValidateSuggestionParametersRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!ValidateSuggestionParametersReply\x12\x10\n\x08is_valid\x18\x01 \x01(\x08*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x94\x19\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels\x12\xa6\x01\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply\"4\x82\xd3\xe4\x93\x02.\")/api/Manager/ValidateSuggestionParameters:\x01*2T\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') , dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) @@ -54,8 +54,8 @@ ], containing_type=None, options=None, - serialized_start=5950, - serialized_end=6035, + serialized_start=6172, + serialized_end=6257, ) _sym_db.RegisterEnumDescriptor(_PARAMETERTYPE) @@ -81,8 +81,8 @@ ], containing_type=None, options=None, - serialized_start=6037, - serialized_end=6109, + serialized_start=6259, + serialized_end=6331, ) _sym_db.RegisterEnumDescriptor(_OPTIMIZATIONTYPE) @@ -116,8 +116,8 @@ ], containing_type=None, options=None, - serialized_start=6111, - serialized_end=6182, + serialized_start=6333, + serialized_end=6404, ) _sym_db.RegisterEnumDescriptor(_STATE) @@ -3163,6 +3163,82 @@ serialized_end=5948, ) + +_VALIDATESUGGESTIONPARAMETERSREQUEST = _descriptor.Descriptor( + name='ValidateSuggestionParametersRequest', + full_name='api.ValidateSuggestionParametersRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='study_config', full_name='api.ValidateSuggestionParametersRequest.study_config', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='suggestion_algorithm', full_name='api.ValidateSuggestionParametersRequest.suggestion_algorithm', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='suggestion_parameters', full_name='api.ValidateSuggestionParametersRequest.suggestion_parameters', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5951, + serialized_end=6115, +) + + +_VALIDATESUGGESTIONPARAMETERSREPLY = _descriptor.Descriptor( + name='ValidateSuggestionParametersReply', + full_name='api.ValidateSuggestionParametersReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='is_valid', full_name='api.ValidateSuggestionParametersReply.is_valid', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6117, + serialized_end=6170, +) + _PARAMETERCONFIG.fields_by_name['parameter_type'].enum_type = _PARAMETERTYPE _PARAMETERCONFIG.fields_by_name['feasible'].message_type = _FEASIBLESPACE _PARAMETER.fields_by_name['parameter_type'].enum_type = _PARAMETERTYPE @@ -3217,6 +3293,8 @@ _GETEARLYSTOPPINGPARAMETERSREPLY.fields_by_name['early_stopping_parameters'].message_type = _EARLYSTOPPINGPARAMETER _EARLYSTOPPINGPARAMETERSET.fields_by_name['early_stopping_parameters'].message_type = _EARLYSTOPPINGPARAMETER _GETEARLYSTOPPINGPARAMETERLISTREPLY.fields_by_name['early_stopping_parameter_sets'].message_type = _EARLYSTOPPINGPARAMETERSET +_VALIDATESUGGESTIONPARAMETERSREQUEST.fields_by_name['study_config'].message_type = _STUDYCONFIG +_VALIDATESUGGESTIONPARAMETERSREQUEST.fields_by_name['suggestion_parameters'].message_type = _SUGGESTIONPARAMETER DESCRIPTOR.message_types_by_name['FeasibleSpace'] = _FEASIBLESPACE DESCRIPTOR.message_types_by_name['ParameterConfig'] = _PARAMETERCONFIG DESCRIPTOR.message_types_by_name['Parameter'] = _PARAMETER @@ -3295,6 +3373,8 @@ DESCRIPTOR.message_types_by_name['GetEarlyStoppingParameterListRequest'] = _GETEARLYSTOPPINGPARAMETERLISTREQUEST DESCRIPTOR.message_types_by_name['EarlyStoppingParameterSet'] = _EARLYSTOPPINGPARAMETERSET DESCRIPTOR.message_types_by_name['GetEarlyStoppingParameterListReply'] = _GETEARLYSTOPPINGPARAMETERLISTREPLY +DESCRIPTOR.message_types_by_name['ValidateSuggestionParametersRequest'] = _VALIDATESUGGESTIONPARAMETERSREQUEST +DESCRIPTOR.message_types_by_name['ValidateSuggestionParametersReply'] = _VALIDATESUGGESTIONPARAMETERSREPLY DESCRIPTOR.enum_types_by_name['ParameterType'] = _PARAMETERTYPE DESCRIPTOR.enum_types_by_name['OptimizationType'] = _OPTIMIZATIONTYPE DESCRIPTOR.enum_types_by_name['State'] = _STATE @@ -3870,6 +3950,20 @@ )) _sym_db.RegisterMessage(GetEarlyStoppingParameterListReply) +ValidateSuggestionParametersRequest = _reflection.GeneratedProtocolMessageType('ValidateSuggestionParametersRequest', (_message.Message,), dict( + DESCRIPTOR = _VALIDATESUGGESTIONPARAMETERSREQUEST, + __module__ = 'api_pb2' + # @@protoc_insertion_point(class_scope:api.ValidateSuggestionParametersRequest) + )) +_sym_db.RegisterMessage(ValidateSuggestionParametersRequest) + +ValidateSuggestionParametersReply = _reflection.GeneratedProtocolMessageType('ValidateSuggestionParametersReply', (_message.Message,), dict( + DESCRIPTOR = _VALIDATESUGGESTIONPARAMETERSREPLY, + __module__ = 'api_pb2' + # @@protoc_insertion_point(class_scope:api.ValidateSuggestionParametersReply) + )) +_sym_db.RegisterMessage(ValidateSuggestionParametersReply) + _MANAGER = _descriptor.ServiceDescriptor( @@ -3878,8 +3972,8 @@ file=DESCRIPTOR, index=0, options=None, - serialized_start=6185, - serialized_end=9236, + serialized_start=6407, + serialized_end=9627, methods=[ _descriptor.MethodDescriptor( name='CreateStudy', @@ -4106,6 +4200,15 @@ output_type=_GETSAVEDMODELSREPLY, options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002\035\022\033/api/Manager/GetSavedModels')), ), + _descriptor.MethodDescriptor( + name='ValidateSuggestionParameters', + full_name='api.Manager.ValidateSuggestionParameters', + index=25, + containing_service=None, + input_type=_VALIDATESUGGESTIONPARAMETERSREQUEST, + output_type=_VALIDATESUGGESTIONPARAMETERSREPLY, + options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002.\")/api/Manager/ValidateSuggestionParameters:\001*')), + ), ]) _sym_db.RegisterServiceDescriptor(_MANAGER) @@ -4118,8 +4221,8 @@ file=DESCRIPTOR, index=1, options=None, - serialized_start=9238, - serialized_end=9322, + serialized_start=9629, + serialized_end=9713, methods=[ _descriptor.MethodDescriptor( name='GetSuggestions', @@ -4142,8 +4245,8 @@ file=DESCRIPTOR, index=2, options=None, - serialized_start=9324, - serialized_end=9429, + serialized_start=9715, + serialized_end=9820, methods=[ _descriptor.MethodDescriptor( name='GetShouldStopWorkers', @@ -4308,6 +4411,11 @@ def __init__(self, channel): request_serializer=GetSavedModelsRequest.SerializeToString, response_deserializer=GetSavedModelsReply.FromString, ) + self.ValidateSuggestionParameters = channel.unary_unary( + '/api.Manager/ValidateSuggestionParameters', + request_serializer=ValidateSuggestionParametersRequest.SerializeToString, + response_deserializer=ValidateSuggestionParametersReply.FromString, + ) class ManagerServicer(object): @@ -4520,6 +4628,14 @@ def GetSavedModels(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def ValidateSuggestionParameters(self, request, context): + """* + Validate Suggestion Parameters from Study Job. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_ManagerServicer_to_server(servicer, server): rpc_method_handlers = { @@ -4648,6 +4764,11 @@ def add_ManagerServicer_to_server(servicer, server): request_deserializer=GetSavedModelsRequest.FromString, response_serializer=GetSavedModelsReply.SerializeToString, ), + 'ValidateSuggestionParameters': grpc.unary_unary_rpc_method_handler( + servicer.ValidateSuggestionParameters, + request_deserializer=ValidateSuggestionParametersRequest.FromString, + response_serializer=ValidateSuggestionParametersReply.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'api.Manager', rpc_method_handlers) @@ -4877,6 +4998,11 @@ def GetSavedModels(self, request, context): # missing associated documentation comment in .proto file pass context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def ValidateSuggestionParameters(self, request, context): + """* + Validate Suggestion Parameters from Study Job. + """ + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) class BetaManagerStub(object): @@ -5043,6 +5169,12 @@ def GetSavedModels(self, request, timeout, metadata=None, with_call=False, proto pass raise NotImplementedError() GetSavedModels.future = None + def ValidateSuggestionParameters(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + """* + Validate Suggestion Parameters from Study Job. + """ + raise NotImplementedError() + ValidateSuggestionParameters.future = None def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None): @@ -5077,6 +5209,7 @@ def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_time ('api.Manager', 'SetEarlyStoppingParameters'): SetEarlyStoppingParametersRequest.FromString, ('api.Manager', 'SetSuggestionParameters'): SetSuggestionParametersRequest.FromString, ('api.Manager', 'UpdateWorkerState'): UpdateWorkerStateRequest.FromString, + ('api.Manager', 'ValidateSuggestionParameters'): ValidateSuggestionParametersRequest.FromString, } response_serializers = { ('api.Manager', 'CreateStudy'): CreateStudyReply.SerializeToString, @@ -5104,6 +5237,7 @@ def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_time ('api.Manager', 'SetEarlyStoppingParameters'): SetEarlyStoppingParametersReply.SerializeToString, ('api.Manager', 'SetSuggestionParameters'): SetSuggestionParametersReply.SerializeToString, ('api.Manager', 'UpdateWorkerState'): UpdateWorkerStateReply.SerializeToString, + ('api.Manager', 'ValidateSuggestionParameters'): ValidateSuggestionParametersReply.SerializeToString, } method_implementations = { ('api.Manager', 'CreateStudy'): face_utilities.unary_unary_inline(servicer.CreateStudy), @@ -5131,6 +5265,7 @@ def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_time ('api.Manager', 'SetEarlyStoppingParameters'): face_utilities.unary_unary_inline(servicer.SetEarlyStoppingParameters), ('api.Manager', 'SetSuggestionParameters'): face_utilities.unary_unary_inline(servicer.SetSuggestionParameters), ('api.Manager', 'UpdateWorkerState'): face_utilities.unary_unary_inline(servicer.UpdateWorkerState), + ('api.Manager', 'ValidateSuggestionParameters'): face_utilities.unary_unary_inline(servicer.ValidateSuggestionParameters), } server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout) return beta_implementations.server(method_implementations, options=server_options) @@ -5168,6 +5303,7 @@ def beta_create_Manager_stub(channel, host=None, metadata_transformer=None, pool ('api.Manager', 'SetEarlyStoppingParameters'): SetEarlyStoppingParametersRequest.SerializeToString, ('api.Manager', 'SetSuggestionParameters'): SetSuggestionParametersRequest.SerializeToString, ('api.Manager', 'UpdateWorkerState'): UpdateWorkerStateRequest.SerializeToString, + ('api.Manager', 'ValidateSuggestionParameters'): ValidateSuggestionParametersRequest.SerializeToString, } response_deserializers = { ('api.Manager', 'CreateStudy'): CreateStudyReply.FromString, @@ -5195,6 +5331,7 @@ def beta_create_Manager_stub(channel, host=None, metadata_transformer=None, pool ('api.Manager', 'SetEarlyStoppingParameters'): SetEarlyStoppingParametersReply.FromString, ('api.Manager', 'SetSuggestionParameters'): SetSuggestionParametersReply.FromString, ('api.Manager', 'UpdateWorkerState'): UpdateWorkerStateReply.FromString, + ('api.Manager', 'ValidateSuggestionParameters'): ValidateSuggestionParametersReply.FromString, } cardinalities = { 'CreateStudy': cardinality.Cardinality.UNARY_UNARY, @@ -5222,6 +5359,7 @@ def beta_create_Manager_stub(channel, host=None, metadata_transformer=None, pool 'SetEarlyStoppingParameters': cardinality.Cardinality.UNARY_UNARY, 'SetSuggestionParameters': cardinality.Cardinality.UNARY_UNARY, 'UpdateWorkerState': cardinality.Cardinality.UNARY_UNARY, + 'ValidateSuggestionParameters': cardinality.Cardinality.UNARY_UNARY, } stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size) return beta_implementations.dynamic_stub(channel, 'api.Manager', cardinalities, options=stub_options) diff --git a/pkg/api/python/api_pb2_grpc.py b/pkg/api/python/api_pb2_grpc.py index 1163a3e19f6..edaabdbdd75 100644 --- a/pkg/api/python/api_pb2_grpc.py +++ b/pkg/api/python/api_pb2_grpc.py @@ -143,6 +143,11 @@ def __init__(self, channel): request_serializer=api__pb2.GetSavedModelsRequest.SerializeToString, response_deserializer=api__pb2.GetSavedModelsReply.FromString, ) + self.ValidateSuggestionParameters = channel.unary_unary( + '/api.Manager/ValidateSuggestionParameters', + request_serializer=api__pb2.ValidateSuggestionParametersRequest.SerializeToString, + response_deserializer=api__pb2.ValidateSuggestionParametersReply.FromString, + ) class ManagerServicer(object): @@ -355,6 +360,14 @@ def GetSavedModels(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def ValidateSuggestionParameters(self, request, context): + """* + Validate Suggestion Parameters from Study Job. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_ManagerServicer_to_server(servicer, server): rpc_method_handlers = { @@ -483,6 +496,11 @@ def add_ManagerServicer_to_server(servicer, server): request_deserializer=api__pb2.GetSavedModelsRequest.FromString, response_serializer=api__pb2.GetSavedModelsReply.SerializeToString, ), + 'ValidateSuggestionParameters': grpc.unary_unary_rpc_method_handler( + servicer.ValidateSuggestionParameters, + request_deserializer=api__pb2.ValidateSuggestionParametersRequest.FromString, + response_serializer=api__pb2.ValidateSuggestionParametersReply.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'api.Manager', rpc_method_handlers) diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index 6ee4c85809a..18a0927725f 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -16,6 +16,7 @@ package studyjob import ( "context" + "errors" "log" "github.com/kubeflow/katib/pkg" @@ -45,6 +46,17 @@ func initializeStudy(instance *katibv1alpha1.StudyJob) error { if err != nil { return err } + + log.Println("Validate Parameters Start") + isValidSuggestionParameters := validateSuggestionParameters(c, studyConfig, instance.Spec.SuggestionSpec.SuggestionParameters, instance.Spec.SuggestionSpec.SuggestionAlgorithm) + + if isValidSuggestionParameters { + log.Println("Suggestion Parameters is valid") + } else { + instance.Status.Condition = katibv1alpha1.ConditionFailed + return errors.New("Suggestion Parameters is not valid") + } + log.Printf("Create Study %s", studyConfig.Name) //CreateStudy studyID, err := createStudy(c, studyConfig) @@ -329,3 +341,35 @@ func getSuggestion(c katibapi.ManagerClient, studyID string, suggestionSpec *kat } return getSuggestReply, nil } + +func validateSuggestionParameters(c katibapi.ManagerClient, studyConfig *katibapi.StudyConfig, suggestionParameters []katibapi.SuggestionParameter, suggestionAlgorithm string) bool { + ctx := context.Background() + + validateSuggestionParametersReq := &katibapi.ValidateSuggestionParametersRequest{ + StudyConfig: studyConfig, + SuggestionAlgorithm: suggestionAlgorithm, + } + + for _, p := range suggestionParameters { + validateSuggestionParametersReq.SuggestionParameters = append( + validateSuggestionParametersReq.SuggestionParameters, + &katibapi.SuggestionParameter{ + Name: p.Name, + Value: p.Value, + }, + ) + } + + validateSuggestionParametersReply, err := c.ValidateSuggestionParameters(ctx, validateSuggestionParametersReq) + + if err.Error() == "rpc error: code = Unimplemented desc = Method not found!" { + log.Printf("Method ValidateSuggestionParameters not found inside Suggestion service: %s", suggestionAlgorithm) + return true + } + if err != nil { + log.Printf("ValidateSuggestionParameters Error: %v", err) + return false + } + return validateSuggestionParametersReply.IsValid + +} diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index 713518a47f3..7ee1284c9db 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -103,20 +103,6 @@ func getWorkerKind(workerSpec *katibv1alpha1.WorkerSpec) (*schema.GroupVersionKi func validateStudy(instance *katibv1alpha1.StudyJob) error { - if getJobType(instance.Spec.SuggestionSpec.SuggestionAlgorithm) != jobTypeNAS { - //Validate HP job - if validJobErr := validateHPJob(instance); validJobErr != nil { - instance.Status.Condition = katibv1alpha1.ConditionFailed - return validJobErr - } - } else { - //Validate NAS job - if validJobErr := validateNASJob(instance); validJobErr != nil { - instance.Status.Condition = katibv1alpha1.ConditionFailed - return validJobErr - } - } - if instance.Spec.SuggestionSpec == nil { return fmt.Errorf("No Spec.SuggestionSpec specified.") } From e45216ec86037ee9ba7b35b3bc103fbd1d983413 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Tue, 26 Feb 2019 19:58:23 -0800 Subject: [PATCH 08/17] Fix api --- pkg/api/api.pb.go | 583 +++++++++++++------------------------- pkg/api/python/api_pb2.py | 49 ++-- 2 files changed, 211 insertions(+), 421 deletions(-) diff --git a/pkg/api/api.pb.go b/pkg/api/api.pb.go index b10df90b8be..851f6d9af07 100644 --- a/pkg/api/api.pb.go +++ b/pkg/api/api.pb.go @@ -3470,397 +3470,202 @@ var _EarlyStopping_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ -<<<<<<< HEAD - // 3131 bytes of a gzipped FileDescriptorProto + // 3145 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x6f, 0x23, 0xc7, 0x11, 0xf6, 0x88, 0x7a, 0xb1, 0x28, 0x51, 0x54, 0xeb, 0xb1, 0x14, 0xf5, 0x58, 0xa9, 0x25, 0xef, 0x6a, 0x5f, 0x92, 0xcd, 0xf5, 0x6b, 0xe5, 0xb5, 0x8d, 0x5d, 0x49, 0x56, 0x08, 0x4b, 0x94, 0x30, 0xe2, 0x5a, 0x7e, 0x00, 0x26, 0x46, 0x62, 0x8b, 0x3b, 0x6b, 0x92, 0xc3, 0x70, 0x46, 0xbb, 0xd6, - 0x1a, 0xbe, 0xe4, 0x92, 0x5c, 0x02, 0x38, 0xaf, 0x4b, 0x0e, 0x3e, 0xfa, 0x07, 0x04, 0x30, 0x82, - 0x5c, 0x72, 0xc9, 0x29, 0x87, 0x9c, 0x82, 0x00, 0x39, 0xe4, 0x98, 0x63, 0x7e, 0x44, 0xd0, 0xd5, - 0x3d, 0x33, 0x3d, 0xc3, 0x99, 0x11, 0xad, 0xb5, 0x83, 0xdc, 0x38, 0xdd, 0xf5, 0xf8, 0xaa, 0xaa, - 0xab, 0xaa, 0xbb, 0x24, 0x48, 0x1b, 0x6d, 0x73, 0xad, 0xdd, 0xb1, 0x1c, 0x8b, 0xa4, 0x8c, 0xb6, - 0x59, 0x98, 0xab, 0x5b, 0x56, 0xbd, 0xc1, 0xd6, 0x8d, 0xb6, 0xb9, 0x6e, 0xb4, 0x5a, 0x96, 0x63, - 0x38, 0xa6, 0xd5, 0xb2, 0x05, 0x09, 0xfd, 0x14, 0x46, 0xdf, 0x67, 0x86, 0x6d, 0x1e, 0x37, 0xd8, - 0x61, 0xdb, 0x38, 0x61, 0x24, 0x07, 0xa9, 0xa6, 0xf1, 0x45, 0x5e, 0x5b, 0xd4, 0x56, 0xd3, 0x3a, - 0xff, 0x89, 0x2b, 0x66, 0x2b, 0xdf, 0x27, 0x57, 0xcc, 0x16, 0x21, 0xd0, 0xdf, 0x30, 0x6d, 0x27, - 0x9f, 0x5a, 0x4c, 0xad, 0xa6, 0x75, 0xfc, 0xcd, 0xd7, 0x6c, 0x87, 0xb5, 0xf3, 0xfd, 0x48, 0x86, - 0xbf, 0xe9, 0xd7, 0x1a, 0x8c, 0x1d, 0x18, 0x1d, 0xa3, 0xc9, 0x1c, 0xd6, 0xd9, 0xb4, 0x5a, 0xa7, - 0x66, 0x9d, 0xd3, 0xb5, 0x8c, 0x26, 0x93, 0x0a, 0xf0, 0x37, 0xb9, 0x07, 0xd9, 0xb6, 0x4b, 0x56, - 0x75, 0xce, 0xdb, 0x0c, 0x95, 0x65, 0x8b, 0x64, 0x8d, 0xdb, 0xe2, 0x49, 0xa8, 0x9c, 0xb7, 0x99, - 0x3e, 0xda, 0x56, 0x3f, 0xc9, 0x1a, 0x0c, 0x9f, 0x4a, 0xfc, 0xf9, 0xd4, 0xa2, 0xb6, 0x9a, 0x91, - 0x4c, 0x01, 0xa3, 0x74, 0x8f, 0x86, 0xb6, 0x21, 0xed, 0xc9, 0xfb, 0xa1, 0xb1, 0x4c, 0xc2, 0xc0, - 0x53, 0xa3, 0x71, 0x26, 0x80, 0xa4, 0x75, 0xf1, 0x41, 0x7f, 0xa5, 0xc1, 0xe8, 0x1e, 0x73, 0x3a, - 0xe6, 0x89, 0xbd, 0x6b, 0xd5, 0x0f, 0x99, 0x43, 0x66, 0x21, 0xfd, 0xcc, 0xea, 0x7c, 0xce, 0x3a, - 0x55, 0xb3, 0x26, 0x75, 0x0f, 0x8b, 0x85, 0x52, 0x8d, 0x14, 0x61, 0xa4, 0x29, 0xa8, 0xab, 0x0d, - 0xab, 0x6e, 0xe7, 0xfb, 0x16, 0x53, 0xab, 0x99, 0xe2, 0x18, 0x6a, 0xf7, 0xc5, 0xe8, 0x99, 0xa6, - 0xf7, 0xdb, 0x26, 0xeb, 0x30, 0x2a, 0x05, 0xda, 0x8e, 0xe1, 0x9c, 0xd9, 0x08, 0x20, 0x5b, 0x04, - 0x64, 0x3a, 0x74, 0x0c, 0x87, 0xe9, 0x23, 0x82, 0xe0, 0x10, 0xf7, 0xe9, 0x5d, 0x18, 0x92, 0xb2, - 0x22, 0x7d, 0xe0, 0x19, 0xd2, 0xa7, 0x1a, 0x72, 0x1f, 0x72, 0x92, 0xe9, 0x43, 0xfe, 0x5d, 0x31, - 0x9b, 0x8c, 0x73, 0x3b, 0xa6, 0xcf, 0xcd, 0x7f, 0xc7, 0x70, 0xef, 0x03, 0xf8, 0xf0, 0x23, 0xb5, - 0xde, 0x81, 0x41, 0x24, 0x75, 0x6d, 0x9e, 0x52, 0x6d, 0xf6, 0x54, 0xea, 0x92, 0x88, 0xbe, 0x07, - 0x13, 0x87, 0x67, 0xf5, 0x3a, 0xb3, 0xf9, 0x71, 0x4e, 0x8e, 0x69, 0x34, 0xa2, 0x87, 0x30, 0xbd, - 0x6d, 0x74, 0x1a, 0xe7, 0x87, 0x8e, 0xd5, 0x6e, 0x9b, 0xad, 0xfa, 0x65, 0x64, 0xac, 0x43, 0xaa, - 0x62, 0xd4, 0xbf, 0x07, 0xc3, 0xe7, 0x30, 0x7a, 0xe8, 0x9c, 0xd5, 0xce, 0xf7, 0x9f, 0xb2, 0xce, - 0x53, 0x93, 0x3d, 0x8b, 0x63, 0xb5, 0x9e, 0xb5, 0x58, 0xc7, 0x65, 0xc5, 0x0f, 0x92, 0x85, 0x3e, - 0xb3, 0x26, 0xcf, 0x56, 0x9f, 0x59, 0x23, 0x8b, 0x90, 0xa9, 0x31, 0xfb, 0xa4, 0x63, 0xb6, 0xb9, - 0x07, 0x64, 0xe2, 0xa9, 0x4b, 0xf4, 0x4f, 0x1a, 0x0c, 0x54, 0x3a, 0xa6, 0xd1, 0x20, 0x33, 0x30, - 0xec, 0xf0, 0x1f, 0xfe, 0x89, 0x1b, 0xc2, 0xef, 0x52, 0x8d, 0x6f, 0xd9, 0x1c, 0x11, 0xdf, 0x12, - 0xfa, 0x86, 0xf0, 0xbb, 0x54, 0x23, 0x77, 0xc1, 0x3f, 0xe1, 0x55, 0x9b, 0x89, 0x84, 0xcf, 0x14, - 0xb3, 0xc1, 0x54, 0xd0, 0x47, 0x3c, 0x22, 0x7e, 0xba, 0xaf, 0xc3, 0x98, 0x75, 0xfc, 0x84, 0x9d, - 0x38, 0xe6, 0x53, 0x56, 0x15, 0x1e, 0x10, 0xd0, 0xb2, 0xde, 0x32, 0x06, 0x93, 0xcc, 0x41, 0xbf, - 0x63, 0xd4, 0xed, 0xfc, 0x00, 0x0a, 0x1d, 0x46, 0xa1, 0x15, 0xa3, 0xae, 0xe3, 0x2a, 0xfd, 0x87, - 0x06, 0x83, 0x47, 0x78, 0x66, 0x93, 0xf3, 0x25, 0x01, 0xbe, 0x6a, 0x74, 0x2a, 0x68, 0x34, 0x81, - 0x7e, 0x9e, 0xb2, 0x6e, 0xb5, 0xc2, 0xf4, 0xa5, 0x30, 0x28, 0xd3, 0x67, 0xa0, 0x2b, 0x7d, 0xe4, - 0x0e, 0xa1, 0x30, 0x52, 0x61, 0xcd, 0x76, 0xc3, 0x70, 0xd8, 0x81, 0xe1, 0x3c, 0xce, 0x0f, 0x22, - 0x7f, 0x60, 0xcd, 0xb3, 0x6b, 0x28, 0xd2, 0xae, 0x3f, 0x6a, 0x90, 0x2e, 0x1b, 0xb6, 0xac, 0x86, - 0x77, 0x61, 0xa4, 0xde, 0x31, 0xda, 0x8f, 0xab, 0x27, 0xf8, 0x8d, 0xd6, 0x65, 0x8a, 0x39, 0xe4, - 0xd9, 0xe1, 0x1b, 0x82, 0x4e, 0xcf, 0xd4, 0xfd, 0x0f, 0x72, 0x0f, 0xc0, 0x6a, 0xb3, 0x8e, 0xa8, - 0xe3, 0x68, 0x74, 0xa6, 0x38, 0x83, 0x2c, 0x9e, 0xe0, 0xb5, 0x7d, 0x8f, 0x40, 0x57, 0x88, 0x0b, - 0x1b, 0x00, 0xfe, 0x0e, 0xb9, 0x0d, 0x69, 0x6f, 0x2f, 0xaf, 0x29, 0xb1, 0xf5, 0x68, 0x74, 0x9f, - 0x80, 0x36, 0x20, 0xa3, 0x40, 0x22, 0xf3, 0x00, 0xad, 0xb3, 0x66, 0xb5, 0x61, 0x9c, 0xb3, 0x8e, - 0x8d, 0xc0, 0x07, 0xf4, 0x74, 0xeb, 0xac, 0xb9, 0x8b, 0x0b, 0x7c, 0xdb, 0x6c, 0xb5, 0xcf, 0x9c, - 0xaa, 0x6d, 0x3e, 0x67, 0x98, 0xd1, 0x03, 0x7a, 0x1a, 0x57, 0x0e, 0xcd, 0xe7, 0x8c, 0x5c, 0x85, - 0x8c, 0x75, 0xe6, 0x78, 0xfb, 0x29, 0xdc, 0x07, 0xb1, 0xc4, 0x09, 0xe8, 0x5f, 0x34, 0x48, 0x7b, - 0x30, 0xc8, 0x0a, 0x8c, 0x7a, 0x40, 0x30, 0x70, 0xe2, 0x18, 0x04, 0x17, 0xc9, 0x2e, 0x8c, 0xfb, - 0xe7, 0x55, 0x78, 0xd4, 0xf5, 0xcf, 0xd5, 0xa0, 0x5d, 0x6b, 0xa1, 0xb6, 0x64, 0xeb, 0xb9, 0x76, - 0x68, 0xa5, 0xf0, 0x10, 0x72, 0x61, 0x2a, 0xb2, 0x06, 0x43, 0xae, 0x5c, 0xe1, 0xaf, 0xc9, 0x60, - 0x2e, 0xc8, 0x70, 0xb9, 0x44, 0xf4, 0xbb, 0x7e, 0xc8, 0x60, 0xbe, 0x27, 0x74, 0xbf, 0xe8, 0x6c, - 0x7f, 0x08, 0xe3, 0x56, 0xdb, 0x31, 0x9b, 0xe6, 0x73, 0x04, 0x2c, 0x5a, 0x91, 0xa8, 0xeb, 0x53, - 0xd2, 0x16, 0x7f, 0x17, 0xbb, 0x51, 0xce, 0x0a, 0xad, 0x90, 0x5b, 0x21, 0x19, 0x75, 0xcb, 0x68, - 0xe0, 0x91, 0xd7, 0x82, 0xc4, 0x3b, 0x96, 0xd1, 0x20, 0xe5, 0x28, 0xe7, 0x0d, 0xa0, 0xf3, 0x96, - 0x64, 0x26, 0x78, 0x76, 0xf4, 0xe0, 0x3e, 0x72, 0x07, 0x88, 0x71, 0x72, 0xc2, 0x6c, 0xbb, 0xda, - 0x66, 0x9d, 0xa6, 0x69, 0xdb, 0x78, 0x5a, 0x07, 0xf1, 0xca, 0x30, 0x2e, 0x76, 0x0e, 0xfc, 0x8d, - 0xe4, 0xac, 0x21, 0xaf, 0xc0, 0x64, 0xa8, 0xa8, 0x54, 0xd1, 0x8f, 0xc3, 0xe8, 0x32, 0x12, 0xac, - 0x2c, 0x65, 0xee, 0xd5, 0x3c, 0x0c, 0xc9, 0x16, 0x99, 0x4f, 0xa3, 0x4e, 0xf7, 0x93, 0xfb, 0xfb, - 0x89, 0x75, 0x5c, 0xaa, 0xe5, 0x41, 0xf8, 0x1b, 0x3f, 0xc8, 0x1d, 0x80, 0x96, 0x61, 0xbb, 0x79, - 0x98, 0x41, 0xbb, 0xb3, 0xc1, 0xa4, 0xd2, 0xd3, 0x2d, 0x2f, 0x71, 0x67, 0x60, 0xf8, 0x89, 0x75, - 0x2c, 0xa2, 0x32, 0x22, 0x6a, 0xcb, 0x13, 0xeb, 0x98, 0x7b, 0xfd, 0x07, 0x39, 0x37, 0x25, 0x20, - 0x9b, 0x1d, 0x66, 0x38, 0x0c, 0x9d, 0xae, 0xb3, 0x9f, 0x9e, 0x31, 0xdb, 0xe1, 0xd5, 0x42, 0xd4, - 0xba, 0x88, 0x6a, 0xa1, 0x44, 0x47, 0xcf, 0xd8, 0xfe, 0x07, 0xbd, 0x03, 0xb9, 0x80, 0xa8, 0x76, - 0xe3, 0x3c, 0x50, 0x34, 0xb5, 0x40, 0xd1, 0xa4, 0xeb, 0x40, 0xb6, 0x58, 0x83, 0x85, 0x34, 0x27, - 0x30, 0xdc, 0x81, 0x5c, 0x80, 0xe1, 0x02, 0xf9, 0xb7, 0x61, 0x6c, 0x87, 0x39, 0xbd, 0x0a, 0xdf, - 0x82, 0x51, 0x9f, 0x9a, 0x4b, 0xbe, 0x94, 0x0b, 0xa6, 0x60, 0xc2, 0x95, 0xb2, 0x6b, 0xda, 0x8e, - 0xd4, 0x4b, 0x0f, 0x60, 0x3c, 0xb8, 0xcc, 0x15, 0xbc, 0x0d, 0x63, 0x42, 0x81, 0x25, 0x3b, 0xb4, - 0x1b, 0x31, 0xe2, 0xeb, 0x70, 0x9b, 0xb7, 0x9e, 0xb5, 0xd5, 0x4f, 0x9b, 0xbe, 0xe1, 0x86, 0x0d, - 0xbb, 0xae, 0x6b, 0xdf, 0x22, 0x0c, 0x60, 0xdf, 0x91, 0x60, 0x45, 0x5f, 0x11, 0x14, 0x62, 0xc3, - 0x8f, 0x91, 0xe4, 0x93, 0x3e, 0x8c, 0x69, 0xd9, 0x9c, 0x7c, 0x87, 0x39, 0x48, 0x6b, 0xf7, 0xe0, - 0xc4, 0xd7, 0x20, 0xab, 0x90, 0x73, 0xd9, 0x14, 0x06, 0x51, 0x96, 0x6b, 0x9b, 0x0a, 0x49, 0xee, - 0xc8, 0x40, 0x05, 0x0c, 0x49, 0x80, 0xf4, 0x2a, 0x06, 0x4a, 0x81, 0x7f, 0xb1, 0xd1, 0xf7, 0x61, - 0x4a, 0x67, 0x75, 0xd3, 0x76, 0x58, 0x47, 0x34, 0x7a, 0x57, 0xcd, 0x32, 0x0c, 0x8a, 0xf6, 0x2e, - 0x79, 0x33, 0xc8, 0x2b, 0x69, 0xe4, 0x16, 0x2d, 0xc2, 0x44, 0x98, 0x9b, 0xab, 0x4d, 0xba, 0x2b, - 0x50, 0x0b, 0x08, 0xbf, 0xec, 0x09, 0xfa, 0x1e, 0x3c, 0xc7, 0x9b, 0x98, 0x27, 0x4d, 0x5c, 0x4b, - 0xd3, 0x7a, 0xda, 0x15, 0x67, 0xf3, 0x26, 0x66, 0xf2, 0x92, 0xd1, 0x6c, 0xf3, 0xf3, 0x8f, 0xd5, - 0x79, 0x58, 0x07, 0xd3, 0xde, 0x94, 0x2b, 0x94, 0x40, 0x2e, 0xa0, 0xb0, 0xdd, 0x38, 0xa7, 0xa7, - 0x78, 0xea, 0x7a, 0xc7, 0xa0, 0x3a, 0xbd, 0x2f, 0x78, 0x8b, 0x09, 0x18, 0x9b, 0x0a, 0x19, 0xfb, - 0x16, 0xc6, 0x4f, 0x55, 0x4d, 0x5e, 0x86, 0x21, 0xb1, 0xed, 0xc6, 0x3d, 0xe0, 0x59, 0x77, 0x8f, - 0x7e, 0x0a, 0xf9, 0x47, 0xed, 0x9a, 0xe1, 0xb0, 0x23, 0xef, 0xcd, 0xc0, 0x5c, 0xa0, 0x89, 0x77, - 0x31, 0xff, 0x06, 0xd5, 0x17, 0x77, 0x83, 0xa2, 0x79, 0x98, 0x8e, 0x10, 0xce, 0x1d, 0xf3, 0x3b, - 0x0d, 0xf2, 0x1e, 0xe2, 0xf7, 0xcf, 0x1a, 0x8d, 0x52, 0xeb, 0xd4, 0xfa, 0xf1, 0x1c, 0x44, 0xae, - 0xc1, 0x98, 0xd5, 0x6a, 0x9c, 0x57, 0xf9, 0xc5, 0xcd, 0x76, 0xf8, 0x6b, 0x0b, 0x7b, 0xe3, 0xb0, - 0x3e, 0xca, 0x97, 0x77, 0x71, 0x75, 0xd7, 0xaa, 0xd3, 0x6f, 0x34, 0xc8, 0x06, 0x41, 0xf1, 0x13, - 0x7a, 0x14, 0x7f, 0x42, 0xe5, 0xb5, 0xb5, 0xeb, 0xf6, 0xdc, 0xd7, 0xc3, 0xed, 0x39, 0xfc, 0xfc, - 0x4b, 0x5d, 0xfc, 0xfc, 0xa3, 0x1f, 0xc3, 0x74, 0x84, 0xdf, 0x78, 0xc0, 0xdf, 0x83, 0x71, 0x69, - 0xff, 0xe9, 0x59, 0xa3, 0x51, 0x35, 0x5b, 0xa7, 0x96, 0x1b, 0xfa, 0x09, 0x05, 0xb2, 0xc7, 0x34, - 0xf6, 0x2c, 0xf0, 0x6d, 0xd3, 0xbf, 0x69, 0x30, 0xc5, 0x6b, 0xa4, 0xf7, 0xd0, 0xea, 0xe5, 0xc4, - 0xbe, 0x0a, 0x93, 0xb6, 0xc7, 0x50, 0x35, 0x1a, 0x75, 0xab, 0x63, 0x3a, 0x8f, 0x9b, 0x32, 0x38, - 0x13, 0xfe, 0xde, 0x03, 0x77, 0x8b, 0xbc, 0x0c, 0xd9, 0x8e, 0x10, 0x5c, 0x6d, 0x9d, 0x35, 0x8f, - 0x59, 0x07, 0xa3, 0x35, 0xa0, 0x8f, 0xca, 0xd5, 0x32, 0x2e, 0x92, 0x15, 0xc8, 0x36, 0xac, 0x7a, - 0x55, 0xc9, 0xc9, 0x7e, 0xcc, 0xc9, 0x91, 0x86, 0x55, 0x3f, 0xf2, 0xd2, 0x72, 0x06, 0x86, 0xd1, - 0xa7, 0x1c, 0xda, 0x80, 0x80, 0x86, 0xdf, 0xa5, 0x1a, 0xbd, 0x27, 0x3a, 0x81, 0x6a, 0x4e, 0xaf, - 0xf5, 0xf0, 0x97, 0x1a, 0xcc, 0x72, 0xde, 0xc7, 0xd6, 0x59, 0xa3, 0xf6, 0xfd, 0xca, 0xc8, 0x5b, - 0x90, 0x67, 0xfc, 0xa5, 0x59, 0xb5, 0xe5, 0x53, 0xb3, 0xcb, 0x29, 0xd3, 0x4c, 0x7d, 0x89, 0xfa, - 0x7e, 0x49, 0x30, 0xe5, 0x00, 0x66, 0xa2, 0xe1, 0x88, 0x36, 0x39, 0x6d, 0xe3, 0x0e, 0xaa, 0x54, - 0x1d, 0xa6, 0xa1, 0xc3, 0x26, 0xec, 0x10, 0x5f, 0xa9, 0x66, 0xd3, 0x0e, 0x56, 0x26, 0x79, 0xca, - 0x5e, 0xbc, 0x3a, 0x2e, 0xc3, 0xa8, 0x7b, 0x94, 0xf9, 0x5d, 0xcd, 0x96, 0xe3, 0x22, 0xf7, 0x7c, - 0xf3, 0x5b, 0x9a, 0x4d, 0xf7, 0xb1, 0x4a, 0x79, 0x3a, 0x39, 0xf6, 0xfb, 0x90, 0x53, 0x52, 0x80, - 0x67, 0x4e, 0xb0, 0x05, 0x07, 0x86, 0x29, 0x7a, 0xb6, 0xa9, 0x7e, 0xda, 0xd4, 0x86, 0xbc, 0xce, - 0xda, 0x56, 0xc7, 0xf1, 0xc9, 0x7a, 0xb1, 0x25, 0x4a, 0x69, 0xaa, 0x67, 0xa5, 0x79, 0x98, 0x8e, - 0x50, 0xca, 0x8b, 0xda, 0x9f, 0x35, 0x48, 0xef, 0x59, 0x35, 0x26, 0xea, 0xc6, 0x3c, 0x80, 0x00, - 0xa0, 0x3c, 0x02, 0xd2, 0xb8, 0x82, 0x77, 0xd6, 0x40, 0xb9, 0xea, 0x0b, 0x95, 0xab, 0x35, 0x00, - 0xaf, 0x52, 0xd8, 0x31, 0x2f, 0x71, 0x85, 0x82, 0x5c, 0xf3, 0x2f, 0xc0, 0xfd, 0x48, 0x3c, 0xa2, - 0x1a, 0xe2, 0x5f, 0x87, 0xe7, 0x01, 0x9a, 0x1c, 0x60, 0xb5, 0xcd, 0x1f, 0xb4, 0xe2, 0x90, 0xa5, - 0x71, 0x85, 0xbf, 0x66, 0xe9, 0xeb, 0x90, 0xd9, 0x32, 0x1c, 0xe3, 0x90, 0x39, 0x68, 0x41, 0xd4, - 0x03, 0x86, 0x40, 0x3f, 0xf2, 0x0a, 0xc4, 0xf8, 0x9b, 0x9a, 0x90, 0x3b, 0x34, 0x9e, 0x06, 0x2f, - 0x91, 0x17, 0x58, 0x1f, 0xfd, 0x0e, 0x0a, 0x4d, 0x39, 0x52, 0xdd, 0x53, 0x8e, 0x1c, 0x64, 0x15, - 0x55, 0xdc, 0xe9, 0xbf, 0xd0, 0x84, 0x76, 0x74, 0xbc, 0xab, 0x7d, 0x05, 0x06, 0xd0, 0x2a, 0x59, - 0xb2, 0x85, 0xeb, 0xbc, 0xd0, 0xe8, 0x62, 0x93, 0xdc, 0x82, 0xe1, 0x9a, 0xe1, 0x18, 0xb2, 0x5e, - 0xfb, 0x77, 0x4b, 0xc5, 0x07, 0xfa, 0x50, 0x4d, 0x7c, 0x90, 0x25, 0x18, 0x71, 0x58, 0xcb, 0xb6, - 0x3a, 0xd5, 0x63, 0xcb, 0xe8, 0xd4, 0xe4, 0x05, 0x20, 0x23, 0xd6, 0x1e, 0xf2, 0x25, 0x17, 0x9c, - 0x44, 0xc2, 0xc1, 0xe5, 0xb1, 0x5a, 0xf3, 0xc5, 0x1a, 0x87, 0x6c, 0x32, 0xf7, 0x78, 0xd2, 0x2d, - 0x98, 0xec, 0xda, 0xe1, 0x09, 0x71, 0x1b, 0xf0, 0x98, 0x9a, 0x2c, 0xe9, 0x2a, 0xea, 0x92, 0xd0, - 0x37, 0x44, 0xc5, 0xe6, 0x52, 0x50, 0xab, 0xdd, 0x9b, 0xfb, 0xe9, 0x3b, 0xa2, 0x34, 0xaa, 0x7c, - 0x5c, 0xf9, 0x35, 0x18, 0x44, 0xcf, 0xd8, 0x81, 0x01, 0x81, 0xef, 0x37, 0xb9, 0x4b, 0x75, 0x1f, - 0x7c, 0xc0, 0xed, 0x2f, 0x70, 0xe4, 0xe9, 0x06, 0x90, 0x90, 0x4c, 0x8e, 0xa8, 0xa7, 0x40, 0xd2, - 0x7f, 0x6a, 0xb0, 0x70, 0xa8, 0x96, 0x7a, 0x2f, 0x4b, 0x7e, 0xa4, 0x16, 0xa6, 0x96, 0xea, 0x54, - 0xa0, 0x54, 0x93, 0x3d, 0x98, 0x52, 0xa4, 0x29, 0x59, 0x2c, 0x12, 0x33, 0x2f, 0xc2, 0xd9, 0x8d, - 0x54, 0x57, 0x40, 0xf8, 0xf0, 0xe9, 0x3d, 0x98, 0x8b, 0xb5, 0x4c, 0xbe, 0x1c, 0x3c, 0x24, 0x5a, - 0xb0, 0x69, 0xbc, 0x0d, 0x0b, 0x3b, 0x17, 0x3a, 0x25, 0x8e, 0xb9, 0x09, 0x73, 0x3b, 0x49, 0x7a, - 0x63, 0xcd, 0xd4, 0x2e, 0x65, 0xe6, 0xbb, 0xb0, 0x14, 0xad, 0x4e, 0x79, 0xc3, 0x25, 0x3d, 0x7b, - 0xbe, 0xd3, 0x60, 0x3a, 0x82, 0x9b, 0x27, 0x6e, 0xbc, 0x91, 0x97, 0x89, 0x7c, 0xac, 0xdd, 0xa9, - 0x4b, 0xd9, 0xfd, 0x1c, 0xae, 0x26, 0xd9, 0xcd, 0x3d, 0x7d, 0x04, 0x33, 0x51, 0x1a, 0xd5, 0x5e, - 0x39, 0x1b, 0xa7, 0x95, 0xf7, 0xaf, 0x2b, 0x76, 0xe4, 0xba, 0x4d, 0x8b, 0x30, 0xc5, 0xef, 0x04, - 0x3e, 0x5b, 0x0f, 0x7e, 0x9e, 0x82, 0x89, 0x30, 0x0f, 0xaf, 0x73, 0xff, 0xd1, 0x60, 0xe9, 0x90, - 0x39, 0xd1, 0x23, 0xf6, 0xff, 0xdd, 0xad, 0x29, 0x94, 0x8a, 0x47, 0x30, 0x13, 0x12, 0xda, 0x95, - 0x8e, 0xc2, 0x73, 0xd1, 0xb8, 0xf5, 0x2b, 0x2c, 0xda, 0x1e, 0x7a, 0x1f, 0xae, 0x26, 0x59, 0x7b, - 0x41, 0x5e, 0x8a, 0xb3, 0x7e, 0xb1, 0xaf, 0xe2, 0xf8, 0xc5, 0x99, 0x49, 0xd4, 0x9e, 0x68, 0xb9, - 0xf6, 0x02, 0x96, 0x3f, 0x80, 0x95, 0x58, 0xdd, 0x3d, 0xa6, 0xea, 0x5f, 0x35, 0x98, 0x89, 0x16, - 0x70, 0x41, 0xb6, 0x5e, 0xfe, 0x8c, 0x24, 0xba, 0x23, 0xf5, 0x02, 0xee, 0xf8, 0xb9, 0x06, 0xf4, - 0x02, 0x7f, 0xf0, 0x70, 0x18, 0x30, 0x1f, 0xa7, 0x5f, 0x4d, 0xe3, 0x85, 0x04, 0x0c, 0x3c, 0x93, - 0x0b, 0x2c, 0x6e, 0xcb, 0xa6, 0xff, 0xd2, 0x60, 0xf9, 0x43, 0xa3, 0x61, 0xf2, 0xd7, 0x76, 0x52, - 0xc9, 0xbf, 0xcc, 0x4c, 0xed, 0xff, 0xa0, 0x4e, 0xbe, 0x0b, 0x4b, 0xc9, 0xd6, 0xc9, 0x9c, 0x33, - 0xed, 0xea, 0x53, 0x4e, 0x87, 0x76, 0x0d, 0xeb, 0x43, 0xa6, 0x8d, 0x6c, 0x37, 0x1f, 0xc1, 0x68, - 0xe0, 0xcf, 0xb9, 0x24, 0x07, 0x23, 0x8f, 0xca, 0x1f, 0x94, 0xf7, 0x8f, 0xca, 0xd5, 0xca, 0xc7, - 0x07, 0xdb, 0xb9, 0x97, 0x08, 0xc0, 0xe0, 0xd6, 0xfe, 0xa3, 0x87, 0xbb, 0xdb, 0x39, 0x8d, 0x0c, - 0x41, 0xaa, 0x54, 0xae, 0xe4, 0xfa, 0xc8, 0x08, 0x0c, 0x6f, 0x95, 0x0e, 0x37, 0xf5, 0xed, 0xca, - 0x76, 0x2e, 0x45, 0xc6, 0x20, 0xb3, 0xf9, 0xa0, 0xb2, 0xbd, 0xb3, 0xaf, 0x97, 0x36, 0x1f, 0xec, - 0xe6, 0xfa, 0x6f, 0xfe, 0x04, 0x72, 0xe1, 0xd1, 0x3c, 0xc9, 0xc3, 0xa4, 0x2b, 0x79, 0xff, 0xa0, - 0x52, 0xda, 0x2b, 0x7d, 0xf2, 0xa0, 0x52, 0xda, 0x2f, 0xe7, 0x5e, 0xe2, 0xc2, 0xf6, 0x4a, 0x65, - 0xbe, 0xc2, 0x75, 0xf0, 0xaf, 0x07, 0x1f, 0x89, 0xaf, 0xbe, 0x9b, 0x3b, 0x30, 0x80, 0xe3, 0x11, - 0x92, 0x81, 0xa1, 0x83, 0xed, 0xf2, 0x56, 0xa9, 0xbc, 0x93, 0x7b, 0x89, 0x7f, 0xe8, 0x8f, 0xca, - 0x65, 0xfe, 0xa1, 0x91, 0x51, 0x48, 0x6f, 0xee, 0xef, 0x1d, 0xec, 0x6e, 0x57, 0xb6, 0xb7, 0x72, - 0x7d, 0x1c, 0xef, 0x07, 0xa5, 0xdd, 0xdd, 0xed, 0xad, 0x5c, 0x8a, 0xa4, 0x61, 0x60, 0x5b, 0xd7, - 0xf7, 0xf5, 0xdc, 0x17, 0xc5, 0xdf, 0xce, 0xc0, 0xd0, 0x9e, 0xd1, 0x32, 0xea, 0xac, 0x43, 0x9a, - 0x90, 0x51, 0xc6, 0xc1, 0xe4, 0x0a, 0x3a, 0xbd, 0x7b, 0xd6, 0x5c, 0x98, 0xea, 0xde, 0xe0, 0x55, - 0x7d, 0xed, 0x67, 0x7f, 0xff, 0xf7, 0x6f, 0xfa, 0x56, 0x69, 0x1e, 0xff, 0x9f, 0x40, 0x0a, 0x5d, - 0x57, 0xc8, 0x36, 0x02, 0x67, 0x89, 0x7c, 0x06, 0xc3, 0xee, 0x8c, 0x95, 0x88, 0x99, 0x77, 0x68, - 0xfa, 0x5b, 0x20, 0xa1, 0x55, 0xae, 0x65, 0x15, 0xb5, 0x50, 0xb2, 0x18, 0xd0, 0xe2, 0xd2, 0xac, - 0x7f, 0xe9, 0xd6, 0x91, 0xaf, 0xc8, 0x13, 0xc8, 0x28, 0xd3, 0x67, 0x69, 0x4e, 0xf7, 0x00, 0x5b, - 0x9a, 0x13, 0x1e, 0x54, 0xd3, 0x5b, 0xa8, 0xe8, 0x65, 0xb2, 0x1c, 0x50, 0xa4, 0x90, 0xa9, 0xba, - 0x4e, 0x60, 0x44, 0x9d, 0x17, 0x93, 0x7c, 0x00, 0xb9, 0x52, 0xea, 0x0a, 0xd3, 0x11, 0x3b, 0x5c, - 0xdd, 0x12, 0xaa, 0x9b, 0x25, 0x33, 0x91, 0x76, 0xa1, 0xd0, 0x53, 0x37, 0x3e, 0xe2, 0x0f, 0xb7, - 0x6a, 0x7c, 0xd4, 0x59, 0x6c, 0x20, 0x3e, 0xfe, 0xd8, 0x95, 0x5e, 0x47, 0x0d, 0x4b, 0x91, 0xf1, - 0x41, 0xb2, 0x0d, 0x31, 0x7d, 0x25, 0xc7, 0x90, 0xf6, 0x86, 0xc2, 0x64, 0xca, 0xc5, 0x1b, 0x98, - 0x29, 0x17, 0x26, 0xc2, 0xcb, 0x5c, 0xc3, 0x0d, 0xd4, 0xb0, 0x4c, 0x96, 0xc2, 0x36, 0x08, 0x22, - 0xd5, 0x61, 0x22, 0xf8, 0xc2, 0x90, 0xc9, 0x80, 0xac, 0xae, 0xe0, 0x2b, 0x26, 0xc4, 0x06, 0x1f, - 0x69, 0xd6, 0xbf, 0x74, 0x87, 0x7d, 0x5f, 0x11, 0x1b, 0xb2, 0xc1, 0x19, 0x30, 0x29, 0xa0, 0xbc, - 0xc8, 0xb1, 0x72, 0x21, 0x1f, 0xb9, 0xa7, 0x9c, 0x02, 0x3a, 0x1b, 0xd0, 0x18, 0xa4, 0xdc, 0x90, - 0x83, 0x67, 0xf2, 0x29, 0x80, 0x3f, 0x57, 0x25, 0x5e, 0xa4, 0x83, 0xd3, 0xa0, 0xc2, 0x64, 0xd7, - 0x3a, 0x57, 0x74, 0x15, 0x15, 0xcd, 0x90, 0x2b, 0x61, 0xd3, 0x5c, 0x71, 0xcf, 0x61, 0xbc, 0x6b, - 0x3a, 0x4a, 0xe6, 0x51, 0x56, 0xdc, 0x48, 0xb6, 0x30, 0x1b, 0xb7, 0xad, 0x44, 0xab, 0xb0, 0x10, - 0xd0, 0xd8, 0x45, 0xbc, 0xa1, 0xdd, 0x24, 0xcf, 0x94, 0xc1, 0xb4, 0x37, 0xe9, 0x9c, 0x0f, 0xda, - 0x11, 0x1a, 0xcb, 0x4a, 0xdd, 0xd1, 0xd3, 0x47, 0x7a, 0x0d, 0x75, 0x2f, 0x92, 0x85, 0x68, 0x6b, - 0x3d, 0x1d, 0x2d, 0xfc, 0xfb, 0x84, 0x32, 0x94, 0x93, 0x61, 0x8c, 0x1c, 0x3c, 0x16, 0xf2, 0x91, - 0x7b, 0x8a, 0xbe, 0x50, 0x18, 0x83, 0x94, 0xdc, 0xd0, 0xaf, 0x35, 0xf1, 0x56, 0x0d, 0x8f, 0xce, - 0xc8, 0xa2, 0x27, 0x3a, 0x66, 0xc8, 0x57, 0x58, 0x48, 0xa0, 0xe0, 0x10, 0xde, 0x40, 0x08, 0xaf, - 0xd0, 0x5b, 0x31, 0xc9, 0x11, 0xc5, 0xc9, 0x21, 0x7d, 0x86, 0x87, 0xca, 0xfd, 0x9f, 0x1c, 0xef, - 0x50, 0x05, 0x67, 0x71, 0xfe, 0xa1, 0x52, 0xe7, 0x65, 0x94, 0xa2, 0xce, 0x39, 0xda, 0x75, 0xa8, - 0x24, 0x15, 0x97, 0xff, 0x6b, 0x0d, 0xae, 0xc4, 0xbc, 0x19, 0xc9, 0xb2, 0xe8, 0xbb, 0x89, 0xcf, - 0xc2, 0xc2, 0x52, 0x32, 0x11, 0xc7, 0xb1, 0x8e, 0x38, 0x6e, 0xd0, 0x95, 0x00, 0x8e, 0x18, 0x16, - 0x0e, 0xea, 0xf7, 0x1a, 0x5c, 0xd9, 0x49, 0x04, 0xb5, 0xd3, 0x0b, 0xa8, 0xa4, 0x37, 0x29, 0x7d, - 0x13, 0x41, 0xbd, 0x4a, 0xd6, 0xe3, 0xcf, 0x84, 0xcf, 0xb2, 0xfe, 0xa5, 0x7b, 0xcf, 0xfc, 0x8a, - 0x7c, 0xab, 0x41, 0x21, 0xfe, 0x19, 0x46, 0xae, 0x25, 0xa8, 0x56, 0x3b, 0xc1, 0xca, 0x85, 0x74, - 0x1c, 0xe5, 0x06, 0xa2, 0x7c, 0x8d, 0x14, 0x7b, 0x40, 0xc9, 0xb9, 0xd4, 0x22, 0xfb, 0x8d, 0x06, - 0x85, 0xf8, 0x97, 0x87, 0x04, 0x7a, 0xe1, 0x43, 0x4c, 0x02, 0xbd, 0xe0, 0x09, 0x43, 0x8b, 0x08, - 0xf4, 0x36, 0xbd, 0x1e, 0x8e, 0x71, 0x0c, 0x17, 0x0f, 0xb3, 0xf4, 0x64, 0x32, 0xc0, 0x9d, 0x1e, - 0x01, 0x5e, 0xf0, 0xca, 0x89, 0xf7, 0x64, 0x0c, 0x97, 0x1a, 0xf2, 0x3f, 0x68, 0x30, 0x9f, 0x78, - 0x73, 0x27, 0x37, 0x92, 0x31, 0xa8, 0x81, 0xbf, 0xde, 0x0b, 0x29, 0x47, 0xfc, 0x0e, 0x22, 0x7e, - 0x93, 0xbc, 0xde, 0x1b, 0xe2, 0x70, 0xf8, 0x3f, 0x81, 0xb4, 0x37, 0xfd, 0x94, 0x7d, 0x3c, 0x3c, - 0x78, 0x95, 0x7d, 0x3c, 0x34, 0x24, 0x95, 0x77, 0x11, 0x3a, 0x1d, 0x0c, 0xa5, 0x4b, 0xc4, 0x23, - 0x27, 0x65, 0xe3, 0x6c, 0x4d, 0x91, 0xad, 0xce, 0xf7, 0x14, 0xd9, 0xca, 0x8c, 0x33, 0x5e, 0x36, - 0x12, 0x71, 0xd9, 0xcf, 0x61, 0xbc, 0x6b, 0x64, 0x2e, 0xbb, 0x4d, 0xdc, 0xfc, 0x5e, 0x76, 0x9b, - 0x98, 0x49, 0xbb, 0xec, 0x74, 0x74, 0x21, 0xd4, 0xc4, 0x43, 0xc4, 0x5c, 0xb7, 0x25, 0xfe, 0x07, - 0x41, 0x19, 0xb4, 0x12, 0xaf, 0x91, 0x45, 0x0c, 0x66, 0x0b, 0x33, 0xd1, 0x9b, 0x5c, 0xeb, 0x0a, - 0x6a, 0x5d, 0x20, 0x73, 0x5d, 0x99, 0xab, 0x4a, 0xff, 0x5c, 0x74, 0x38, 0x7f, 0xb6, 0xaa, 0x74, - 0xb8, 0xae, 0x41, 0xad, 0xd2, 0xe1, 0x42, 0xc3, 0x58, 0xba, 0x8c, 0xda, 0xe6, 0xc9, 0x6c, 0xa4, - 0x36, 0x29, 0xfa, 0x5b, 0x0d, 0xe6, 0x92, 0x1e, 0x46, 0x64, 0x15, 0xe5, 0xf7, 0xf0, 0x32, 0x2c, - 0x5c, 0xeb, 0x81, 0x92, 0xe3, 0x7a, 0x0d, 0x71, 0xad, 0xd1, 0x1b, 0x01, 0x5c, 0x49, 0x7c, 0x1b, - 0xda, 0xcd, 0x62, 0x05, 0xc0, 0xdf, 0x22, 0xef, 0xff, 0x30, 0xb7, 0x80, 0xa2, 0x09, 0xa3, 0x81, - 0xcc, 0x21, 0x1f, 0xfd, 0x58, 0xdd, 0xfe, 0x78, 0x10, 0xff, 0x87, 0xfa, 0xee, 0x7f, 0x03, 0x00, - 0x00, 0xff, 0xff, 0xe4, 0x21, 0xae, 0x36, 0x73, 0x2d, 0x00, 0x00, -======= - // 3069 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x3a, 0xcb, 0x6f, 0x1b, 0xc7, - 0xf9, 0x59, 0x51, 0x2f, 0x7e, 0x94, 0x28, 0x7a, 0xf4, 0xa2, 0x28, 0x4b, 0x96, 0xc6, 0x8a, 0xed, - 0xf8, 0x21, 0x25, 0x74, 0x5e, 0x56, 0x9c, 0x5f, 0x60, 0x4b, 0x8a, 0x7e, 0x44, 0x24, 0x4a, 0x58, - 0xd1, 0x55, 0x1e, 0x40, 0x88, 0x95, 0x38, 0xa2, 0xd7, 0x21, 0xb9, 0x5b, 0xee, 0xca, 0x8e, 0x1c, - 0xe4, 0xd2, 0x4b, 0x7b, 0x29, 0x90, 0xb6, 0xe8, 0xa5, 0x87, 0x1c, 0xfb, 0x07, 0x14, 0x08, 0x7a, - 0xeb, 0xa5, 0xa7, 0x1e, 0x7a, 0x2a, 0x0a, 0x14, 0x3d, 0xf7, 0xd6, 0xfe, 0x11, 0xc5, 0x7c, 0x33, - 0xbb, 0x3b, 0xbb, 0xdc, 0x5d, 0x32, 0x76, 0xd2, 0xdb, 0xce, 0xcc, 0xf7, 0x7e, 0xce, 0x7c, 0x24, - 0x64, 0x0d, 0xdb, 0x5c, 0xb7, 0xbb, 0x96, 0x6b, 0x91, 0x8c, 0x61, 0x9b, 0xa5, 0xcb, 0x4d, 0xcb, - 0x6a, 0xb6, 0xd8, 0x86, 0x61, 0x9b, 0x1b, 0x46, 0xa7, 0x63, 0xb9, 0x86, 0x6b, 0x5a, 0x1d, 0x47, - 0x80, 0xd0, 0xcf, 0x60, 0xf2, 0x43, 0x66, 0x38, 0xe6, 0x49, 0x8b, 0x1d, 0xd9, 0xc6, 0x29, 0x23, - 0x05, 0xc8, 0xb4, 0x8d, 0x2f, 0x8b, 0xda, 0x8a, 0x76, 0x23, 0xab, 0xf3, 0x4f, 0xdc, 0x31, 0x3b, - 0xc5, 0x21, 0xb9, 0x63, 0x76, 0x08, 0x81, 0xe1, 0x96, 0xe9, 0xb8, 0xc5, 0xcc, 0x4a, 0xe6, 0x46, - 0x56, 0xc7, 0x6f, 0xbe, 0xe7, 0xb8, 0xcc, 0x2e, 0x0e, 0x23, 0x18, 0x7e, 0xd3, 0x6f, 0x34, 0x98, - 0x3a, 0x34, 0xba, 0x46, 0x9b, 0xb9, 0xac, 0xbb, 0x65, 0x75, 0xce, 0xcc, 0x26, 0x87, 0xeb, 0x18, - 0x6d, 0x26, 0x19, 0xe0, 0x37, 0xb9, 0x07, 0x79, 0xdb, 0x03, 0xab, 0xbb, 0x17, 0x36, 0x43, 0x66, - 0xf9, 0x32, 0x59, 0xe7, 0xba, 0xf8, 0x14, 0x6a, 0x17, 0x36, 0xd3, 0x27, 0x6d, 0x75, 0x49, 0xd6, - 0x61, 0xfc, 0x4c, 0xca, 0x5f, 0xcc, 0xac, 0x68, 0x37, 0x72, 0x12, 0x29, 0xa4, 0x94, 0xee, 0xc3, - 0x50, 0x1b, 0xb2, 0x3e, 0xbd, 0x1f, 0x5a, 0x96, 0x19, 0x18, 0x79, 0x6a, 0xb4, 0xce, 0x85, 0x20, - 0x59, 0x5d, 0x2c, 0xe8, 0xaf, 0x34, 0x98, 0xdc, 0x67, 0x6e, 0xd7, 0x3c, 0x75, 0xf6, 0xac, 0xe6, - 0x11, 0x73, 0xc9, 0x22, 0x64, 0x9f, 0x59, 0xdd, 0x2f, 0x58, 0xb7, 0x6e, 0x36, 0x24, 0xef, 0x71, - 0xb1, 0x51, 0x69, 0x90, 0x32, 0x4c, 0xb4, 0x05, 0x74, 0xbd, 0x65, 0x35, 0x9d, 0xe2, 0xd0, 0x4a, - 0xe6, 0x46, 0xae, 0x3c, 0x85, 0xdc, 0x03, 0x32, 0x7a, 0xae, 0xed, 0x7f, 0x3b, 0x64, 0x03, 0x26, - 0x25, 0x41, 0xc7, 0x35, 0xdc, 0x73, 0x07, 0x05, 0xc8, 0x97, 0x01, 0x91, 0x8e, 0x5c, 0xc3, 0x65, - 0xfa, 0x84, 0x00, 0x38, 0xc2, 0x73, 0x7a, 0x17, 0xc6, 0x24, 0xad, 0x58, 0x1b, 0xf8, 0x8a, 0x0c, - 0xa9, 0x8a, 0xdc, 0x87, 0x82, 0x44, 0xfa, 0x09, 0x5f, 0xd7, 0xcc, 0x36, 0xe3, 0xd8, 0xae, 0x19, - 0x60, 0xf3, 0xef, 0x04, 0xec, 0x03, 0x80, 0x40, 0xfc, 0x58, 0xae, 0x77, 0x60, 0x14, 0x41, 0x3d, - 0x9d, 0x67, 0x55, 0x9d, 0x7d, 0x96, 0xba, 0x04, 0xa2, 0x1f, 0xc0, 0xf4, 0xd1, 0x79, 0xb3, 0xc9, - 0x1c, 0x1e, 0xce, 0xe9, 0x3e, 0x8d, 0x97, 0xe8, 0x21, 0xcc, 0xed, 0x18, 0xdd, 0xd6, 0xc5, 0x91, - 0x6b, 0xd9, 0xb6, 0xd9, 0x69, 0xbe, 0x08, 0x8d, 0x0d, 0xc8, 0xd4, 0x8c, 0xe6, 0xf7, 0x40, 0xf8, - 0x02, 0x26, 0x8f, 0xdc, 0xf3, 0xc6, 0xc5, 0xc1, 0x53, 0xd6, 0x7d, 0x6a, 0xb2, 0x67, 0x49, 0xa8, - 0xd6, 0xb3, 0x0e, 0xeb, 0x7a, 0xa8, 0xb8, 0x20, 0x79, 0x18, 0x32, 0x1b, 0x32, 0xb6, 0x86, 0xcc, - 0x06, 0x59, 0x81, 0x5c, 0x83, 0x39, 0xa7, 0x5d, 0xd3, 0xe6, 0x16, 0x90, 0x89, 0xa7, 0x6e, 0xd1, - 0x7f, 0x6a, 0x30, 0x52, 0xeb, 0x9a, 0x46, 0x8b, 0x2c, 0xc0, 0xb8, 0xcb, 0x3f, 0x82, 0x88, 0x1b, - 0xc3, 0x75, 0xa5, 0xc1, 0x8f, 0x1c, 0x2e, 0x11, 0x3f, 0x12, 0xfc, 0xc6, 0x70, 0x5d, 0x69, 0x90, - 0xbb, 0x10, 0x44, 0x78, 0xdd, 0x61, 0x22, 0xe1, 0x73, 0xe5, 0x7c, 0x38, 0x15, 0xf4, 0x09, 0x1f, - 0x88, 0x47, 0xf7, 0x75, 0x98, 0xb2, 0x4e, 0x9e, 0xb0, 0x53, 0xd7, 0x7c, 0xca, 0xea, 0xc2, 0x02, - 0x42, 0xb4, 0xbc, 0xbf, 0x8d, 0xce, 0x24, 0x97, 0x61, 0xd8, 0x35, 0x9a, 0x4e, 0x71, 0x04, 0x89, - 0x8e, 0x23, 0xd1, 0x9a, 0xd1, 0xd4, 0x71, 0x97, 0x5c, 0x81, 0xdc, 0x69, 0x97, 0x19, 0x2e, 0xab, - 0x63, 0x80, 0x8d, 0x22, 0x09, 0x10, 0x5b, 0x3c, 0x0e, 0xe8, 0xdf, 0x35, 0x18, 0x3d, 0xc6, 0xa0, - 0x4e, 0x4f, 0xa8, 0x14, 0xfd, 0x54, 0xab, 0x64, 0xc2, 0x56, 0x21, 0x30, 0xcc, 0x73, 0xda, 0x2b, - 0x67, 0x98, 0xdf, 0x14, 0x46, 0x65, 0x7e, 0x8d, 0xf4, 0xe4, 0x97, 0x3c, 0x21, 0x14, 0x26, 0x6a, - 0xac, 0x6d, 0xb7, 0x0c, 0x97, 0x1d, 0x1a, 0xee, 0x63, 0x29, 0x77, 0x68, 0xcf, 0x57, 0x7c, 0x2c, - 0x4e, 0x71, 0xfa, 0x47, 0x0d, 0xb2, 0x55, 0xc3, 0x91, 0xe5, 0xf2, 0x2e, 0x4c, 0x34, 0xbb, 0x86, - 0xfd, 0xb8, 0x7e, 0x8a, 0x6b, 0xd4, 0x2e, 0x57, 0x2e, 0x20, 0xce, 0x2e, 0x3f, 0x10, 0x70, 0x7a, - 0xae, 0x19, 0x2c, 0xc8, 0x3d, 0x00, 0xcb, 0x66, 0x5d, 0x51, 0xe8, 0x51, 0xe9, 0x5c, 0x79, 0x01, - 0x51, 0x7c, 0xc2, 0xeb, 0x07, 0x3e, 0x80, 0xae, 0x00, 0x97, 0x36, 0x01, 0x82, 0x13, 0x72, 0x1b, - 0xb2, 0xfe, 0x59, 0x51, 0x53, 0x9c, 0xef, 0xc3, 0xe8, 0x01, 0x00, 0x6d, 0x41, 0x4e, 0x11, 0x89, - 0x2c, 0x01, 0x74, 0xce, 0xdb, 0xf5, 0x96, 0x71, 0xc1, 0xba, 0x0e, 0x0a, 0x3e, 0xa2, 0x67, 0x3b, - 0xe7, 0xed, 0x3d, 0xdc, 0xe0, 0xc7, 0x66, 0xc7, 0x3e, 0x77, 0xeb, 0x8e, 0xf9, 0x9c, 0x61, 0xca, - 0x8f, 0xe8, 0x59, 0xdc, 0x39, 0x32, 0x9f, 0x33, 0xee, 0x7f, 0xeb, 0xdc, 0xf5, 0xcf, 0x33, 0x78, - 0x0e, 0x62, 0x8b, 0x03, 0xd0, 0x3f, 0x6b, 0x90, 0xf5, 0xc5, 0x20, 0x6b, 0x30, 0xe9, 0x0b, 0x82, - 0x8e, 0x13, 0x61, 0x10, 0xde, 0x24, 0x7b, 0x70, 0x29, 0x08, 0x68, 0x61, 0x51, 0xcf, 0x3e, 0x57, - 0xc2, 0x7a, 0xad, 0x47, 0xfa, 0x96, 0xa3, 0x17, 0xec, 0xc8, 0x4e, 0xe9, 0x21, 0x14, 0xa2, 0x50, - 0x64, 0x1d, 0xc6, 0x3c, 0xba, 0xc2, 0x5e, 0x33, 0xe1, 0x64, 0x91, 0xee, 0xf2, 0x80, 0xe8, 0x77, - 0xc3, 0x90, 0xc3, 0x82, 0x90, 0xd2, 0x1e, 0xe3, 0xcb, 0xc1, 0x43, 0xb8, 0x64, 0xd9, 0xae, 0xd9, - 0x36, 0x9f, 0xa3, 0xc0, 0xa2, 0x57, 0x89, 0xc2, 0x3f, 0x2b, 0x75, 0x09, 0x4e, 0xb1, 0x5d, 0x15, - 0xac, 0xc8, 0x0e, 0xb9, 0x15, 0xa1, 0xd1, 0xb4, 0x8c, 0x16, 0x86, 0xbc, 0x16, 0x06, 0xde, 0xb5, - 0x8c, 0x16, 0xa9, 0xc6, 0x19, 0x6f, 0x04, 0x8d, 0xb7, 0x2a, 0x33, 0xc1, 0xd7, 0x63, 0x00, 0xf3, - 0x91, 0x3b, 0x40, 0x8c, 0xd3, 0x53, 0xe6, 0x38, 0x75, 0x9b, 0x75, 0xdb, 0xa6, 0xe3, 0x60, 0xb4, - 0x8e, 0xe2, 0x9d, 0xe2, 0x92, 0x38, 0x39, 0x0c, 0x0e, 0xd2, 0xb3, 0x86, 0xbc, 0x0e, 0x33, 0x91, - 0xaa, 0x53, 0x47, 0x3b, 0x8e, 0xa3, 0xc9, 0x48, 0xb8, 0xf4, 0x54, 0xb9, 0x55, 0x8b, 0x30, 0x26, - 0x7b, 0x68, 0x31, 0x8b, 0x3c, 0xbd, 0x25, 0xb7, 0xf7, 0x13, 0xeb, 0xa4, 0xd2, 0x28, 0x82, 0xb0, - 0x37, 0x2e, 0xc8, 0x1d, 0x80, 0x8e, 0xe1, 0x78, 0x79, 0x98, 0x43, 0xbd, 0xf3, 0xe1, 0xa4, 0xd2, - 0xb3, 0x1d, 0x3f, 0x71, 0x17, 0x60, 0xfc, 0x89, 0x75, 0x22, 0xbc, 0x32, 0x21, 0x6a, 0xcb, 0x13, - 0xeb, 0x84, 0x5b, 0xfd, 0x07, 0x89, 0x9b, 0x0a, 0x90, 0x2d, 0xac, 0x85, 0x68, 0x74, 0x9d, 0xfd, - 0xf4, 0x9c, 0x39, 0x2e, 0xaf, 0x16, 0xa2, 0xd6, 0xc5, 0x54, 0x0b, 0xc5, 0x3b, 0x7a, 0xce, 0x09, - 0x16, 0xf4, 0x0e, 0x14, 0x42, 0xa4, 0xec, 0xd6, 0x45, 0xa8, 0x68, 0x6a, 0xa1, 0xa2, 0x49, 0x37, - 0x80, 0x6c, 0xb3, 0x16, 0x8b, 0x70, 0x4e, 0x41, 0xb8, 0x03, 0x85, 0x10, 0x42, 0x1f, 0xfa, 0xb7, - 0x61, 0x6a, 0x97, 0xb9, 0x83, 0x12, 0xdf, 0x86, 0xc9, 0x00, 0x9a, 0x53, 0x7e, 0x21, 0x13, 0xcc, - 0xc2, 0xb4, 0x47, 0x65, 0xcf, 0x74, 0x5c, 0xc9, 0x97, 0x1e, 0xc2, 0xa5, 0xf0, 0x36, 0x67, 0xf0, - 0x1e, 0x4c, 0x09, 0x06, 0x96, 0x6c, 0xe1, 0x9e, 0xc7, 0x48, 0xc0, 0xc3, 0xeb, 0xee, 0x7a, 0xde, - 0x51, 0x97, 0x0e, 0x7d, 0xdb, 0x73, 0x1b, 0xb6, 0x65, 0x4f, 0xbf, 0x15, 0x18, 0xc1, 0xbe, 0x23, - 0x85, 0x15, 0x7d, 0x45, 0x40, 0x88, 0x83, 0xc0, 0x47, 0x12, 0x4f, 0xda, 0x30, 0xa1, 0xa7, 0x73, - 0xf0, 0x5d, 0xe6, 0x22, 0xac, 0x33, 0x80, 0x11, 0xdf, 0x84, 0xbc, 0x02, 0xce, 0x69, 0x53, 0x18, - 0x45, 0x5a, 0x9e, 0x6e, 0xaa, 0x48, 0xf2, 0x44, 0x3a, 0x2a, 0xa4, 0x48, 0x8a, 0x48, 0x6f, 0xa0, - 0xa3, 0x14, 0xf1, 0xfb, 0x2b, 0x7d, 0x1f, 0x66, 0x75, 0xd6, 0x34, 0x1d, 0x97, 0x75, 0x45, 0xa3, - 0xf7, 0xd8, 0x5c, 0x85, 0x51, 0xd1, 0xde, 0x25, 0x6e, 0x0e, 0x71, 0x25, 0x8c, 0x3c, 0xa2, 0x65, - 0x98, 0x8e, 0x62, 0x73, 0xb6, 0x69, 0x77, 0x05, 0x6a, 0x01, 0xe1, 0xb7, 0x41, 0x01, 0x3f, 0x80, - 0xe5, 0x78, 0x13, 0xf3, 0xa9, 0x89, 0x7b, 0x6b, 0x56, 0xcf, 0x7a, 0xe4, 0xf0, 0x12, 0x63, 0xf2, - 0x92, 0xd1, 0xb6, 0x79, 0xfc, 0x63, 0x75, 0x1e, 0xd7, 0xc1, 0x74, 0xb6, 0xe4, 0x0e, 0x25, 0x50, - 0x08, 0x31, 0xb4, 0x5b, 0x17, 0xf4, 0x0c, 0xa3, 0x6e, 0x70, 0x19, 0x54, 0xa3, 0x0f, 0x85, 0x6f, - 0x31, 0x21, 0x65, 0x33, 0x11, 0x65, 0xdf, 0x45, 0xff, 0xa9, 0xac, 0xc9, 0xab, 0x30, 0x26, 0x8e, - 0x3d, 0xbf, 0x87, 0x2c, 0xeb, 0x9d, 0xd1, 0xcf, 0xa0, 0xf8, 0xc8, 0x6e, 0x18, 0x2e, 0x3b, 0xf6, - 0x1f, 0x15, 0xcc, 0x13, 0x34, 0xf5, 0x2e, 0x16, 0xdc, 0xa0, 0x86, 0x92, 0x6e, 0x50, 0xb4, 0x08, - 0x73, 0x31, 0xc4, 0xb9, 0x61, 0x7e, 0xab, 0x41, 0xd1, 0x97, 0xf8, 0xc3, 0xf3, 0x56, 0xab, 0xd2, - 0x39, 0xb3, 0x7e, 0x3c, 0x03, 0x91, 0x6b, 0x30, 0x65, 0x75, 0x5a, 0x17, 0x75, 0x7e, 0x71, 0x73, - 0x5c, 0xfe, 0x1c, 0xc3, 0xde, 0x38, 0xae, 0x4f, 0xf2, 0xed, 0x3d, 0xdc, 0xdd, 0xb3, 0x9a, 0xf4, - 0x5b, 0x0d, 0xf2, 0x61, 0xa1, 0x78, 0x84, 0x1e, 0x27, 0x47, 0xa8, 0xbc, 0xb6, 0xf6, 0x5c, 0xaf, - 0x87, 0x06, 0xb8, 0x5e, 0x47, 0xdf, 0x87, 0x99, 0xfe, 0xef, 0x43, 0xfa, 0x09, 0xcc, 0xc5, 0xd8, - 0x8d, 0x3b, 0xfc, 0x03, 0xb8, 0x24, 0xf5, 0x3f, 0x3b, 0x6f, 0xb5, 0xea, 0x66, 0xe7, 0xcc, 0xf2, - 0x5c, 0x3f, 0xad, 0x88, 0xec, 0x23, 0x4d, 0x3d, 0x0b, 0xad, 0x1d, 0xfa, 0x57, 0x0d, 0x66, 0x79, - 0x8d, 0xf4, 0x5f, 0x62, 0x83, 0x44, 0xec, 0x1b, 0x30, 0xe3, 0xf8, 0x08, 0x75, 0xa3, 0xd5, 0xb4, - 0xba, 0xa6, 0xfb, 0xb8, 0x2d, 0x9d, 0x33, 0x1d, 0x9c, 0x3d, 0xf0, 0x8e, 0xc8, 0xab, 0x90, 0xef, - 0x0a, 0xc2, 0xf5, 0xce, 0x79, 0xfb, 0x84, 0x75, 0xd1, 0x5b, 0x23, 0xfa, 0xa4, 0xdc, 0xad, 0xe2, - 0x26, 0x59, 0x83, 0x7c, 0xcb, 0x6a, 0xd6, 0x95, 0x9c, 0x1c, 0xc6, 0x9c, 0x9c, 0x68, 0x59, 0xcd, - 0x63, 0x3f, 0x2d, 0x17, 0x60, 0x1c, 0x6d, 0xca, 0x45, 0x1b, 0x11, 0xa2, 0xe1, 0xba, 0xd2, 0xa0, - 0xf7, 0x44, 0x27, 0x50, 0xd5, 0x19, 0xb4, 0x1e, 0xfe, 0x52, 0x83, 0x45, 0x8e, 0xfb, 0xd8, 0x3a, - 0x6f, 0x35, 0xbe, 0x5f, 0x19, 0x79, 0x17, 0x8a, 0x8c, 0x3f, 0x45, 0xeb, 0x8e, 0x7c, 0x8b, 0xf6, - 0x18, 0x65, 0x8e, 0xa9, 0x4f, 0xd5, 0xc0, 0x2e, 0x29, 0xaa, 0x1c, 0xc2, 0x42, 0xbc, 0x38, 0xa2, - 0x4d, 0xce, 0x39, 0x78, 0x82, 0x2c, 0x55, 0x83, 0x69, 0x68, 0xb0, 0x69, 0x27, 0x82, 0x57, 0x69, - 0x38, 0xb4, 0x8b, 0x95, 0x49, 0x46, 0xd9, 0xcb, 0x57, 0xc7, 0xab, 0x30, 0xe9, 0x85, 0x32, 0xbf, - 0xab, 0x39, 0x72, 0x9e, 0xe4, 0xc5, 0x37, 0xbf, 0xa5, 0x39, 0xf4, 0x00, 0xab, 0x94, 0xcf, 0x93, - 0xcb, 0x7e, 0x1f, 0x0a, 0x4a, 0x0a, 0xf0, 0xcc, 0x09, 0xb7, 0xe0, 0xd0, 0xb4, 0x45, 0xcf, 0xb7, - 0xd5, 0xa5, 0x43, 0x1d, 0x28, 0xea, 0xcc, 0xb6, 0xba, 0x6e, 0x00, 0x36, 0x88, 0x2e, 0x71, 0x4c, - 0x33, 0x03, 0x33, 0x2d, 0xc2, 0x5c, 0x0c, 0x53, 0x5e, 0xd4, 0xfe, 0xa4, 0x41, 0x76, 0xdf, 0x6a, - 0x30, 0x51, 0x37, 0x96, 0x00, 0x84, 0x00, 0xca, 0x23, 0x20, 0x8b, 0x3b, 0x78, 0x67, 0x0d, 0x95, - 0xab, 0xa1, 0x48, 0xb9, 0x5a, 0x07, 0xf0, 0x2b, 0x85, 0x93, 0xf0, 0x54, 0x57, 0x20, 0xc8, 0xb5, - 0xe0, 0x02, 0x3c, 0x8c, 0xc0, 0x13, 0xaa, 0x22, 0xc1, 0x75, 0x78, 0x09, 0xa0, 0xcd, 0x05, 0xac, - 0xdb, 0xfc, 0x41, 0x2b, 0x82, 0x2c, 0x8b, 0x3b, 0xfc, 0x35, 0x4b, 0xdf, 0x82, 0xdc, 0xb6, 0xe1, - 0x1a, 0x47, 0xcc, 0x45, 0x0d, 0xe2, 0x1e, 0x30, 0x04, 0x86, 0x11, 0x57, 0x48, 0x8c, 0xdf, 0xd4, - 0x84, 0xc2, 0x91, 0xf1, 0x34, 0x7c, 0x89, 0xec, 0xa3, 0x7d, 0xfc, 0x3b, 0x28, 0x32, 0x06, 0xc9, - 0xf4, 0x8e, 0x41, 0x0a, 0x90, 0x57, 0x58, 0x71, 0xa3, 0xff, 0x42, 0x13, 0xdc, 0xd1, 0xf0, 0x1e, - 0xf7, 0x35, 0x18, 0x41, 0xad, 0x64, 0xc9, 0x16, 0xa6, 0xf3, 0x5d, 0xa3, 0x8b, 0x43, 0x72, 0x0b, - 0xc6, 0x1b, 0x86, 0x6b, 0xc8, 0x7a, 0x1d, 0xdc, 0x2d, 0x15, 0x1b, 0xe8, 0x63, 0x0d, 0xb1, 0x20, - 0xab, 0x30, 0xe1, 0xb2, 0x8e, 0x63, 0x75, 0xeb, 0x27, 0x96, 0xd1, 0x6d, 0xc8, 0x0b, 0x40, 0x4e, - 0xec, 0x3d, 0xe4, 0x5b, 0x9e, 0x70, 0x52, 0x12, 0x2e, 0x5c, 0x11, 0xab, 0x35, 0xdf, 0x6c, 0x70, - 0x91, 0x4d, 0xe6, 0x85, 0x27, 0xdd, 0x86, 0x99, 0x9e, 0x13, 0x9e, 0x10, 0xb7, 0x01, 0xc3, 0xd4, - 0x64, 0x69, 0x57, 0x51, 0x0f, 0x84, 0xbe, 0x2d, 0x2a, 0x36, 0xa7, 0x82, 0x5c, 0x9d, 0xc1, 0xcc, - 0x4f, 0xdf, 0x17, 0xa5, 0x51, 0xc5, 0xe3, 0xcc, 0xaf, 0xc1, 0x28, 0x5a, 0xc6, 0x09, 0x0d, 0x08, - 0x02, 0xbb, 0xc9, 0x53, 0xaa, 0x07, 0xc2, 0x87, 0xcc, 0xfe, 0x12, 0x21, 0x4f, 0x37, 0x81, 0x44, - 0x68, 0x72, 0x89, 0x06, 0x72, 0x24, 0xfd, 0x87, 0x06, 0xcb, 0x47, 0x6a, 0xa9, 0xf7, 0xb3, 0xe4, - 0x47, 0x6a, 0x61, 0x6a, 0xa9, 0xce, 0x84, 0x4a, 0x35, 0xd9, 0x87, 0x59, 0x85, 0x9a, 0x92, 0xc5, - 0x22, 0x31, 0x8b, 0xc2, 0x9d, 0xbd, 0x92, 0xea, 0x8a, 0x10, 0x81, 0xf8, 0xf4, 0x1e, 0x5c, 0x4e, - 0xd4, 0x4c, 0xbe, 0x1c, 0x7c, 0x49, 0xb4, 0x70, 0xd3, 0x78, 0x0f, 0x96, 0x77, 0xfb, 0x1a, 0x25, - 0x09, 0xb9, 0x0d, 0x97, 0x77, 0xd3, 0xf8, 0x26, 0xaa, 0xa9, 0xbd, 0x90, 0x9a, 0xff, 0x07, 0xab, - 0xf1, 0xec, 0x94, 0x37, 0x5c, 0xda, 0xb3, 0xe7, 0x3b, 0x0d, 0xe6, 0x62, 0xb0, 0x79, 0xe2, 0x26, - 0x2b, 0xf9, 0x22, 0x9e, 0x4f, 0xd4, 0x3b, 0xf3, 0x42, 0x7a, 0x3f, 0x87, 0x2b, 0x69, 0x7a, 0x73, - 0x4b, 0x1f, 0xc3, 0x42, 0x1c, 0x47, 0xb5, 0x57, 0x2e, 0x26, 0x71, 0xe5, 0xfd, 0x6b, 0xde, 0x89, - 0xdd, 0x77, 0x68, 0x19, 0x66, 0xf9, 0x9d, 0x20, 0x40, 0x1b, 0xc0, 0xce, 0xb3, 0x30, 0x1d, 0xc5, - 0xe1, 0x75, 0xee, 0x3f, 0x1a, 0xac, 0x1e, 0x31, 0x37, 0x7e, 0x06, 0xff, 0xbf, 0xbb, 0x35, 0x45, - 0x52, 0xf1, 0x18, 0x16, 0x22, 0x44, 0x7b, 0xd2, 0x51, 0x58, 0x2e, 0x5e, 0x6e, 0x7d, 0x9e, 0xc5, - 0xeb, 0x43, 0xef, 0xc3, 0x95, 0x34, 0x6d, 0xfb, 0xe4, 0xa5, 0x88, 0xf5, 0xfe, 0xb6, 0x4a, 0xc2, - 0x17, 0x31, 0x93, 0xca, 0x3d, 0x55, 0x73, 0xed, 0x25, 0x34, 0x7f, 0x00, 0x6b, 0x89, 0xbc, 0x07, - 0x4c, 0xd5, 0xbf, 0x68, 0xb0, 0x10, 0x4f, 0xa0, 0x4f, 0xb6, 0xbe, 0x78, 0x8c, 0xa4, 0x9a, 0x23, - 0xf3, 0x12, 0xe6, 0xf8, 0xb9, 0x06, 0xb4, 0x8f, 0x3d, 0xb8, 0x3b, 0x0c, 0x58, 0x4a, 0xe2, 0xaf, - 0xa6, 0xf1, 0x72, 0x8a, 0x0c, 0x3c, 0x93, 0x4b, 0x2c, 0xe9, 0xc8, 0xb9, 0xf9, 0x08, 0x26, 0x43, - 0x3f, 0x68, 0x92, 0x02, 0x4c, 0x3c, 0xaa, 0x7e, 0x54, 0x3d, 0x38, 0xae, 0xd6, 0x6b, 0x9f, 0x1c, - 0xee, 0x14, 0x5e, 0x21, 0x00, 0xa3, 0xdb, 0x07, 0x8f, 0x1e, 0xee, 0xed, 0x14, 0x34, 0x32, 0x06, - 0x99, 0x4a, 0xb5, 0x56, 0x18, 0x22, 0x13, 0x30, 0xbe, 0x5d, 0x39, 0xda, 0xd2, 0x77, 0x6a, 0x3b, - 0x85, 0x0c, 0x99, 0x82, 0xdc, 0xd6, 0x83, 0xda, 0xce, 0xee, 0x81, 0x5e, 0xd9, 0x7a, 0xb0, 0x57, - 0x18, 0xbe, 0xf9, 0xff, 0x50, 0x88, 0xce, 0x9e, 0x49, 0x11, 0x66, 0x3c, 0xca, 0x07, 0x87, 0xb5, - 0xca, 0x7e, 0xe5, 0xd3, 0x07, 0xb5, 0xca, 0x41, 0xb5, 0xf0, 0x0a, 0x27, 0xb6, 0x5f, 0xa9, 0xf2, - 0x1d, 0xce, 0x83, 0xaf, 0x1e, 0x7c, 0x2c, 0x56, 0x43, 0x37, 0x77, 0x61, 0x04, 0xdf, 0xff, 0x24, - 0x07, 0x63, 0x87, 0x3b, 0xd5, 0xed, 0x4a, 0x75, 0xb7, 0xf0, 0x0a, 0x5f, 0xe8, 0x8f, 0xaa, 0x55, - 0xbe, 0xd0, 0xc8, 0x24, 0x64, 0xb7, 0x0e, 0xf6, 0x0f, 0xf7, 0x76, 0x6a, 0x3b, 0xdb, 0x85, 0x21, - 0x2e, 0xef, 0x47, 0x95, 0xbd, 0xbd, 0x9d, 0xed, 0x42, 0x86, 0x64, 0x61, 0x64, 0x47, 0xd7, 0x0f, - 0xf4, 0xc2, 0x97, 0xe5, 0x7f, 0xcf, 0xc3, 0xd8, 0xbe, 0xd1, 0x31, 0x9a, 0xac, 0x4b, 0xda, 0x90, - 0x53, 0xe6, 0x9d, 0x64, 0x1e, 0x0d, 0xd8, 0x3b, 0x4c, 0x2d, 0xcd, 0xf6, 0x1e, 0xf0, 0xb2, 0xb5, - 0xfe, 0xb3, 0xbf, 0xfd, 0xeb, 0x37, 0x43, 0x37, 0x68, 0x11, 0x7f, 0x51, 0x97, 0x44, 0x37, 0x14, - 0xb0, 0xcd, 0xd0, 0x00, 0x92, 0x7c, 0x0e, 0xe3, 0xde, 0x10, 0x91, 0x88, 0xa1, 0x6e, 0x64, 0xbc, - 0x59, 0x22, 0x91, 0x5d, 0xce, 0xe5, 0x06, 0x72, 0xa1, 0x64, 0x25, 0xc4, 0xc5, 0x83, 0xd9, 0xf8, - 0xca, 0x4b, 0x94, 0xaf, 0xc9, 0x13, 0xc8, 0x29, 0xe3, 0x55, 0xa9, 0x4e, 0xef, 0x84, 0x56, 0xaa, - 0x13, 0x9d, 0xc4, 0xd2, 0x5b, 0xc8, 0xe8, 0x55, 0x72, 0x35, 0xc4, 0x48, 0x01, 0x53, 0x79, 0x9d, - 0xc2, 0x84, 0x3a, 0x10, 0x25, 0xc5, 0x90, 0xe4, 0x4a, 0x2e, 0x97, 0xe6, 0x62, 0x4e, 0x38, 0xbb, - 0x55, 0x64, 0xb7, 0x48, 0x16, 0x62, 0xf5, 0x42, 0xa2, 0x67, 0x9e, 0x7f, 0xc4, 0x4f, 0x97, 0xaa, - 0x7f, 0xd4, 0x61, 0x63, 0xc8, 0x3f, 0xc1, 0x5c, 0x91, 0x5e, 0x47, 0x0e, 0xab, 0xb1, 0xfe, 0x41, - 0xb0, 0x4d, 0x31, 0x5e, 0x24, 0x27, 0x90, 0xf5, 0xa7, 0x9e, 0x64, 0xd6, 0x93, 0x37, 0x34, 0x34, - 0x2d, 0x4d, 0x47, 0xb7, 0x39, 0x87, 0xd7, 0x90, 0xc3, 0x55, 0xb2, 0x1a, 0xd5, 0x41, 0x00, 0xa9, - 0x06, 0x13, 0xce, 0x17, 0x8a, 0xcc, 0x84, 0x68, 0xf5, 0x38, 0x5f, 0x51, 0x21, 0xd1, 0xf9, 0x08, - 0xb3, 0xf1, 0x95, 0x37, 0xcd, 0xfa, 0x9a, 0x38, 0x90, 0x0f, 0x0f, 0x39, 0x49, 0x09, 0xe9, 0xc5, - 0xce, 0x4d, 0x4b, 0xc5, 0xd8, 0x33, 0x25, 0x0a, 0xe8, 0x62, 0x88, 0x63, 0x18, 0x72, 0x53, 0x4e, - 0x56, 0xc9, 0x67, 0x00, 0xc1, 0xe0, 0x90, 0xf8, 0x9e, 0x0e, 0x8f, 0x3b, 0x4a, 0x33, 0x3d, 0xfb, - 0x9c, 0xd1, 0x15, 0x64, 0xb4, 0x40, 0xe6, 0xa3, 0xaa, 0x79, 0xe4, 0x9e, 0xc3, 0xa5, 0x9e, 0xf1, - 0x1f, 0x59, 0x42, 0x5a, 0x49, 0x33, 0xc7, 0xd2, 0x62, 0xd2, 0xb1, 0xe2, 0xad, 0xd2, 0x72, 0x88, - 0x63, 0x0f, 0xf0, 0xa6, 0x76, 0x93, 0x3c, 0x53, 0x26, 0xaf, 0xfe, 0x28, 0x6f, 0x29, 0xac, 0x47, - 0x64, 0xee, 0x28, 0x79, 0xc7, 0x8f, 0xd7, 0xe8, 0x35, 0xe4, 0xbd, 0x42, 0x96, 0xe3, 0xb5, 0xf5, - 0x79, 0x74, 0x70, 0x00, 0xaf, 0x4c, 0x9d, 0xa4, 0x1b, 0x63, 0x27, 0x6b, 0xa5, 0x62, 0xec, 0x99, - 0xc2, 0x2f, 0xe2, 0xc6, 0x30, 0x24, 0x57, 0xf4, 0x1b, 0x4d, 0x3c, 0xc6, 0xa2, 0xb3, 0x21, 0xb2, - 0xe2, 0x93, 0x4e, 0x98, 0x62, 0x95, 0x96, 0x53, 0x20, 0xb8, 0x08, 0x6f, 0xa3, 0x08, 0xaf, 0xd3, - 0x5b, 0x09, 0xc9, 0x11, 0x87, 0xc9, 0x45, 0xfa, 0x1c, 0x83, 0xca, 0xfb, 0x57, 0x8a, 0x1f, 0x54, - 0xe1, 0x61, 0x53, 0x10, 0x54, 0xea, 0x40, 0x88, 0x52, 0xe4, 0x79, 0x99, 0xf6, 0x04, 0x95, 0x84, - 0xe2, 0xf4, 0x7f, 0xad, 0xc1, 0x7c, 0xc2, 0xa3, 0x88, 0x5c, 0x15, 0x57, 0xe1, 0xd4, 0x77, 0x4f, - 0x69, 0x35, 0x1d, 0x88, 0xcb, 0xb1, 0x81, 0x72, 0xbc, 0x46, 0xd7, 0x42, 0x72, 0x24, 0xa0, 0x70, - 0xa1, 0x7e, 0xa7, 0xc1, 0xfc, 0x6e, 0xaa, 0x50, 0xbb, 0x83, 0x08, 0x95, 0xf6, 0xe8, 0xa2, 0xef, - 0xa0, 0x50, 0x6f, 0x90, 0x8d, 0xe4, 0x98, 0x08, 0x50, 0x36, 0xbe, 0xf2, 0x2e, 0x52, 0x5f, 0x93, - 0xdf, 0x6b, 0x50, 0x4a, 0x7e, 0x67, 0x90, 0x6b, 0x29, 0xac, 0xd5, 0x4e, 0xb0, 0xd6, 0x17, 0x8e, - 0x4b, 0xb9, 0x89, 0x52, 0xbe, 0x49, 0xca, 0x03, 0x48, 0xc9, 0xb1, 0xd4, 0x22, 0xfb, 0xad, 0x06, - 0xa5, 0xe4, 0xab, 0xb5, 0x14, 0xb4, 0xef, 0x4b, 0x43, 0x0a, 0xda, 0xe7, 0x8e, 0x4e, 0xcb, 0x28, - 0xe8, 0x6d, 0x7a, 0x3d, 0xea, 0xe3, 0x04, 0x2c, 0xee, 0x66, 0x69, 0xc9, 0x74, 0x01, 0x77, 0x07, - 0x14, 0xb0, 0xcf, 0x35, 0x3e, 0xd9, 0x92, 0x09, 0x58, 0xaa, 0xcb, 0xff, 0xa0, 0xc1, 0x52, 0xea, - 0xd5, 0x94, 0xbc, 0x96, 0x2e, 0x83, 0xea, 0xf8, 0xeb, 0x83, 0x80, 0x72, 0x89, 0xdf, 0x47, 0x89, - 0xdf, 0x21, 0x6f, 0x0d, 0x26, 0x71, 0xd4, 0xfd, 0x9f, 0x42, 0xd6, 0x1f, 0xef, 0xc9, 0x3e, 0x1e, - 0x9d, 0x2c, 0xca, 0x3e, 0x1e, 0x99, 0x02, 0xca, 0xbb, 0x08, 0x9d, 0x0b, 0xbb, 0xd2, 0x03, 0xe2, - 0x9e, 0x93, 0xb4, 0x71, 0x78, 0xa4, 0xd0, 0x56, 0x07, 0x58, 0x0a, 0x6d, 0x65, 0x88, 0x97, 0x4c, - 0x1b, 0x81, 0x38, 0xed, 0xe7, 0x70, 0xa9, 0x67, 0x26, 0x2c, 0xbb, 0x4d, 0xd2, 0x80, 0x5a, 0x76, - 0x9b, 0x84, 0x51, 0xb2, 0xec, 0x74, 0x74, 0x39, 0xd2, 0xc4, 0x23, 0xc0, 0x9c, 0xb7, 0x25, 0x7e, - 0x64, 0x57, 0x26, 0x89, 0xc4, 0x6f, 0x64, 0x31, 0x93, 0xc7, 0xd2, 0x42, 0xfc, 0x21, 0xe7, 0xba, - 0x86, 0x5c, 0x97, 0xc9, 0xe5, 0x9e, 0xcc, 0x55, 0xa9, 0x7f, 0x21, 0x3a, 0x5c, 0x30, 0x3c, 0x54, - 0x3a, 0x5c, 0xcf, 0x24, 0x52, 0xe9, 0x70, 0x91, 0x69, 0x23, 0xbd, 0x8a, 0xdc, 0x96, 0xc8, 0x62, - 0x2c, 0x37, 0x01, 0x59, 0xae, 0x01, 0x04, 0x65, 0x83, 0x7c, 0xf8, 0xc3, 0x34, 0xd7, 0xb2, 0x09, - 0x93, 0xa1, 0x80, 0x24, 0x1f, 0xff, 0x58, 0x4d, 0xf4, 0x64, 0x14, 0xff, 0x9c, 0x7b, 0xf7, 0xbf, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x79, 0xa3, 0x1e, 0x9a, 0xcc, 0x2b, 0x00, 0x00, ->>>>>>> upstream/master + 0x1a, 0xbe, 0xe4, 0x92, 0x5c, 0x02, 0x38, 0xaf, 0x4b, 0x0e, 0x3e, 0xfa, 0x07, 0x04, 0x30, 0x72, + 0xcb, 0x25, 0xa7, 0x1c, 0x72, 0x0a, 0x02, 0x04, 0x41, 0x8e, 0x39, 0xe6, 0x47, 0x04, 0x5d, 0xdd, + 0x33, 0xd3, 0x33, 0x9c, 0x19, 0xd1, 0x5a, 0x3b, 0xc8, 0x8d, 0xd3, 0x5d, 0x8f, 0xaf, 0xaa, 0xba, + 0xaa, 0xba, 0x4b, 0x82, 0xb4, 0xd1, 0x36, 0xd7, 0xda, 0x1d, 0xcb, 0xb1, 0x48, 0xca, 0x68, 0x9b, + 0x85, 0xb9, 0xba, 0x65, 0xd5, 0x1b, 0x6c, 0xdd, 0x68, 0x9b, 0xeb, 0x46, 0xab, 0x65, 0x39, 0x86, + 0x63, 0x5a, 0x2d, 0x5b, 0x90, 0xd0, 0x4f, 0x61, 0xf4, 0x7d, 0x66, 0xd8, 0xe6, 0x71, 0x83, 0x1d, + 0xb6, 0x8d, 0x13, 0x46, 0x72, 0x90, 0x6a, 0x1a, 0x5f, 0xe4, 0xb5, 0x45, 0x6d, 0x35, 0xad, 0xf3, + 0x9f, 0xb8, 0x62, 0xb6, 0xf2, 0x7d, 0x72, 0xc5, 0x6c, 0x11, 0x02, 0xfd, 0x0d, 0xd3, 0x76, 0xf2, + 0xa9, 0xc5, 0xd4, 0x6a, 0x5a, 0xc7, 0xdf, 0x7c, 0xcd, 0x76, 0x58, 0x3b, 0xdf, 0x8f, 0x64, 0xf8, + 0x9b, 0x7e, 0xad, 0xc1, 0xd8, 0x81, 0xd1, 0x31, 0x9a, 0xcc, 0x61, 0x9d, 0x4d, 0xab, 0x75, 0x6a, + 0xd6, 0x39, 0x5d, 0xcb, 0x68, 0x32, 0xa9, 0x00, 0x7f, 0x93, 0x7b, 0x90, 0x6d, 0xbb, 0x64, 0x55, + 0xe7, 0xbc, 0xcd, 0x50, 0x59, 0xb6, 0x48, 0xd6, 0xb8, 0x2d, 0x9e, 0x84, 0xca, 0x79, 0x9b, 0xe9, + 0xa3, 0x6d, 0xf5, 0x93, 0xac, 0xc1, 0xf0, 0xa9, 0xc4, 0x9f, 0x4f, 0x2d, 0x6a, 0xab, 0x19, 0xc9, + 0x14, 0x30, 0x4a, 0xf7, 0x68, 0x68, 0x1b, 0xd2, 0x9e, 0xbc, 0x1f, 0x1a, 0xcb, 0x24, 0x0c, 0x3c, + 0x35, 0x1a, 0x67, 0x02, 0x48, 0x5a, 0x17, 0x1f, 0xf4, 0x57, 0x1a, 0x8c, 0xee, 0x31, 0xa7, 0x63, + 0x9e, 0xd8, 0xbb, 0x56, 0xfd, 0x90, 0x39, 0x64, 0x16, 0xd2, 0xcf, 0xac, 0xce, 0xe7, 0xac, 0x53, + 0x35, 0x6b, 0x52, 0xf7, 0xb0, 0x58, 0x28, 0xd5, 0x48, 0x11, 0x46, 0x9a, 0x82, 0xba, 0xda, 0xb0, + 0xea, 0x76, 0xbe, 0x6f, 0x31, 0xb5, 0x9a, 0x29, 0x8e, 0xa1, 0x76, 0x5f, 0x8c, 0x9e, 0x69, 0x7a, + 0xbf, 0x6d, 0xb2, 0x0e, 0xa3, 0x52, 0xa0, 0xed, 0x18, 0xce, 0x99, 0x8d, 0x00, 0xb2, 0x45, 0x40, + 0xa6, 0x43, 0xc7, 0x70, 0x98, 0x3e, 0x22, 0x08, 0x0e, 0x71, 0x9f, 0xde, 0x85, 0x21, 0x29, 0x2b, + 0xd2, 0x07, 0x9e, 0x21, 0x7d, 0xaa, 0x21, 0xf7, 0x21, 0x27, 0x99, 0x3e, 0xe4, 0xdf, 0x15, 0xb3, + 0xc9, 0x38, 0xb7, 0x63, 0xfa, 0xdc, 0xfc, 0x77, 0x0c, 0xf7, 0x3e, 0x80, 0x0f, 0x3f, 0x52, 0xeb, + 0x1d, 0x18, 0x44, 0x52, 0xd7, 0xe6, 0x29, 0xd5, 0x66, 0x4f, 0xa5, 0x2e, 0x89, 0xe8, 0x7b, 0x30, + 0x71, 0x78, 0x56, 0xaf, 0x33, 0x9b, 0x1f, 0xe7, 0xe4, 0x98, 0x46, 0x23, 0x7a, 0x08, 0xd3, 0xdb, + 0x46, 0xa7, 0x71, 0x7e, 0xe8, 0x58, 0xed, 0xb6, 0xd9, 0xaa, 0x5f, 0x46, 0xc6, 0x3a, 0xa4, 0x2a, + 0x46, 0xfd, 0x7b, 0x30, 0x7c, 0x0e, 0xa3, 0x87, 0xce, 0x59, 0xed, 0x7c, 0xff, 0x29, 0xeb, 0x3c, + 0x35, 0xd9, 0xb3, 0x38, 0x56, 0xeb, 0x59, 0x8b, 0x75, 0x5c, 0x56, 0xfc, 0x20, 0x59, 0xe8, 0x33, + 0x6b, 0xf2, 0x6c, 0xf5, 0x99, 0x35, 0xb2, 0x08, 0x99, 0x1a, 0xb3, 0x4f, 0x3a, 0x66, 0x9b, 0x7b, + 0x40, 0x26, 0x9e, 0xba, 0x44, 0xff, 0xa9, 0xc1, 0x40, 0xa5, 0x63, 0x1a, 0x0d, 0x32, 0x03, 0xc3, + 0x0e, 0xff, 0xe1, 0x9f, 0xb8, 0x21, 0xfc, 0x2e, 0xd5, 0xf8, 0x96, 0xcd, 0x11, 0xf1, 0x2d, 0xa1, + 0x6f, 0x08, 0xbf, 0x4b, 0x35, 0x72, 0x17, 0xfc, 0x13, 0x5e, 0xb5, 0x99, 0x48, 0xf8, 0x4c, 0x31, + 0x1b, 0x4c, 0x05, 0x7d, 0xc4, 0x23, 0xe2, 0xa7, 0xfb, 0x3a, 0x8c, 0x59, 0xc7, 0x4f, 0xd8, 0x89, + 0x63, 0x3e, 0x65, 0x55, 0xe1, 0x01, 0x01, 0x2d, 0xeb, 0x2d, 0x63, 0x30, 0xc9, 0x1c, 0xf4, 0x3b, + 0x46, 0xdd, 0xce, 0x0f, 0xa0, 0xd0, 0x61, 0x14, 0x5a, 0x31, 0xea, 0x3a, 0xae, 0x92, 0xab, 0x90, + 0x39, 0xe9, 0x30, 0xc3, 0x61, 0x55, 0x3c, 0x60, 0x83, 0x28, 0x02, 0xc4, 0x12, 0x3f, 0x07, 0xf4, + 0xef, 0x1a, 0x0c, 0x1e, 0xe1, 0xa1, 0x4e, 0x4e, 0xa8, 0x04, 0xfb, 0x54, 0xaf, 0xa4, 0x82, 0x5e, + 0x21, 0xd0, 0xcf, 0x73, 0xda, 0x2d, 0x67, 0x98, 0xdf, 0x14, 0x06, 0x65, 0x7e, 0x0d, 0x74, 0xe5, + 0x97, 0xdc, 0x21, 0x14, 0x46, 0x2a, 0xac, 0xd9, 0x6e, 0x18, 0x0e, 0x3b, 0x30, 0x9c, 0xc7, 0x12, + 0x77, 0x60, 0xcd, 0x33, 0x7c, 0x28, 0xca, 0x70, 0xfa, 0x47, 0x0d, 0xd2, 0x65, 0xc3, 0x96, 0xe5, + 0xf2, 0x2e, 0x8c, 0xd4, 0x3b, 0x46, 0xfb, 0x71, 0xf5, 0x04, 0xbf, 0xd1, 0xba, 0x4c, 0x31, 0x87, + 0x3c, 0x3b, 0x7c, 0x43, 0xd0, 0xe9, 0x99, 0xba, 0xff, 0x41, 0xee, 0x01, 0x58, 0x6d, 0xd6, 0x11, + 0x85, 0x1e, 0x8d, 0xce, 0x14, 0x67, 0x90, 0xc5, 0x13, 0xbc, 0xb6, 0xef, 0x11, 0xe8, 0x0a, 0x71, + 0x61, 0x03, 0xc0, 0xdf, 0x21, 0xb7, 0x21, 0xed, 0xed, 0xe5, 0x35, 0x25, 0xf8, 0x1e, 0x8d, 0xee, + 0x13, 0xd0, 0x06, 0x64, 0x14, 0x48, 0x64, 0x1e, 0xa0, 0x75, 0xd6, 0xac, 0x36, 0x8c, 0x73, 0xd6, + 0xb1, 0x11, 0xf8, 0x80, 0x9e, 0x6e, 0x9d, 0x35, 0x77, 0x71, 0x81, 0x6f, 0x9b, 0xad, 0xf6, 0x99, + 0x53, 0xb5, 0xcd, 0xe7, 0x0c, 0x53, 0x7e, 0x40, 0x4f, 0xe3, 0xca, 0xa1, 0xf9, 0x9c, 0xf1, 0xf8, + 0x5b, 0x67, 0x8e, 0xb7, 0x9f, 0xc2, 0x7d, 0x10, 0x4b, 0x9c, 0x80, 0xfe, 0x59, 0x83, 0xb4, 0x07, + 0x83, 0xac, 0xc0, 0xa8, 0x07, 0x04, 0x03, 0x27, 0x8e, 0x41, 0x70, 0x91, 0xec, 0xc2, 0xb8, 0x7f, + 0xa0, 0x85, 0x47, 0x5d, 0xff, 0x5c, 0x0d, 0xda, 0xb5, 0x16, 0xea, 0x5b, 0xb6, 0x9e, 0x6b, 0x87, + 0x56, 0x0a, 0x0f, 0x21, 0x17, 0xa6, 0x22, 0x6b, 0x30, 0xe4, 0xca, 0x15, 0xfe, 0x9a, 0x0c, 0x26, + 0x8b, 0x0c, 0x97, 0x4b, 0x44, 0xbf, 0xeb, 0x87, 0x0c, 0x16, 0x84, 0x84, 0xf6, 0x18, 0x5d, 0x0e, + 0x1e, 0xc2, 0xb8, 0xd5, 0x76, 0xcc, 0xa6, 0xf9, 0x1c, 0x01, 0x8b, 0x5e, 0x25, 0x0a, 0xff, 0x94, + 0xb4, 0xc5, 0xdf, 0xc5, 0x76, 0x95, 0xb3, 0x42, 0x2b, 0xe4, 0x56, 0x48, 0x46, 0xdd, 0x32, 0x1a, + 0x78, 0xe4, 0xb5, 0x20, 0xf1, 0x8e, 0x65, 0x34, 0x48, 0x39, 0xca, 0x79, 0x03, 0xe8, 0xbc, 0x25, + 0x99, 0x09, 0x9e, 0x1d, 0x3d, 0xb8, 0x8f, 0xdc, 0x01, 0x62, 0x9c, 0x9c, 0x30, 0xdb, 0xae, 0xb6, + 0x59, 0xa7, 0x69, 0xda, 0x36, 0x9e, 0xd6, 0x41, 0xbc, 0x53, 0x8c, 0x8b, 0x9d, 0x03, 0x7f, 0x23, + 0x39, 0x6b, 0xc8, 0x2b, 0x30, 0x19, 0xaa, 0x3a, 0x55, 0xf4, 0xe3, 0x30, 0xba, 0x8c, 0x04, 0x4b, + 0x4f, 0x99, 0x7b, 0x35, 0x0f, 0x43, 0xb2, 0x87, 0xe6, 0xd3, 0xa8, 0xd3, 0xfd, 0xe4, 0xfe, 0x7e, + 0x62, 0x1d, 0x97, 0x6a, 0x79, 0x10, 0xfe, 0xc6, 0x0f, 0x72, 0x07, 0xa0, 0x65, 0xd8, 0x6e, 0x1e, + 0x66, 0xd0, 0xee, 0x6c, 0x30, 0xa9, 0xf4, 0x74, 0xcb, 0x4b, 0xdc, 0x19, 0x18, 0x7e, 0x62, 0x1d, + 0x8b, 0xa8, 0x8c, 0x88, 0xda, 0xf2, 0xc4, 0x3a, 0xe6, 0x5e, 0xff, 0x41, 0xce, 0x4d, 0x09, 0xc8, + 0x26, 0xd6, 0x42, 0x74, 0xba, 0xce, 0x7e, 0x7a, 0xc6, 0x6c, 0x87, 0x57, 0x0b, 0x51, 0xeb, 0x22, + 0xaa, 0x85, 0x12, 0x1d, 0x3d, 0x63, 0xfb, 0x1f, 0xf4, 0x0e, 0xe4, 0x02, 0xa2, 0xda, 0x8d, 0xf3, + 0x40, 0xd1, 0xd4, 0x02, 0x45, 0x93, 0xae, 0x03, 0xd9, 0x62, 0x0d, 0x16, 0xd2, 0x9c, 0xc0, 0x70, + 0x07, 0x72, 0x01, 0x86, 0x0b, 0xe4, 0xdf, 0x86, 0xb1, 0x1d, 0xe6, 0xf4, 0x2a, 0x7c, 0x0b, 0x46, + 0x7d, 0x6a, 0x2e, 0xf9, 0x52, 0x2e, 0x98, 0x82, 0x09, 0x57, 0xca, 0xae, 0x69, 0x3b, 0x52, 0x2f, + 0x3d, 0x80, 0xf1, 0xe0, 0x32, 0x57, 0xf0, 0x36, 0x8c, 0x09, 0x05, 0x96, 0x6c, 0xe1, 0x6e, 0xc4, + 0x88, 0xaf, 0xc3, 0xed, 0xee, 0x7a, 0xd6, 0x56, 0x3f, 0x6d, 0xfa, 0x86, 0x1b, 0x36, 0x6c, 0xcb, + 0xae, 0x7d, 0x8b, 0x30, 0x80, 0x7d, 0x47, 0x82, 0x15, 0x7d, 0x45, 0x50, 0x88, 0x0d, 0x3f, 0x46, + 0x92, 0x4f, 0xfa, 0x30, 0xa6, 0xa7, 0x73, 0xf2, 0x1d, 0xe6, 0x20, 0xad, 0xdd, 0x83, 0x13, 0x5f, + 0x83, 0xac, 0x42, 0xce, 0x65, 0x53, 0x18, 0x44, 0x59, 0xae, 0x6d, 0x2a, 0x24, 0xb9, 0x23, 0x03, + 0x15, 0x30, 0x24, 0x01, 0xd2, 0xab, 0x18, 0x28, 0x05, 0xfe, 0xc5, 0x46, 0xdf, 0x87, 0x29, 0x9d, + 0xd5, 0x4d, 0xdb, 0x61, 0x1d, 0xd1, 0xe8, 0x5d, 0x35, 0xcb, 0x30, 0x28, 0xda, 0xbb, 0xe4, 0xcd, + 0x20, 0xaf, 0xa4, 0x91, 0x5b, 0xb4, 0x08, 0x13, 0x61, 0x6e, 0xae, 0x36, 0xe9, 0xae, 0x40, 0x2d, + 0x20, 0xfc, 0x36, 0x28, 0xe8, 0x7b, 0xf0, 0x1c, 0x6f, 0x62, 0x9e, 0x34, 0x71, 0x6f, 0x4d, 0xeb, + 0x69, 0x57, 0x1c, 0x5e, 0x62, 0x4c, 0x5e, 0x32, 0x9a, 0x6d, 0x7e, 0xfe, 0xb1, 0x3a, 0x0f, 0xeb, + 0x60, 0xda, 0x9b, 0x72, 0x85, 0x12, 0xc8, 0x05, 0x14, 0xb6, 0x1b, 0xe7, 0xf4, 0x14, 0x4f, 0x5d, + 0xef, 0x18, 0x54, 0xa7, 0xf7, 0x05, 0x6f, 0x31, 0x01, 0x63, 0x53, 0x21, 0x63, 0xdf, 0xc2, 0xf8, + 0xa9, 0xaa, 0xc9, 0xcb, 0x30, 0x24, 0xb6, 0xdd, 0xb8, 0x07, 0x3c, 0xeb, 0xee, 0xd1, 0x4f, 0x21, + 0xff, 0xa8, 0x5d, 0x33, 0x1c, 0x76, 0xe4, 0x3d, 0x2a, 0x98, 0x0b, 0x34, 0xf1, 0x2e, 0xe6, 0xdf, + 0xa0, 0xfa, 0xe2, 0x6e, 0x50, 0x34, 0x0f, 0xd3, 0x11, 0xc2, 0xb9, 0x63, 0x7e, 0xa7, 0x41, 0xde, + 0x43, 0xfc, 0xfe, 0x59, 0xa3, 0x51, 0x6a, 0x9d, 0x5a, 0x3f, 0x9e, 0x83, 0xc8, 0x35, 0x18, 0xb3, + 0x5a, 0x8d, 0xf3, 0x2a, 0xbf, 0xb8, 0xd9, 0x0e, 0x7f, 0x8e, 0x61, 0x6f, 0x1c, 0xd6, 0x47, 0xf9, + 0xf2, 0x2e, 0xae, 0xee, 0x5a, 0x75, 0xfa, 0x8d, 0x06, 0xd9, 0x20, 0x28, 0x7e, 0x42, 0x8f, 0xe2, + 0x4f, 0xa8, 0xbc, 0xb6, 0x76, 0x5d, 0xaf, 0xfb, 0x7a, 0xb8, 0x5e, 0x87, 0xdf, 0x87, 0xa9, 0x8b, + 0xdf, 0x87, 0xf4, 0x63, 0x98, 0x8e, 0xf0, 0x1b, 0x0f, 0xf8, 0x7b, 0x30, 0x2e, 0xed, 0x3f, 0x3d, + 0x6b, 0x34, 0xaa, 0x66, 0xeb, 0xd4, 0x72, 0x43, 0x3f, 0xa1, 0x40, 0xf6, 0x98, 0xc6, 0x9e, 0x05, + 0xbe, 0x6d, 0xfa, 0x57, 0x0d, 0xa6, 0x78, 0x8d, 0xf4, 0x5e, 0x62, 0xbd, 0x9c, 0xd8, 0x57, 0x61, + 0xd2, 0xf6, 0x18, 0xaa, 0x46, 0xa3, 0x6e, 0x75, 0x4c, 0xe7, 0x71, 0x53, 0x06, 0x67, 0xc2, 0xdf, + 0x7b, 0xe0, 0x6e, 0x91, 0x97, 0x21, 0xdb, 0x11, 0x82, 0xab, 0xad, 0xb3, 0xe6, 0x31, 0xeb, 0x60, + 0xb4, 0x06, 0xf4, 0x51, 0xb9, 0x5a, 0xc6, 0x45, 0xb2, 0x02, 0xd9, 0x86, 0x55, 0xaf, 0x2a, 0x39, + 0xd9, 0x8f, 0x39, 0x39, 0xd2, 0xb0, 0xea, 0x47, 0x5e, 0x5a, 0xce, 0xc0, 0x30, 0xfa, 0x94, 0x43, + 0x1b, 0x10, 0xd0, 0xf0, 0xbb, 0x54, 0xa3, 0xf7, 0x44, 0x27, 0x50, 0xcd, 0xe9, 0xb5, 0x1e, 0xfe, + 0x52, 0x83, 0x59, 0xce, 0xfb, 0xd8, 0x3a, 0x6b, 0xd4, 0xbe, 0x5f, 0x19, 0x79, 0x0b, 0xf2, 0x8c, + 0x3f, 0x45, 0xab, 0xb6, 0x7c, 0x8b, 0x76, 0x39, 0x65, 0x9a, 0xa9, 0x4f, 0x55, 0xdf, 0x2f, 0x09, + 0xa6, 0x1c, 0xc0, 0x4c, 0x34, 0x1c, 0xd1, 0x26, 0xa7, 0x6d, 0xdc, 0x41, 0x95, 0xaa, 0xc3, 0x34, + 0x74, 0xd8, 0x84, 0x1d, 0xe2, 0x2b, 0xd5, 0x6c, 0xda, 0xc1, 0xca, 0x24, 0x4f, 0xd9, 0x8b, 0x57, + 0xc7, 0x65, 0x18, 0x75, 0x8f, 0x32, 0xbf, 0xab, 0xd9, 0x72, 0x9e, 0xe4, 0x9e, 0x6f, 0x7e, 0x4b, + 0xb3, 0xe9, 0x3e, 0x56, 0x29, 0x4f, 0x27, 0xc7, 0x7e, 0x1f, 0x72, 0x4a, 0x0a, 0xf0, 0xcc, 0x09, + 0xb6, 0xe0, 0xc0, 0xb4, 0x45, 0xcf, 0x36, 0xd5, 0x4f, 0x9b, 0xda, 0x90, 0xd7, 0x59, 0xdb, 0xea, + 0x38, 0x3e, 0x59, 0x2f, 0xb6, 0x44, 0x29, 0x4d, 0xf5, 0xac, 0x34, 0x0f, 0xd3, 0x11, 0x4a, 0x79, + 0x51, 0xfb, 0x93, 0x06, 0xe9, 0x3d, 0xab, 0xc6, 0x44, 0xdd, 0x98, 0x07, 0x10, 0x00, 0x94, 0x47, + 0x40, 0x1a, 0x57, 0xf0, 0xce, 0x1a, 0x28, 0x57, 0x7d, 0xa1, 0x72, 0xb5, 0x06, 0xe0, 0x55, 0x0a, + 0x3b, 0xe6, 0xa9, 0xae, 0x50, 0x90, 0x6b, 0xfe, 0x05, 0xb8, 0x1f, 0x89, 0x47, 0x54, 0x43, 0xfc, + 0xeb, 0xf0, 0x3c, 0x40, 0x93, 0x03, 0xac, 0xb6, 0xf9, 0x83, 0x56, 0x1c, 0xb2, 0x34, 0xae, 0xf0, + 0xd7, 0x2c, 0x7d, 0x1d, 0x32, 0x5b, 0x86, 0x63, 0x1c, 0x32, 0x07, 0x2d, 0x88, 0x7a, 0xc0, 0x10, + 0xe8, 0x47, 0x5e, 0x81, 0x18, 0x7f, 0x53, 0x13, 0x72, 0x87, 0xc6, 0xd3, 0xe0, 0x25, 0xf2, 0x02, + 0xeb, 0xa3, 0xdf, 0x41, 0xa1, 0x31, 0x48, 0xaa, 0x7b, 0x0c, 0x92, 0x83, 0xac, 0xa2, 0x8a, 0x3b, + 0xfd, 0x17, 0x9a, 0xd0, 0x8e, 0x8e, 0x77, 0xb5, 0xaf, 0xc0, 0x00, 0x5a, 0x25, 0x4b, 0xb6, 0x70, + 0x9d, 0x17, 0x1a, 0x5d, 0x6c, 0x92, 0x5b, 0x30, 0x5c, 0x33, 0x1c, 0x43, 0xd6, 0x6b, 0xff, 0x6e, + 0xa9, 0xf8, 0x40, 0x1f, 0xaa, 0x89, 0x0f, 0xb2, 0x04, 0x23, 0x0e, 0x6b, 0xd9, 0x56, 0xa7, 0x7a, + 0x6c, 0x19, 0x9d, 0x9a, 0xbc, 0x00, 0x64, 0xc4, 0xda, 0x43, 0xbe, 0xe4, 0x82, 0x93, 0x48, 0x38, + 0xb8, 0x3c, 0x56, 0x6b, 0xbe, 0x58, 0xe3, 0x90, 0x4d, 0xe6, 0x1e, 0x4f, 0xba, 0x05, 0x93, 0x5d, + 0x3b, 0x3c, 0x21, 0x6e, 0x03, 0x1e, 0x53, 0x93, 0x25, 0x5d, 0x45, 0x5d, 0x12, 0xfa, 0x86, 0xa8, + 0xd8, 0x5c, 0x0a, 0x6a, 0xb5, 0x7b, 0x73, 0x3f, 0x7d, 0x47, 0x94, 0x46, 0x95, 0x8f, 0x2b, 0xbf, + 0x06, 0x83, 0xe8, 0x19, 0x3b, 0x30, 0x20, 0xf0, 0xfd, 0x26, 0x77, 0xa9, 0xee, 0x83, 0x0f, 0xb8, + 0xfd, 0x05, 0x8e, 0x3c, 0xdd, 0x00, 0x12, 0x92, 0xc9, 0x11, 0xf5, 0x14, 0x48, 0xfa, 0x0f, 0x0d, + 0x16, 0x0e, 0xd5, 0x52, 0xef, 0x65, 0xc9, 0x8f, 0xd4, 0xc2, 0xd4, 0x52, 0x9d, 0x0a, 0x94, 0x6a, + 0xb2, 0x07, 0x53, 0x8a, 0x34, 0x25, 0x8b, 0x45, 0x62, 0xe6, 0x45, 0x38, 0xbb, 0x91, 0xea, 0x0a, + 0x08, 0x1f, 0x3e, 0xbd, 0x07, 0x73, 0xb1, 0x96, 0xc9, 0x97, 0x83, 0x87, 0x44, 0x0b, 0x36, 0x8d, + 0xb7, 0x61, 0x61, 0xe7, 0x42, 0xa7, 0xc4, 0x31, 0x37, 0x61, 0x6e, 0x27, 0x49, 0x6f, 0xac, 0x99, + 0xda, 0xa5, 0xcc, 0x7c, 0x17, 0x96, 0xa2, 0xd5, 0x29, 0x6f, 0xb8, 0xa4, 0x67, 0xcf, 0x77, 0x1a, + 0x4c, 0x47, 0x70, 0xf3, 0xc4, 0x8d, 0x37, 0xf2, 0x32, 0x91, 0x8f, 0xb5, 0x3b, 0x75, 0x29, 0xbb, + 0x9f, 0xc3, 0xd5, 0x24, 0xbb, 0xb9, 0xa7, 0x8f, 0x60, 0x26, 0x4a, 0xa3, 0xda, 0x2b, 0x67, 0xe3, + 0xb4, 0xf2, 0xfe, 0x75, 0xc5, 0x8e, 0x5c, 0xb7, 0x69, 0x11, 0xa6, 0xf8, 0x9d, 0xc0, 0x67, 0xeb, + 0xc1, 0xcf, 0x53, 0x30, 0x11, 0xe6, 0xe1, 0x75, 0xee, 0x3f, 0x1a, 0x2c, 0x1d, 0x32, 0x27, 0x7a, + 0x06, 0xff, 0xbf, 0xbb, 0x35, 0x85, 0x52, 0xf1, 0x08, 0x66, 0x42, 0x42, 0xbb, 0xd2, 0x51, 0x78, + 0x2e, 0x1a, 0xb7, 0x7e, 0x85, 0x45, 0xdb, 0x43, 0xef, 0xc3, 0xd5, 0x24, 0x6b, 0x2f, 0xc8, 0x4b, + 0x71, 0xd6, 0x2f, 0xf6, 0x55, 0x1c, 0xbf, 0x38, 0x33, 0x89, 0xda, 0x13, 0x2d, 0xd7, 0x5e, 0xc0, + 0xf2, 0x07, 0xb0, 0x12, 0xab, 0xbb, 0xc7, 0x54, 0xfd, 0x8b, 0x06, 0x33, 0xd1, 0x02, 0x2e, 0xc8, + 0xd6, 0xcb, 0x9f, 0x91, 0x44, 0x77, 0xa4, 0x5e, 0xc0, 0x1d, 0x3f, 0xd7, 0x80, 0x5e, 0xe0, 0x0f, + 0x1e, 0x0e, 0x03, 0xe6, 0xe3, 0xf4, 0xab, 0x69, 0xbc, 0x90, 0x80, 0x81, 0x67, 0x72, 0x81, 0xc5, + 0x6d, 0xd9, 0xf4, 0x5f, 0x1a, 0x2c, 0x7f, 0x68, 0x34, 0x4c, 0xfe, 0xda, 0x4e, 0x2a, 0xf9, 0x97, + 0x99, 0xa9, 0xfd, 0x1f, 0xd4, 0xc9, 0x77, 0x61, 0x29, 0xd9, 0x3a, 0x99, 0x73, 0xa6, 0x5d, 0x7d, + 0xca, 0xe9, 0xd0, 0xae, 0x61, 0x7d, 0xc8, 0xb4, 0x91, 0xed, 0xe6, 0x23, 0x18, 0x0d, 0xfc, 0xbd, + 0x97, 0xe4, 0x60, 0xe4, 0x51, 0xf9, 0x83, 0xf2, 0xfe, 0x51, 0xb9, 0x5a, 0xf9, 0xf8, 0x60, 0x3b, + 0xf7, 0x12, 0x01, 0x18, 0xdc, 0xda, 0x7f, 0xf4, 0x70, 0x77, 0x3b, 0xa7, 0x91, 0x21, 0x48, 0x95, + 0xca, 0x95, 0x5c, 0x1f, 0x19, 0x81, 0xe1, 0xad, 0xd2, 0xe1, 0xa6, 0xbe, 0x5d, 0xd9, 0xce, 0xa5, + 0xc8, 0x18, 0x64, 0x36, 0x1f, 0x54, 0xb6, 0x77, 0xf6, 0xf5, 0xd2, 0xe6, 0x83, 0xdd, 0x5c, 0xff, + 0xcd, 0x9f, 0x40, 0x2e, 0x3c, 0x9a, 0x27, 0x79, 0x98, 0x74, 0x25, 0xef, 0x1f, 0x54, 0x4a, 0x7b, + 0xa5, 0x4f, 0x1e, 0x54, 0x4a, 0xfb, 0xe5, 0xdc, 0x4b, 0x5c, 0xd8, 0x5e, 0xa9, 0xcc, 0x57, 0xb8, + 0x0e, 0xfe, 0xf5, 0xe0, 0x23, 0xf1, 0xd5, 0x77, 0x73, 0x07, 0x06, 0x70, 0x3c, 0x42, 0x32, 0x30, + 0x74, 0xb0, 0x5d, 0xde, 0x2a, 0x95, 0x77, 0x72, 0x2f, 0xf1, 0x0f, 0xfd, 0x51, 0xb9, 0xcc, 0x3f, + 0x34, 0x32, 0x0a, 0xe9, 0xcd, 0xfd, 0xbd, 0x83, 0xdd, 0xed, 0xca, 0xf6, 0x56, 0xae, 0x8f, 0xe3, + 0xfd, 0xa0, 0xb4, 0xbb, 0xbb, 0xbd, 0x95, 0x4b, 0x91, 0x34, 0x0c, 0x6c, 0xeb, 0xfa, 0xbe, 0x9e, + 0xfb, 0xa2, 0xf8, 0xdb, 0x19, 0x18, 0xda, 0x33, 0x5a, 0x46, 0x9d, 0x75, 0x48, 0x13, 0x32, 0xca, + 0x38, 0x98, 0x5c, 0x41, 0xa7, 0x77, 0xcf, 0x9a, 0x0b, 0x53, 0xdd, 0x1b, 0xbc, 0xaa, 0xaf, 0xfd, + 0xec, 0x6f, 0xff, 0xfe, 0x4d, 0xdf, 0x2a, 0xcd, 0xe3, 0x3f, 0x1c, 0x48, 0xa1, 0xeb, 0x0a, 0xd9, + 0x46, 0xe0, 0x2c, 0x91, 0xcf, 0x60, 0xd8, 0x9d, 0xb1, 0x12, 0x31, 0xf3, 0x0e, 0x4d, 0x7f, 0x0b, + 0x24, 0xb4, 0xca, 0xb5, 0xac, 0xa2, 0x16, 0x4a, 0x16, 0x03, 0x5a, 0x5c, 0x9a, 0xf5, 0x2f, 0xdd, + 0x3a, 0xf2, 0x15, 0x79, 0x02, 0x19, 0x65, 0xfa, 0x2c, 0xcd, 0xe9, 0x1e, 0x60, 0x4b, 0x73, 0xc2, + 0x83, 0x6a, 0x7a, 0x0b, 0x15, 0xbd, 0x4c, 0x96, 0x03, 0x8a, 0x14, 0x32, 0x55, 0xd7, 0x09, 0x8c, + 0xa8, 0xf3, 0x62, 0x92, 0x0f, 0x20, 0x57, 0x4a, 0x5d, 0x61, 0x3a, 0x62, 0x87, 0xab, 0x5b, 0x42, + 0x75, 0xb3, 0x64, 0x26, 0xd2, 0x2e, 0x14, 0x7a, 0xea, 0xc6, 0x47, 0xfc, 0x65, 0x57, 0x8d, 0x8f, + 0x3a, 0x8b, 0x0d, 0xc4, 0xc7, 0x1f, 0xbb, 0xd2, 0xeb, 0xa8, 0x61, 0x29, 0x32, 0x3e, 0x48, 0xb6, + 0x21, 0xa6, 0xaf, 0xe4, 0x18, 0xd2, 0xde, 0x50, 0x98, 0x4c, 0xb9, 0x78, 0x03, 0x33, 0xe5, 0xc2, + 0x44, 0x78, 0x99, 0x6b, 0xb8, 0x81, 0x1a, 0x96, 0xc9, 0x52, 0xd8, 0x06, 0x41, 0xa4, 0x3a, 0x4c, + 0x04, 0x5f, 0x18, 0x32, 0x19, 0x90, 0xd5, 0x15, 0x7c, 0xc5, 0x84, 0xd8, 0xe0, 0x23, 0xcd, 0xfa, + 0x97, 0xee, 0xb0, 0xef, 0x2b, 0x62, 0x43, 0x36, 0x38, 0x03, 0x26, 0x05, 0x94, 0x17, 0x39, 0x56, + 0x2e, 0xe4, 0x23, 0xf7, 0x94, 0x53, 0x40, 0x67, 0x03, 0x1a, 0x83, 0x94, 0x1b, 0x72, 0xf0, 0x4c, + 0x3e, 0x05, 0xf0, 0xe7, 0xaa, 0xc4, 0x8b, 0x74, 0x70, 0x1a, 0x54, 0x98, 0xec, 0x5a, 0xe7, 0x8a, + 0xae, 0xa2, 0xa2, 0x19, 0x72, 0x25, 0x6c, 0x9a, 0x2b, 0xee, 0x39, 0x8c, 0x77, 0x4d, 0x47, 0xc9, + 0x3c, 0xca, 0x8a, 0x1b, 0xc9, 0x16, 0x66, 0xe3, 0xb6, 0x95, 0x68, 0x15, 0x16, 0x02, 0x1a, 0xbb, + 0x88, 0x37, 0xb4, 0x9b, 0xe4, 0x99, 0x32, 0x98, 0xf6, 0x26, 0x9d, 0xf3, 0x41, 0x3b, 0x42, 0x63, + 0x59, 0xa9, 0x3b, 0x7a, 0xfa, 0x48, 0xaf, 0xa1, 0xee, 0x45, 0xb2, 0x10, 0x6d, 0xad, 0xa7, 0xa3, + 0x85, 0x7f, 0x9f, 0x50, 0x86, 0x72, 0x32, 0x8c, 0x91, 0x83, 0xc7, 0x42, 0x3e, 0x72, 0x4f, 0xd1, + 0x17, 0x0a, 0x63, 0x90, 0x92, 0x1b, 0xfa, 0xb5, 0x26, 0xde, 0xaa, 0xe1, 0xd1, 0x19, 0x59, 0xf4, + 0x44, 0xc7, 0x0c, 0xf9, 0x0a, 0x0b, 0x09, 0x14, 0x1c, 0xc2, 0x1b, 0x08, 0xe1, 0x15, 0x7a, 0x2b, + 0x26, 0x39, 0xa2, 0x38, 0x39, 0xa4, 0xcf, 0xf0, 0x50, 0xb9, 0xff, 0xb4, 0xe3, 0x1d, 0xaa, 0xe0, + 0x2c, 0xce, 0x3f, 0x54, 0xea, 0xbc, 0x8c, 0x52, 0xd4, 0x39, 0x47, 0xbb, 0x0e, 0x95, 0xa4, 0xe2, + 0xf2, 0x7f, 0xad, 0xc1, 0x95, 0x98, 0x37, 0x23, 0x59, 0x16, 0x7d, 0x37, 0xf1, 0x59, 0x58, 0x58, + 0x4a, 0x26, 0xe2, 0x38, 0xd6, 0x11, 0xc7, 0x0d, 0xba, 0x12, 0xc0, 0x11, 0xc3, 0xc2, 0x41, 0xfd, + 0x5e, 0x83, 0x2b, 0x3b, 0x89, 0xa0, 0x76, 0x7a, 0x01, 0x95, 0xf4, 0x26, 0xa5, 0x6f, 0x22, 0xa8, + 0x57, 0xc9, 0x7a, 0xfc, 0x99, 0xf0, 0x59, 0xd6, 0xbf, 0x74, 0xef, 0x99, 0x5f, 0x91, 0x6f, 0x35, + 0x28, 0xc4, 0x3f, 0xc3, 0xc8, 0xb5, 0x04, 0xd5, 0x6a, 0x27, 0x58, 0xb9, 0x90, 0x8e, 0xa3, 0xdc, + 0x40, 0x94, 0xaf, 0x91, 0x62, 0x0f, 0x28, 0x39, 0x97, 0x5a, 0x64, 0xbf, 0xd1, 0xa0, 0x10, 0xff, + 0xf2, 0x90, 0x40, 0x2f, 0x7c, 0x88, 0x49, 0xa0, 0x17, 0x3c, 0x61, 0x68, 0x11, 0x81, 0xde, 0xa6, + 0xd7, 0xc3, 0x31, 0x8e, 0xe1, 0xe2, 0x61, 0x96, 0x9e, 0x4c, 0x06, 0xb8, 0xd3, 0x23, 0xc0, 0x0b, + 0x5e, 0x39, 0xf1, 0x9e, 0x8c, 0xe1, 0x52, 0x43, 0xfe, 0x07, 0x0d, 0xe6, 0x13, 0x6f, 0xee, 0xe4, + 0x46, 0x32, 0x06, 0x35, 0xf0, 0xd7, 0x7b, 0x21, 0xe5, 0x88, 0xdf, 0x41, 0xc4, 0x6f, 0x92, 0xd7, + 0x7b, 0x43, 0x1c, 0x0e, 0xff, 0x27, 0x90, 0xf6, 0xa6, 0x9f, 0xb2, 0x8f, 0x87, 0x07, 0xaf, 0xb2, + 0x8f, 0x87, 0x86, 0xa4, 0xf2, 0x2e, 0x42, 0xa7, 0x83, 0xa1, 0x74, 0x89, 0x78, 0xe4, 0xa4, 0x6c, + 0x9c, 0xad, 0x29, 0xb2, 0xd5, 0xf9, 0x9e, 0x22, 0x5b, 0x99, 0x71, 0xc6, 0xcb, 0x46, 0x22, 0x2e, + 0xfb, 0x39, 0x8c, 0x77, 0x8d, 0xcc, 0x65, 0xb7, 0x89, 0x9b, 0xdf, 0xcb, 0x6e, 0x13, 0x33, 0x69, + 0x97, 0x9d, 0x8e, 0x2e, 0x84, 0x9a, 0x78, 0x88, 0x98, 0xeb, 0xb6, 0xc4, 0xff, 0x20, 0x28, 0x83, + 0x56, 0xe2, 0x35, 0xb2, 0x88, 0xc1, 0x6c, 0x61, 0x26, 0x7a, 0x93, 0x6b, 0x5d, 0x41, 0xad, 0x0b, + 0x64, 0xae, 0x2b, 0x73, 0x55, 0xe9, 0x9f, 0x8b, 0x0e, 0xe7, 0xcf, 0x56, 0x95, 0x0e, 0xd7, 0x35, + 0xa8, 0x55, 0x3a, 0x5c, 0x68, 0x18, 0x4b, 0x97, 0x51, 0xdb, 0x3c, 0x99, 0x8d, 0xd4, 0x26, 0x45, + 0x7f, 0xab, 0xc1, 0x5c, 0xd2, 0xc3, 0x88, 0xac, 0xa2, 0xfc, 0x1e, 0x5e, 0x86, 0x85, 0x6b, 0x3d, + 0x50, 0x72, 0x5c, 0xaf, 0x21, 0xae, 0x35, 0x7a, 0x23, 0x80, 0x2b, 0x89, 0x6f, 0x43, 0xbb, 0x59, + 0xac, 0x00, 0xf8, 0x5b, 0xe4, 0xfd, 0x1f, 0xe6, 0x16, 0x50, 0x34, 0x61, 0x34, 0x90, 0x39, 0xe4, + 0xa3, 0x1f, 0xab, 0xdb, 0x1f, 0x0f, 0xe2, 0x3f, 0x59, 0xdf, 0xfd, 0x6f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xe0, 0x75, 0x47, 0x6c, 0x94, 0x2d, 0x00, 0x00, } diff --git a/pkg/api/python/api_pb2.py b/pkg/api/python/api_pb2.py index 21839ace676..a266a0da567 100644 --- a/pkg/api/python/api_pb2.py +++ b/pkg/api/python/api_pb2.py @@ -21,7 +21,7 @@ name='api.proto', package='api', syntax='proto3', - serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x83\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet\"\xa4\x01\n#ValidateSuggestionParametersRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!ValidateSuggestionParametersReply\x12\x10\n\x08is_valid\x18\x01 \x01(\x08*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x94\x19\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels\x12\xa6\x01\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply\"4\x82\xd3\xe4\x93\x02.\")/api/Manager/ValidateSuggestionParameters:\x01*2T\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') + serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x98\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\x12\x13\n\x0b\x63reate_time\x18\x06 \x01(\t\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet\"\xa4\x01\n#ValidateSuggestionParametersRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!ValidateSuggestionParametersReply\x12\x10\n\x08is_valid\x18\x01 \x01(\x08*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x94\x19\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels\x12\xa6\x01\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply\"4\x82\xd3\xe4\x93\x02.\")/api/Manager/ValidateSuggestionParameters:\x01*2T\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') , dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) @@ -54,13 +54,8 @@ ], containing_type=None, options=None, -<<<<<<< HEAD - serialized_start=6172, - serialized_end=6257, -======= - serialized_start=5971, - serialized_end=6056, ->>>>>>> upstream/master + serialized_start=6193, + serialized_end=6278, ) _sym_db.RegisterEnumDescriptor(_PARAMETERTYPE) @@ -86,13 +81,8 @@ ], containing_type=None, options=None, -<<<<<<< HEAD - serialized_start=6259, - serialized_end=6331, -======= - serialized_start=6058, - serialized_end=6130, ->>>>>>> upstream/master + serialized_start=6280, + serialized_end=6352, ) _sym_db.RegisterEnumDescriptor(_OPTIMIZATIONTYPE) @@ -126,13 +116,8 @@ ], containing_type=None, options=None, -<<<<<<< HEAD - serialized_start=6333, - serialized_end=6404, -======= - serialized_start=6132, - serialized_end=6203, ->>>>>>> upstream/master + serialized_start=6354, + serialized_end=6425, ) _sym_db.RegisterEnumDescriptor(_STATE) @@ -3226,8 +3211,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5951, - serialized_end=6115, + serialized_start=5972, + serialized_end=6136, ) @@ -3257,8 +3242,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6117, - serialized_end=6170, + serialized_start=6138, + serialized_end=6191, ) _PARAMETERCONFIG.fields_by_name['parameter_type'].enum_type = _PARAMETERTYPE @@ -3994,8 +3979,8 @@ file=DESCRIPTOR, index=0, options=None, - serialized_start=6407, - serialized_end=9627, + serialized_start=6428, + serialized_end=9648, methods=[ _descriptor.MethodDescriptor( name='CreateStudy', @@ -4243,8 +4228,8 @@ file=DESCRIPTOR, index=1, options=None, - serialized_start=9629, - serialized_end=9713, + serialized_start=9650, + serialized_end=9734, methods=[ _descriptor.MethodDescriptor( name='GetSuggestions', @@ -4267,8 +4252,8 @@ file=DESCRIPTOR, index=2, options=None, - serialized_start=9715, - serialized_end=9820, + serialized_start=9736, + serialized_end=9841, methods=[ _descriptor.MethodDescriptor( name='GetShouldStopWorkers', From 3dc4f3e410a5011e77dcc84986b28c6823259142 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Tue, 26 Feb 2019 21:22:36 -0800 Subject: [PATCH 09/17] Add ValidateSuggestionParameters to Suggestion service --- cmd/manager/main.go | 4 +- pkg/api/api.pb.go | 429 +++++++++++++++++--------------- pkg/api/api.proto | 3 +- pkg/api/gen-doc/api.md | 1 + pkg/api/gen-doc/index.html | 7 + pkg/api/python/api_pb2.py | 51 +++- pkg/api/python/api_pb2_grpc.py | 17 ++ pkg/suggestion/nasrl_service.py | 11 +- 8 files changed, 317 insertions(+), 206 deletions(-) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 96a3ab7527d..7ac24815ed0 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -119,12 +119,14 @@ func (s *server) ValidateSuggestionParameters(ctx context.Context, in *api_pb.Va if in.SuggestionAlgorithm == "" { return &api_pb.ValidateSuggestionParametersReply{IsValid: false}, errors.New("No suggest algorithm specified") } + conn, err := grpc.Dial("vizier-suggestion-"+in.SuggestionAlgorithm+":6789", grpc.WithInsecure()) if err != nil { return &api_pb.ValidateSuggestionParametersReply{IsValid: false}, err } defer conn.Close() - c := api_pb.NewManagerClient(conn) + + c := api_pb.NewSuggestionClient(conn) r, err := c.ValidateSuggestionParameters(ctx, in) diff --git a/pkg/api/api.pb.go b/pkg/api/api.pb.go index 851f6d9af07..a7c4dbd802c 100644 --- a/pkg/api/api.pb.go +++ b/pkg/api/api.pb.go @@ -3343,6 +3343,7 @@ var _Manager_serviceDesc = grpc.ServiceDesc{ type SuggestionClient interface { GetSuggestions(ctx context.Context, in *GetSuggestionsRequest, opts ...grpc.CallOption) (*GetSuggestionsReply, error) + ValidateSuggestionParameters(ctx context.Context, in *ValidateSuggestionParametersRequest, opts ...grpc.CallOption) (*ValidateSuggestionParametersReply, error) } type suggestionClient struct { @@ -3362,10 +3363,20 @@ func (c *suggestionClient) GetSuggestions(ctx context.Context, in *GetSuggestion return out, nil } +func (c *suggestionClient) ValidateSuggestionParameters(ctx context.Context, in *ValidateSuggestionParametersRequest, opts ...grpc.CallOption) (*ValidateSuggestionParametersReply, error) { + out := new(ValidateSuggestionParametersReply) + err := grpc.Invoke(ctx, "/api.Suggestion/ValidateSuggestionParameters", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for Suggestion service type SuggestionServer interface { GetSuggestions(context.Context, *GetSuggestionsRequest) (*GetSuggestionsReply, error) + ValidateSuggestionParameters(context.Context, *ValidateSuggestionParametersRequest) (*ValidateSuggestionParametersReply, error) } func RegisterSuggestionServer(s *grpc.Server, srv SuggestionServer) { @@ -3390,6 +3401,24 @@ func _Suggestion_GetSuggestions_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Suggestion_ValidateSuggestionParameters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ValidateSuggestionParametersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SuggestionServer).ValidateSuggestionParameters(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/api.Suggestion/ValidateSuggestionParameters", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SuggestionServer).ValidateSuggestionParameters(ctx, req.(*ValidateSuggestionParametersRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Suggestion_serviceDesc = grpc.ServiceDesc{ ServiceName: "api.Suggestion", HandlerType: (*SuggestionServer)(nil), @@ -3398,6 +3427,10 @@ var _Suggestion_serviceDesc = grpc.ServiceDesc{ MethodName: "GetSuggestions", Handler: _Suggestion_GetSuggestions_Handler, }, + { + MethodName: "ValidateSuggestionParameters", + Handler: _Suggestion_ValidateSuggestionParameters_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "api.proto", @@ -3470,202 +3503,202 @@ var _EarlyStopping_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 3145 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x6f, 0x23, 0xc7, - 0x11, 0xf6, 0x88, 0x7a, 0xb1, 0x28, 0x51, 0x54, 0xeb, 0xb1, 0x14, 0xf5, 0x58, 0xa9, 0x25, 0xef, - 0x6a, 0x5f, 0x92, 0xcd, 0xf5, 0x6b, 0xe5, 0xb5, 0x8d, 0x5d, 0x49, 0x56, 0x08, 0x4b, 0x94, 0x30, - 0xe2, 0x5a, 0x7e, 0x00, 0x26, 0x46, 0x62, 0x8b, 0x3b, 0x6b, 0x92, 0xc3, 0x70, 0x46, 0xbb, 0xd6, - 0x1a, 0xbe, 0xe4, 0x92, 0x5c, 0x02, 0x38, 0xaf, 0x4b, 0x0e, 0x3e, 0xfa, 0x07, 0x04, 0x30, 0x72, - 0xcb, 0x25, 0xa7, 0x1c, 0x72, 0x0a, 0x02, 0x04, 0x41, 0x8e, 0x39, 0xe6, 0x47, 0x04, 0x5d, 0xdd, - 0x33, 0xd3, 0x33, 0x9c, 0x19, 0xd1, 0x5a, 0x3b, 0xc8, 0x8d, 0xd3, 0x5d, 0x8f, 0xaf, 0xaa, 0xba, - 0xaa, 0xba, 0x4b, 0x82, 0xb4, 0xd1, 0x36, 0xd7, 0xda, 0x1d, 0xcb, 0xb1, 0x48, 0xca, 0x68, 0x9b, - 0x85, 0xb9, 0xba, 0x65, 0xd5, 0x1b, 0x6c, 0xdd, 0x68, 0x9b, 0xeb, 0x46, 0xab, 0x65, 0x39, 0x86, - 0x63, 0x5a, 0x2d, 0x5b, 0x90, 0xd0, 0x4f, 0x61, 0xf4, 0x7d, 0x66, 0xd8, 0xe6, 0x71, 0x83, 0x1d, - 0xb6, 0x8d, 0x13, 0x46, 0x72, 0x90, 0x6a, 0x1a, 0x5f, 0xe4, 0xb5, 0x45, 0x6d, 0x35, 0xad, 0xf3, - 0x9f, 0xb8, 0x62, 0xb6, 0xf2, 0x7d, 0x72, 0xc5, 0x6c, 0x11, 0x02, 0xfd, 0x0d, 0xd3, 0x76, 0xf2, - 0xa9, 0xc5, 0xd4, 0x6a, 0x5a, 0xc7, 0xdf, 0x7c, 0xcd, 0x76, 0x58, 0x3b, 0xdf, 0x8f, 0x64, 0xf8, - 0x9b, 0x7e, 0xad, 0xc1, 0xd8, 0x81, 0xd1, 0x31, 0x9a, 0xcc, 0x61, 0x9d, 0x4d, 0xab, 0x75, 0x6a, - 0xd6, 0x39, 0x5d, 0xcb, 0x68, 0x32, 0xa9, 0x00, 0x7f, 0x93, 0x7b, 0x90, 0x6d, 0xbb, 0x64, 0x55, - 0xe7, 0xbc, 0xcd, 0x50, 0x59, 0xb6, 0x48, 0xd6, 0xb8, 0x2d, 0x9e, 0x84, 0xca, 0x79, 0x9b, 0xe9, - 0xa3, 0x6d, 0xf5, 0x93, 0xac, 0xc1, 0xf0, 0xa9, 0xc4, 0x9f, 0x4f, 0x2d, 0x6a, 0xab, 0x19, 0xc9, - 0x14, 0x30, 0x4a, 0xf7, 0x68, 0x68, 0x1b, 0xd2, 0x9e, 0xbc, 0x1f, 0x1a, 0xcb, 0x24, 0x0c, 0x3c, - 0x35, 0x1a, 0x67, 0x02, 0x48, 0x5a, 0x17, 0x1f, 0xf4, 0x57, 0x1a, 0x8c, 0xee, 0x31, 0xa7, 0x63, - 0x9e, 0xd8, 0xbb, 0x56, 0xfd, 0x90, 0x39, 0x64, 0x16, 0xd2, 0xcf, 0xac, 0xce, 0xe7, 0xac, 0x53, - 0x35, 0x6b, 0x52, 0xf7, 0xb0, 0x58, 0x28, 0xd5, 0x48, 0x11, 0x46, 0x9a, 0x82, 0xba, 0xda, 0xb0, - 0xea, 0x76, 0xbe, 0x6f, 0x31, 0xb5, 0x9a, 0x29, 0x8e, 0xa1, 0x76, 0x5f, 0x8c, 0x9e, 0x69, 0x7a, - 0xbf, 0x6d, 0xb2, 0x0e, 0xa3, 0x52, 0xa0, 0xed, 0x18, 0xce, 0x99, 0x8d, 0x00, 0xb2, 0x45, 0x40, - 0xa6, 0x43, 0xc7, 0x70, 0x98, 0x3e, 0x22, 0x08, 0x0e, 0x71, 0x9f, 0xde, 0x85, 0x21, 0x29, 0x2b, - 0xd2, 0x07, 0x9e, 0x21, 0x7d, 0xaa, 0x21, 0xf7, 0x21, 0x27, 0x99, 0x3e, 0xe4, 0xdf, 0x15, 0xb3, - 0xc9, 0x38, 0xb7, 0x63, 0xfa, 0xdc, 0xfc, 0x77, 0x0c, 0xf7, 0x3e, 0x80, 0x0f, 0x3f, 0x52, 0xeb, - 0x1d, 0x18, 0x44, 0x52, 0xd7, 0xe6, 0x29, 0xd5, 0x66, 0x4f, 0xa5, 0x2e, 0x89, 0xe8, 0x7b, 0x30, - 0x71, 0x78, 0x56, 0xaf, 0x33, 0x9b, 0x1f, 0xe7, 0xe4, 0x98, 0x46, 0x23, 0x7a, 0x08, 0xd3, 0xdb, - 0x46, 0xa7, 0x71, 0x7e, 0xe8, 0x58, 0xed, 0xb6, 0xd9, 0xaa, 0x5f, 0x46, 0xc6, 0x3a, 0xa4, 0x2a, - 0x46, 0xfd, 0x7b, 0x30, 0x7c, 0x0e, 0xa3, 0x87, 0xce, 0x59, 0xed, 0x7c, 0xff, 0x29, 0xeb, 0x3c, - 0x35, 0xd9, 0xb3, 0x38, 0x56, 0xeb, 0x59, 0x8b, 0x75, 0x5c, 0x56, 0xfc, 0x20, 0x59, 0xe8, 0x33, - 0x6b, 0xf2, 0x6c, 0xf5, 0x99, 0x35, 0xb2, 0x08, 0x99, 0x1a, 0xb3, 0x4f, 0x3a, 0x66, 0x9b, 0x7b, - 0x40, 0x26, 0x9e, 0xba, 0x44, 0xff, 0xa9, 0xc1, 0x40, 0xa5, 0x63, 0x1a, 0x0d, 0x32, 0x03, 0xc3, - 0x0e, 0xff, 0xe1, 0x9f, 0xb8, 0x21, 0xfc, 0x2e, 0xd5, 0xf8, 0x96, 0xcd, 0x11, 0xf1, 0x2d, 0xa1, - 0x6f, 0x08, 0xbf, 0x4b, 0x35, 0x72, 0x17, 0xfc, 0x13, 0x5e, 0xb5, 0x99, 0x48, 0xf8, 0x4c, 0x31, - 0x1b, 0x4c, 0x05, 0x7d, 0xc4, 0x23, 0xe2, 0xa7, 0xfb, 0x3a, 0x8c, 0x59, 0xc7, 0x4f, 0xd8, 0x89, - 0x63, 0x3e, 0x65, 0x55, 0xe1, 0x01, 0x01, 0x2d, 0xeb, 0x2d, 0x63, 0x30, 0xc9, 0x1c, 0xf4, 0x3b, - 0x46, 0xdd, 0xce, 0x0f, 0xa0, 0xd0, 0x61, 0x14, 0x5a, 0x31, 0xea, 0x3a, 0xae, 0x92, 0xab, 0x90, - 0x39, 0xe9, 0x30, 0xc3, 0x61, 0x55, 0x3c, 0x60, 0x83, 0x28, 0x02, 0xc4, 0x12, 0x3f, 0x07, 0xf4, - 0xef, 0x1a, 0x0c, 0x1e, 0xe1, 0xa1, 0x4e, 0x4e, 0xa8, 0x04, 0xfb, 0x54, 0xaf, 0xa4, 0x82, 0x5e, - 0x21, 0xd0, 0xcf, 0x73, 0xda, 0x2d, 0x67, 0x98, 0xdf, 0x14, 0x06, 0x65, 0x7e, 0x0d, 0x74, 0xe5, - 0x97, 0xdc, 0x21, 0x14, 0x46, 0x2a, 0xac, 0xd9, 0x6e, 0x18, 0x0e, 0x3b, 0x30, 0x9c, 0xc7, 0x12, - 0x77, 0x60, 0xcd, 0x33, 0x7c, 0x28, 0xca, 0x70, 0xfa, 0x47, 0x0d, 0xd2, 0x65, 0xc3, 0x96, 0xe5, - 0xf2, 0x2e, 0x8c, 0xd4, 0x3b, 0x46, 0xfb, 0x71, 0xf5, 0x04, 0xbf, 0xd1, 0xba, 0x4c, 0x31, 0x87, - 0x3c, 0x3b, 0x7c, 0x43, 0xd0, 0xe9, 0x99, 0xba, 0xff, 0x41, 0xee, 0x01, 0x58, 0x6d, 0xd6, 0x11, - 0x85, 0x1e, 0x8d, 0xce, 0x14, 0x67, 0x90, 0xc5, 0x13, 0xbc, 0xb6, 0xef, 0x11, 0xe8, 0x0a, 0x71, - 0x61, 0x03, 0xc0, 0xdf, 0x21, 0xb7, 0x21, 0xed, 0xed, 0xe5, 0x35, 0x25, 0xf8, 0x1e, 0x8d, 0xee, - 0x13, 0xd0, 0x06, 0x64, 0x14, 0x48, 0x64, 0x1e, 0xa0, 0x75, 0xd6, 0xac, 0x36, 0x8c, 0x73, 0xd6, - 0xb1, 0x11, 0xf8, 0x80, 0x9e, 0x6e, 0x9d, 0x35, 0x77, 0x71, 0x81, 0x6f, 0x9b, 0xad, 0xf6, 0x99, - 0x53, 0xb5, 0xcd, 0xe7, 0x0c, 0x53, 0x7e, 0x40, 0x4f, 0xe3, 0xca, 0xa1, 0xf9, 0x9c, 0xf1, 0xf8, - 0x5b, 0x67, 0x8e, 0xb7, 0x9f, 0xc2, 0x7d, 0x10, 0x4b, 0x9c, 0x80, 0xfe, 0x59, 0x83, 0xb4, 0x07, - 0x83, 0xac, 0xc0, 0xa8, 0x07, 0x04, 0x03, 0x27, 0x8e, 0x41, 0x70, 0x91, 0xec, 0xc2, 0xb8, 0x7f, - 0xa0, 0x85, 0x47, 0x5d, 0xff, 0x5c, 0x0d, 0xda, 0xb5, 0x16, 0xea, 0x5b, 0xb6, 0x9e, 0x6b, 0x87, - 0x56, 0x0a, 0x0f, 0x21, 0x17, 0xa6, 0x22, 0x6b, 0x30, 0xe4, 0xca, 0x15, 0xfe, 0x9a, 0x0c, 0x26, - 0x8b, 0x0c, 0x97, 0x4b, 0x44, 0xbf, 0xeb, 0x87, 0x0c, 0x16, 0x84, 0x84, 0xf6, 0x18, 0x5d, 0x0e, - 0x1e, 0xc2, 0xb8, 0xd5, 0x76, 0xcc, 0xa6, 0xf9, 0x1c, 0x01, 0x8b, 0x5e, 0x25, 0x0a, 0xff, 0x94, - 0xb4, 0xc5, 0xdf, 0xc5, 0x76, 0x95, 0xb3, 0x42, 0x2b, 0xe4, 0x56, 0x48, 0x46, 0xdd, 0x32, 0x1a, - 0x78, 0xe4, 0xb5, 0x20, 0xf1, 0x8e, 0x65, 0x34, 0x48, 0x39, 0xca, 0x79, 0x03, 0xe8, 0xbc, 0x25, - 0x99, 0x09, 0x9e, 0x1d, 0x3d, 0xb8, 0x8f, 0xdc, 0x01, 0x62, 0x9c, 0x9c, 0x30, 0xdb, 0xae, 0xb6, - 0x59, 0xa7, 0x69, 0xda, 0x36, 0x9e, 0xd6, 0x41, 0xbc, 0x53, 0x8c, 0x8b, 0x9d, 0x03, 0x7f, 0x23, - 0x39, 0x6b, 0xc8, 0x2b, 0x30, 0x19, 0xaa, 0x3a, 0x55, 0xf4, 0xe3, 0x30, 0xba, 0x8c, 0x04, 0x4b, - 0x4f, 0x99, 0x7b, 0x35, 0x0f, 0x43, 0xb2, 0x87, 0xe6, 0xd3, 0xa8, 0xd3, 0xfd, 0xe4, 0xfe, 0x7e, - 0x62, 0x1d, 0x97, 0x6a, 0x79, 0x10, 0xfe, 0xc6, 0x0f, 0x72, 0x07, 0xa0, 0x65, 0xd8, 0x6e, 0x1e, - 0x66, 0xd0, 0xee, 0x6c, 0x30, 0xa9, 0xf4, 0x74, 0xcb, 0x4b, 0xdc, 0x19, 0x18, 0x7e, 0x62, 0x1d, - 0x8b, 0xa8, 0x8c, 0x88, 0xda, 0xf2, 0xc4, 0x3a, 0xe6, 0x5e, 0xff, 0x41, 0xce, 0x4d, 0x09, 0xc8, - 0x26, 0xd6, 0x42, 0x74, 0xba, 0xce, 0x7e, 0x7a, 0xc6, 0x6c, 0x87, 0x57, 0x0b, 0x51, 0xeb, 0x22, - 0xaa, 0x85, 0x12, 0x1d, 0x3d, 0x63, 0xfb, 0x1f, 0xf4, 0x0e, 0xe4, 0x02, 0xa2, 0xda, 0x8d, 0xf3, - 0x40, 0xd1, 0xd4, 0x02, 0x45, 0x93, 0xae, 0x03, 0xd9, 0x62, 0x0d, 0x16, 0xd2, 0x9c, 0xc0, 0x70, - 0x07, 0x72, 0x01, 0x86, 0x0b, 0xe4, 0xdf, 0x86, 0xb1, 0x1d, 0xe6, 0xf4, 0x2a, 0x7c, 0x0b, 0x46, - 0x7d, 0x6a, 0x2e, 0xf9, 0x52, 0x2e, 0x98, 0x82, 0x09, 0x57, 0xca, 0xae, 0x69, 0x3b, 0x52, 0x2f, - 0x3d, 0x80, 0xf1, 0xe0, 0x32, 0x57, 0xf0, 0x36, 0x8c, 0x09, 0x05, 0x96, 0x6c, 0xe1, 0x6e, 0xc4, - 0x88, 0xaf, 0xc3, 0xed, 0xee, 0x7a, 0xd6, 0x56, 0x3f, 0x6d, 0xfa, 0x86, 0x1b, 0x36, 0x6c, 0xcb, - 0xae, 0x7d, 0x8b, 0x30, 0x80, 0x7d, 0x47, 0x82, 0x15, 0x7d, 0x45, 0x50, 0x88, 0x0d, 0x3f, 0x46, - 0x92, 0x4f, 0xfa, 0x30, 0xa6, 0xa7, 0x73, 0xf2, 0x1d, 0xe6, 0x20, 0xad, 0xdd, 0x83, 0x13, 0x5f, - 0x83, 0xac, 0x42, 0xce, 0x65, 0x53, 0x18, 0x44, 0x59, 0xae, 0x6d, 0x2a, 0x24, 0xb9, 0x23, 0x03, - 0x15, 0x30, 0x24, 0x01, 0xd2, 0xab, 0x18, 0x28, 0x05, 0xfe, 0xc5, 0x46, 0xdf, 0x87, 0x29, 0x9d, - 0xd5, 0x4d, 0xdb, 0x61, 0x1d, 0xd1, 0xe8, 0x5d, 0x35, 0xcb, 0x30, 0x28, 0xda, 0xbb, 0xe4, 0xcd, - 0x20, 0xaf, 0xa4, 0x91, 0x5b, 0xb4, 0x08, 0x13, 0x61, 0x6e, 0xae, 0x36, 0xe9, 0xae, 0x40, 0x2d, - 0x20, 0xfc, 0x36, 0x28, 0xe8, 0x7b, 0xf0, 0x1c, 0x6f, 0x62, 0x9e, 0x34, 0x71, 0x6f, 0x4d, 0xeb, - 0x69, 0x57, 0x1c, 0x5e, 0x62, 0x4c, 0x5e, 0x32, 0x9a, 0x6d, 0x7e, 0xfe, 0xb1, 0x3a, 0x0f, 0xeb, - 0x60, 0xda, 0x9b, 0x72, 0x85, 0x12, 0xc8, 0x05, 0x14, 0xb6, 0x1b, 0xe7, 0xf4, 0x14, 0x4f, 0x5d, - 0xef, 0x18, 0x54, 0xa7, 0xf7, 0x05, 0x6f, 0x31, 0x01, 0x63, 0x53, 0x21, 0x63, 0xdf, 0xc2, 0xf8, - 0xa9, 0xaa, 0xc9, 0xcb, 0x30, 0x24, 0xb6, 0xdd, 0xb8, 0x07, 0x3c, 0xeb, 0xee, 0xd1, 0x4f, 0x21, - 0xff, 0xa8, 0x5d, 0x33, 0x1c, 0x76, 0xe4, 0x3d, 0x2a, 0x98, 0x0b, 0x34, 0xf1, 0x2e, 0xe6, 0xdf, - 0xa0, 0xfa, 0xe2, 0x6e, 0x50, 0x34, 0x0f, 0xd3, 0x11, 0xc2, 0xb9, 0x63, 0x7e, 0xa7, 0x41, 0xde, - 0x43, 0xfc, 0xfe, 0x59, 0xa3, 0x51, 0x6a, 0x9d, 0x5a, 0x3f, 0x9e, 0x83, 0xc8, 0x35, 0x18, 0xb3, - 0x5a, 0x8d, 0xf3, 0x2a, 0xbf, 0xb8, 0xd9, 0x0e, 0x7f, 0x8e, 0x61, 0x6f, 0x1c, 0xd6, 0x47, 0xf9, - 0xf2, 0x2e, 0xae, 0xee, 0x5a, 0x75, 0xfa, 0x8d, 0x06, 0xd9, 0x20, 0x28, 0x7e, 0x42, 0x8f, 0xe2, - 0x4f, 0xa8, 0xbc, 0xb6, 0x76, 0x5d, 0xaf, 0xfb, 0x7a, 0xb8, 0x5e, 0x87, 0xdf, 0x87, 0xa9, 0x8b, - 0xdf, 0x87, 0xf4, 0x63, 0x98, 0x8e, 0xf0, 0x1b, 0x0f, 0xf8, 0x7b, 0x30, 0x2e, 0xed, 0x3f, 0x3d, - 0x6b, 0x34, 0xaa, 0x66, 0xeb, 0xd4, 0x72, 0x43, 0x3f, 0xa1, 0x40, 0xf6, 0x98, 0xc6, 0x9e, 0x05, - 0xbe, 0x6d, 0xfa, 0x57, 0x0d, 0xa6, 0x78, 0x8d, 0xf4, 0x5e, 0x62, 0xbd, 0x9c, 0xd8, 0x57, 0x61, - 0xd2, 0xf6, 0x18, 0xaa, 0x46, 0xa3, 0x6e, 0x75, 0x4c, 0xe7, 0x71, 0x53, 0x06, 0x67, 0xc2, 0xdf, - 0x7b, 0xe0, 0x6e, 0x91, 0x97, 0x21, 0xdb, 0x11, 0x82, 0xab, 0xad, 0xb3, 0xe6, 0x31, 0xeb, 0x60, - 0xb4, 0x06, 0xf4, 0x51, 0xb9, 0x5a, 0xc6, 0x45, 0xb2, 0x02, 0xd9, 0x86, 0x55, 0xaf, 0x2a, 0x39, - 0xd9, 0x8f, 0x39, 0x39, 0xd2, 0xb0, 0xea, 0x47, 0x5e, 0x5a, 0xce, 0xc0, 0x30, 0xfa, 0x94, 0x43, - 0x1b, 0x10, 0xd0, 0xf0, 0xbb, 0x54, 0xa3, 0xf7, 0x44, 0x27, 0x50, 0xcd, 0xe9, 0xb5, 0x1e, 0xfe, - 0x52, 0x83, 0x59, 0xce, 0xfb, 0xd8, 0x3a, 0x6b, 0xd4, 0xbe, 0x5f, 0x19, 0x79, 0x0b, 0xf2, 0x8c, - 0x3f, 0x45, 0xab, 0xb6, 0x7c, 0x8b, 0x76, 0x39, 0x65, 0x9a, 0xa9, 0x4f, 0x55, 0xdf, 0x2f, 0x09, - 0xa6, 0x1c, 0xc0, 0x4c, 0x34, 0x1c, 0xd1, 0x26, 0xa7, 0x6d, 0xdc, 0x41, 0x95, 0xaa, 0xc3, 0x34, - 0x74, 0xd8, 0x84, 0x1d, 0xe2, 0x2b, 0xd5, 0x6c, 0xda, 0xc1, 0xca, 0x24, 0x4f, 0xd9, 0x8b, 0x57, - 0xc7, 0x65, 0x18, 0x75, 0x8f, 0x32, 0xbf, 0xab, 0xd9, 0x72, 0x9e, 0xe4, 0x9e, 0x6f, 0x7e, 0x4b, - 0xb3, 0xe9, 0x3e, 0x56, 0x29, 0x4f, 0x27, 0xc7, 0x7e, 0x1f, 0x72, 0x4a, 0x0a, 0xf0, 0xcc, 0x09, - 0xb6, 0xe0, 0xc0, 0xb4, 0x45, 0xcf, 0x36, 0xd5, 0x4f, 0x9b, 0xda, 0x90, 0xd7, 0x59, 0xdb, 0xea, - 0x38, 0x3e, 0x59, 0x2f, 0xb6, 0x44, 0x29, 0x4d, 0xf5, 0xac, 0x34, 0x0f, 0xd3, 0x11, 0x4a, 0x79, - 0x51, 0xfb, 0x93, 0x06, 0xe9, 0x3d, 0xab, 0xc6, 0x44, 0xdd, 0x98, 0x07, 0x10, 0x00, 0x94, 0x47, - 0x40, 0x1a, 0x57, 0xf0, 0xce, 0x1a, 0x28, 0x57, 0x7d, 0xa1, 0x72, 0xb5, 0x06, 0xe0, 0x55, 0x0a, - 0x3b, 0xe6, 0xa9, 0xae, 0x50, 0x90, 0x6b, 0xfe, 0x05, 0xb8, 0x1f, 0x89, 0x47, 0x54, 0x43, 0xfc, - 0xeb, 0xf0, 0x3c, 0x40, 0x93, 0x03, 0xac, 0xb6, 0xf9, 0x83, 0x56, 0x1c, 0xb2, 0x34, 0xae, 0xf0, - 0xd7, 0x2c, 0x7d, 0x1d, 0x32, 0x5b, 0x86, 0x63, 0x1c, 0x32, 0x07, 0x2d, 0x88, 0x7a, 0xc0, 0x10, - 0xe8, 0x47, 0x5e, 0x81, 0x18, 0x7f, 0x53, 0x13, 0x72, 0x87, 0xc6, 0xd3, 0xe0, 0x25, 0xf2, 0x02, - 0xeb, 0xa3, 0xdf, 0x41, 0xa1, 0x31, 0x48, 0xaa, 0x7b, 0x0c, 0x92, 0x83, 0xac, 0xa2, 0x8a, 0x3b, - 0xfd, 0x17, 0x9a, 0xd0, 0x8e, 0x8e, 0x77, 0xb5, 0xaf, 0xc0, 0x00, 0x5a, 0x25, 0x4b, 0xb6, 0x70, - 0x9d, 0x17, 0x1a, 0x5d, 0x6c, 0x92, 0x5b, 0x30, 0x5c, 0x33, 0x1c, 0x43, 0xd6, 0x6b, 0xff, 0x6e, - 0xa9, 0xf8, 0x40, 0x1f, 0xaa, 0x89, 0x0f, 0xb2, 0x04, 0x23, 0x0e, 0x6b, 0xd9, 0x56, 0xa7, 0x7a, - 0x6c, 0x19, 0x9d, 0x9a, 0xbc, 0x00, 0x64, 0xc4, 0xda, 0x43, 0xbe, 0xe4, 0x82, 0x93, 0x48, 0x38, - 0xb8, 0x3c, 0x56, 0x6b, 0xbe, 0x58, 0xe3, 0x90, 0x4d, 0xe6, 0x1e, 0x4f, 0xba, 0x05, 0x93, 0x5d, - 0x3b, 0x3c, 0x21, 0x6e, 0x03, 0x1e, 0x53, 0x93, 0x25, 0x5d, 0x45, 0x5d, 0x12, 0xfa, 0x86, 0xa8, - 0xd8, 0x5c, 0x0a, 0x6a, 0xb5, 0x7b, 0x73, 0x3f, 0x7d, 0x47, 0x94, 0x46, 0x95, 0x8f, 0x2b, 0xbf, - 0x06, 0x83, 0xe8, 0x19, 0x3b, 0x30, 0x20, 0xf0, 0xfd, 0x26, 0x77, 0xa9, 0xee, 0x83, 0x0f, 0xb8, - 0xfd, 0x05, 0x8e, 0x3c, 0xdd, 0x00, 0x12, 0x92, 0xc9, 0x11, 0xf5, 0x14, 0x48, 0xfa, 0x0f, 0x0d, - 0x16, 0x0e, 0xd5, 0x52, 0xef, 0x65, 0xc9, 0x8f, 0xd4, 0xc2, 0xd4, 0x52, 0x9d, 0x0a, 0x94, 0x6a, - 0xb2, 0x07, 0x53, 0x8a, 0x34, 0x25, 0x8b, 0x45, 0x62, 0xe6, 0x45, 0x38, 0xbb, 0x91, 0xea, 0x0a, - 0x08, 0x1f, 0x3e, 0xbd, 0x07, 0x73, 0xb1, 0x96, 0xc9, 0x97, 0x83, 0x87, 0x44, 0x0b, 0x36, 0x8d, - 0xb7, 0x61, 0x61, 0xe7, 0x42, 0xa7, 0xc4, 0x31, 0x37, 0x61, 0x6e, 0x27, 0x49, 0x6f, 0xac, 0x99, - 0xda, 0xa5, 0xcc, 0x7c, 0x17, 0x96, 0xa2, 0xd5, 0x29, 0x6f, 0xb8, 0xa4, 0x67, 0xcf, 0x77, 0x1a, - 0x4c, 0x47, 0x70, 0xf3, 0xc4, 0x8d, 0x37, 0xf2, 0x32, 0x91, 0x8f, 0xb5, 0x3b, 0x75, 0x29, 0xbb, - 0x9f, 0xc3, 0xd5, 0x24, 0xbb, 0xb9, 0xa7, 0x8f, 0x60, 0x26, 0x4a, 0xa3, 0xda, 0x2b, 0x67, 0xe3, - 0xb4, 0xf2, 0xfe, 0x75, 0xc5, 0x8e, 0x5c, 0xb7, 0x69, 0x11, 0xa6, 0xf8, 0x9d, 0xc0, 0x67, 0xeb, - 0xc1, 0xcf, 0x53, 0x30, 0x11, 0xe6, 0xe1, 0x75, 0xee, 0x3f, 0x1a, 0x2c, 0x1d, 0x32, 0x27, 0x7a, - 0x06, 0xff, 0xbf, 0xbb, 0x35, 0x85, 0x52, 0xf1, 0x08, 0x66, 0x42, 0x42, 0xbb, 0xd2, 0x51, 0x78, - 0x2e, 0x1a, 0xb7, 0x7e, 0x85, 0x45, 0xdb, 0x43, 0xef, 0xc3, 0xd5, 0x24, 0x6b, 0x2f, 0xc8, 0x4b, - 0x71, 0xd6, 0x2f, 0xf6, 0x55, 0x1c, 0xbf, 0x38, 0x33, 0x89, 0xda, 0x13, 0x2d, 0xd7, 0x5e, 0xc0, - 0xf2, 0x07, 0xb0, 0x12, 0xab, 0xbb, 0xc7, 0x54, 0xfd, 0x8b, 0x06, 0x33, 0xd1, 0x02, 0x2e, 0xc8, - 0xd6, 0xcb, 0x9f, 0x91, 0x44, 0x77, 0xa4, 0x5e, 0xc0, 0x1d, 0x3f, 0xd7, 0x80, 0x5e, 0xe0, 0x0f, - 0x1e, 0x0e, 0x03, 0xe6, 0xe3, 0xf4, 0xab, 0x69, 0xbc, 0x90, 0x80, 0x81, 0x67, 0x72, 0x81, 0xc5, - 0x6d, 0xd9, 0xf4, 0x5f, 0x1a, 0x2c, 0x7f, 0x68, 0x34, 0x4c, 0xfe, 0xda, 0x4e, 0x2a, 0xf9, 0x97, - 0x99, 0xa9, 0xfd, 0x1f, 0xd4, 0xc9, 0x77, 0x61, 0x29, 0xd9, 0x3a, 0x99, 0x73, 0xa6, 0x5d, 0x7d, - 0xca, 0xe9, 0xd0, 0xae, 0x61, 0x7d, 0xc8, 0xb4, 0x91, 0xed, 0xe6, 0x23, 0x18, 0x0d, 0xfc, 0xbd, - 0x97, 0xe4, 0x60, 0xe4, 0x51, 0xf9, 0x83, 0xf2, 0xfe, 0x51, 0xb9, 0x5a, 0xf9, 0xf8, 0x60, 0x3b, - 0xf7, 0x12, 0x01, 0x18, 0xdc, 0xda, 0x7f, 0xf4, 0x70, 0x77, 0x3b, 0xa7, 0x91, 0x21, 0x48, 0x95, - 0xca, 0x95, 0x5c, 0x1f, 0x19, 0x81, 0xe1, 0xad, 0xd2, 0xe1, 0xa6, 0xbe, 0x5d, 0xd9, 0xce, 0xa5, - 0xc8, 0x18, 0x64, 0x36, 0x1f, 0x54, 0xb6, 0x77, 0xf6, 0xf5, 0xd2, 0xe6, 0x83, 0xdd, 0x5c, 0xff, - 0xcd, 0x9f, 0x40, 0x2e, 0x3c, 0x9a, 0x27, 0x79, 0x98, 0x74, 0x25, 0xef, 0x1f, 0x54, 0x4a, 0x7b, - 0xa5, 0x4f, 0x1e, 0x54, 0x4a, 0xfb, 0xe5, 0xdc, 0x4b, 0x5c, 0xd8, 0x5e, 0xa9, 0xcc, 0x57, 0xb8, - 0x0e, 0xfe, 0xf5, 0xe0, 0x23, 0xf1, 0xd5, 0x77, 0x73, 0x07, 0x06, 0x70, 0x3c, 0x42, 0x32, 0x30, - 0x74, 0xb0, 0x5d, 0xde, 0x2a, 0x95, 0x77, 0x72, 0x2f, 0xf1, 0x0f, 0xfd, 0x51, 0xb9, 0xcc, 0x3f, - 0x34, 0x32, 0x0a, 0xe9, 0xcd, 0xfd, 0xbd, 0x83, 0xdd, 0xed, 0xca, 0xf6, 0x56, 0xae, 0x8f, 0xe3, - 0xfd, 0xa0, 0xb4, 0xbb, 0xbb, 0xbd, 0x95, 0x4b, 0x91, 0x34, 0x0c, 0x6c, 0xeb, 0xfa, 0xbe, 0x9e, - 0xfb, 0xa2, 0xf8, 0xdb, 0x19, 0x18, 0xda, 0x33, 0x5a, 0x46, 0x9d, 0x75, 0x48, 0x13, 0x32, 0xca, - 0x38, 0x98, 0x5c, 0x41, 0xa7, 0x77, 0xcf, 0x9a, 0x0b, 0x53, 0xdd, 0x1b, 0xbc, 0xaa, 0xaf, 0xfd, - 0xec, 0x6f, 0xff, 0xfe, 0x4d, 0xdf, 0x2a, 0xcd, 0xe3, 0x3f, 0x1c, 0x48, 0xa1, 0xeb, 0x0a, 0xd9, - 0x46, 0xe0, 0x2c, 0x91, 0xcf, 0x60, 0xd8, 0x9d, 0xb1, 0x12, 0x31, 0xf3, 0x0e, 0x4d, 0x7f, 0x0b, - 0x24, 0xb4, 0xca, 0xb5, 0xac, 0xa2, 0x16, 0x4a, 0x16, 0x03, 0x5a, 0x5c, 0x9a, 0xf5, 0x2f, 0xdd, - 0x3a, 0xf2, 0x15, 0x79, 0x02, 0x19, 0x65, 0xfa, 0x2c, 0xcd, 0xe9, 0x1e, 0x60, 0x4b, 0x73, 0xc2, - 0x83, 0x6a, 0x7a, 0x0b, 0x15, 0xbd, 0x4c, 0x96, 0x03, 0x8a, 0x14, 0x32, 0x55, 0xd7, 0x09, 0x8c, - 0xa8, 0xf3, 0x62, 0x92, 0x0f, 0x20, 0x57, 0x4a, 0x5d, 0x61, 0x3a, 0x62, 0x87, 0xab, 0x5b, 0x42, - 0x75, 0xb3, 0x64, 0x26, 0xd2, 0x2e, 0x14, 0x7a, 0xea, 0xc6, 0x47, 0xfc, 0x65, 0x57, 0x8d, 0x8f, - 0x3a, 0x8b, 0x0d, 0xc4, 0xc7, 0x1f, 0xbb, 0xd2, 0xeb, 0xa8, 0x61, 0x29, 0x32, 0x3e, 0x48, 0xb6, - 0x21, 0xa6, 0xaf, 0xe4, 0x18, 0xd2, 0xde, 0x50, 0x98, 0x4c, 0xb9, 0x78, 0x03, 0x33, 0xe5, 0xc2, - 0x44, 0x78, 0x99, 0x6b, 0xb8, 0x81, 0x1a, 0x96, 0xc9, 0x52, 0xd8, 0x06, 0x41, 0xa4, 0x3a, 0x4c, - 0x04, 0x5f, 0x18, 0x32, 0x19, 0x90, 0xd5, 0x15, 0x7c, 0xc5, 0x84, 0xd8, 0xe0, 0x23, 0xcd, 0xfa, - 0x97, 0xee, 0xb0, 0xef, 0x2b, 0x62, 0x43, 0x36, 0x38, 0x03, 0x26, 0x05, 0x94, 0x17, 0x39, 0x56, - 0x2e, 0xe4, 0x23, 0xf7, 0x94, 0x53, 0x40, 0x67, 0x03, 0x1a, 0x83, 0x94, 0x1b, 0x72, 0xf0, 0x4c, - 0x3e, 0x05, 0xf0, 0xe7, 0xaa, 0xc4, 0x8b, 0x74, 0x70, 0x1a, 0x54, 0x98, 0xec, 0x5a, 0xe7, 0x8a, - 0xae, 0xa2, 0xa2, 0x19, 0x72, 0x25, 0x6c, 0x9a, 0x2b, 0xee, 0x39, 0x8c, 0x77, 0x4d, 0x47, 0xc9, - 0x3c, 0xca, 0x8a, 0x1b, 0xc9, 0x16, 0x66, 0xe3, 0xb6, 0x95, 0x68, 0x15, 0x16, 0x02, 0x1a, 0xbb, - 0x88, 0x37, 0xb4, 0x9b, 0xe4, 0x99, 0x32, 0x98, 0xf6, 0x26, 0x9d, 0xf3, 0x41, 0x3b, 0x42, 0x63, - 0x59, 0xa9, 0x3b, 0x7a, 0xfa, 0x48, 0xaf, 0xa1, 0xee, 0x45, 0xb2, 0x10, 0x6d, 0xad, 0xa7, 0xa3, - 0x85, 0x7f, 0x9f, 0x50, 0x86, 0x72, 0x32, 0x8c, 0x91, 0x83, 0xc7, 0x42, 0x3e, 0x72, 0x4f, 0xd1, - 0x17, 0x0a, 0x63, 0x90, 0x92, 0x1b, 0xfa, 0xb5, 0x26, 0xde, 0xaa, 0xe1, 0xd1, 0x19, 0x59, 0xf4, - 0x44, 0xc7, 0x0c, 0xf9, 0x0a, 0x0b, 0x09, 0x14, 0x1c, 0xc2, 0x1b, 0x08, 0xe1, 0x15, 0x7a, 0x2b, - 0x26, 0x39, 0xa2, 0x38, 0x39, 0xa4, 0xcf, 0xf0, 0x50, 0xb9, 0xff, 0xb4, 0xe3, 0x1d, 0xaa, 0xe0, - 0x2c, 0xce, 0x3f, 0x54, 0xea, 0xbc, 0x8c, 0x52, 0xd4, 0x39, 0x47, 0xbb, 0x0e, 0x95, 0xa4, 0xe2, - 0xf2, 0x7f, 0xad, 0xc1, 0x95, 0x98, 0x37, 0x23, 0x59, 0x16, 0x7d, 0x37, 0xf1, 0x59, 0x58, 0x58, - 0x4a, 0x26, 0xe2, 0x38, 0xd6, 0x11, 0xc7, 0x0d, 0xba, 0x12, 0xc0, 0x11, 0xc3, 0xc2, 0x41, 0xfd, - 0x5e, 0x83, 0x2b, 0x3b, 0x89, 0xa0, 0x76, 0x7a, 0x01, 0x95, 0xf4, 0x26, 0xa5, 0x6f, 0x22, 0xa8, - 0x57, 0xc9, 0x7a, 0xfc, 0x99, 0xf0, 0x59, 0xd6, 0xbf, 0x74, 0xef, 0x99, 0x5f, 0x91, 0x6f, 0x35, - 0x28, 0xc4, 0x3f, 0xc3, 0xc8, 0xb5, 0x04, 0xd5, 0x6a, 0x27, 0x58, 0xb9, 0x90, 0x8e, 0xa3, 0xdc, - 0x40, 0x94, 0xaf, 0x91, 0x62, 0x0f, 0x28, 0x39, 0x97, 0x5a, 0x64, 0xbf, 0xd1, 0xa0, 0x10, 0xff, - 0xf2, 0x90, 0x40, 0x2f, 0x7c, 0x88, 0x49, 0xa0, 0x17, 0x3c, 0x61, 0x68, 0x11, 0x81, 0xde, 0xa6, - 0xd7, 0xc3, 0x31, 0x8e, 0xe1, 0xe2, 0x61, 0x96, 0x9e, 0x4c, 0x06, 0xb8, 0xd3, 0x23, 0xc0, 0x0b, - 0x5e, 0x39, 0xf1, 0x9e, 0x8c, 0xe1, 0x52, 0x43, 0xfe, 0x07, 0x0d, 0xe6, 0x13, 0x6f, 0xee, 0xe4, - 0x46, 0x32, 0x06, 0x35, 0xf0, 0xd7, 0x7b, 0x21, 0xe5, 0x88, 0xdf, 0x41, 0xc4, 0x6f, 0x92, 0xd7, - 0x7b, 0x43, 0x1c, 0x0e, 0xff, 0x27, 0x90, 0xf6, 0xa6, 0x9f, 0xb2, 0x8f, 0x87, 0x07, 0xaf, 0xb2, - 0x8f, 0x87, 0x86, 0xa4, 0xf2, 0x2e, 0x42, 0xa7, 0x83, 0xa1, 0x74, 0x89, 0x78, 0xe4, 0xa4, 0x6c, - 0x9c, 0xad, 0x29, 0xb2, 0xd5, 0xf9, 0x9e, 0x22, 0x5b, 0x99, 0x71, 0xc6, 0xcb, 0x46, 0x22, 0x2e, - 0xfb, 0x39, 0x8c, 0x77, 0x8d, 0xcc, 0x65, 0xb7, 0x89, 0x9b, 0xdf, 0xcb, 0x6e, 0x13, 0x33, 0x69, - 0x97, 0x9d, 0x8e, 0x2e, 0x84, 0x9a, 0x78, 0x88, 0x98, 0xeb, 0xb6, 0xc4, 0xff, 0x20, 0x28, 0x83, - 0x56, 0xe2, 0x35, 0xb2, 0x88, 0xc1, 0x6c, 0x61, 0x26, 0x7a, 0x93, 0x6b, 0x5d, 0x41, 0xad, 0x0b, - 0x64, 0xae, 0x2b, 0x73, 0x55, 0xe9, 0x9f, 0x8b, 0x0e, 0xe7, 0xcf, 0x56, 0x95, 0x0e, 0xd7, 0x35, - 0xa8, 0x55, 0x3a, 0x5c, 0x68, 0x18, 0x4b, 0x97, 0x51, 0xdb, 0x3c, 0x99, 0x8d, 0xd4, 0x26, 0x45, - 0x7f, 0xab, 0xc1, 0x5c, 0xd2, 0xc3, 0x88, 0xac, 0xa2, 0xfc, 0x1e, 0x5e, 0x86, 0x85, 0x6b, 0x3d, - 0x50, 0x72, 0x5c, 0xaf, 0x21, 0xae, 0x35, 0x7a, 0x23, 0x80, 0x2b, 0x89, 0x6f, 0x43, 0xbb, 0x59, - 0xac, 0x00, 0xf8, 0x5b, 0xe4, 0xfd, 0x1f, 0xe6, 0x16, 0x50, 0x34, 0x61, 0x34, 0x90, 0x39, 0xe4, - 0xa3, 0x1f, 0xab, 0xdb, 0x1f, 0x0f, 0xe2, 0x3f, 0x59, 0xdf, 0xfd, 0x6f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xe0, 0x75, 0x47, 0x6c, 0x94, 0x2d, 0x00, 0x00, + // 3152 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xc9, 0x6f, 0x23, 0xc7, + 0xd5, 0x77, 0x8b, 0xda, 0xf8, 0x28, 0x51, 0x9c, 0xd2, 0x32, 0x14, 0x47, 0xd2, 0x48, 0x25, 0x79, + 0x46, 0xb3, 0x49, 0x36, 0xc7, 0xdb, 0xc8, 0x63, 0x1b, 0x33, 0x92, 0xac, 0x8f, 0xb0, 0x44, 0x09, + 0x2d, 0x8d, 0xe5, 0x05, 0x30, 0xd1, 0x12, 0x4b, 0x9c, 0x1e, 0x93, 0xec, 0xfe, 0xd8, 0xad, 0x19, + 0x6b, 0x0c, 0x5f, 0xbe, 0xcb, 0x97, 0x4b, 0x00, 0x67, 0xbb, 0xe4, 0xe0, 0xa3, 0xff, 0x80, 0x00, + 0x46, 0x6e, 0xb9, 0x04, 0x08, 0x90, 0x43, 0x4e, 0x41, 0x80, 0x20, 0xc8, 0x31, 0xc7, 0xfc, 0x11, + 0x41, 0xbd, 0xaa, 0xee, 0xae, 0x6e, 0x76, 0xb7, 0x68, 0x8d, 0x6d, 0xe4, 0xc6, 0xae, 0x7a, 0xcb, + 0xef, 0xad, 0x55, 0xf5, 0x24, 0xc8, 0x1a, 0xb6, 0xb9, 0x62, 0x77, 0x2c, 0xd7, 0x22, 0x19, 0xc3, + 0x36, 0x4b, 0x33, 0x0d, 0xcb, 0x6a, 0x34, 0xd9, 0xaa, 0x61, 0x9b, 0xab, 0x46, 0xbb, 0x6d, 0xb9, + 0x86, 0x6b, 0x5a, 0x6d, 0x47, 0x90, 0xd0, 0x4f, 0x61, 0xf4, 0x7d, 0x66, 0x38, 0xe6, 0x51, 0x93, + 0xed, 0xdb, 0xc6, 0x31, 0x23, 0x05, 0xc8, 0xb4, 0x8c, 0x2f, 0x8a, 0xda, 0xbc, 0xb6, 0x9c, 0xd5, + 0xf9, 0x4f, 0x5c, 0x31, 0xdb, 0xc5, 0x3e, 0xb9, 0x62, 0xb6, 0x09, 0x81, 0xfe, 0xa6, 0xe9, 0xb8, + 0xc5, 0xcc, 0x7c, 0x66, 0x39, 0xab, 0xe3, 0x6f, 0xbe, 0xe6, 0xb8, 0xcc, 0x2e, 0xf6, 0x23, 0x19, + 0xfe, 0xa6, 0x5f, 0x6b, 0x30, 0xb6, 0x67, 0x74, 0x8c, 0x16, 0x73, 0x59, 0x67, 0xdd, 0x6a, 0x9f, + 0x98, 0x0d, 0x4e, 0xd7, 0x36, 0x5a, 0x4c, 0x2a, 0xc0, 0xdf, 0xe4, 0x1e, 0xe4, 0x6d, 0x8f, 0xac, + 0xe6, 0x9e, 0xd9, 0x0c, 0x95, 0xe5, 0xcb, 0x64, 0x85, 0xdb, 0xe2, 0x4b, 0x38, 0x38, 0xb3, 0x99, + 0x3e, 0x6a, 0xab, 0x9f, 0x64, 0x05, 0x86, 0x4f, 0x24, 0xfe, 0x62, 0x66, 0x5e, 0x5b, 0xce, 0x49, + 0xa6, 0x90, 0x51, 0xba, 0x4f, 0x43, 0x6d, 0xc8, 0xfa, 0xf2, 0x7e, 0x68, 0x2c, 0x13, 0x30, 0xf0, + 0xd4, 0x68, 0x9e, 0x0a, 0x20, 0x59, 0x5d, 0x7c, 0xd0, 0x5f, 0x68, 0x30, 0xba, 0xc3, 0xdc, 0x8e, + 0x79, 0xec, 0x6c, 0x5b, 0x8d, 0x7d, 0xe6, 0x92, 0x2b, 0x90, 0x7d, 0x66, 0x75, 0x3e, 0x67, 0x9d, + 0x9a, 0x59, 0x97, 0xba, 0x87, 0xc5, 0x42, 0xa5, 0x4e, 0xca, 0x30, 0xd2, 0x12, 0xd4, 0xb5, 0xa6, + 0xd5, 0x70, 0x8a, 0x7d, 0xf3, 0x99, 0xe5, 0x5c, 0x79, 0x0c, 0xb5, 0x07, 0x62, 0xf4, 0x5c, 0xcb, + 0xff, 0xed, 0x90, 0x55, 0x18, 0x95, 0x02, 0x1d, 0xd7, 0x70, 0x4f, 0x1d, 0x04, 0x90, 0x2f, 0x03, + 0x32, 0xed, 0xbb, 0x86, 0xcb, 0xf4, 0x11, 0x41, 0xb0, 0x8f, 0xfb, 0xf4, 0x2e, 0x0c, 0x49, 0x59, + 0xb1, 0x3e, 0xf0, 0x0d, 0xe9, 0x53, 0x0d, 0xb9, 0x0f, 0x05, 0xc9, 0xf4, 0x21, 0xff, 0x3e, 0x30, + 0x5b, 0x8c, 0x73, 0xbb, 0x66, 0xc0, 0xcd, 0x7f, 0x27, 0x70, 0xef, 0x02, 0x04, 0xf0, 0x63, 0xb5, + 0xde, 0x81, 0x41, 0x24, 0xf5, 0x6c, 0x9e, 0x54, 0x6d, 0xf6, 0x55, 0xea, 0x92, 0x88, 0xbe, 0x07, + 0xe3, 0xfb, 0xa7, 0x8d, 0x06, 0x73, 0x78, 0x3a, 0xa7, 0xc7, 0x34, 0x1e, 0xd1, 0x43, 0x98, 0xda, + 0x34, 0x3a, 0xcd, 0xb3, 0x7d, 0xd7, 0xb2, 0x6d, 0xb3, 0xdd, 0xb8, 0x88, 0x8c, 0x55, 0xc8, 0x1c, + 0x18, 0x8d, 0xef, 0xc1, 0xf0, 0x39, 0x8c, 0xee, 0xbb, 0xa7, 0xf5, 0xb3, 0xdd, 0xa7, 0xac, 0xf3, + 0xd4, 0x64, 0xcf, 0x92, 0x58, 0xad, 0x67, 0x6d, 0xd6, 0xf1, 0x58, 0xf1, 0x83, 0xe4, 0xa1, 0xcf, + 0xac, 0xcb, 0xdc, 0xea, 0x33, 0xeb, 0x64, 0x1e, 0x72, 0x75, 0xe6, 0x1c, 0x77, 0x4c, 0x9b, 0x7b, + 0x40, 0x16, 0x9e, 0xba, 0x44, 0xff, 0xa1, 0xc1, 0xc0, 0x41, 0xc7, 0x34, 0x9a, 0x64, 0x1a, 0x86, + 0x5d, 0xfe, 0x23, 0xc8, 0xb8, 0x21, 0xfc, 0xae, 0xd4, 0xf9, 0x96, 0xc3, 0x11, 0xf1, 0x2d, 0xa1, + 0x6f, 0x08, 0xbf, 0x2b, 0x75, 0x72, 0x17, 0x82, 0x0c, 0xaf, 0x39, 0x4c, 0x14, 0x7c, 0xae, 0x9c, + 0x0f, 0x97, 0x82, 0x3e, 0xe2, 0x13, 0xf1, 0xec, 0xbe, 0x0e, 0x63, 0xd6, 0xd1, 0x13, 0x76, 0xec, + 0x9a, 0x4f, 0x59, 0x4d, 0x78, 0x40, 0x40, 0xcb, 0xfb, 0xcb, 0x18, 0x4c, 0x32, 0x03, 0xfd, 0xae, + 0xd1, 0x70, 0x8a, 0x03, 0x28, 0x74, 0x18, 0x85, 0x1e, 0x18, 0x0d, 0x1d, 0x57, 0xc9, 0x55, 0xc8, + 0x1d, 0x77, 0x98, 0xe1, 0xb2, 0x1a, 0x26, 0xd8, 0x20, 0x8a, 0x00, 0xb1, 0xc4, 0xf3, 0x80, 0xfe, + 0x4d, 0x83, 0xc1, 0x43, 0x4c, 0xea, 0xf4, 0x82, 0x4a, 0xb1, 0x4f, 0xf5, 0x4a, 0x26, 0xec, 0x15, + 0x02, 0xfd, 0xbc, 0xa6, 0xbd, 0x76, 0x86, 0xf5, 0x4d, 0x61, 0x50, 0xd6, 0xd7, 0x40, 0x57, 0x7d, + 0xc9, 0x1d, 0x42, 0x61, 0xe4, 0x80, 0xb5, 0xec, 0xa6, 0xe1, 0xb2, 0x3d, 0xc3, 0x7d, 0x2c, 0x71, + 0x87, 0xd6, 0x7c, 0xc3, 0x87, 0xe2, 0x0c, 0xa7, 0xbf, 0xd7, 0x20, 0x5b, 0x35, 0x1c, 0xd9, 0x2e, + 0xef, 0xc2, 0x48, 0xa3, 0x63, 0xd8, 0x8f, 0x6b, 0xc7, 0xf8, 0x8d, 0xd6, 0xe5, 0xca, 0x05, 0xe4, + 0xd9, 0xe2, 0x1b, 0x82, 0x4e, 0xcf, 0x35, 0x82, 0x0f, 0x72, 0x0f, 0xc0, 0xb2, 0x59, 0x47, 0x34, + 0x7a, 0x34, 0x3a, 0x57, 0x9e, 0x46, 0x16, 0x5f, 0xf0, 0xca, 0xae, 0x4f, 0xa0, 0x2b, 0xc4, 0xa5, + 0x35, 0x80, 0x60, 0x87, 0xdc, 0x86, 0xac, 0xbf, 0x57, 0xd4, 0x94, 0xe0, 0xfb, 0x34, 0x7a, 0x40, + 0x40, 0x9b, 0x90, 0x53, 0x20, 0x91, 0x59, 0x80, 0xf6, 0x69, 0xab, 0xd6, 0x34, 0xce, 0x58, 0xc7, + 0x41, 0xe0, 0x03, 0x7a, 0xb6, 0x7d, 0xda, 0xda, 0xc6, 0x05, 0xbe, 0x6d, 0xb6, 0xed, 0x53, 0xb7, + 0xe6, 0x98, 0xcf, 0x19, 0x96, 0xfc, 0x80, 0x9e, 0xc5, 0x95, 0x7d, 0xf3, 0x39, 0xe3, 0xf1, 0xb7, + 0x4e, 0x5d, 0x7f, 0x3f, 0x83, 0xfb, 0x20, 0x96, 0x38, 0x01, 0xfd, 0xa3, 0x06, 0x59, 0x1f, 0x06, + 0x59, 0x82, 0x51, 0x1f, 0x08, 0x06, 0x4e, 0xa4, 0x41, 0x78, 0x91, 0x6c, 0xc3, 0xa5, 0x20, 0xa1, + 0x85, 0x47, 0x3d, 0xff, 0x5c, 0x0d, 0xdb, 0xb5, 0x12, 0x39, 0xb7, 0x1c, 0xbd, 0x60, 0x47, 0x56, + 0x4a, 0x0f, 0xa1, 0x10, 0xa5, 0x22, 0x2b, 0x30, 0xe4, 0xc9, 0x15, 0xfe, 0x9a, 0x08, 0x17, 0x8b, + 0x0c, 0x97, 0x47, 0x44, 0xbf, 0xeb, 0x87, 0x1c, 0x36, 0x84, 0x94, 0xe3, 0x31, 0xbe, 0x1d, 0x3c, + 0x84, 0x4b, 0x96, 0xed, 0x9a, 0x2d, 0xf3, 0x39, 0x02, 0x16, 0x67, 0x95, 0x68, 0xfc, 0x93, 0xd2, + 0x96, 0x60, 0x17, 0x8f, 0xab, 0x82, 0x15, 0x59, 0x21, 0xb7, 0x22, 0x32, 0x1a, 0x96, 0xd1, 0xc4, + 0x94, 0xd7, 0xc2, 0xc4, 0x5b, 0x96, 0xd1, 0x24, 0xd5, 0x38, 0xe7, 0x0d, 0xa0, 0xf3, 0x16, 0x64, + 0x25, 0xf8, 0x76, 0xf4, 0xe0, 0x3e, 0x72, 0x07, 0x88, 0x71, 0x7c, 0xcc, 0x1c, 0xa7, 0x66, 0xb3, + 0x4e, 0xcb, 0x74, 0x1c, 0xcc, 0xd6, 0x41, 0xbc, 0x53, 0x5c, 0x12, 0x3b, 0x7b, 0xc1, 0x46, 0x7a, + 0xd5, 0x90, 0x57, 0x60, 0x22, 0xd2, 0x75, 0x6a, 0xe8, 0xc7, 0x61, 0x74, 0x19, 0x09, 0xb7, 0x9e, + 0x2a, 0xf7, 0x6a, 0x11, 0x86, 0xe4, 0x19, 0x5a, 0xcc, 0xa2, 0x4e, 0xef, 0x93, 0xfb, 0xfb, 0x89, + 0x75, 0x54, 0xa9, 0x17, 0x41, 0xf8, 0x1b, 0x3f, 0xc8, 0x1d, 0x80, 0xb6, 0xe1, 0x78, 0x75, 0x98, + 0x43, 0xbb, 0xf3, 0xe1, 0xa2, 0xd2, 0xb3, 0x6d, 0xbf, 0x70, 0xa7, 0x61, 0xf8, 0x89, 0x75, 0x24, + 0xa2, 0x32, 0x22, 0x7a, 0xcb, 0x13, 0xeb, 0x88, 0x7b, 0xfd, 0x07, 0xc9, 0x9b, 0x0a, 0x90, 0x75, + 0xec, 0x85, 0xe8, 0x74, 0x9d, 0xfd, 0xef, 0x29, 0x73, 0x5c, 0xde, 0x2d, 0x44, 0xaf, 0x8b, 0xe9, + 0x16, 0x4a, 0x74, 0xf4, 0x9c, 0x13, 0x7c, 0xd0, 0x3b, 0x50, 0x08, 0x89, 0xb2, 0x9b, 0x67, 0xa1, + 0xa6, 0xa9, 0x85, 0x9a, 0x26, 0x5d, 0x05, 0xb2, 0xc1, 0x9a, 0x2c, 0xa2, 0x39, 0x85, 0xe1, 0x0e, + 0x14, 0x42, 0x0c, 0xe7, 0xc8, 0xbf, 0x0d, 0x63, 0x5b, 0xcc, 0xed, 0x55, 0xf8, 0x06, 0x8c, 0x06, + 0xd4, 0x5c, 0xf2, 0x85, 0x5c, 0x30, 0x09, 0xe3, 0x9e, 0x94, 0x6d, 0xd3, 0x71, 0xa5, 0x5e, 0xba, + 0x07, 0x97, 0xc2, 0xcb, 0x5c, 0xc1, 0xdb, 0x30, 0x26, 0x14, 0x58, 0xf2, 0x08, 0xf7, 0x22, 0x46, + 0x02, 0x1d, 0xde, 0xe9, 0xae, 0xe7, 0x1d, 0xf5, 0xd3, 0xa1, 0x6f, 0x78, 0x61, 0xc3, 0x63, 0xd9, + 0xb3, 0x6f, 0x1e, 0x06, 0xf0, 0xdc, 0x91, 0x60, 0xc5, 0xb9, 0x22, 0x28, 0xc4, 0x46, 0x10, 0x23, + 0xc9, 0x27, 0x7d, 0x98, 0x70, 0xa6, 0x73, 0xf2, 0x2d, 0xe6, 0x22, 0xad, 0xd3, 0x83, 0x13, 0x5f, + 0x83, 0xbc, 0x42, 0xce, 0x65, 0x53, 0x18, 0x44, 0x59, 0x9e, 0x6d, 0x2a, 0x24, 0xb9, 0x23, 0x03, + 0x15, 0x32, 0x24, 0x05, 0xd2, 0xab, 0x18, 0x28, 0x05, 0xfe, 0xf9, 0x46, 0xdf, 0x87, 0x49, 0x9d, + 0x35, 0x4c, 0xc7, 0x65, 0x1d, 0x71, 0xd0, 0x7b, 0x6a, 0x16, 0x61, 0x50, 0x1c, 0xef, 0x92, 0x37, + 0x87, 0xbc, 0x92, 0x46, 0x6e, 0xd1, 0x32, 0x8c, 0x47, 0xb9, 0xb9, 0xda, 0xb4, 0xbb, 0x02, 0xb5, + 0x80, 0xf0, 0xdb, 0xa0, 0xa0, 0xef, 0xc1, 0x73, 0xfc, 0x10, 0xf3, 0xa5, 0x89, 0x7b, 0x6b, 0x56, + 0xcf, 0x7a, 0xe2, 0xf0, 0x12, 0x63, 0xf2, 0x96, 0xd1, 0xb2, 0x79, 0xfe, 0x63, 0x77, 0x1e, 0xd6, + 0xc1, 0x74, 0xd6, 0xe5, 0x0a, 0x25, 0x50, 0x08, 0x29, 0xb4, 0x9b, 0x67, 0xf4, 0x04, 0xb3, 0xae, + 0x77, 0x0c, 0xaa, 0xd3, 0xfb, 0xc2, 0xb7, 0x98, 0x90, 0xb1, 0x99, 0x88, 0xb1, 0x6f, 0x61, 0xfc, + 0x54, 0xd5, 0xe4, 0x65, 0x18, 0x12, 0xdb, 0x5e, 0xdc, 0x43, 0x9e, 0xf5, 0xf6, 0xe8, 0xa7, 0x50, + 0x7c, 0x64, 0xd7, 0x0d, 0x97, 0x1d, 0xfa, 0x8f, 0x0a, 0xe6, 0x01, 0x4d, 0xbd, 0x8b, 0x05, 0x37, + 0xa8, 0xbe, 0xa4, 0x1b, 0x14, 0x2d, 0xc2, 0x54, 0x8c, 0x70, 0xee, 0x98, 0xdf, 0x68, 0x50, 0xf4, + 0x11, 0xbf, 0x7f, 0xda, 0x6c, 0x56, 0xda, 0x27, 0xd6, 0x8f, 0xe7, 0x20, 0x72, 0x0d, 0xc6, 0xac, + 0x76, 0xf3, 0xac, 0xc6, 0x2f, 0x6e, 0x8e, 0xcb, 0x9f, 0x63, 0x78, 0x36, 0x0e, 0xeb, 0xa3, 0x7c, + 0x79, 0x1b, 0x57, 0xb7, 0xad, 0x06, 0xfd, 0x46, 0x83, 0x7c, 0x18, 0x14, 0xcf, 0xd0, 0xc3, 0xe4, + 0x0c, 0x95, 0xd7, 0xd6, 0xae, 0xeb, 0x75, 0x5f, 0x0f, 0xd7, 0xeb, 0xe8, 0xfb, 0x30, 0x73, 0xfe, + 0xfb, 0x90, 0x7e, 0x0c, 0x53, 0x31, 0x7e, 0xe3, 0x01, 0x7f, 0x0f, 0x2e, 0x49, 0xfb, 0x4f, 0x4e, + 0x9b, 0xcd, 0x9a, 0xd9, 0x3e, 0xb1, 0xbc, 0xd0, 0x8f, 0x2b, 0x90, 0x7d, 0xa6, 0xb1, 0x67, 0xa1, + 0x6f, 0x87, 0xfe, 0x45, 0x83, 0x49, 0xde, 0x23, 0xfd, 0x97, 0x58, 0x2f, 0x19, 0xfb, 0x2a, 0x4c, + 0x38, 0x3e, 0x43, 0xcd, 0x68, 0x36, 0xac, 0x8e, 0xe9, 0x3e, 0x6e, 0xc9, 0xe0, 0x8c, 0x07, 0x7b, + 0x0f, 0xbc, 0x2d, 0xf2, 0x32, 0xe4, 0x3b, 0x42, 0x70, 0xad, 0x7d, 0xda, 0x3a, 0x62, 0x1d, 0x8c, + 0xd6, 0x80, 0x3e, 0x2a, 0x57, 0xab, 0xb8, 0x48, 0x96, 0x20, 0xdf, 0xb4, 0x1a, 0x35, 0xa5, 0x26, + 0xfb, 0xb1, 0x26, 0x47, 0x9a, 0x56, 0xe3, 0xd0, 0x2f, 0xcb, 0x69, 0x18, 0x46, 0x9f, 0x72, 0x68, + 0x03, 0x02, 0x1a, 0x7e, 0x57, 0xea, 0xf4, 0x9e, 0x38, 0x09, 0x54, 0x73, 0x7a, 0xed, 0x87, 0x3f, + 0xd7, 0xe0, 0x0a, 0xe7, 0x7d, 0x6c, 0x9d, 0x36, 0xeb, 0xdf, 0xaf, 0x8d, 0xbc, 0x05, 0x45, 0xc6, + 0x9f, 0xa2, 0x35, 0x47, 0xbe, 0x45, 0xbb, 0x9c, 0x32, 0xc5, 0xd4, 0xa7, 0x6a, 0xe0, 0x97, 0x14, + 0x53, 0xf6, 0x60, 0x3a, 0x1e, 0x8e, 0x38, 0x26, 0xa7, 0x1c, 0xdc, 0x41, 0x95, 0xaa, 0xc3, 0x34, + 0x74, 0xd8, 0xb8, 0x13, 0xe1, 0xab, 0xd4, 0x1d, 0xda, 0xc1, 0xce, 0x24, 0xb3, 0xec, 0xc5, 0xbb, + 0xe3, 0x22, 0x8c, 0x7a, 0xa9, 0xcc, 0xef, 0x6a, 0x8e, 0x9c, 0x27, 0x79, 0xf9, 0xcd, 0x6f, 0x69, + 0x0e, 0xdd, 0xc5, 0x2e, 0xe5, 0xeb, 0xe4, 0xd8, 0xef, 0x43, 0x41, 0x29, 0x01, 0x5e, 0x39, 0xe1, + 0x23, 0x38, 0x34, 0x6d, 0xd1, 0xf3, 0x2d, 0xf5, 0xd3, 0xa1, 0x0e, 0x14, 0x75, 0x66, 0x5b, 0x1d, + 0x37, 0x20, 0xeb, 0xc5, 0x96, 0x38, 0xa5, 0x99, 0x9e, 0x95, 0x16, 0x61, 0x2a, 0x46, 0x29, 0x6f, + 0x6a, 0x7f, 0xd0, 0x20, 0xbb, 0x63, 0xd5, 0x99, 0xe8, 0x1b, 0xb3, 0x00, 0x02, 0x80, 0xf2, 0x08, + 0xc8, 0xe2, 0x0a, 0xde, 0x59, 0x43, 0xed, 0xaa, 0x2f, 0xd2, 0xae, 0x56, 0x00, 0xfc, 0x4e, 0xe1, + 0x24, 0x3c, 0xd5, 0x15, 0x0a, 0x72, 0x2d, 0xb8, 0x00, 0xf7, 0x23, 0xf1, 0x88, 0x6a, 0x48, 0x70, + 0x1d, 0x9e, 0x05, 0x68, 0x71, 0x80, 0x35, 0x9b, 0x3f, 0x68, 0x45, 0x92, 0x65, 0x71, 0x85, 0xbf, + 0x66, 0xe9, 0xeb, 0x90, 0xdb, 0x30, 0x5c, 0x63, 0x9f, 0xb9, 0x68, 0x41, 0xdc, 0x03, 0x86, 0x40, + 0x3f, 0xf2, 0x0a, 0xc4, 0xf8, 0x9b, 0x9a, 0x50, 0xd8, 0x37, 0x9e, 0x86, 0x2f, 0x91, 0xe7, 0x58, + 0x1f, 0xff, 0x0e, 0x8a, 0x8c, 0x41, 0x32, 0xdd, 0x63, 0x90, 0x02, 0xe4, 0x15, 0x55, 0xdc, 0xe9, + 0x3f, 0xd3, 0x84, 0x76, 0x74, 0xbc, 0xa7, 0x7d, 0x09, 0x06, 0xd0, 0x2a, 0xd9, 0xb2, 0x85, 0xeb, + 0xfc, 0xd0, 0xe8, 0x62, 0x93, 0xdc, 0x82, 0xe1, 0xba, 0xe1, 0x1a, 0xb2, 0x5f, 0x07, 0x77, 0x4b, + 0xc5, 0x07, 0xfa, 0x50, 0x5d, 0x7c, 0x90, 0x05, 0x18, 0x71, 0x59, 0xdb, 0xb1, 0x3a, 0xb5, 0x23, + 0xcb, 0xe8, 0xd4, 0xe5, 0x05, 0x20, 0x27, 0xd6, 0x1e, 0xf2, 0x25, 0x0f, 0x9c, 0x44, 0xc2, 0xc1, + 0x15, 0xb1, 0x5b, 0xf3, 0xc5, 0x3a, 0x87, 0x6c, 0x32, 0x2f, 0x3d, 0xe9, 0x06, 0x4c, 0x74, 0xed, + 0xf0, 0x82, 0xb8, 0x0d, 0x98, 0xa6, 0x26, 0x4b, 0xbb, 0x8a, 0x7a, 0x24, 0xf4, 0x0d, 0xd1, 0xb1, + 0xb9, 0x14, 0xd4, 0xea, 0xf4, 0xe6, 0x7e, 0xfa, 0x8e, 0x68, 0x8d, 0x2a, 0x1f, 0x57, 0x7e, 0x0d, + 0x06, 0xd1, 0x33, 0x4e, 0x68, 0x40, 0x10, 0xf8, 0x4d, 0xee, 0x52, 0x3d, 0x00, 0x1f, 0x72, 0xfb, + 0x0b, 0xa4, 0x3c, 0x5d, 0x03, 0x12, 0x91, 0xc9, 0x11, 0xf5, 0x14, 0x48, 0xfa, 0x77, 0x0d, 0xe6, + 0xf6, 0xd5, 0x56, 0xef, 0x57, 0xc9, 0x8f, 0x74, 0x84, 0xa9, 0xad, 0x3a, 0x13, 0x6a, 0xd5, 0x64, + 0x07, 0x26, 0x15, 0x69, 0x4a, 0x15, 0x8b, 0xc2, 0x2c, 0x8a, 0x70, 0x76, 0x23, 0xd5, 0x15, 0x10, + 0x01, 0x7c, 0x7a, 0x0f, 0x66, 0x12, 0x2d, 0x93, 0x2f, 0x07, 0x1f, 0x89, 0x16, 0x3e, 0x34, 0xde, + 0x86, 0xb9, 0xad, 0x73, 0x9d, 0x92, 0xc4, 0xdc, 0x82, 0x99, 0xad, 0x34, 0xbd, 0x89, 0x66, 0x6a, + 0x17, 0x32, 0xf3, 0x5d, 0x58, 0x88, 0x57, 0xa7, 0xbc, 0xe1, 0xd2, 0x9e, 0x3d, 0xdf, 0x69, 0x30, + 0x15, 0xc3, 0xcd, 0x0b, 0x37, 0xd9, 0xc8, 0x8b, 0x44, 0x3e, 0xd1, 0xee, 0xcc, 0x85, 0xec, 0x7e, + 0x0e, 0x57, 0xd3, 0xec, 0xe6, 0x9e, 0x3e, 0x84, 0xe9, 0x38, 0x8d, 0xea, 0x59, 0x79, 0x25, 0x49, + 0x2b, 0x3f, 0xbf, 0x2e, 0x3b, 0xb1, 0xeb, 0x0e, 0x2d, 0xc3, 0x24, 0xbf, 0x13, 0x04, 0x6c, 0x3d, + 0xf8, 0x79, 0x12, 0xc6, 0xa3, 0x3c, 0xbc, 0xcf, 0xfd, 0x5b, 0x83, 0x85, 0x7d, 0xe6, 0xc6, 0xcf, + 0xe0, 0x7f, 0xba, 0x5b, 0x53, 0xa4, 0x14, 0x0f, 0x61, 0x3a, 0x22, 0xb4, 0xab, 0x1c, 0x85, 0xe7, + 0xe2, 0x71, 0xeb, 0x97, 0x59, 0xbc, 0x3d, 0xf4, 0x3e, 0x5c, 0x4d, 0xb3, 0xf6, 0x9c, 0xba, 0x14, + 0xb9, 0x7e, 0xbe, 0xaf, 0x92, 0xf8, 0x45, 0xce, 0xa4, 0x6a, 0x4f, 0xb5, 0x5c, 0x7b, 0x01, 0xcb, + 0x1f, 0xc0, 0x52, 0xa2, 0xee, 0x1e, 0x4b, 0xf5, 0xcf, 0x1a, 0x4c, 0xc7, 0x0b, 0x38, 0xa7, 0x5a, + 0x2f, 0x9e, 0x23, 0xa9, 0xee, 0xc8, 0xbc, 0x80, 0x3b, 0xfe, 0x5f, 0x03, 0x7a, 0x8e, 0x3f, 0x78, + 0x38, 0x0c, 0x98, 0x4d, 0xd2, 0xaf, 0x96, 0xf1, 0x5c, 0x0a, 0x06, 0x5e, 0xc9, 0x25, 0x96, 0xb4, + 0xe5, 0xd0, 0x7f, 0x6a, 0xb0, 0xf8, 0xa1, 0xd1, 0x34, 0xf9, 0x6b, 0x3b, 0xad, 0xe5, 0x5f, 0x64, + 0xa6, 0xf6, 0x5f, 0xd0, 0x27, 0xdf, 0x85, 0x85, 0x74, 0xeb, 0x64, 0xcd, 0x99, 0x4e, 0xed, 0x29, + 0xa7, 0x43, 0xbb, 0x86, 0xf5, 0x21, 0xd3, 0x41, 0xb6, 0x9b, 0x8f, 0x60, 0x34, 0xf4, 0xf7, 0x5e, + 0x52, 0x80, 0x91, 0x47, 0xd5, 0x0f, 0xaa, 0xbb, 0x87, 0xd5, 0xda, 0xc1, 0xc7, 0x7b, 0x9b, 0x85, + 0x97, 0x08, 0xc0, 0xe0, 0xc6, 0xee, 0xa3, 0x87, 0xdb, 0x9b, 0x05, 0x8d, 0x0c, 0x41, 0xa6, 0x52, + 0x3d, 0x28, 0xf4, 0x91, 0x11, 0x18, 0xde, 0xa8, 0xec, 0xaf, 0xeb, 0x9b, 0x07, 0x9b, 0x85, 0x0c, + 0x19, 0x83, 0xdc, 0xfa, 0x83, 0x83, 0xcd, 0xad, 0x5d, 0xbd, 0xb2, 0xfe, 0x60, 0xbb, 0xd0, 0x7f, + 0xf3, 0x7f, 0xa0, 0x10, 0x1d, 0xcd, 0x93, 0x22, 0x4c, 0x78, 0x92, 0x77, 0xf7, 0x0e, 0x2a, 0x3b, + 0x95, 0x4f, 0x1e, 0x1c, 0x54, 0x76, 0xab, 0x85, 0x97, 0xb8, 0xb0, 0x9d, 0x4a, 0x95, 0xaf, 0x70, + 0x1d, 0xfc, 0xeb, 0xc1, 0x47, 0xe2, 0xab, 0xef, 0xe6, 0x16, 0x0c, 0xe0, 0x78, 0x84, 0xe4, 0x60, + 0x68, 0x6f, 0xb3, 0xba, 0x51, 0xa9, 0x6e, 0x15, 0x5e, 0xe2, 0x1f, 0xfa, 0xa3, 0x6a, 0x95, 0x7f, + 0x68, 0x64, 0x14, 0xb2, 0xeb, 0xbb, 0x3b, 0x7b, 0xdb, 0x9b, 0x07, 0x9b, 0x1b, 0x85, 0x3e, 0x8e, + 0xf7, 0x83, 0xca, 0xf6, 0xf6, 0xe6, 0x46, 0x21, 0x43, 0xb2, 0x30, 0xb0, 0xa9, 0xeb, 0xbb, 0x7a, + 0xe1, 0x8b, 0xf2, 0xaf, 0xa7, 0x61, 0x68, 0xc7, 0x68, 0x1b, 0x0d, 0xd6, 0x21, 0x2d, 0xc8, 0x29, + 0xe3, 0x60, 0x72, 0x19, 0x9d, 0xde, 0x3d, 0x6b, 0x2e, 0x4d, 0x76, 0x6f, 0xf0, 0xae, 0xbe, 0xf2, + 0x7f, 0x7f, 0xfd, 0xd7, 0xaf, 0xfa, 0x96, 0x69, 0x11, 0xff, 0xe1, 0x40, 0x0a, 0x5d, 0x55, 0xc8, + 0xd6, 0x42, 0xb9, 0x44, 0x3e, 0x83, 0x61, 0x6f, 0xc6, 0x4a, 0xc4, 0xcc, 0x3b, 0x32, 0xfd, 0x2d, + 0x91, 0xc8, 0x2a, 0xd7, 0xb2, 0x8c, 0x5a, 0x28, 0x99, 0x0f, 0x69, 0xf1, 0x68, 0x56, 0xbf, 0xf4, + 0xfa, 0xc8, 0x57, 0xe4, 0x09, 0xe4, 0x94, 0xe9, 0xb3, 0x34, 0xa7, 0x7b, 0x80, 0x2d, 0xcd, 0x89, + 0x0e, 0xaa, 0xe9, 0x2d, 0x54, 0xf4, 0x32, 0x59, 0x0c, 0x29, 0x52, 0xc8, 0x54, 0x5d, 0xc7, 0x30, + 0xa2, 0xce, 0x8b, 0x49, 0x31, 0x84, 0x5c, 0x69, 0x75, 0xa5, 0xa9, 0x98, 0x1d, 0xae, 0x6e, 0x01, + 0xd5, 0x5d, 0x21, 0xd3, 0xb1, 0x76, 0xa1, 0xd0, 0x13, 0x2f, 0x3e, 0xe2, 0x2f, 0xbb, 0x6a, 0x7c, + 0xd4, 0x59, 0x6c, 0x28, 0x3e, 0xc1, 0xd8, 0x95, 0x5e, 0x47, 0x0d, 0x0b, 0xb1, 0xf1, 0x41, 0xb2, + 0x35, 0x31, 0x7d, 0x25, 0x47, 0x90, 0xf5, 0x87, 0xc2, 0x64, 0xd2, 0xc3, 0x1b, 0x9a, 0x29, 0x97, + 0xc6, 0xa3, 0xcb, 0x5c, 0xc3, 0x0d, 0xd4, 0xb0, 0x48, 0x16, 0xa2, 0x36, 0x08, 0x22, 0xd5, 0x61, + 0x22, 0xf8, 0xc2, 0x90, 0x89, 0x90, 0xac, 0xae, 0xe0, 0x2b, 0x26, 0x24, 0x06, 0x1f, 0x69, 0x56, + 0xbf, 0xf4, 0x86, 0x7d, 0x5f, 0x11, 0x07, 0xf2, 0xe1, 0x19, 0x30, 0x29, 0xa1, 0xbc, 0xd8, 0xb1, + 0x72, 0xa9, 0x18, 0xbb, 0xa7, 0x64, 0x01, 0xbd, 0x12, 0xd2, 0x18, 0xa6, 0x5c, 0x93, 0x83, 0x67, + 0xf2, 0x29, 0x40, 0x30, 0x57, 0x25, 0x7e, 0xa4, 0xc3, 0xd3, 0xa0, 0xd2, 0x44, 0xd7, 0x3a, 0x57, + 0x74, 0x15, 0x15, 0x4d, 0x93, 0xcb, 0x51, 0xd3, 0x3c, 0x71, 0xcf, 0xe1, 0x52, 0xd7, 0x74, 0x94, + 0xcc, 0xa2, 0xac, 0xa4, 0x91, 0x6c, 0xe9, 0x4a, 0xd2, 0xb6, 0x12, 0xad, 0xd2, 0x5c, 0x48, 0x63, + 0x17, 0xf1, 0x9a, 0x76, 0x93, 0x3c, 0x53, 0x06, 0xd3, 0xfe, 0xa4, 0x73, 0x36, 0x6c, 0x47, 0x64, + 0x2c, 0x2b, 0x75, 0xc7, 0x4f, 0x1f, 0xe9, 0x35, 0xd4, 0x3d, 0x4f, 0xe6, 0xe2, 0xad, 0xf5, 0x75, + 0xb4, 0xf1, 0xef, 0x13, 0xca, 0x50, 0x4e, 0x86, 0x31, 0x76, 0xf0, 0x58, 0x2a, 0xc6, 0xee, 0x29, + 0xfa, 0x22, 0x61, 0x0c, 0x53, 0x72, 0x43, 0xbf, 0xd6, 0xc4, 0x5b, 0x35, 0x3a, 0x3a, 0x23, 0xf3, + 0xbe, 0xe8, 0x84, 0x21, 0x5f, 0x69, 0x2e, 0x85, 0x82, 0x43, 0x78, 0x03, 0x21, 0xbc, 0x42, 0x6f, + 0x25, 0x14, 0x47, 0x1c, 0x27, 0x87, 0xf4, 0x19, 0x26, 0x95, 0xf7, 0x4f, 0x3b, 0x7e, 0x52, 0x85, + 0x67, 0x71, 0x41, 0x52, 0xa9, 0xf3, 0x32, 0x4a, 0x51, 0xe7, 0x0c, 0xed, 0x4a, 0x2a, 0x49, 0xc5, + 0xe5, 0xff, 0x52, 0x83, 0xcb, 0x09, 0x6f, 0x46, 0xb2, 0x28, 0xce, 0xdd, 0xd4, 0x67, 0x61, 0x69, + 0x21, 0x9d, 0x88, 0xe3, 0x58, 0x45, 0x1c, 0x37, 0xe8, 0x52, 0x08, 0x47, 0x02, 0x0b, 0x07, 0xf5, + 0x5b, 0x0d, 0x2e, 0x6f, 0xa5, 0x82, 0xda, 0xea, 0x05, 0x54, 0xda, 0x9b, 0x94, 0xbe, 0x89, 0xa0, + 0x5e, 0x25, 0xab, 0xc9, 0x39, 0x11, 0xb0, 0xac, 0x7e, 0xe9, 0xdd, 0x33, 0xbf, 0x22, 0xdf, 0x6a, + 0x50, 0x4a, 0x7e, 0x86, 0x91, 0x6b, 0x29, 0xaa, 0xd5, 0x93, 0x60, 0xe9, 0x5c, 0x3a, 0x8e, 0x72, + 0x0d, 0x51, 0xbe, 0x46, 0xca, 0x3d, 0xa0, 0xe4, 0x5c, 0x6a, 0x93, 0xfd, 0x46, 0x83, 0x52, 0xf2, + 0xcb, 0x43, 0x02, 0x3d, 0xf7, 0x21, 0x26, 0x81, 0x9e, 0xf3, 0x84, 0xa1, 0x65, 0x04, 0x7a, 0x9b, + 0x5e, 0x8f, 0xc6, 0x38, 0x81, 0x8b, 0x87, 0x59, 0x7a, 0x32, 0x1d, 0xe0, 0x56, 0x8f, 0x00, 0xcf, + 0x79, 0xe5, 0x24, 0x7b, 0x32, 0x81, 0x4b, 0x0d, 0xf9, 0xef, 0x34, 0x98, 0x4d, 0xbd, 0xb9, 0x93, + 0x1b, 0xe9, 0x18, 0xd4, 0xc0, 0x5f, 0xef, 0x85, 0x94, 0x23, 0x7e, 0x07, 0x11, 0xbf, 0x49, 0x5e, + 0xef, 0x0d, 0x71, 0x34, 0xfc, 0x9f, 0x40, 0xd6, 0x9f, 0x7e, 0xca, 0x73, 0x3c, 0x3a, 0x78, 0x95, + 0xe7, 0x78, 0x64, 0x48, 0x2a, 0xef, 0x22, 0x74, 0x2a, 0x1c, 0x4a, 0x8f, 0x88, 0x47, 0x4e, 0xca, + 0xc6, 0xd9, 0x9a, 0x22, 0x5b, 0x9d, 0xef, 0x29, 0xb2, 0x95, 0x19, 0x67, 0xb2, 0x6c, 0x24, 0xe2, + 0xb2, 0x9f, 0xc3, 0xa5, 0xae, 0x91, 0xb9, 0x3c, 0x6d, 0x92, 0xe6, 0xf7, 0xf2, 0xb4, 0x49, 0x98, + 0xb4, 0xcb, 0x93, 0x8e, 0xce, 0x45, 0x0e, 0xf1, 0x08, 0x31, 0xd7, 0x6d, 0x89, 0xff, 0x41, 0x50, + 0x06, 0xad, 0xc4, 0x3f, 0xc8, 0x62, 0x06, 0xb3, 0xa5, 0xe9, 0xf8, 0x4d, 0xae, 0x75, 0x09, 0xb5, + 0xce, 0x91, 0x99, 0xae, 0xca, 0x55, 0xa5, 0x7f, 0x2e, 0x4e, 0xb8, 0x60, 0xb6, 0xaa, 0x9c, 0x70, + 0x5d, 0x83, 0x5a, 0xe5, 0x84, 0x8b, 0x0c, 0x63, 0xe9, 0x22, 0x6a, 0x9b, 0x25, 0x57, 0x62, 0xb5, + 0x49, 0xd1, 0xdf, 0x6a, 0x30, 0x93, 0xf6, 0x30, 0x22, 0xcb, 0x28, 0xbf, 0x87, 0x97, 0x61, 0xe9, + 0x5a, 0x0f, 0x94, 0x1c, 0xd7, 0x6b, 0x88, 0x6b, 0x85, 0xde, 0x08, 0xe1, 0x4a, 0xe3, 0x5b, 0xd3, + 0x6e, 0x96, 0xff, 0xa4, 0x01, 0x04, 0x7b, 0xe4, 0xfd, 0x1f, 0xe6, 0x1a, 0x40, 0xec, 0x9f, 0xda, + 0xfc, 0xb2, 0x09, 0xa3, 0xa1, 0x62, 0x25, 0x1f, 0xfd, 0x58, 0x17, 0x8c, 0xa3, 0x41, 0xfc, 0xbf, + 0xee, 0xbb, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x00, 0xd0, 0x2b, 0x07, 0x2e, 0x00, 0x00, } diff --git a/pkg/api/api.proto b/pkg/api/api.proto index 3d93f7f9577..87e4024b346 100644 --- a/pkg/api/api.proto +++ b/pkg/api/api.proto @@ -225,6 +225,7 @@ service Manager { service Suggestion { rpc GetSuggestions(GetSuggestionsRequest) returns (GetSuggestionsReply); + rpc ValidateSuggestionParameters(ValidateSuggestionParametersRequest) returns (ValidateSuggestionParametersReply); } service EarlyStopping { @@ -802,4 +803,4 @@ message ValidateSuggestionParametersRequest { message ValidateSuggestionParametersReply { bool is_valid = 1; -} \ No newline at end of file +} diff --git a/pkg/api/gen-doc/api.md b/pkg/api/gen-doc/api.md index 6609f1a743d..0e4ea52d3f3 100644 --- a/pkg/api/gen-doc/api.md +++ b/pkg/api/gen-doc/api.md @@ -1519,6 +1519,7 @@ https://cloud.google.com/service-infrastructure/docs/service-management/referenc | Method Name | Request Type | Response Type | Description | | ----------- | ------------ | ------------- | ------------| | GetSuggestions | [GetSuggestionsRequest](#api.GetSuggestionsRequest) | [GetSuggestionsReply](#api.GetSuggestionsRequest) | | +| ValidateSuggestionParameters | [ValidateSuggestionParametersRequest](#api.ValidateSuggestionParametersRequest) | [ValidateSuggestionParametersReply](#api.ValidateSuggestionParametersRequest) | | diff --git a/pkg/api/gen-doc/index.html b/pkg/api/gen-doc/index.html index 0746a302fdd..6afef6c6761 100644 --- a/pkg/api/gen-doc/index.html +++ b/pkg/api/gen-doc/index.html @@ -3281,6 +3281,13 @@

    Suggestion

    + + ValidateSuggestionParameters + ValidateSuggestionParametersRequest + ValidateSuggestionParametersReply +

    + + diff --git a/pkg/api/python/api_pb2.py b/pkg/api/python/api_pb2.py index a266a0da567..d97457492f0 100644 --- a/pkg/api/python/api_pb2.py +++ b/pkg/api/python/api_pb2.py @@ -21,7 +21,7 @@ name='api.proto', package='api', syntax='proto3', - serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x98\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\x12\x13\n\x0b\x63reate_time\x18\x06 \x01(\t\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet\"\xa4\x01\n#ValidateSuggestionParametersRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!ValidateSuggestionParametersReply\x12\x10\n\x08is_valid\x18\x01 \x01(\x08*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x94\x19\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels\x12\xa6\x01\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply\"4\x82\xd3\xe4\x93\x02.\")/api/Manager/ValidateSuggestionParameters:\x01*2T\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') + serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x98\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\x12\x13\n\x0b\x63reate_time\x18\x06 \x01(\t\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet\"\xa4\x01\n#ValidateSuggestionParametersRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!ValidateSuggestionParametersReply\x12\x10\n\x08is_valid\x18\x01 \x01(\x08*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x94\x19\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels\x12\xa6\x01\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply\"4\x82\xd3\xe4\x93\x02.\")/api/Manager/ValidateSuggestionParameters:\x01*2\xc6\x01\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\x12p\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') , dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) @@ -4228,8 +4228,8 @@ file=DESCRIPTOR, index=1, options=None, - serialized_start=9650, - serialized_end=9734, + serialized_start=9651, + serialized_end=9849, methods=[ _descriptor.MethodDescriptor( name='GetSuggestions', @@ -4240,6 +4240,15 @@ output_type=_GETSUGGESTIONSREPLY, options=None, ), + _descriptor.MethodDescriptor( + name='ValidateSuggestionParameters', + full_name='api.Suggestion.ValidateSuggestionParameters', + index=1, + containing_service=None, + input_type=_VALIDATESUGGESTIONPARAMETERSREQUEST, + output_type=_VALIDATESUGGESTIONPARAMETERSREPLY, + options=None, + ), ]) _sym_db.RegisterServiceDescriptor(_SUGGESTION) @@ -4252,8 +4261,8 @@ file=DESCRIPTOR, index=2, options=None, - serialized_start=9736, - serialized_end=9841, + serialized_start=9851, + serialized_end=9956, methods=[ _descriptor.MethodDescriptor( name='GetShouldStopWorkers', @@ -4797,6 +4806,11 @@ def __init__(self, channel): request_serializer=GetSuggestionsRequest.SerializeToString, response_deserializer=GetSuggestionsReply.FromString, ) + self.ValidateSuggestionParameters = channel.unary_unary( + '/api.Suggestion/ValidateSuggestionParameters', + request_serializer=ValidateSuggestionParametersRequest.SerializeToString, + response_deserializer=ValidateSuggestionParametersReply.FromString, + ) class SuggestionServicer(object): @@ -4810,6 +4824,13 @@ def GetSuggestions(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def ValidateSuggestionParameters(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_SuggestionServicer_to_server(servicer, server): rpc_method_handlers = { @@ -4818,6 +4839,11 @@ def add_SuggestionServicer_to_server(servicer, server): request_deserializer=GetSuggestionsRequest.FromString, response_serializer=GetSuggestionsReply.SerializeToString, ), + 'ValidateSuggestionParameters': grpc.unary_unary_rpc_method_handler( + servicer.ValidateSuggestionParameters, + request_deserializer=ValidateSuggestionParametersRequest.FromString, + response_serializer=ValidateSuggestionParametersReply.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'api.Suggestion', rpc_method_handlers) @@ -5384,6 +5410,10 @@ def GetSuggestions(self, request, context): # missing associated documentation comment in .proto file pass context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def ValidateSuggestionParameters(self, request, context): + # missing associated documentation comment in .proto file + pass + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) class BetaSuggestionStub(object): @@ -5399,6 +5429,11 @@ def GetSuggestions(self, request, timeout, metadata=None, with_call=False, proto pass raise NotImplementedError() GetSuggestions.future = None + def ValidateSuggestionParameters(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + # missing associated documentation comment in .proto file + pass + raise NotImplementedError() + ValidateSuggestionParameters.future = None def beta_create_Suggestion_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None): @@ -5409,12 +5444,15 @@ def beta_create_Suggestion_server(servicer, pool=None, pool_size=None, default_t generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" request_deserializers = { ('api.Suggestion', 'GetSuggestions'): GetSuggestionsRequest.FromString, + ('api.Suggestion', 'ValidateSuggestionParameters'): ValidateSuggestionParametersRequest.FromString, } response_serializers = { ('api.Suggestion', 'GetSuggestions'): GetSuggestionsReply.SerializeToString, + ('api.Suggestion', 'ValidateSuggestionParameters'): ValidateSuggestionParametersReply.SerializeToString, } method_implementations = { ('api.Suggestion', 'GetSuggestions'): face_utilities.unary_unary_inline(servicer.GetSuggestions), + ('api.Suggestion', 'ValidateSuggestionParameters'): face_utilities.unary_unary_inline(servicer.ValidateSuggestionParameters), } server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout) return beta_implementations.server(method_implementations, options=server_options) @@ -5428,12 +5466,15 @@ def beta_create_Suggestion_stub(channel, host=None, metadata_transformer=None, p generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" request_serializers = { ('api.Suggestion', 'GetSuggestions'): GetSuggestionsRequest.SerializeToString, + ('api.Suggestion', 'ValidateSuggestionParameters'): ValidateSuggestionParametersRequest.SerializeToString, } response_deserializers = { ('api.Suggestion', 'GetSuggestions'): GetSuggestionsReply.FromString, + ('api.Suggestion', 'ValidateSuggestionParameters'): ValidateSuggestionParametersReply.FromString, } cardinalities = { 'GetSuggestions': cardinality.Cardinality.UNARY_UNARY, + 'ValidateSuggestionParameters': cardinality.Cardinality.UNARY_UNARY, } stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size) return beta_implementations.dynamic_stub(channel, 'api.Suggestion', cardinalities, options=stub_options) diff --git a/pkg/api/python/api_pb2_grpc.py b/pkg/api/python/api_pb2_grpc.py index edaabdbdd75..0c1fed3d057 100644 --- a/pkg/api/python/api_pb2_grpc.py +++ b/pkg/api/python/api_pb2_grpc.py @@ -522,6 +522,11 @@ def __init__(self, channel): request_serializer=api__pb2.GetSuggestionsRequest.SerializeToString, response_deserializer=api__pb2.GetSuggestionsReply.FromString, ) + self.ValidateSuggestionParameters = channel.unary_unary( + '/api.Suggestion/ValidateSuggestionParameters', + request_serializer=api__pb2.ValidateSuggestionParametersRequest.SerializeToString, + response_deserializer=api__pb2.ValidateSuggestionParametersReply.FromString, + ) class SuggestionServicer(object): @@ -535,6 +540,13 @@ def GetSuggestions(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def ValidateSuggestionParameters(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_SuggestionServicer_to_server(servicer, server): rpc_method_handlers = { @@ -543,6 +555,11 @@ def add_SuggestionServicer_to_server(servicer, server): request_deserializer=api__pb2.GetSuggestionsRequest.FromString, response_serializer=api__pb2.GetSuggestionsReply.SerializeToString, ), + 'ValidateSuggestionParameters': grpc.unary_unary_rpc_method_handler( + servicer.ValidateSuggestionParameters, + request_deserializer=api__pb2.ValidateSuggestionParametersRequest.FromString, + response_serializer=api__pb2.ValidateSuggestionParametersReply.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'api.Suggestion', rpc_method_handlers) diff --git a/pkg/suggestion/nasrl_service.py b/pkg/suggestion/nasrl_service.py index d571784ad5e..2ec3a9a230e 100644 --- a/pkg/suggestion/nasrl_service.py +++ b/pkg/suggestion/nasrl_service.py @@ -148,7 +148,16 @@ def __init__(self, logger=None): self.logger = logger if not os.path.exists("ctrl_cache/"): - os.makedirs("ctrl_cache/") + os.makedirs("ctrl_cache/") + + def ValidateSuggestionParameters(self, request, context): + self.logger.info("Start Validation Suggestion Parameters") + self.logger.info("requst is {}".format(request)) + self.logger.info("study Config is {}".format(request.study_config)) + self.logger.info("Suggest Params is {}".format(request.suggestion_parameters)) + + return api_pb2.ValidateSuggestionParametersReply(is_valid=False) + def GetSuggestions(self, request, context): if request.study_id not in self.registered_studies: From 4b4765070ccf621425a7563f0811e1e26e362428 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Tue, 26 Feb 2019 21:45:53 -0800 Subject: [PATCH 10/17] Change isValid to int32 --- cmd/manager/main.go | 6 +- pkg/api/api.pb.go | 403 +++++++++++----------- pkg/api/api.proto | 5 +- pkg/api/api.swagger.json | 4 +- pkg/api/gen-doc/api.md | 2 +- pkg/api/gen-doc/index.html | 2 +- pkg/api/python/api_pb2.py | 6 +- pkg/controller/studyjob/katib_api_util.go | 10 +- pkg/suggestion/nasrl_service.py | 2 +- 9 files changed, 222 insertions(+), 218 deletions(-) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 7ac24815ed0..eb997095f7e 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -117,12 +117,12 @@ func (s *server) GetSuggestions(ctx context.Context, in *api_pb.GetSuggestionsRe func (s *server) ValidateSuggestionParameters(ctx context.Context, in *api_pb.ValidateSuggestionParametersRequest) (*api_pb.ValidateSuggestionParametersReply, error) { if in.SuggestionAlgorithm == "" { - return &api_pb.ValidateSuggestionParametersReply{IsValid: false}, errors.New("No suggest algorithm specified") + return &api_pb.ValidateSuggestionParametersReply{IsValid: 0}, errors.New("No suggest algorithm specified") } conn, err := grpc.Dial("vizier-suggestion-"+in.SuggestionAlgorithm+":6789", grpc.WithInsecure()) if err != nil { - return &api_pb.ValidateSuggestionParametersReply{IsValid: false}, err + return &api_pb.ValidateSuggestionParametersReply{IsValid: 0}, err } defer conn.Close() @@ -131,7 +131,7 @@ func (s *server) ValidateSuggestionParameters(ctx context.Context, in *api_pb.Va r, err := c.ValidateSuggestionParameters(ctx, in) if err != nil { - return &api_pb.ValidateSuggestionParametersReply{IsValid: false}, err + return &api_pb.ValidateSuggestionParametersReply{IsValid: 0}, err } return r, nil } diff --git a/pkg/api/api.pb.go b/pkg/api/api.pb.go index a7c4dbd802c..963016c3eb2 100644 --- a/pkg/api/api.pb.go +++ b/pkg/api/api.pb.go @@ -2244,7 +2244,7 @@ func (m *ValidateSuggestionParametersRequest) GetSuggestionParameters() []*Sugge } type ValidateSuggestionParametersReply struct { - IsValid bool `protobuf:"varint,1,opt,name=is_valid,json=isValid" json:"is_valid,omitempty"` + IsValid int32 `protobuf:"varint,1,opt,name=is_valid,json=isValid" json:"is_valid,omitempty"` } func (m *ValidateSuggestionParametersReply) Reset() { *m = ValidateSuggestionParametersReply{} } @@ -2254,11 +2254,11 @@ func (*ValidateSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} } -func (m *ValidateSuggestionParametersReply) GetIsValid() bool { +func (m *ValidateSuggestionParametersReply) GetIsValid() int32 { if m != nil { return m.IsValid } - return false + return 0 } func init() { @@ -3503,202 +3503,203 @@ var _EarlyStopping_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 3152 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xc9, 0x6f, 0x23, 0xc7, - 0xd5, 0x77, 0x8b, 0xda, 0xf8, 0x28, 0x51, 0x9c, 0xd2, 0x32, 0x14, 0x47, 0xd2, 0x48, 0x25, 0x79, - 0x46, 0xb3, 0x49, 0x36, 0xc7, 0xdb, 0xc8, 0x63, 0x1b, 0x33, 0x92, 0xac, 0x8f, 0xb0, 0x44, 0x09, - 0x2d, 0x8d, 0xe5, 0x05, 0x30, 0xd1, 0x12, 0x4b, 0x9c, 0x1e, 0x93, 0xec, 0xfe, 0xd8, 0xad, 0x19, - 0x6b, 0x0c, 0x5f, 0xbe, 0xcb, 0x97, 0x4b, 0x00, 0x67, 0xbb, 0xe4, 0xe0, 0xa3, 0xff, 0x80, 0x00, - 0x46, 0x6e, 0xb9, 0x04, 0x08, 0x90, 0x43, 0x4e, 0x41, 0x80, 0x20, 0xc8, 0x31, 0xc7, 0xfc, 0x11, - 0x41, 0xbd, 0xaa, 0xee, 0xae, 0x6e, 0x76, 0xb7, 0x68, 0x8d, 0x6d, 0xe4, 0xc6, 0xae, 0x7a, 0xcb, - 0xef, 0xad, 0x55, 0xf5, 0x24, 0xc8, 0x1a, 0xb6, 0xb9, 0x62, 0x77, 0x2c, 0xd7, 0x22, 0x19, 0xc3, - 0x36, 0x4b, 0x33, 0x0d, 0xcb, 0x6a, 0x34, 0xd9, 0xaa, 0x61, 0x9b, 0xab, 0x46, 0xbb, 0x6d, 0xb9, - 0x86, 0x6b, 0x5a, 0x6d, 0x47, 0x90, 0xd0, 0x4f, 0x61, 0xf4, 0x7d, 0x66, 0x38, 0xe6, 0x51, 0x93, - 0xed, 0xdb, 0xc6, 0x31, 0x23, 0x05, 0xc8, 0xb4, 0x8c, 0x2f, 0x8a, 0xda, 0xbc, 0xb6, 0x9c, 0xd5, - 0xf9, 0x4f, 0x5c, 0x31, 0xdb, 0xc5, 0x3e, 0xb9, 0x62, 0xb6, 0x09, 0x81, 0xfe, 0xa6, 0xe9, 0xb8, - 0xc5, 0xcc, 0x7c, 0x66, 0x39, 0xab, 0xe3, 0x6f, 0xbe, 0xe6, 0xb8, 0xcc, 0x2e, 0xf6, 0x23, 0x19, - 0xfe, 0xa6, 0x5f, 0x6b, 0x30, 0xb6, 0x67, 0x74, 0x8c, 0x16, 0x73, 0x59, 0x67, 0xdd, 0x6a, 0x9f, - 0x98, 0x0d, 0x4e, 0xd7, 0x36, 0x5a, 0x4c, 0x2a, 0xc0, 0xdf, 0xe4, 0x1e, 0xe4, 0x6d, 0x8f, 0xac, - 0xe6, 0x9e, 0xd9, 0x0c, 0x95, 0xe5, 0xcb, 0x64, 0x85, 0xdb, 0xe2, 0x4b, 0x38, 0x38, 0xb3, 0x99, - 0x3e, 0x6a, 0xab, 0x9f, 0x64, 0x05, 0x86, 0x4f, 0x24, 0xfe, 0x62, 0x66, 0x5e, 0x5b, 0xce, 0x49, - 0xa6, 0x90, 0x51, 0xba, 0x4f, 0x43, 0x6d, 0xc8, 0xfa, 0xf2, 0x7e, 0x68, 0x2c, 0x13, 0x30, 0xf0, - 0xd4, 0x68, 0x9e, 0x0a, 0x20, 0x59, 0x5d, 0x7c, 0xd0, 0x5f, 0x68, 0x30, 0xba, 0xc3, 0xdc, 0x8e, - 0x79, 0xec, 0x6c, 0x5b, 0x8d, 0x7d, 0xe6, 0x92, 0x2b, 0x90, 0x7d, 0x66, 0x75, 0x3e, 0x67, 0x9d, - 0x9a, 0x59, 0x97, 0xba, 0x87, 0xc5, 0x42, 0xa5, 0x4e, 0xca, 0x30, 0xd2, 0x12, 0xd4, 0xb5, 0xa6, - 0xd5, 0x70, 0x8a, 0x7d, 0xf3, 0x99, 0xe5, 0x5c, 0x79, 0x0c, 0xb5, 0x07, 0x62, 0xf4, 0x5c, 0xcb, - 0xff, 0xed, 0x90, 0x55, 0x18, 0x95, 0x02, 0x1d, 0xd7, 0x70, 0x4f, 0x1d, 0x04, 0x90, 0x2f, 0x03, - 0x32, 0xed, 0xbb, 0x86, 0xcb, 0xf4, 0x11, 0x41, 0xb0, 0x8f, 0xfb, 0xf4, 0x2e, 0x0c, 0x49, 0x59, - 0xb1, 0x3e, 0xf0, 0x0d, 0xe9, 0x53, 0x0d, 0xb9, 0x0f, 0x05, 0xc9, 0xf4, 0x21, 0xff, 0x3e, 0x30, - 0x5b, 0x8c, 0x73, 0xbb, 0x66, 0xc0, 0xcd, 0x7f, 0x27, 0x70, 0xef, 0x02, 0x04, 0xf0, 0x63, 0xb5, - 0xde, 0x81, 0x41, 0x24, 0xf5, 0x6c, 0x9e, 0x54, 0x6d, 0xf6, 0x55, 0xea, 0x92, 0x88, 0xbe, 0x07, - 0xe3, 0xfb, 0xa7, 0x8d, 0x06, 0x73, 0x78, 0x3a, 0xa7, 0xc7, 0x34, 0x1e, 0xd1, 0x43, 0x98, 0xda, - 0x34, 0x3a, 0xcd, 0xb3, 0x7d, 0xd7, 0xb2, 0x6d, 0xb3, 0xdd, 0xb8, 0x88, 0x8c, 0x55, 0xc8, 0x1c, - 0x18, 0x8d, 0xef, 0xc1, 0xf0, 0x39, 0x8c, 0xee, 0xbb, 0xa7, 0xf5, 0xb3, 0xdd, 0xa7, 0xac, 0xf3, - 0xd4, 0x64, 0xcf, 0x92, 0x58, 0xad, 0x67, 0x6d, 0xd6, 0xf1, 0x58, 0xf1, 0x83, 0xe4, 0xa1, 0xcf, - 0xac, 0xcb, 0xdc, 0xea, 0x33, 0xeb, 0x64, 0x1e, 0x72, 0x75, 0xe6, 0x1c, 0x77, 0x4c, 0x9b, 0x7b, - 0x40, 0x16, 0x9e, 0xba, 0x44, 0xff, 0xa1, 0xc1, 0xc0, 0x41, 0xc7, 0x34, 0x9a, 0x64, 0x1a, 0x86, - 0x5d, 0xfe, 0x23, 0xc8, 0xb8, 0x21, 0xfc, 0xae, 0xd4, 0xf9, 0x96, 0xc3, 0x11, 0xf1, 0x2d, 0xa1, - 0x6f, 0x08, 0xbf, 0x2b, 0x75, 0x72, 0x17, 0x82, 0x0c, 0xaf, 0x39, 0x4c, 0x14, 0x7c, 0xae, 0x9c, - 0x0f, 0x97, 0x82, 0x3e, 0xe2, 0x13, 0xf1, 0xec, 0xbe, 0x0e, 0x63, 0xd6, 0xd1, 0x13, 0x76, 0xec, - 0x9a, 0x4f, 0x59, 0x4d, 0x78, 0x40, 0x40, 0xcb, 0xfb, 0xcb, 0x18, 0x4c, 0x32, 0x03, 0xfd, 0xae, - 0xd1, 0x70, 0x8a, 0x03, 0x28, 0x74, 0x18, 0x85, 0x1e, 0x18, 0x0d, 0x1d, 0x57, 0xc9, 0x55, 0xc8, - 0x1d, 0x77, 0x98, 0xe1, 0xb2, 0x1a, 0x26, 0xd8, 0x20, 0x8a, 0x00, 0xb1, 0xc4, 0xf3, 0x80, 0xfe, - 0x4d, 0x83, 0xc1, 0x43, 0x4c, 0xea, 0xf4, 0x82, 0x4a, 0xb1, 0x4f, 0xf5, 0x4a, 0x26, 0xec, 0x15, - 0x02, 0xfd, 0xbc, 0xa6, 0xbd, 0x76, 0x86, 0xf5, 0x4d, 0x61, 0x50, 0xd6, 0xd7, 0x40, 0x57, 0x7d, - 0xc9, 0x1d, 0x42, 0x61, 0xe4, 0x80, 0xb5, 0xec, 0xa6, 0xe1, 0xb2, 0x3d, 0xc3, 0x7d, 0x2c, 0x71, - 0x87, 0xd6, 0x7c, 0xc3, 0x87, 0xe2, 0x0c, 0xa7, 0xbf, 0xd7, 0x20, 0x5b, 0x35, 0x1c, 0xd9, 0x2e, - 0xef, 0xc2, 0x48, 0xa3, 0x63, 0xd8, 0x8f, 0x6b, 0xc7, 0xf8, 0x8d, 0xd6, 0xe5, 0xca, 0x05, 0xe4, - 0xd9, 0xe2, 0x1b, 0x82, 0x4e, 0xcf, 0x35, 0x82, 0x0f, 0x72, 0x0f, 0xc0, 0xb2, 0x59, 0x47, 0x34, - 0x7a, 0x34, 0x3a, 0x57, 0x9e, 0x46, 0x16, 0x5f, 0xf0, 0xca, 0xae, 0x4f, 0xa0, 0x2b, 0xc4, 0xa5, - 0x35, 0x80, 0x60, 0x87, 0xdc, 0x86, 0xac, 0xbf, 0x57, 0xd4, 0x94, 0xe0, 0xfb, 0x34, 0x7a, 0x40, - 0x40, 0x9b, 0x90, 0x53, 0x20, 0x91, 0x59, 0x80, 0xf6, 0x69, 0xab, 0xd6, 0x34, 0xce, 0x58, 0xc7, - 0x41, 0xe0, 0x03, 0x7a, 0xb6, 0x7d, 0xda, 0xda, 0xc6, 0x05, 0xbe, 0x6d, 0xb6, 0xed, 0x53, 0xb7, - 0xe6, 0x98, 0xcf, 0x19, 0x96, 0xfc, 0x80, 0x9e, 0xc5, 0x95, 0x7d, 0xf3, 0x39, 0xe3, 0xf1, 0xb7, - 0x4e, 0x5d, 0x7f, 0x3f, 0x83, 0xfb, 0x20, 0x96, 0x38, 0x01, 0xfd, 0xa3, 0x06, 0x59, 0x1f, 0x06, - 0x59, 0x82, 0x51, 0x1f, 0x08, 0x06, 0x4e, 0xa4, 0x41, 0x78, 0x91, 0x6c, 0xc3, 0xa5, 0x20, 0xa1, - 0x85, 0x47, 0x3d, 0xff, 0x5c, 0x0d, 0xdb, 0xb5, 0x12, 0x39, 0xb7, 0x1c, 0xbd, 0x60, 0x47, 0x56, - 0x4a, 0x0f, 0xa1, 0x10, 0xa5, 0x22, 0x2b, 0x30, 0xe4, 0xc9, 0x15, 0xfe, 0x9a, 0x08, 0x17, 0x8b, - 0x0c, 0x97, 0x47, 0x44, 0xbf, 0xeb, 0x87, 0x1c, 0x36, 0x84, 0x94, 0xe3, 0x31, 0xbe, 0x1d, 0x3c, - 0x84, 0x4b, 0x96, 0xed, 0x9a, 0x2d, 0xf3, 0x39, 0x02, 0x16, 0x67, 0x95, 0x68, 0xfc, 0x93, 0xd2, - 0x96, 0x60, 0x17, 0x8f, 0xab, 0x82, 0x15, 0x59, 0x21, 0xb7, 0x22, 0x32, 0x1a, 0x96, 0xd1, 0xc4, - 0x94, 0xd7, 0xc2, 0xc4, 0x5b, 0x96, 0xd1, 0x24, 0xd5, 0x38, 0xe7, 0x0d, 0xa0, 0xf3, 0x16, 0x64, - 0x25, 0xf8, 0x76, 0xf4, 0xe0, 0x3e, 0x72, 0x07, 0x88, 0x71, 0x7c, 0xcc, 0x1c, 0xa7, 0x66, 0xb3, - 0x4e, 0xcb, 0x74, 0x1c, 0xcc, 0xd6, 0x41, 0xbc, 0x53, 0x5c, 0x12, 0x3b, 0x7b, 0xc1, 0x46, 0x7a, - 0xd5, 0x90, 0x57, 0x60, 0x22, 0xd2, 0x75, 0x6a, 0xe8, 0xc7, 0x61, 0x74, 0x19, 0x09, 0xb7, 0x9e, - 0x2a, 0xf7, 0x6a, 0x11, 0x86, 0xe4, 0x19, 0x5a, 0xcc, 0xa2, 0x4e, 0xef, 0x93, 0xfb, 0xfb, 0x89, - 0x75, 0x54, 0xa9, 0x17, 0x41, 0xf8, 0x1b, 0x3f, 0xc8, 0x1d, 0x80, 0xb6, 0xe1, 0x78, 0x75, 0x98, - 0x43, 0xbb, 0xf3, 0xe1, 0xa2, 0xd2, 0xb3, 0x6d, 0xbf, 0x70, 0xa7, 0x61, 0xf8, 0x89, 0x75, 0x24, - 0xa2, 0x32, 0x22, 0x7a, 0xcb, 0x13, 0xeb, 0x88, 0x7b, 0xfd, 0x07, 0xc9, 0x9b, 0x0a, 0x90, 0x75, - 0xec, 0x85, 0xe8, 0x74, 0x9d, 0xfd, 0xef, 0x29, 0x73, 0x5c, 0xde, 0x2d, 0x44, 0xaf, 0x8b, 0xe9, - 0x16, 0x4a, 0x74, 0xf4, 0x9c, 0x13, 0x7c, 0xd0, 0x3b, 0x50, 0x08, 0x89, 0xb2, 0x9b, 0x67, 0xa1, - 0xa6, 0xa9, 0x85, 0x9a, 0x26, 0x5d, 0x05, 0xb2, 0xc1, 0x9a, 0x2c, 0xa2, 0x39, 0x85, 0xe1, 0x0e, - 0x14, 0x42, 0x0c, 0xe7, 0xc8, 0xbf, 0x0d, 0x63, 0x5b, 0xcc, 0xed, 0x55, 0xf8, 0x06, 0x8c, 0x06, - 0xd4, 0x5c, 0xf2, 0x85, 0x5c, 0x30, 0x09, 0xe3, 0x9e, 0x94, 0x6d, 0xd3, 0x71, 0xa5, 0x5e, 0xba, - 0x07, 0x97, 0xc2, 0xcb, 0x5c, 0xc1, 0xdb, 0x30, 0x26, 0x14, 0x58, 0xf2, 0x08, 0xf7, 0x22, 0x46, - 0x02, 0x1d, 0xde, 0xe9, 0xae, 0xe7, 0x1d, 0xf5, 0xd3, 0xa1, 0x6f, 0x78, 0x61, 0xc3, 0x63, 0xd9, - 0xb3, 0x6f, 0x1e, 0x06, 0xf0, 0xdc, 0x91, 0x60, 0xc5, 0xb9, 0x22, 0x28, 0xc4, 0x46, 0x10, 0x23, - 0xc9, 0x27, 0x7d, 0x98, 0x70, 0xa6, 0x73, 0xf2, 0x2d, 0xe6, 0x22, 0xad, 0xd3, 0x83, 0x13, 0x5f, - 0x83, 0xbc, 0x42, 0xce, 0x65, 0x53, 0x18, 0x44, 0x59, 0x9e, 0x6d, 0x2a, 0x24, 0xb9, 0x23, 0x03, - 0x15, 0x32, 0x24, 0x05, 0xd2, 0xab, 0x18, 0x28, 0x05, 0xfe, 0xf9, 0x46, 0xdf, 0x87, 0x49, 0x9d, - 0x35, 0x4c, 0xc7, 0x65, 0x1d, 0x71, 0xd0, 0x7b, 0x6a, 0x16, 0x61, 0x50, 0x1c, 0xef, 0x92, 0x37, - 0x87, 0xbc, 0x92, 0x46, 0x6e, 0xd1, 0x32, 0x8c, 0x47, 0xb9, 0xb9, 0xda, 0xb4, 0xbb, 0x02, 0xb5, - 0x80, 0xf0, 0xdb, 0xa0, 0xa0, 0xef, 0xc1, 0x73, 0xfc, 0x10, 0xf3, 0xa5, 0x89, 0x7b, 0x6b, 0x56, - 0xcf, 0x7a, 0xe2, 0xf0, 0x12, 0x63, 0xf2, 0x96, 0xd1, 0xb2, 0x79, 0xfe, 0x63, 0x77, 0x1e, 0xd6, - 0xc1, 0x74, 0xd6, 0xe5, 0x0a, 0x25, 0x50, 0x08, 0x29, 0xb4, 0x9b, 0x67, 0xf4, 0x04, 0xb3, 0xae, - 0x77, 0x0c, 0xaa, 0xd3, 0xfb, 0xc2, 0xb7, 0x98, 0x90, 0xb1, 0x99, 0x88, 0xb1, 0x6f, 0x61, 0xfc, - 0x54, 0xd5, 0xe4, 0x65, 0x18, 0x12, 0xdb, 0x5e, 0xdc, 0x43, 0x9e, 0xf5, 0xf6, 0xe8, 0xa7, 0x50, - 0x7c, 0x64, 0xd7, 0x0d, 0x97, 0x1d, 0xfa, 0x8f, 0x0a, 0xe6, 0x01, 0x4d, 0xbd, 0x8b, 0x05, 0x37, - 0xa8, 0xbe, 0xa4, 0x1b, 0x14, 0x2d, 0xc2, 0x54, 0x8c, 0x70, 0xee, 0x98, 0xdf, 0x68, 0x50, 0xf4, - 0x11, 0xbf, 0x7f, 0xda, 0x6c, 0x56, 0xda, 0x27, 0xd6, 0x8f, 0xe7, 0x20, 0x72, 0x0d, 0xc6, 0xac, - 0x76, 0xf3, 0xac, 0xc6, 0x2f, 0x6e, 0x8e, 0xcb, 0x9f, 0x63, 0x78, 0x36, 0x0e, 0xeb, 0xa3, 0x7c, - 0x79, 0x1b, 0x57, 0xb7, 0xad, 0x06, 0xfd, 0x46, 0x83, 0x7c, 0x18, 0x14, 0xcf, 0xd0, 0xc3, 0xe4, - 0x0c, 0x95, 0xd7, 0xd6, 0xae, 0xeb, 0x75, 0x5f, 0x0f, 0xd7, 0xeb, 0xe8, 0xfb, 0x30, 0x73, 0xfe, - 0xfb, 0x90, 0x7e, 0x0c, 0x53, 0x31, 0x7e, 0xe3, 0x01, 0x7f, 0x0f, 0x2e, 0x49, 0xfb, 0x4f, 0x4e, - 0x9b, 0xcd, 0x9a, 0xd9, 0x3e, 0xb1, 0xbc, 0xd0, 0x8f, 0x2b, 0x90, 0x7d, 0xa6, 0xb1, 0x67, 0xa1, - 0x6f, 0x87, 0xfe, 0x45, 0x83, 0x49, 0xde, 0x23, 0xfd, 0x97, 0x58, 0x2f, 0x19, 0xfb, 0x2a, 0x4c, - 0x38, 0x3e, 0x43, 0xcd, 0x68, 0x36, 0xac, 0x8e, 0xe9, 0x3e, 0x6e, 0xc9, 0xe0, 0x8c, 0x07, 0x7b, - 0x0f, 0xbc, 0x2d, 0xf2, 0x32, 0xe4, 0x3b, 0x42, 0x70, 0xad, 0x7d, 0xda, 0x3a, 0x62, 0x1d, 0x8c, - 0xd6, 0x80, 0x3e, 0x2a, 0x57, 0xab, 0xb8, 0x48, 0x96, 0x20, 0xdf, 0xb4, 0x1a, 0x35, 0xa5, 0x26, - 0xfb, 0xb1, 0x26, 0x47, 0x9a, 0x56, 0xe3, 0xd0, 0x2f, 0xcb, 0x69, 0x18, 0x46, 0x9f, 0x72, 0x68, - 0x03, 0x02, 0x1a, 0x7e, 0x57, 0xea, 0xf4, 0x9e, 0x38, 0x09, 0x54, 0x73, 0x7a, 0xed, 0x87, 0x3f, - 0xd7, 0xe0, 0x0a, 0xe7, 0x7d, 0x6c, 0x9d, 0x36, 0xeb, 0xdf, 0xaf, 0x8d, 0xbc, 0x05, 0x45, 0xc6, - 0x9f, 0xa2, 0x35, 0x47, 0xbe, 0x45, 0xbb, 0x9c, 0x32, 0xc5, 0xd4, 0xa7, 0x6a, 0xe0, 0x97, 0x14, - 0x53, 0xf6, 0x60, 0x3a, 0x1e, 0x8e, 0x38, 0x26, 0xa7, 0x1c, 0xdc, 0x41, 0x95, 0xaa, 0xc3, 0x34, - 0x74, 0xd8, 0xb8, 0x13, 0xe1, 0xab, 0xd4, 0x1d, 0xda, 0xc1, 0xce, 0x24, 0xb3, 0xec, 0xc5, 0xbb, - 0xe3, 0x22, 0x8c, 0x7a, 0xa9, 0xcc, 0xef, 0x6a, 0x8e, 0x9c, 0x27, 0x79, 0xf9, 0xcd, 0x6f, 0x69, - 0x0e, 0xdd, 0xc5, 0x2e, 0xe5, 0xeb, 0xe4, 0xd8, 0xef, 0x43, 0x41, 0x29, 0x01, 0x5e, 0x39, 0xe1, - 0x23, 0x38, 0x34, 0x6d, 0xd1, 0xf3, 0x2d, 0xf5, 0xd3, 0xa1, 0x0e, 0x14, 0x75, 0x66, 0x5b, 0x1d, - 0x37, 0x20, 0xeb, 0xc5, 0x96, 0x38, 0xa5, 0x99, 0x9e, 0x95, 0x16, 0x61, 0x2a, 0x46, 0x29, 0x6f, - 0x6a, 0x7f, 0xd0, 0x20, 0xbb, 0x63, 0xd5, 0x99, 0xe8, 0x1b, 0xb3, 0x00, 0x02, 0x80, 0xf2, 0x08, - 0xc8, 0xe2, 0x0a, 0xde, 0x59, 0x43, 0xed, 0xaa, 0x2f, 0xd2, 0xae, 0x56, 0x00, 0xfc, 0x4e, 0xe1, - 0x24, 0x3c, 0xd5, 0x15, 0x0a, 0x72, 0x2d, 0xb8, 0x00, 0xf7, 0x23, 0xf1, 0x88, 0x6a, 0x48, 0x70, - 0x1d, 0x9e, 0x05, 0x68, 0x71, 0x80, 0x35, 0x9b, 0x3f, 0x68, 0x45, 0x92, 0x65, 0x71, 0x85, 0xbf, - 0x66, 0xe9, 0xeb, 0x90, 0xdb, 0x30, 0x5c, 0x63, 0x9f, 0xb9, 0x68, 0x41, 0xdc, 0x03, 0x86, 0x40, - 0x3f, 0xf2, 0x0a, 0xc4, 0xf8, 0x9b, 0x9a, 0x50, 0xd8, 0x37, 0x9e, 0x86, 0x2f, 0x91, 0xe7, 0x58, - 0x1f, 0xff, 0x0e, 0x8a, 0x8c, 0x41, 0x32, 0xdd, 0x63, 0x90, 0x02, 0xe4, 0x15, 0x55, 0xdc, 0xe9, - 0x3f, 0xd3, 0x84, 0x76, 0x74, 0xbc, 0xa7, 0x7d, 0x09, 0x06, 0xd0, 0x2a, 0xd9, 0xb2, 0x85, 0xeb, - 0xfc, 0xd0, 0xe8, 0x62, 0x93, 0xdc, 0x82, 0xe1, 0xba, 0xe1, 0x1a, 0xb2, 0x5f, 0x07, 0x77, 0x4b, - 0xc5, 0x07, 0xfa, 0x50, 0x5d, 0x7c, 0x90, 0x05, 0x18, 0x71, 0x59, 0xdb, 0xb1, 0x3a, 0xb5, 0x23, - 0xcb, 0xe8, 0xd4, 0xe5, 0x05, 0x20, 0x27, 0xd6, 0x1e, 0xf2, 0x25, 0x0f, 0x9c, 0x44, 0xc2, 0xc1, - 0x15, 0xb1, 0x5b, 0xf3, 0xc5, 0x3a, 0x87, 0x6c, 0x32, 0x2f, 0x3d, 0xe9, 0x06, 0x4c, 0x74, 0xed, - 0xf0, 0x82, 0xb8, 0x0d, 0x98, 0xa6, 0x26, 0x4b, 0xbb, 0x8a, 0x7a, 0x24, 0xf4, 0x0d, 0xd1, 0xb1, - 0xb9, 0x14, 0xd4, 0xea, 0xf4, 0xe6, 0x7e, 0xfa, 0x8e, 0x68, 0x8d, 0x2a, 0x1f, 0x57, 0x7e, 0x0d, - 0x06, 0xd1, 0x33, 0x4e, 0x68, 0x40, 0x10, 0xf8, 0x4d, 0xee, 0x52, 0x3d, 0x00, 0x1f, 0x72, 0xfb, - 0x0b, 0xa4, 0x3c, 0x5d, 0x03, 0x12, 0x91, 0xc9, 0x11, 0xf5, 0x14, 0x48, 0xfa, 0x77, 0x0d, 0xe6, - 0xf6, 0xd5, 0x56, 0xef, 0x57, 0xc9, 0x8f, 0x74, 0x84, 0xa9, 0xad, 0x3a, 0x13, 0x6a, 0xd5, 0x64, - 0x07, 0x26, 0x15, 0x69, 0x4a, 0x15, 0x8b, 0xc2, 0x2c, 0x8a, 0x70, 0x76, 0x23, 0xd5, 0x15, 0x10, - 0x01, 0x7c, 0x7a, 0x0f, 0x66, 0x12, 0x2d, 0x93, 0x2f, 0x07, 0x1f, 0x89, 0x16, 0x3e, 0x34, 0xde, - 0x86, 0xb9, 0xad, 0x73, 0x9d, 0x92, 0xc4, 0xdc, 0x82, 0x99, 0xad, 0x34, 0xbd, 0x89, 0x66, 0x6a, - 0x17, 0x32, 0xf3, 0x5d, 0x58, 0x88, 0x57, 0xa7, 0xbc, 0xe1, 0xd2, 0x9e, 0x3d, 0xdf, 0x69, 0x30, - 0x15, 0xc3, 0xcd, 0x0b, 0x37, 0xd9, 0xc8, 0x8b, 0x44, 0x3e, 0xd1, 0xee, 0xcc, 0x85, 0xec, 0x7e, - 0x0e, 0x57, 0xd3, 0xec, 0xe6, 0x9e, 0x3e, 0x84, 0xe9, 0x38, 0x8d, 0xea, 0x59, 0x79, 0x25, 0x49, - 0x2b, 0x3f, 0xbf, 0x2e, 0x3b, 0xb1, 0xeb, 0x0e, 0x2d, 0xc3, 0x24, 0xbf, 0x13, 0x04, 0x6c, 0x3d, - 0xf8, 0x79, 0x12, 0xc6, 0xa3, 0x3c, 0xbc, 0xcf, 0xfd, 0x5b, 0x83, 0x85, 0x7d, 0xe6, 0xc6, 0xcf, - 0xe0, 0x7f, 0xba, 0x5b, 0x53, 0xa4, 0x14, 0x0f, 0x61, 0x3a, 0x22, 0xb4, 0xab, 0x1c, 0x85, 0xe7, - 0xe2, 0x71, 0xeb, 0x97, 0x59, 0xbc, 0x3d, 0xf4, 0x3e, 0x5c, 0x4d, 0xb3, 0xf6, 0x9c, 0xba, 0x14, - 0xb9, 0x7e, 0xbe, 0xaf, 0x92, 0xf8, 0x45, 0xce, 0xa4, 0x6a, 0x4f, 0xb5, 0x5c, 0x7b, 0x01, 0xcb, - 0x1f, 0xc0, 0x52, 0xa2, 0xee, 0x1e, 0x4b, 0xf5, 0xcf, 0x1a, 0x4c, 0xc7, 0x0b, 0x38, 0xa7, 0x5a, - 0x2f, 0x9e, 0x23, 0xa9, 0xee, 0xc8, 0xbc, 0x80, 0x3b, 0xfe, 0x5f, 0x03, 0x7a, 0x8e, 0x3f, 0x78, - 0x38, 0x0c, 0x98, 0x4d, 0xd2, 0xaf, 0x96, 0xf1, 0x5c, 0x0a, 0x06, 0x5e, 0xc9, 0x25, 0x96, 0xb4, - 0xe5, 0xd0, 0x7f, 0x6a, 0xb0, 0xf8, 0xa1, 0xd1, 0x34, 0xf9, 0x6b, 0x3b, 0xad, 0xe5, 0x5f, 0x64, - 0xa6, 0xf6, 0x5f, 0xd0, 0x27, 0xdf, 0x85, 0x85, 0x74, 0xeb, 0x64, 0xcd, 0x99, 0x4e, 0xed, 0x29, - 0xa7, 0x43, 0xbb, 0x86, 0xf5, 0x21, 0xd3, 0x41, 0xb6, 0x9b, 0x8f, 0x60, 0x34, 0xf4, 0xf7, 0x5e, - 0x52, 0x80, 0x91, 0x47, 0xd5, 0x0f, 0xaa, 0xbb, 0x87, 0xd5, 0xda, 0xc1, 0xc7, 0x7b, 0x9b, 0x85, - 0x97, 0x08, 0xc0, 0xe0, 0xc6, 0xee, 0xa3, 0x87, 0xdb, 0x9b, 0x05, 0x8d, 0x0c, 0x41, 0xa6, 0x52, - 0x3d, 0x28, 0xf4, 0x91, 0x11, 0x18, 0xde, 0xa8, 0xec, 0xaf, 0xeb, 0x9b, 0x07, 0x9b, 0x85, 0x0c, - 0x19, 0x83, 0xdc, 0xfa, 0x83, 0x83, 0xcd, 0xad, 0x5d, 0xbd, 0xb2, 0xfe, 0x60, 0xbb, 0xd0, 0x7f, - 0xf3, 0x7f, 0xa0, 0x10, 0x1d, 0xcd, 0x93, 0x22, 0x4c, 0x78, 0x92, 0x77, 0xf7, 0x0e, 0x2a, 0x3b, - 0x95, 0x4f, 0x1e, 0x1c, 0x54, 0x76, 0xab, 0x85, 0x97, 0xb8, 0xb0, 0x9d, 0x4a, 0x95, 0xaf, 0x70, - 0x1d, 0xfc, 0xeb, 0xc1, 0x47, 0xe2, 0xab, 0xef, 0xe6, 0x16, 0x0c, 0xe0, 0x78, 0x84, 0xe4, 0x60, - 0x68, 0x6f, 0xb3, 0xba, 0x51, 0xa9, 0x6e, 0x15, 0x5e, 0xe2, 0x1f, 0xfa, 0xa3, 0x6a, 0x95, 0x7f, - 0x68, 0x64, 0x14, 0xb2, 0xeb, 0xbb, 0x3b, 0x7b, 0xdb, 0x9b, 0x07, 0x9b, 0x1b, 0x85, 0x3e, 0x8e, - 0xf7, 0x83, 0xca, 0xf6, 0xf6, 0xe6, 0x46, 0x21, 0x43, 0xb2, 0x30, 0xb0, 0xa9, 0xeb, 0xbb, 0x7a, - 0xe1, 0x8b, 0xf2, 0xaf, 0xa7, 0x61, 0x68, 0xc7, 0x68, 0x1b, 0x0d, 0xd6, 0x21, 0x2d, 0xc8, 0x29, - 0xe3, 0x60, 0x72, 0x19, 0x9d, 0xde, 0x3d, 0x6b, 0x2e, 0x4d, 0x76, 0x6f, 0xf0, 0xae, 0xbe, 0xf2, - 0x7f, 0x7f, 0xfd, 0xd7, 0xaf, 0xfa, 0x96, 0x69, 0x11, 0xff, 0xe1, 0x40, 0x0a, 0x5d, 0x55, 0xc8, - 0xd6, 0x42, 0xb9, 0x44, 0x3e, 0x83, 0x61, 0x6f, 0xc6, 0x4a, 0xc4, 0xcc, 0x3b, 0x32, 0xfd, 0x2d, - 0x91, 0xc8, 0x2a, 0xd7, 0xb2, 0x8c, 0x5a, 0x28, 0x99, 0x0f, 0x69, 0xf1, 0x68, 0x56, 0xbf, 0xf4, - 0xfa, 0xc8, 0x57, 0xe4, 0x09, 0xe4, 0x94, 0xe9, 0xb3, 0x34, 0xa7, 0x7b, 0x80, 0x2d, 0xcd, 0x89, - 0x0e, 0xaa, 0xe9, 0x2d, 0x54, 0xf4, 0x32, 0x59, 0x0c, 0x29, 0x52, 0xc8, 0x54, 0x5d, 0xc7, 0x30, - 0xa2, 0xce, 0x8b, 0x49, 0x31, 0x84, 0x5c, 0x69, 0x75, 0xa5, 0xa9, 0x98, 0x1d, 0xae, 0x6e, 0x01, - 0xd5, 0x5d, 0x21, 0xd3, 0xb1, 0x76, 0xa1, 0xd0, 0x13, 0x2f, 0x3e, 0xe2, 0x2f, 0xbb, 0x6a, 0x7c, - 0xd4, 0x59, 0x6c, 0x28, 0x3e, 0xc1, 0xd8, 0x95, 0x5e, 0x47, 0x0d, 0x0b, 0xb1, 0xf1, 0x41, 0xb2, - 0x35, 0x31, 0x7d, 0x25, 0x47, 0x90, 0xf5, 0x87, 0xc2, 0x64, 0xd2, 0xc3, 0x1b, 0x9a, 0x29, 0x97, - 0xc6, 0xa3, 0xcb, 0x5c, 0xc3, 0x0d, 0xd4, 0xb0, 0x48, 0x16, 0xa2, 0x36, 0x08, 0x22, 0xd5, 0x61, - 0x22, 0xf8, 0xc2, 0x90, 0x89, 0x90, 0xac, 0xae, 0xe0, 0x2b, 0x26, 0x24, 0x06, 0x1f, 0x69, 0x56, - 0xbf, 0xf4, 0x86, 0x7d, 0x5f, 0x11, 0x07, 0xf2, 0xe1, 0x19, 0x30, 0x29, 0xa1, 0xbc, 0xd8, 0xb1, - 0x72, 0xa9, 0x18, 0xbb, 0xa7, 0x64, 0x01, 0xbd, 0x12, 0xd2, 0x18, 0xa6, 0x5c, 0x93, 0x83, 0x67, - 0xf2, 0x29, 0x40, 0x30, 0x57, 0x25, 0x7e, 0xa4, 0xc3, 0xd3, 0xa0, 0xd2, 0x44, 0xd7, 0x3a, 0x57, - 0x74, 0x15, 0x15, 0x4d, 0x93, 0xcb, 0x51, 0xd3, 0x3c, 0x71, 0xcf, 0xe1, 0x52, 0xd7, 0x74, 0x94, - 0xcc, 0xa2, 0xac, 0xa4, 0x91, 0x6c, 0xe9, 0x4a, 0xd2, 0xb6, 0x12, 0xad, 0xd2, 0x5c, 0x48, 0x63, - 0x17, 0xf1, 0x9a, 0x76, 0x93, 0x3c, 0x53, 0x06, 0xd3, 0xfe, 0xa4, 0x73, 0x36, 0x6c, 0x47, 0x64, - 0x2c, 0x2b, 0x75, 0xc7, 0x4f, 0x1f, 0xe9, 0x35, 0xd4, 0x3d, 0x4f, 0xe6, 0xe2, 0xad, 0xf5, 0x75, - 0xb4, 0xf1, 0xef, 0x13, 0xca, 0x50, 0x4e, 0x86, 0x31, 0x76, 0xf0, 0x58, 0x2a, 0xc6, 0xee, 0x29, - 0xfa, 0x22, 0x61, 0x0c, 0x53, 0x72, 0x43, 0xbf, 0xd6, 0xc4, 0x5b, 0x35, 0x3a, 0x3a, 0x23, 0xf3, - 0xbe, 0xe8, 0x84, 0x21, 0x5f, 0x69, 0x2e, 0x85, 0x82, 0x43, 0x78, 0x03, 0x21, 0xbc, 0x42, 0x6f, - 0x25, 0x14, 0x47, 0x1c, 0x27, 0x87, 0xf4, 0x19, 0x26, 0x95, 0xf7, 0x4f, 0x3b, 0x7e, 0x52, 0x85, - 0x67, 0x71, 0x41, 0x52, 0xa9, 0xf3, 0x32, 0x4a, 0x51, 0xe7, 0x0c, 0xed, 0x4a, 0x2a, 0x49, 0xc5, - 0xe5, 0xff, 0x52, 0x83, 0xcb, 0x09, 0x6f, 0x46, 0xb2, 0x28, 0xce, 0xdd, 0xd4, 0x67, 0x61, 0x69, - 0x21, 0x9d, 0x88, 0xe3, 0x58, 0x45, 0x1c, 0x37, 0xe8, 0x52, 0x08, 0x47, 0x02, 0x0b, 0x07, 0xf5, - 0x5b, 0x0d, 0x2e, 0x6f, 0xa5, 0x82, 0xda, 0xea, 0x05, 0x54, 0xda, 0x9b, 0x94, 0xbe, 0x89, 0xa0, - 0x5e, 0x25, 0xab, 0xc9, 0x39, 0x11, 0xb0, 0xac, 0x7e, 0xe9, 0xdd, 0x33, 0xbf, 0x22, 0xdf, 0x6a, - 0x50, 0x4a, 0x7e, 0x86, 0x91, 0x6b, 0x29, 0xaa, 0xd5, 0x93, 0x60, 0xe9, 0x5c, 0x3a, 0x8e, 0x72, - 0x0d, 0x51, 0xbe, 0x46, 0xca, 0x3d, 0xa0, 0xe4, 0x5c, 0x6a, 0x93, 0xfd, 0x46, 0x83, 0x52, 0xf2, - 0xcb, 0x43, 0x02, 0x3d, 0xf7, 0x21, 0x26, 0x81, 0x9e, 0xf3, 0x84, 0xa1, 0x65, 0x04, 0x7a, 0x9b, - 0x5e, 0x8f, 0xc6, 0x38, 0x81, 0x8b, 0x87, 0x59, 0x7a, 0x32, 0x1d, 0xe0, 0x56, 0x8f, 0x00, 0xcf, - 0x79, 0xe5, 0x24, 0x7b, 0x32, 0x81, 0x4b, 0x0d, 0xf9, 0xef, 0x34, 0x98, 0x4d, 0xbd, 0xb9, 0x93, - 0x1b, 0xe9, 0x18, 0xd4, 0xc0, 0x5f, 0xef, 0x85, 0x94, 0x23, 0x7e, 0x07, 0x11, 0xbf, 0x49, 0x5e, - 0xef, 0x0d, 0x71, 0x34, 0xfc, 0x9f, 0x40, 0xd6, 0x9f, 0x7e, 0xca, 0x73, 0x3c, 0x3a, 0x78, 0x95, - 0xe7, 0x78, 0x64, 0x48, 0x2a, 0xef, 0x22, 0x74, 0x2a, 0x1c, 0x4a, 0x8f, 0x88, 0x47, 0x4e, 0xca, - 0xc6, 0xd9, 0x9a, 0x22, 0x5b, 0x9d, 0xef, 0x29, 0xb2, 0x95, 0x19, 0x67, 0xb2, 0x6c, 0x24, 0xe2, - 0xb2, 0x9f, 0xc3, 0xa5, 0xae, 0x91, 0xb9, 0x3c, 0x6d, 0x92, 0xe6, 0xf7, 0xf2, 0xb4, 0x49, 0x98, - 0xb4, 0xcb, 0x93, 0x8e, 0xce, 0x45, 0x0e, 0xf1, 0x08, 0x31, 0xd7, 0x6d, 0x89, 0xff, 0x41, 0x50, - 0x06, 0xad, 0xc4, 0x3f, 0xc8, 0x62, 0x06, 0xb3, 0xa5, 0xe9, 0xf8, 0x4d, 0xae, 0x75, 0x09, 0xb5, - 0xce, 0x91, 0x99, 0xae, 0xca, 0x55, 0xa5, 0x7f, 0x2e, 0x4e, 0xb8, 0x60, 0xb6, 0xaa, 0x9c, 0x70, - 0x5d, 0x83, 0x5a, 0xe5, 0x84, 0x8b, 0x0c, 0x63, 0xe9, 0x22, 0x6a, 0x9b, 0x25, 0x57, 0x62, 0xb5, - 0x49, 0xd1, 0xdf, 0x6a, 0x30, 0x93, 0xf6, 0x30, 0x22, 0xcb, 0x28, 0xbf, 0x87, 0x97, 0x61, 0xe9, - 0x5a, 0x0f, 0x94, 0x1c, 0xd7, 0x6b, 0x88, 0x6b, 0x85, 0xde, 0x08, 0xe1, 0x4a, 0xe3, 0x5b, 0xd3, - 0x6e, 0x96, 0xff, 0xa4, 0x01, 0x04, 0x7b, 0xe4, 0xfd, 0x1f, 0xe6, 0x1a, 0x40, 0xec, 0x9f, 0xda, - 0xfc, 0xb2, 0x09, 0xa3, 0xa1, 0x62, 0x25, 0x1f, 0xfd, 0x58, 0x17, 0x8c, 0xa3, 0x41, 0xfc, 0xbf, - 0xee, 0xbb, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x00, 0xd0, 0x2b, 0x07, 0x2e, 0x00, 0x00, + // 3154 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcb, 0x6f, 0x23, 0xc7, + 0xd1, 0xf7, 0x88, 0x7a, 0xb1, 0x28, 0x51, 0xdc, 0xd6, 0x63, 0x29, 0xae, 0xa4, 0x95, 0x5a, 0xf2, + 0xae, 0xf6, 0x25, 0xd9, 0x5c, 0xbf, 0x56, 0x5e, 0xdb, 0xd8, 0x95, 0x64, 0x7d, 0x84, 0x25, 0x4a, + 0x18, 0x69, 0x2d, 0x3f, 0x00, 0x13, 0x23, 0xb1, 0xc5, 0x9d, 0x35, 0xc9, 0x99, 0x8f, 0x33, 0xda, + 0xb5, 0xd6, 0xf0, 0xe5, 0xbb, 0x7c, 0xb9, 0x04, 0x70, 0x5e, 0x97, 0x1c, 0x7c, 0xf4, 0x1f, 0x10, + 0xc0, 0xc8, 0x2d, 0x97, 0x00, 0x01, 0x72, 0xc8, 0x29, 0x08, 0x10, 0x04, 0x39, 0xe6, 0x98, 0x3f, + 0x22, 0xe8, 0xea, 0x9e, 0x99, 0x9e, 0xe1, 0xcc, 0x88, 0xd6, 0xda, 0x46, 0x6e, 0xd3, 0xdd, 0xf5, + 0xf8, 0x55, 0x55, 0x57, 0x75, 0x77, 0x91, 0x90, 0x35, 0x6c, 0x73, 0xc5, 0xee, 0x58, 0xae, 0x45, + 0x32, 0x86, 0x6d, 0x96, 0x66, 0x1a, 0x96, 0xd5, 0x68, 0xb2, 0x55, 0xc3, 0x36, 0x57, 0x8d, 0x76, + 0xdb, 0x72, 0x0d, 0xd7, 0xb4, 0xda, 0x8e, 0x20, 0xa1, 0x9f, 0xc2, 0xe8, 0xfb, 0xcc, 0x70, 0xcc, + 0xa3, 0x26, 0xdb, 0xb7, 0x8d, 0x63, 0x46, 0x0a, 0x90, 0x69, 0x19, 0x5f, 0x14, 0xb5, 0x79, 0x6d, + 0x39, 0xab, 0xf3, 0x4f, 0x9c, 0x31, 0xdb, 0xc5, 0x3e, 0x39, 0x63, 0xb6, 0x09, 0x81, 0xfe, 0xa6, + 0xe9, 0xb8, 0xc5, 0xcc, 0x7c, 0x66, 0x39, 0xab, 0xe3, 0x37, 0x9f, 0x73, 0x5c, 0x66, 0x17, 0xfb, + 0x91, 0x0c, 0xbf, 0xe9, 0xd7, 0x1a, 0x8c, 0xed, 0x19, 0x1d, 0xa3, 0xc5, 0x5c, 0xd6, 0x59, 0xb7, + 0xda, 0x27, 0x66, 0x83, 0xd3, 0xb5, 0x8d, 0x16, 0x93, 0x0a, 0xf0, 0x9b, 0xdc, 0x83, 0xbc, 0xed, + 0x91, 0xd5, 0xdc, 0x33, 0x9b, 0xa1, 0xb2, 0x7c, 0x99, 0xac, 0x70, 0x5b, 0x7c, 0x09, 0x07, 0x67, + 0x36, 0xd3, 0x47, 0x6d, 0x75, 0x48, 0x56, 0x60, 0xf8, 0x44, 0xe2, 0x2f, 0x66, 0xe6, 0xb5, 0xe5, + 0x9c, 0x64, 0x0a, 0x19, 0xa5, 0xfb, 0x34, 0xd4, 0x86, 0xac, 0x2f, 0xef, 0x87, 0xc6, 0x32, 0x01, + 0x03, 0x4f, 0x8d, 0xe6, 0xa9, 0x00, 0x92, 0xd5, 0xc5, 0x80, 0xfe, 0x42, 0x83, 0xd1, 0x1d, 0xe6, + 0x76, 0xcc, 0x63, 0x67, 0xdb, 0x6a, 0xec, 0x33, 0x97, 0x5c, 0x81, 0xec, 0x33, 0xab, 0xf3, 0x39, + 0xeb, 0xd4, 0xcc, 0xba, 0xd4, 0x3d, 0x2c, 0x26, 0x2a, 0x75, 0x52, 0x86, 0x91, 0x96, 0xa0, 0xae, + 0x35, 0xad, 0x86, 0x53, 0xec, 0x9b, 0xcf, 0x2c, 0xe7, 0xca, 0x63, 0xa8, 0x3d, 0x10, 0xa3, 0xe7, + 0x5a, 0xfe, 0xb7, 0x43, 0x56, 0x61, 0x54, 0x0a, 0x74, 0x5c, 0xc3, 0x3d, 0x75, 0x10, 0x40, 0xbe, + 0x0c, 0xc8, 0xb4, 0xef, 0x1a, 0x2e, 0xd3, 0x47, 0x04, 0xc1, 0x3e, 0xae, 0xd3, 0xbb, 0x30, 0x24, + 0x65, 0xc5, 0xfa, 0xc0, 0x37, 0xa4, 0x4f, 0x35, 0xe4, 0x3e, 0x14, 0x24, 0xd3, 0x87, 0x7c, 0x7c, + 0x60, 0xb6, 0x18, 0xe7, 0x76, 0xcd, 0x80, 0x9b, 0x7f, 0x27, 0x70, 0xef, 0x02, 0x04, 0xf0, 0x63, + 0xb5, 0xde, 0x81, 0x41, 0x24, 0xf5, 0x6c, 0x9e, 0x54, 0x6d, 0xf6, 0x55, 0xea, 0x92, 0x88, 0xbe, + 0x07, 0xe3, 0xfb, 0xa7, 0x8d, 0x06, 0x73, 0xf8, 0x76, 0x4e, 0x8f, 0x69, 0x3c, 0xa2, 0x87, 0x30, + 0xb5, 0x69, 0x74, 0x9a, 0x67, 0xfb, 0xae, 0x65, 0xdb, 0x66, 0xbb, 0x71, 0x11, 0x19, 0xab, 0x90, + 0x39, 0x30, 0x1a, 0xdf, 0x83, 0xe1, 0x73, 0x18, 0xdd, 0x77, 0x4f, 0xeb, 0x67, 0xbb, 0x4f, 0x59, + 0xe7, 0xa9, 0xc9, 0x9e, 0x25, 0xb1, 0x5a, 0xcf, 0xda, 0xac, 0xe3, 0xb1, 0xe2, 0x80, 0xe4, 0xa1, + 0xcf, 0xac, 0xcb, 0xbd, 0xd5, 0x67, 0xd6, 0xc9, 0x3c, 0xe4, 0xea, 0xcc, 0x39, 0xee, 0x98, 0x36, + 0xf7, 0x80, 0x4c, 0x3c, 0x75, 0x8a, 0xfe, 0x43, 0x83, 0x81, 0x83, 0x8e, 0x69, 0x34, 0xc9, 0x34, + 0x0c, 0xbb, 0xfc, 0x23, 0xd8, 0x71, 0x43, 0x38, 0xae, 0xd4, 0xf9, 0x92, 0xc3, 0x11, 0xf1, 0x25, + 0xa1, 0x6f, 0x08, 0xc7, 0x95, 0x3a, 0xb9, 0x0b, 0xc1, 0x0e, 0xaf, 0x39, 0x4c, 0x24, 0x7c, 0xae, + 0x9c, 0x0f, 0xa7, 0x82, 0x3e, 0xe2, 0x13, 0xf1, 0xdd, 0x7d, 0x1d, 0xc6, 0xac, 0xa3, 0x27, 0xec, + 0xd8, 0x35, 0x9f, 0xb2, 0x9a, 0xf0, 0x80, 0x80, 0x96, 0xf7, 0xa7, 0x31, 0x98, 0x64, 0x06, 0xfa, + 0x5d, 0xa3, 0xe1, 0x14, 0x07, 0x50, 0xe8, 0x30, 0x0a, 0x3d, 0x30, 0x1a, 0x3a, 0xce, 0x92, 0xab, + 0x90, 0x3b, 0xee, 0x30, 0xc3, 0x65, 0x35, 0xdc, 0x60, 0x83, 0x28, 0x02, 0xc4, 0x14, 0xdf, 0x07, + 0xf4, 0x6f, 0x1a, 0x0c, 0x1e, 0xe2, 0xa6, 0x4e, 0x4f, 0xa8, 0x14, 0xfb, 0x54, 0xaf, 0x64, 0xc2, + 0x5e, 0x21, 0xd0, 0xcf, 0x73, 0xda, 0x2b, 0x67, 0x98, 0xdf, 0x14, 0x06, 0x65, 0x7e, 0x0d, 0x74, + 0xe5, 0x97, 0x5c, 0x21, 0x14, 0x46, 0x0e, 0x58, 0xcb, 0x6e, 0x1a, 0x2e, 0xdb, 0x33, 0xdc, 0xc7, + 0x12, 0x77, 0x68, 0xce, 0x37, 0x7c, 0x28, 0xce, 0x70, 0xfa, 0x7b, 0x0d, 0xb2, 0x55, 0xc3, 0x91, + 0xe5, 0xf2, 0x2e, 0x8c, 0x34, 0x3a, 0x86, 0xfd, 0xb8, 0x76, 0x8c, 0x63, 0xb4, 0x2e, 0x57, 0x2e, + 0x20, 0xcf, 0x16, 0x5f, 0x10, 0x74, 0x7a, 0xae, 0x11, 0x0c, 0xc8, 0x3d, 0x00, 0xcb, 0x66, 0x1d, + 0x51, 0xe8, 0xd1, 0xe8, 0x5c, 0x79, 0x1a, 0x59, 0x7c, 0xc1, 0x2b, 0xbb, 0x3e, 0x81, 0xae, 0x10, + 0x97, 0xd6, 0x00, 0x82, 0x15, 0x72, 0x1b, 0xb2, 0xfe, 0x5a, 0x51, 0x53, 0x82, 0xef, 0xd3, 0xe8, + 0x01, 0x01, 0x6d, 0x42, 0x4e, 0x81, 0x44, 0x66, 0x01, 0xda, 0xa7, 0xad, 0x5a, 0xd3, 0x38, 0x63, + 0x1d, 0x07, 0x81, 0x0f, 0xe8, 0xd9, 0xf6, 0x69, 0x6b, 0x1b, 0x27, 0xf8, 0xb2, 0xd9, 0xb6, 0x4f, + 0xdd, 0x9a, 0x63, 0x3e, 0x67, 0x98, 0xf2, 0x03, 0x7a, 0x16, 0x67, 0xf6, 0xcd, 0xe7, 0x8c, 0xc7, + 0xdf, 0x3a, 0x75, 0xfd, 0xf5, 0x0c, 0xae, 0x83, 0x98, 0xe2, 0x04, 0xf4, 0x8f, 0x1a, 0x64, 0x7d, + 0x18, 0x64, 0x09, 0x46, 0x7d, 0x20, 0x18, 0x38, 0xb1, 0x0d, 0xc2, 0x93, 0x64, 0x1b, 0x2e, 0x05, + 0x1b, 0x5a, 0x78, 0xd4, 0xf3, 0xcf, 0xd5, 0xb0, 0x5d, 0x2b, 0x91, 0x73, 0xcb, 0xd1, 0x0b, 0x76, + 0x64, 0xa6, 0xf4, 0x10, 0x0a, 0x51, 0x2a, 0xb2, 0x02, 0x43, 0x9e, 0x5c, 0xe1, 0xaf, 0x89, 0x70, + 0xb2, 0xc8, 0x70, 0x79, 0x44, 0xf4, 0xbb, 0x7e, 0xc8, 0x61, 0x41, 0x48, 0x39, 0x1e, 0xe3, 0xcb, + 0xc1, 0x43, 0xb8, 0x64, 0xd9, 0xae, 0xd9, 0x32, 0x9f, 0x23, 0x60, 0x71, 0x56, 0x89, 0xc2, 0x3f, + 0x29, 0x6d, 0x09, 0x56, 0xf1, 0xb8, 0x2a, 0x58, 0x91, 0x19, 0x72, 0x2b, 0x22, 0xa3, 0x61, 0x19, + 0x4d, 0xdc, 0xf2, 0x5a, 0x98, 0x78, 0xcb, 0x32, 0x9a, 0xa4, 0x1a, 0xe7, 0xbc, 0x01, 0x74, 0xde, + 0x82, 0xcc, 0x04, 0xdf, 0x8e, 0x1e, 0xdc, 0x47, 0xee, 0x00, 0x31, 0x8e, 0x8f, 0x99, 0xe3, 0xd4, + 0x6c, 0xd6, 0x69, 0x99, 0x8e, 0x83, 0xbb, 0x75, 0x10, 0xef, 0x14, 0x97, 0xc4, 0xca, 0x5e, 0xb0, + 0x90, 0x9e, 0x35, 0xe4, 0x15, 0x98, 0x88, 0x54, 0x9d, 0x1a, 0xfa, 0x71, 0x18, 0x5d, 0x46, 0xc2, + 0xa5, 0xa7, 0xca, 0xbd, 0x5a, 0x84, 0x21, 0x79, 0x86, 0x16, 0xb3, 0xa8, 0xd3, 0x1b, 0x72, 0x7f, + 0x3f, 0xb1, 0x8e, 0x2a, 0xf5, 0x22, 0x08, 0x7f, 0xe3, 0x80, 0xdc, 0x01, 0x68, 0x1b, 0x8e, 0x97, + 0x87, 0x39, 0xb4, 0x3b, 0x1f, 0x4e, 0x2a, 0x3d, 0xdb, 0xf6, 0x13, 0x77, 0x1a, 0x86, 0x9f, 0x58, + 0x47, 0x22, 0x2a, 0x23, 0xa2, 0xb6, 0x3c, 0xb1, 0x8e, 0xb8, 0xd7, 0x7f, 0x90, 0x7d, 0x53, 0x01, + 0xb2, 0x8e, 0xb5, 0x10, 0x9d, 0xae, 0xb3, 0xff, 0x3d, 0x65, 0x8e, 0xcb, 0xab, 0x85, 0xa8, 0x75, + 0x31, 0xd5, 0x42, 0x89, 0x8e, 0x9e, 0x73, 0x82, 0x01, 0xbd, 0x03, 0x85, 0x90, 0x28, 0xbb, 0x79, + 0x16, 0x2a, 0x9a, 0x5a, 0xa8, 0x68, 0xd2, 0x55, 0x20, 0x1b, 0xac, 0xc9, 0x22, 0x9a, 0x53, 0x18, + 0xee, 0x40, 0x21, 0xc4, 0x70, 0x8e, 0xfc, 0xdb, 0x30, 0xb6, 0xc5, 0xdc, 0x5e, 0x85, 0x6f, 0xc0, + 0x68, 0x40, 0xcd, 0x25, 0x5f, 0xc8, 0x05, 0x93, 0x30, 0xee, 0x49, 0xd9, 0x36, 0x1d, 0x57, 0xea, + 0xa5, 0x7b, 0x70, 0x29, 0x3c, 0xcd, 0x15, 0xbc, 0x0d, 0x63, 0x42, 0x81, 0x25, 0x8f, 0x70, 0x2f, + 0x62, 0x24, 0xd0, 0xe1, 0x9d, 0xee, 0x7a, 0xde, 0x51, 0x87, 0x0e, 0x7d, 0xc3, 0x0b, 0x1b, 0x1e, + 0xcb, 0x9e, 0x7d, 0xf3, 0x30, 0x80, 0xe7, 0x8e, 0x04, 0x2b, 0xce, 0x15, 0x41, 0x21, 0x16, 0x82, + 0x18, 0x49, 0x3e, 0xe9, 0xc3, 0x84, 0x33, 0x9d, 0x93, 0x6f, 0x31, 0x17, 0x69, 0x9d, 0x1e, 0x9c, + 0xf8, 0x1a, 0xe4, 0x15, 0x72, 0x2e, 0x9b, 0xc2, 0x20, 0xca, 0xf2, 0x6c, 0x53, 0x21, 0xc9, 0x15, + 0x19, 0xa8, 0x90, 0x21, 0x29, 0x90, 0x5e, 0xc5, 0x40, 0x29, 0xf0, 0xcf, 0x37, 0xfa, 0x3e, 0x4c, + 0xea, 0xac, 0x61, 0x3a, 0x2e, 0xeb, 0x88, 0x83, 0xde, 0x53, 0xb3, 0x08, 0x83, 0xe2, 0x78, 0x97, + 0xbc, 0x39, 0xe4, 0x95, 0x34, 0x72, 0x89, 0x96, 0x61, 0x3c, 0xca, 0xcd, 0xd5, 0xa6, 0xdd, 0x15, + 0xa8, 0x05, 0x84, 0xdf, 0x06, 0x05, 0x7d, 0x0f, 0x9e, 0xe3, 0x87, 0x98, 0x2f, 0x4d, 0xdc, 0x5b, + 0xb3, 0x7a, 0xd6, 0x13, 0x87, 0x97, 0x18, 0x93, 0x97, 0x8c, 0x96, 0xcd, 0xf7, 0x3f, 0x56, 0xe7, + 0x61, 0x1d, 0x4c, 0x67, 0x5d, 0xce, 0x50, 0x02, 0x85, 0x90, 0x42, 0xbb, 0x79, 0x46, 0x4f, 0x70, + 0xd7, 0xf5, 0x8e, 0x41, 0x75, 0x7a, 0x5f, 0xf8, 0x16, 0x13, 0x32, 0x36, 0x13, 0x31, 0xf6, 0x2d, + 0x8c, 0x9f, 0xaa, 0x9a, 0xbc, 0x0c, 0x43, 0x62, 0xd9, 0x8b, 0x7b, 0xc8, 0xb3, 0xde, 0x1a, 0xfd, + 0x14, 0x8a, 0x8f, 0xec, 0xba, 0xe1, 0xb2, 0x43, 0xff, 0x51, 0xc1, 0x3c, 0xa0, 0xa9, 0x77, 0xb1, + 0xe0, 0x06, 0xd5, 0x97, 0x74, 0x83, 0xa2, 0x45, 0x98, 0x8a, 0x11, 0xce, 0x1d, 0xf3, 0x1b, 0x0d, + 0x8a, 0x3e, 0xe2, 0xf7, 0x4f, 0x9b, 0xcd, 0x4a, 0xfb, 0xc4, 0xfa, 0xf1, 0x1c, 0x44, 0xae, 0xc1, + 0x98, 0xd5, 0x6e, 0x9e, 0xd5, 0xf8, 0xc5, 0xcd, 0x71, 0xf9, 0x73, 0x0c, 0xcf, 0xc6, 0x61, 0x7d, + 0x94, 0x4f, 0x6f, 0xe3, 0xec, 0xb6, 0xd5, 0xa0, 0xdf, 0x68, 0x90, 0x0f, 0x83, 0xe2, 0x3b, 0xf4, + 0x30, 0x79, 0x87, 0xca, 0x6b, 0x6b, 0xd7, 0xf5, 0xba, 0xaf, 0x87, 0xeb, 0x75, 0xf4, 0x7d, 0x98, + 0x39, 0xff, 0x7d, 0x48, 0x3f, 0x86, 0xa9, 0x18, 0xbf, 0xf1, 0x80, 0xbf, 0x07, 0x97, 0xa4, 0xfd, + 0x27, 0xa7, 0xcd, 0x66, 0xcd, 0x6c, 0x9f, 0x58, 0x5e, 0xe8, 0xc7, 0x15, 0xc8, 0x3e, 0xd3, 0xd8, + 0xb3, 0xd0, 0xd8, 0xa1, 0x7f, 0xd1, 0x60, 0x92, 0xd7, 0x48, 0xff, 0x25, 0xd6, 0xcb, 0x8e, 0x7d, + 0x15, 0x26, 0x1c, 0x9f, 0xa1, 0x66, 0x34, 0x1b, 0x56, 0xc7, 0x74, 0x1f, 0xb7, 0x64, 0x70, 0xc6, + 0x83, 0xb5, 0x07, 0xde, 0x12, 0x79, 0x19, 0xf2, 0x1d, 0x21, 0xb8, 0xd6, 0x3e, 0x6d, 0x1d, 0xb1, + 0x0e, 0x46, 0x6b, 0x40, 0x1f, 0x95, 0xb3, 0x55, 0x9c, 0x24, 0x4b, 0x90, 0x6f, 0x5a, 0x8d, 0x9a, + 0x92, 0x93, 0xfd, 0x98, 0x93, 0x23, 0x4d, 0xab, 0x71, 0xe8, 0xa7, 0xe5, 0x34, 0x0c, 0xa3, 0x4f, + 0x39, 0xb4, 0x01, 0x01, 0x0d, 0xc7, 0x95, 0x3a, 0xbd, 0x27, 0x4e, 0x02, 0xd5, 0x9c, 0x5e, 0xeb, + 0xe1, 0xcf, 0x35, 0xb8, 0xc2, 0x79, 0x1f, 0x5b, 0xa7, 0xcd, 0xfa, 0xf7, 0x2b, 0x23, 0x6f, 0x41, + 0x91, 0xf1, 0xa7, 0x68, 0xcd, 0x91, 0x6f, 0xd1, 0x2e, 0xa7, 0x4c, 0x31, 0xf5, 0xa9, 0x1a, 0xf8, + 0x25, 0xc5, 0x94, 0x3d, 0x98, 0x8e, 0x87, 0x23, 0x8e, 0xc9, 0x29, 0x07, 0x57, 0x50, 0xa5, 0xea, + 0x30, 0x0d, 0x1d, 0x36, 0xee, 0x44, 0xf8, 0x2a, 0x75, 0x87, 0x76, 0xb0, 0x32, 0xc9, 0x5d, 0xf6, + 0xe2, 0xd5, 0x71, 0x11, 0x46, 0xbd, 0xad, 0xcc, 0xef, 0x6a, 0x8e, 0xec, 0x27, 0x79, 0xfb, 0x9b, + 0xdf, 0xd2, 0x1c, 0xba, 0x8b, 0x55, 0xca, 0xd7, 0xc9, 0xb1, 0xdf, 0x87, 0x82, 0x92, 0x02, 0x3c, + 0x73, 0xc2, 0x47, 0x70, 0xa8, 0xdb, 0xa2, 0xe7, 0x5b, 0xea, 0xd0, 0xa1, 0x0e, 0x14, 0x75, 0x66, + 0x5b, 0x1d, 0x37, 0x20, 0xeb, 0xc5, 0x96, 0x38, 0xa5, 0x99, 0x9e, 0x95, 0x16, 0x61, 0x2a, 0x46, + 0x29, 0x2f, 0x6a, 0x7f, 0xd0, 0x20, 0xbb, 0x63, 0xd5, 0x99, 0xa8, 0x1b, 0xb3, 0x00, 0x02, 0x80, + 0xf2, 0x08, 0xc8, 0xe2, 0x0c, 0xde, 0x59, 0x43, 0xe5, 0xaa, 0x2f, 0x52, 0xae, 0x56, 0x00, 0xfc, + 0x4a, 0xe1, 0x24, 0x3c, 0xd5, 0x15, 0x0a, 0x72, 0x2d, 0xb8, 0x00, 0xf7, 0x23, 0xf1, 0x88, 0x6a, + 0x48, 0x70, 0x1d, 0x9e, 0x05, 0x68, 0x71, 0x80, 0x35, 0x9b, 0x3f, 0x68, 0xc5, 0x26, 0xcb, 0xe2, + 0x0c, 0x7f, 0xcd, 0xd2, 0xd7, 0x21, 0xb7, 0x61, 0xb8, 0xc6, 0x3e, 0x73, 0xd1, 0x82, 0xb8, 0x07, + 0x0c, 0x81, 0x7e, 0xe4, 0x15, 0x88, 0xf1, 0x9b, 0x9a, 0x50, 0xd8, 0x37, 0x9e, 0x86, 0x2f, 0x91, + 0xe7, 0x58, 0x1f, 0xff, 0x0e, 0x8a, 0xb4, 0x41, 0x32, 0xdd, 0x6d, 0x90, 0x02, 0xe4, 0x15, 0x55, + 0xdc, 0xe9, 0x3f, 0xd3, 0x84, 0x76, 0x74, 0xbc, 0xa7, 0x7d, 0x09, 0x06, 0xd0, 0x2a, 0x59, 0xb2, + 0x85, 0xeb, 0xfc, 0xd0, 0xe8, 0x62, 0x91, 0xdc, 0x82, 0xe1, 0xba, 0xe1, 0x1a, 0xb2, 0x5e, 0x07, + 0x77, 0x4b, 0xc5, 0x07, 0xfa, 0x50, 0x5d, 0x0c, 0xc8, 0x02, 0x8c, 0xb8, 0xac, 0xed, 0x58, 0x9d, + 0xda, 0x91, 0x65, 0x74, 0xea, 0xf2, 0x02, 0x90, 0x13, 0x73, 0x0f, 0xf9, 0x94, 0x07, 0x4e, 0x22, + 0xe1, 0xe0, 0x8a, 0x58, 0xad, 0xf9, 0x64, 0x9d, 0x43, 0x36, 0x99, 0xb7, 0x3d, 0xe9, 0x06, 0x4c, + 0x74, 0xad, 0xf0, 0x84, 0xb8, 0x0d, 0xb8, 0x4d, 0x4d, 0x96, 0x76, 0x15, 0xf5, 0x48, 0xe8, 0x1b, + 0xa2, 0x62, 0x73, 0x29, 0xa8, 0xd5, 0xe9, 0xcd, 0xfd, 0xf4, 0x1d, 0x51, 0x1a, 0x55, 0x3e, 0xae, + 0xfc, 0x1a, 0x0c, 0xa2, 0x67, 0x9c, 0x50, 0x83, 0x20, 0xf0, 0x9b, 0x5c, 0xa5, 0x7a, 0x00, 0x3e, + 0xe4, 0xf6, 0x17, 0xd8, 0xf2, 0x74, 0x0d, 0x48, 0x44, 0x26, 0x47, 0xd4, 0x53, 0x20, 0xe9, 0xdf, + 0x35, 0x98, 0xdb, 0x57, 0x4b, 0xbd, 0x9f, 0x25, 0x3f, 0xd2, 0x11, 0xa6, 0x96, 0xea, 0x4c, 0xa8, + 0x54, 0x93, 0x1d, 0x98, 0x54, 0xa4, 0x29, 0x59, 0x2c, 0x12, 0xb3, 0x28, 0xc2, 0xd9, 0x8d, 0x54, + 0x57, 0x40, 0x04, 0xf0, 0xe9, 0x3d, 0x98, 0x49, 0xb4, 0x4c, 0xbe, 0x1c, 0x7c, 0x24, 0x5a, 0xf8, + 0xd0, 0x78, 0x1b, 0xe6, 0xb6, 0xce, 0x75, 0x4a, 0x12, 0x73, 0x0b, 0x66, 0xb6, 0xd2, 0xf4, 0x26, + 0x9a, 0xa9, 0x5d, 0xc8, 0xcc, 0x77, 0x61, 0x21, 0x5e, 0x9d, 0xf2, 0x86, 0x4b, 0x7b, 0xf6, 0x7c, + 0xa7, 0xc1, 0x54, 0x0c, 0x37, 0x4f, 0xdc, 0x64, 0x23, 0x2f, 0x12, 0xf9, 0x44, 0xbb, 0x33, 0x17, + 0xb2, 0xfb, 0x39, 0x5c, 0x4d, 0xb3, 0x9b, 0x7b, 0xfa, 0x10, 0xa6, 0xe3, 0x34, 0xaa, 0x67, 0xe5, + 0x95, 0x24, 0xad, 0xfc, 0xfc, 0xba, 0xec, 0xc4, 0xce, 0x3b, 0xb4, 0x0c, 0x93, 0xfc, 0x4e, 0x10, + 0xb0, 0xf5, 0xe0, 0xe7, 0x49, 0x18, 0x8f, 0xf2, 0xf0, 0x3a, 0xf7, 0x6f, 0x0d, 0x16, 0xf6, 0x99, + 0x1b, 0xdf, 0x83, 0xff, 0xe9, 0x6e, 0x4d, 0x91, 0x54, 0x3c, 0x84, 0xe9, 0x88, 0xd0, 0xae, 0x74, + 0x14, 0x9e, 0x8b, 0xc7, 0xad, 0x5f, 0x66, 0xf1, 0xf6, 0xd0, 0xfb, 0x70, 0x35, 0xcd, 0xda, 0x73, + 0xf2, 0x52, 0xec, 0xf5, 0xf3, 0x7d, 0x95, 0xc4, 0x2f, 0xf6, 0x4c, 0xaa, 0xf6, 0x54, 0xcb, 0xb5, + 0x17, 0xb0, 0xfc, 0x01, 0x2c, 0x25, 0xea, 0xee, 0x31, 0x55, 0xff, 0xac, 0xc1, 0x74, 0xbc, 0x80, + 0x73, 0xb2, 0xf5, 0xe2, 0x7b, 0x24, 0xd5, 0x1d, 0x99, 0x17, 0x70, 0xc7, 0xff, 0x6b, 0x40, 0xcf, + 0xf1, 0x07, 0x0f, 0x87, 0x01, 0xb3, 0x49, 0xfa, 0xd5, 0x34, 0x9e, 0x4b, 0xc1, 0xc0, 0x33, 0xb9, + 0xc4, 0x92, 0x96, 0x1c, 0xfa, 0x4f, 0x0d, 0x16, 0x3f, 0x34, 0x9a, 0x26, 0x7f, 0x6d, 0xa7, 0x95, + 0xfc, 0x8b, 0xf4, 0xd4, 0xfe, 0x0b, 0xea, 0xe4, 0xbb, 0xb0, 0x90, 0x6e, 0x9d, 0xcc, 0x39, 0xd3, + 0xa9, 0x3d, 0xe5, 0x74, 0xf2, 0x37, 0x8a, 0x21, 0xd3, 0x41, 0xb6, 0x9b, 0x8f, 0x60, 0x34, 0xf4, + 0x7b, 0x2f, 0x29, 0xc0, 0xc8, 0xa3, 0xea, 0x07, 0xd5, 0xdd, 0xc3, 0x6a, 0xed, 0xe0, 0xe3, 0xbd, + 0xcd, 0xc2, 0x4b, 0x04, 0x60, 0x70, 0x63, 0xf7, 0xd1, 0xc3, 0xed, 0xcd, 0x82, 0x46, 0x86, 0x20, + 0x53, 0xa9, 0x1e, 0x14, 0xfa, 0xc8, 0x08, 0x0c, 0x6f, 0x54, 0xf6, 0xd7, 0xf5, 0xcd, 0x83, 0xcd, + 0x42, 0x86, 0x8c, 0x41, 0x6e, 0xfd, 0xc1, 0xc1, 0xe6, 0xd6, 0xae, 0x5e, 0x59, 0x7f, 0xb0, 0x5d, + 0xe8, 0xbf, 0xf9, 0x3f, 0x50, 0x88, 0xb6, 0xe6, 0x49, 0x11, 0x26, 0x3c, 0xc9, 0xbb, 0x7b, 0x07, + 0x95, 0x9d, 0xca, 0x27, 0x0f, 0x0e, 0x2a, 0xbb, 0xd5, 0xc2, 0x4b, 0x5c, 0xd8, 0x4e, 0xa5, 0xca, + 0x67, 0xb8, 0x0e, 0x3e, 0x7a, 0xf0, 0x91, 0x18, 0xf5, 0xdd, 0xdc, 0x82, 0x01, 0x6c, 0x8f, 0x90, + 0x1c, 0x0c, 0xed, 0x6d, 0x56, 0x37, 0x2a, 0xd5, 0xad, 0xc2, 0x4b, 0x7c, 0xa0, 0x3f, 0xaa, 0x56, + 0xf9, 0x40, 0x23, 0xa3, 0x90, 0x5d, 0xdf, 0xdd, 0xd9, 0xdb, 0xde, 0x3c, 0xd8, 0xdc, 0x28, 0xf4, + 0x71, 0xbc, 0x1f, 0x54, 0xb6, 0xb7, 0x37, 0x37, 0x0a, 0x19, 0x92, 0x85, 0x81, 0x4d, 0x5d, 0xdf, + 0xd5, 0x0b, 0x5f, 0x94, 0x7f, 0x3d, 0x0d, 0x43, 0x3b, 0x46, 0xdb, 0x68, 0xb0, 0x0e, 0x69, 0x41, + 0x4e, 0x69, 0x07, 0x93, 0xcb, 0xe8, 0xf4, 0xee, 0x5e, 0x73, 0x69, 0xb2, 0x7b, 0x81, 0x57, 0xf5, + 0x95, 0xff, 0xfb, 0xeb, 0xbf, 0x7e, 0xd5, 0xb7, 0x4c, 0x8b, 0xf8, 0x87, 0x03, 0x29, 0x74, 0x55, + 0x21, 0x5b, 0x0b, 0xed, 0x25, 0xf2, 0x19, 0x0c, 0x7b, 0x3d, 0x56, 0x22, 0x7a, 0xde, 0x91, 0xee, + 0x6f, 0x89, 0x44, 0x66, 0xb9, 0x96, 0x65, 0xd4, 0x42, 0xc9, 0x7c, 0x48, 0x8b, 0x47, 0xb3, 0xfa, + 0xa5, 0x57, 0x47, 0xbe, 0x22, 0x4f, 0x20, 0xa7, 0x74, 0x9f, 0xa5, 0x39, 0xdd, 0x0d, 0x6c, 0x69, + 0x4e, 0xb4, 0x51, 0x4d, 0x6f, 0xa1, 0xa2, 0x97, 0xc9, 0x62, 0x48, 0x91, 0x42, 0xa6, 0xea, 0x3a, + 0x86, 0x11, 0xb5, 0x5f, 0x4c, 0x8a, 0x21, 0xe4, 0x4a, 0xa9, 0x2b, 0x4d, 0xc5, 0xac, 0x70, 0x75, + 0x0b, 0xa8, 0xee, 0x0a, 0x99, 0x8e, 0xb5, 0x0b, 0x85, 0x9e, 0x78, 0xf1, 0x11, 0xbf, 0xec, 0xaa, + 0xf1, 0x51, 0x7b, 0xb1, 0xa1, 0xf8, 0x04, 0x6d, 0x57, 0x7a, 0x1d, 0x35, 0x2c, 0xc4, 0xc6, 0x07, + 0xc9, 0xd6, 0x44, 0xf7, 0x95, 0x1c, 0x41, 0xd6, 0x6f, 0x0a, 0x93, 0x49, 0x0f, 0x6f, 0xa8, 0xa7, + 0x5c, 0x1a, 0x8f, 0x4e, 0x73, 0x0d, 0x37, 0x50, 0xc3, 0x22, 0x59, 0x88, 0xda, 0x20, 0x88, 0x54, + 0x87, 0x89, 0xe0, 0x0b, 0x43, 0x26, 0x42, 0xb2, 0xba, 0x82, 0xaf, 0x98, 0x90, 0x18, 0x7c, 0xa4, + 0x59, 0xfd, 0xd2, 0x6b, 0xf6, 0x7d, 0x45, 0x1c, 0xc8, 0x87, 0x7b, 0xc0, 0xa4, 0x84, 0xf2, 0x62, + 0xdb, 0xca, 0xa5, 0x62, 0xec, 0x9a, 0xb2, 0x0b, 0xe8, 0x95, 0x90, 0xc6, 0x30, 0xe5, 0x9a, 0x6c, + 0x3c, 0x93, 0x4f, 0x01, 0x82, 0xbe, 0x2a, 0xf1, 0x23, 0x1d, 0xee, 0x06, 0x95, 0x26, 0xba, 0xe6, + 0xb9, 0xa2, 0xab, 0xa8, 0x68, 0x9a, 0x5c, 0x8e, 0x9a, 0xe6, 0x89, 0x7b, 0x0e, 0x97, 0xba, 0xba, + 0xa3, 0x64, 0x16, 0x65, 0x25, 0xb5, 0x64, 0x4b, 0x57, 0x92, 0x96, 0x95, 0x68, 0x95, 0xe6, 0x42, + 0x1a, 0xbb, 0x88, 0xd7, 0xb4, 0x9b, 0xe4, 0x99, 0xd2, 0x98, 0xf6, 0x3b, 0x9d, 0xb3, 0x61, 0x3b, + 0x22, 0x6d, 0x59, 0xa9, 0x3b, 0xbe, 0xfb, 0x48, 0xaf, 0xa1, 0xee, 0x79, 0x32, 0x17, 0x6f, 0xad, + 0xaf, 0xa3, 0x8d, 0xbf, 0x4f, 0x28, 0x4d, 0x39, 0x19, 0xc6, 0xd8, 0xc6, 0x63, 0xa9, 0x18, 0xbb, + 0xa6, 0xe8, 0x8b, 0x84, 0x31, 0x4c, 0xc9, 0x0d, 0xfd, 0x5a, 0x13, 0x6f, 0xd5, 0x68, 0xeb, 0x8c, + 0xcc, 0xfb, 0xa2, 0x13, 0x9a, 0x7c, 0xa5, 0xb9, 0x14, 0x0a, 0x0e, 0xe1, 0x0d, 0x84, 0xf0, 0x0a, + 0xbd, 0x95, 0x90, 0x1c, 0x71, 0x9c, 0x1c, 0xd2, 0x67, 0xb8, 0xa9, 0xbc, 0x3f, 0xed, 0xf8, 0x9b, + 0x2a, 0xdc, 0x8b, 0x0b, 0x36, 0x95, 0xda, 0x2f, 0xa3, 0x14, 0x75, 0xce, 0xd0, 0xae, 0x4d, 0x25, + 0xa9, 0xb8, 0xfc, 0x5f, 0x6a, 0x70, 0x39, 0xe1, 0xcd, 0x48, 0x16, 0xc5, 0xb9, 0x9b, 0xfa, 0x2c, + 0x2c, 0x2d, 0xa4, 0x13, 0x71, 0x1c, 0xab, 0x88, 0xe3, 0x06, 0x5d, 0x0a, 0xe1, 0x48, 0x60, 0xe1, + 0xa0, 0x7e, 0xab, 0xc1, 0xe5, 0xad, 0x54, 0x50, 0x5b, 0xbd, 0x80, 0x4a, 0x7b, 0x93, 0xd2, 0x37, + 0x11, 0xd4, 0xab, 0x64, 0x35, 0x79, 0x4f, 0x04, 0x2c, 0xab, 0x5f, 0x7a, 0xf7, 0xcc, 0xaf, 0xc8, + 0xb7, 0x1a, 0x94, 0x92, 0x9f, 0x61, 0xe4, 0x5a, 0x8a, 0x6a, 0xf5, 0x24, 0x58, 0x3a, 0x97, 0x8e, + 0xa3, 0x5c, 0x43, 0x94, 0xaf, 0x91, 0x72, 0x0f, 0x28, 0x39, 0x97, 0x5a, 0x64, 0xbf, 0xd1, 0xa0, + 0x94, 0xfc, 0xf2, 0x90, 0x40, 0xcf, 0x7d, 0x88, 0x49, 0xa0, 0xe7, 0x3c, 0x61, 0x68, 0x19, 0x81, + 0xde, 0xa6, 0xd7, 0xa3, 0x31, 0x4e, 0xe0, 0xe2, 0x61, 0x96, 0x9e, 0x4c, 0x07, 0xb8, 0xd5, 0x23, + 0xc0, 0x73, 0x5e, 0x39, 0xc9, 0x9e, 0x4c, 0xe0, 0x52, 0x43, 0xfe, 0x3b, 0x0d, 0x66, 0x53, 0x6f, + 0xee, 0xe4, 0x46, 0x3a, 0x06, 0x35, 0xf0, 0xd7, 0x7b, 0x21, 0xe5, 0x88, 0xdf, 0x41, 0xc4, 0x6f, + 0x92, 0xd7, 0x7b, 0x43, 0x1c, 0x0d, 0xff, 0x27, 0x90, 0xf5, 0xbb, 0x9f, 0xf2, 0x1c, 0x8f, 0x36, + 0x5e, 0xe5, 0x39, 0x1e, 0x69, 0x92, 0xca, 0xbb, 0x08, 0x9d, 0x0a, 0x87, 0xd2, 0x23, 0xe2, 0x91, + 0x93, 0xb2, 0xb1, 0xb7, 0xa6, 0xc8, 0x56, 0xfb, 0x7b, 0x8a, 0x6c, 0xa5, 0xc7, 0x99, 0x2c, 0x1b, + 0x89, 0xb8, 0xec, 0xe7, 0x70, 0xa9, 0xab, 0x65, 0x2e, 0x4f, 0x9b, 0xa4, 0xfe, 0xbd, 0x3c, 0x6d, + 0x12, 0x3a, 0xed, 0xf2, 0xa4, 0xa3, 0x73, 0x91, 0x43, 0x3c, 0x42, 0xcc, 0x75, 0x5b, 0xe2, 0x3f, + 0x08, 0x4a, 0xa3, 0x95, 0xf8, 0x07, 0x59, 0x4c, 0x63, 0xb6, 0x34, 0x1d, 0xbf, 0xc8, 0xb5, 0x2e, + 0xa1, 0xd6, 0x39, 0x32, 0xd3, 0x95, 0xb9, 0xaa, 0xf4, 0xcf, 0xc5, 0x09, 0x17, 0xf4, 0x56, 0x95, + 0x13, 0xae, 0xab, 0x51, 0xab, 0x9c, 0x70, 0x91, 0x66, 0x2c, 0x5d, 0x44, 0x6d, 0xb3, 0xe4, 0x4a, + 0xac, 0x36, 0x29, 0xfa, 0x5b, 0x0d, 0x66, 0xd2, 0x1e, 0x46, 0x64, 0x19, 0xe5, 0xf7, 0xf0, 0x32, + 0x2c, 0x5d, 0xeb, 0x81, 0x92, 0xe3, 0x7a, 0x0d, 0x71, 0xad, 0xd0, 0x1b, 0x21, 0x5c, 0x69, 0x7c, + 0x6b, 0xda, 0xcd, 0xf2, 0x9f, 0x34, 0x80, 0x60, 0x8d, 0xbc, 0xff, 0xc3, 0x5c, 0x03, 0x88, 0xfd, + 0x53, 0x9b, 0x5f, 0x36, 0x61, 0x34, 0x94, 0xac, 0xe4, 0xa3, 0x1f, 0xeb, 0x82, 0x71, 0x34, 0x88, + 0xff, 0xeb, 0xbe, 0xfb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xd8, 0xc2, 0x1c, 0x07, 0x2e, + 0x00, 0x00, } diff --git a/pkg/api/api.proto b/pkg/api/api.proto index 87e4024b346..7247c3aff5e 100644 --- a/pkg/api/api.proto +++ b/pkg/api/api.proto @@ -801,6 +801,9 @@ message ValidateSuggestionParametersRequest { repeated SuggestionParameter suggestion_parameters = 3; } +/** + * Return 1 if Suggestion Parameters is Valid, 0 if not + */ message ValidateSuggestionParametersReply { - bool is_valid = 1; + int32 is_valid = 1; } diff --git a/pkg/api/api.swagger.json b/pkg/api/api.swagger.json index 1b2a98cbb95..f0dda7988b9 100644 --- a/pkg/api/api.swagger.json +++ b/pkg/api/api.swagger.json @@ -1517,8 +1517,8 @@ "type": "object", "properties": { "is_valid": { - "type": "boolean", - "format": "boolean" + "type": "integer", + "format": "int32" } } }, diff --git a/pkg/api/gen-doc/api.md b/pkg/api/gen-doc/api.md index 0e4ea52d3f3..f4d454d52ad 100644 --- a/pkg/api/gen-doc/api.md +++ b/pkg/api/gen-doc/api.md @@ -1350,7 +1350,7 @@ Update a Status of Worker. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| is_valid | [bool](#bool) | | | +| is_valid | [int32](#int32) | | | diff --git a/pkg/api/gen-doc/index.html b/pkg/api/gen-doc/index.html index 6afef6c6761..4eff3d07448 100644 --- a/pkg/api/gen-doc/index.html +++ b/pkg/api/gen-doc/index.html @@ -2778,7 +2778,7 @@

    ValidateSuggestionParametersReply is_valid - bool + int32

    diff --git a/pkg/api/python/api_pb2.py b/pkg/api/python/api_pb2.py index d97457492f0..c113735ba16 100644 --- a/pkg/api/python/api_pb2.py +++ b/pkg/api/python/api_pb2.py @@ -21,7 +21,7 @@ name='api.proto', package='api', syntax='proto3', - serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x98\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\x12\x13\n\x0b\x63reate_time\x18\x06 \x01(\t\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet\"\xa4\x01\n#ValidateSuggestionParametersRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!ValidateSuggestionParametersReply\x12\x10\n\x08is_valid\x18\x01 \x01(\x08*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x94\x19\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels\x12\xa6\x01\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply\"4\x82\xd3\xe4\x93\x02.\")/api/Manager/ValidateSuggestionParameters:\x01*2\xc6\x01\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\x12p\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') + serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x98\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\x12\x13\n\x0b\x63reate_time\x18\x06 \x01(\t\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet\"\xa4\x01\n#ValidateSuggestionParametersRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!ValidateSuggestionParametersReply\x12\x10\n\x08is_valid\x18\x01 \x01(\x05*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x94\x19\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels\x12\xa6\x01\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply\"4\x82\xd3\xe4\x93\x02.\")/api/Manager/ValidateSuggestionParameters:\x01*2\xc6\x01\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\x12p\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') , dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) @@ -3225,8 +3225,8 @@ fields=[ _descriptor.FieldDescriptor( name='is_valid', full_name='api.ValidateSuggestionParametersReply.is_valid', index=0, - number=1, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index 18a0927725f..880aeb98fcc 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -50,7 +50,7 @@ func initializeStudy(instance *katibv1alpha1.StudyJob) error { log.Println("Validate Parameters Start") isValidSuggestionParameters := validateSuggestionParameters(c, studyConfig, instance.Spec.SuggestionSpec.SuggestionParameters, instance.Spec.SuggestionSpec.SuggestionAlgorithm) - if isValidSuggestionParameters { + if isValidSuggestionParameters == 1 { log.Println("Suggestion Parameters is valid") } else { instance.Status.Condition = katibv1alpha1.ConditionFailed @@ -342,7 +342,7 @@ func getSuggestion(c katibapi.ManagerClient, studyID string, suggestionSpec *kat return getSuggestReply, nil } -func validateSuggestionParameters(c katibapi.ManagerClient, studyConfig *katibapi.StudyConfig, suggestionParameters []katibapi.SuggestionParameter, suggestionAlgorithm string) bool { +func validateSuggestionParameters(c katibapi.ManagerClient, studyConfig *katibapi.StudyConfig, suggestionParameters []katibapi.SuggestionParameter, suggestionAlgorithm string) int32 { ctx := context.Background() validateSuggestionParametersReq := &katibapi.ValidateSuggestionParametersRequest{ @@ -362,13 +362,13 @@ func validateSuggestionParameters(c katibapi.ManagerClient, studyConfig *katibap validateSuggestionParametersReply, err := c.ValidateSuggestionParameters(ctx, validateSuggestionParametersReq) - if err.Error() == "rpc error: code = Unimplemented desc = Method not found!" { + if err != nil && err.Error() == "rpc error: code = Unimplemented desc = Method not found!" { log.Printf("Method ValidateSuggestionParameters not found inside Suggestion service: %s", suggestionAlgorithm) - return true + return 1 } if err != nil { log.Printf("ValidateSuggestionParameters Error: %v", err) - return false + return 0 } return validateSuggestionParametersReply.IsValid diff --git a/pkg/suggestion/nasrl_service.py b/pkg/suggestion/nasrl_service.py index 2ec3a9a230e..f2a42f52078 100644 --- a/pkg/suggestion/nasrl_service.py +++ b/pkg/suggestion/nasrl_service.py @@ -156,7 +156,7 @@ def ValidateSuggestionParameters(self, request, context): self.logger.info("study Config is {}".format(request.study_config)) self.logger.info("Suggest Params is {}".format(request.suggestion_parameters)) - return api_pb2.ValidateSuggestionParametersReply(is_valid=False) + return api_pb2.ValidateSuggestionParametersReply(is_valid=0) def GetSuggestions(self, request, context): From 3a7e0b0b5fbaab7cfdd58874d1492e47168abba4 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Wed, 27 Feb 2019 19:53:34 -0800 Subject: [PATCH 11/17] Create Validation function in NAS RL Suggestion service --- cmd/manager/main.go | 9 +- pkg/api/api.pb.go | 407 +++++++++--------- pkg/api/api.proto | 1 - pkg/api/api.swagger.json | 7 +- pkg/api/gen-doc/api.md | 7 +- pkg/api/gen-doc/index.html | 18 +- pkg/api/python/api_pb2.py | 35 +- pkg/controller/studyjob/const.go | 3 - pkg/controller/studyjob/katib_api_util.go | 40 +- pkg/controller/studyjob/utils.go | 81 ---- .../NAS_Reinforcement_Learning/Operation.py | 3 - pkg/suggestion/nasrl_service.py | 74 +++- 12 files changed, 318 insertions(+), 367 deletions(-) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index eb997095f7e..8a59eb21342 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -117,12 +117,12 @@ func (s *server) GetSuggestions(ctx context.Context, in *api_pb.GetSuggestionsRe func (s *server) ValidateSuggestionParameters(ctx context.Context, in *api_pb.ValidateSuggestionParametersRequest) (*api_pb.ValidateSuggestionParametersReply, error) { if in.SuggestionAlgorithm == "" { - return &api_pb.ValidateSuggestionParametersReply{IsValid: 0}, errors.New("No suggest algorithm specified") + return &api_pb.ValidateSuggestionParametersReply{}, errors.New("No suggest algorithm specified") } conn, err := grpc.Dial("vizier-suggestion-"+in.SuggestionAlgorithm+":6789", grpc.WithInsecure()) if err != nil { - return &api_pb.ValidateSuggestionParametersReply{IsValid: 0}, err + return &api_pb.ValidateSuggestionParametersReply{}, err } defer conn.Close() @@ -130,10 +130,7 @@ func (s *server) ValidateSuggestionParameters(ctx context.Context, in *api_pb.Va r, err := c.ValidateSuggestionParameters(ctx, in) - if err != nil { - return &api_pb.ValidateSuggestionParametersReply{IsValid: 0}, err - } - return r, nil + return r, err } func (s *server) RegisterWorker(ctx context.Context, in *api_pb.RegisterWorkerRequest) (*api_pb.RegisterWorkerReply, error) { diff --git a/pkg/api/api.pb.go b/pkg/api/api.pb.go index 963016c3eb2..a602f38d9ce 100644 --- a/pkg/api/api.pb.go +++ b/pkg/api/api.pb.go @@ -2243,8 +2243,9 @@ func (m *ValidateSuggestionParametersRequest) GetSuggestionParameters() []*Sugge return nil } +// * +// Return 1 if Suggestion Parameters is Valid, 0 if not type ValidateSuggestionParametersReply struct { - IsValid int32 `protobuf:"varint,1,opt,name=is_valid,json=isValid" json:"is_valid,omitempty"` } func (m *ValidateSuggestionParametersReply) Reset() { *m = ValidateSuggestionParametersReply{} } @@ -2254,13 +2255,6 @@ func (*ValidateSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} } -func (m *ValidateSuggestionParametersReply) GetIsValid() int32 { - if m != nil { - return m.IsValid - } - return 0 -} - func init() { proto.RegisterType((*FeasibleSpace)(nil), "api.FeasibleSpace") proto.RegisterType((*ParameterConfig)(nil), "api.ParameterConfig") @@ -3503,203 +3497,202 @@ var _EarlyStopping_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 3154 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcb, 0x6f, 0x23, 0xc7, - 0xd1, 0xf7, 0x88, 0x7a, 0xb1, 0x28, 0x51, 0xdc, 0xd6, 0x63, 0x29, 0xae, 0xa4, 0x95, 0x5a, 0xf2, - 0xae, 0xf6, 0x25, 0xd9, 0x5c, 0xbf, 0x56, 0x5e, 0xdb, 0xd8, 0x95, 0x64, 0x7d, 0x84, 0x25, 0x4a, - 0x18, 0x69, 0x2d, 0x3f, 0x00, 0x13, 0x23, 0xb1, 0xc5, 0x9d, 0x35, 0xc9, 0x99, 0x8f, 0x33, 0xda, - 0xb5, 0xd6, 0xf0, 0xe5, 0xbb, 0x7c, 0xb9, 0x04, 0x70, 0x5e, 0x97, 0x1c, 0x7c, 0xf4, 0x1f, 0x10, - 0xc0, 0xc8, 0x2d, 0x97, 0x00, 0x01, 0x72, 0xc8, 0x29, 0x08, 0x10, 0x04, 0x39, 0xe6, 0x98, 0x3f, - 0x22, 0xe8, 0xea, 0x9e, 0x99, 0x9e, 0xe1, 0xcc, 0x88, 0xd6, 0xda, 0x46, 0x6e, 0xd3, 0xdd, 0xf5, - 0xf8, 0x55, 0x55, 0x57, 0x75, 0x77, 0x91, 0x90, 0x35, 0x6c, 0x73, 0xc5, 0xee, 0x58, 0xae, 0x45, - 0x32, 0x86, 0x6d, 0x96, 0x66, 0x1a, 0x96, 0xd5, 0x68, 0xb2, 0x55, 0xc3, 0x36, 0x57, 0x8d, 0x76, - 0xdb, 0x72, 0x0d, 0xd7, 0xb4, 0xda, 0x8e, 0x20, 0xa1, 0x9f, 0xc2, 0xe8, 0xfb, 0xcc, 0x70, 0xcc, - 0xa3, 0x26, 0xdb, 0xb7, 0x8d, 0x63, 0x46, 0x0a, 0x90, 0x69, 0x19, 0x5f, 0x14, 0xb5, 0x79, 0x6d, - 0x39, 0xab, 0xf3, 0x4f, 0x9c, 0x31, 0xdb, 0xc5, 0x3e, 0x39, 0x63, 0xb6, 0x09, 0x81, 0xfe, 0xa6, - 0xe9, 0xb8, 0xc5, 0xcc, 0x7c, 0x66, 0x39, 0xab, 0xe3, 0x37, 0x9f, 0x73, 0x5c, 0x66, 0x17, 0xfb, - 0x91, 0x0c, 0xbf, 0xe9, 0xd7, 0x1a, 0x8c, 0xed, 0x19, 0x1d, 0xa3, 0xc5, 0x5c, 0xd6, 0x59, 0xb7, - 0xda, 0x27, 0x66, 0x83, 0xd3, 0xb5, 0x8d, 0x16, 0x93, 0x0a, 0xf0, 0x9b, 0xdc, 0x83, 0xbc, 0xed, - 0x91, 0xd5, 0xdc, 0x33, 0x9b, 0xa1, 0xb2, 0x7c, 0x99, 0xac, 0x70, 0x5b, 0x7c, 0x09, 0x07, 0x67, - 0x36, 0xd3, 0x47, 0x6d, 0x75, 0x48, 0x56, 0x60, 0xf8, 0x44, 0xe2, 0x2f, 0x66, 0xe6, 0xb5, 0xe5, - 0x9c, 0x64, 0x0a, 0x19, 0xa5, 0xfb, 0x34, 0xd4, 0x86, 0xac, 0x2f, 0xef, 0x87, 0xc6, 0x32, 0x01, - 0x03, 0x4f, 0x8d, 0xe6, 0xa9, 0x00, 0x92, 0xd5, 0xc5, 0x80, 0xfe, 0x42, 0x83, 0xd1, 0x1d, 0xe6, - 0x76, 0xcc, 0x63, 0x67, 0xdb, 0x6a, 0xec, 0x33, 0x97, 0x5c, 0x81, 0xec, 0x33, 0xab, 0xf3, 0x39, - 0xeb, 0xd4, 0xcc, 0xba, 0xd4, 0x3d, 0x2c, 0x26, 0x2a, 0x75, 0x52, 0x86, 0x91, 0x96, 0xa0, 0xae, - 0x35, 0xad, 0x86, 0x53, 0xec, 0x9b, 0xcf, 0x2c, 0xe7, 0xca, 0x63, 0xa8, 0x3d, 0x10, 0xa3, 0xe7, - 0x5a, 0xfe, 0xb7, 0x43, 0x56, 0x61, 0x54, 0x0a, 0x74, 0x5c, 0xc3, 0x3d, 0x75, 0x10, 0x40, 0xbe, - 0x0c, 0xc8, 0xb4, 0xef, 0x1a, 0x2e, 0xd3, 0x47, 0x04, 0xc1, 0x3e, 0xae, 0xd3, 0xbb, 0x30, 0x24, - 0x65, 0xc5, 0xfa, 0xc0, 0x37, 0xa4, 0x4f, 0x35, 0xe4, 0x3e, 0x14, 0x24, 0xd3, 0x87, 0x7c, 0x7c, - 0x60, 0xb6, 0x18, 0xe7, 0x76, 0xcd, 0x80, 0x9b, 0x7f, 0x27, 0x70, 0xef, 0x02, 0x04, 0xf0, 0x63, - 0xb5, 0xde, 0x81, 0x41, 0x24, 0xf5, 0x6c, 0x9e, 0x54, 0x6d, 0xf6, 0x55, 0xea, 0x92, 0x88, 0xbe, - 0x07, 0xe3, 0xfb, 0xa7, 0x8d, 0x06, 0x73, 0xf8, 0x76, 0x4e, 0x8f, 0x69, 0x3c, 0xa2, 0x87, 0x30, - 0xb5, 0x69, 0x74, 0x9a, 0x67, 0xfb, 0xae, 0x65, 0xdb, 0x66, 0xbb, 0x71, 0x11, 0x19, 0xab, 0x90, - 0x39, 0x30, 0x1a, 0xdf, 0x83, 0xe1, 0x73, 0x18, 0xdd, 0x77, 0x4f, 0xeb, 0x67, 0xbb, 0x4f, 0x59, - 0xe7, 0xa9, 0xc9, 0x9e, 0x25, 0xb1, 0x5a, 0xcf, 0xda, 0xac, 0xe3, 0xb1, 0xe2, 0x80, 0xe4, 0xa1, - 0xcf, 0xac, 0xcb, 0xbd, 0xd5, 0x67, 0xd6, 0xc9, 0x3c, 0xe4, 0xea, 0xcc, 0x39, 0xee, 0x98, 0x36, - 0xf7, 0x80, 0x4c, 0x3c, 0x75, 0x8a, 0xfe, 0x43, 0x83, 0x81, 0x83, 0x8e, 0x69, 0x34, 0xc9, 0x34, - 0x0c, 0xbb, 0xfc, 0x23, 0xd8, 0x71, 0x43, 0x38, 0xae, 0xd4, 0xf9, 0x92, 0xc3, 0x11, 0xf1, 0x25, - 0xa1, 0x6f, 0x08, 0xc7, 0x95, 0x3a, 0xb9, 0x0b, 0xc1, 0x0e, 0xaf, 0x39, 0x4c, 0x24, 0x7c, 0xae, - 0x9c, 0x0f, 0xa7, 0x82, 0x3e, 0xe2, 0x13, 0xf1, 0xdd, 0x7d, 0x1d, 0xc6, 0xac, 0xa3, 0x27, 0xec, - 0xd8, 0x35, 0x9f, 0xb2, 0x9a, 0xf0, 0x80, 0x80, 0x96, 0xf7, 0xa7, 0x31, 0x98, 0x64, 0x06, 0xfa, - 0x5d, 0xa3, 0xe1, 0x14, 0x07, 0x50, 0xe8, 0x30, 0x0a, 0x3d, 0x30, 0x1a, 0x3a, 0xce, 0x92, 0xab, - 0x90, 0x3b, 0xee, 0x30, 0xc3, 0x65, 0x35, 0xdc, 0x60, 0x83, 0x28, 0x02, 0xc4, 0x14, 0xdf, 0x07, - 0xf4, 0x6f, 0x1a, 0x0c, 0x1e, 0xe2, 0xa6, 0x4e, 0x4f, 0xa8, 0x14, 0xfb, 0x54, 0xaf, 0x64, 0xc2, - 0x5e, 0x21, 0xd0, 0xcf, 0x73, 0xda, 0x2b, 0x67, 0x98, 0xdf, 0x14, 0x06, 0x65, 0x7e, 0x0d, 0x74, - 0xe5, 0x97, 0x5c, 0x21, 0x14, 0x46, 0x0e, 0x58, 0xcb, 0x6e, 0x1a, 0x2e, 0xdb, 0x33, 0xdc, 0xc7, - 0x12, 0x77, 0x68, 0xce, 0x37, 0x7c, 0x28, 0xce, 0x70, 0xfa, 0x7b, 0x0d, 0xb2, 0x55, 0xc3, 0x91, - 0xe5, 0xf2, 0x2e, 0x8c, 0x34, 0x3a, 0x86, 0xfd, 0xb8, 0x76, 0x8c, 0x63, 0xb4, 0x2e, 0x57, 0x2e, - 0x20, 0xcf, 0x16, 0x5f, 0x10, 0x74, 0x7a, 0xae, 0x11, 0x0c, 0xc8, 0x3d, 0x00, 0xcb, 0x66, 0x1d, - 0x51, 0xe8, 0xd1, 0xe8, 0x5c, 0x79, 0x1a, 0x59, 0x7c, 0xc1, 0x2b, 0xbb, 0x3e, 0x81, 0xae, 0x10, - 0x97, 0xd6, 0x00, 0x82, 0x15, 0x72, 0x1b, 0xb2, 0xfe, 0x5a, 0x51, 0x53, 0x82, 0xef, 0xd3, 0xe8, - 0x01, 0x01, 0x6d, 0x42, 0x4e, 0x81, 0x44, 0x66, 0x01, 0xda, 0xa7, 0xad, 0x5a, 0xd3, 0x38, 0x63, - 0x1d, 0x07, 0x81, 0x0f, 0xe8, 0xd9, 0xf6, 0x69, 0x6b, 0x1b, 0x27, 0xf8, 0xb2, 0xd9, 0xb6, 0x4f, - 0xdd, 0x9a, 0x63, 0x3e, 0x67, 0x98, 0xf2, 0x03, 0x7a, 0x16, 0x67, 0xf6, 0xcd, 0xe7, 0x8c, 0xc7, - 0xdf, 0x3a, 0x75, 0xfd, 0xf5, 0x0c, 0xae, 0x83, 0x98, 0xe2, 0x04, 0xf4, 0x8f, 0x1a, 0x64, 0x7d, - 0x18, 0x64, 0x09, 0x46, 0x7d, 0x20, 0x18, 0x38, 0xb1, 0x0d, 0xc2, 0x93, 0x64, 0x1b, 0x2e, 0x05, - 0x1b, 0x5a, 0x78, 0xd4, 0xf3, 0xcf, 0xd5, 0xb0, 0x5d, 0x2b, 0x91, 0x73, 0xcb, 0xd1, 0x0b, 0x76, - 0x64, 0xa6, 0xf4, 0x10, 0x0a, 0x51, 0x2a, 0xb2, 0x02, 0x43, 0x9e, 0x5c, 0xe1, 0xaf, 0x89, 0x70, - 0xb2, 0xc8, 0x70, 0x79, 0x44, 0xf4, 0xbb, 0x7e, 0xc8, 0x61, 0x41, 0x48, 0x39, 0x1e, 0xe3, 0xcb, - 0xc1, 0x43, 0xb8, 0x64, 0xd9, 0xae, 0xd9, 0x32, 0x9f, 0x23, 0x60, 0x71, 0x56, 0x89, 0xc2, 0x3f, - 0x29, 0x6d, 0x09, 0x56, 0xf1, 0xb8, 0x2a, 0x58, 0x91, 0x19, 0x72, 0x2b, 0x22, 0xa3, 0x61, 0x19, - 0x4d, 0xdc, 0xf2, 0x5a, 0x98, 0x78, 0xcb, 0x32, 0x9a, 0xa4, 0x1a, 0xe7, 0xbc, 0x01, 0x74, 0xde, - 0x82, 0xcc, 0x04, 0xdf, 0x8e, 0x1e, 0xdc, 0x47, 0xee, 0x00, 0x31, 0x8e, 0x8f, 0x99, 0xe3, 0xd4, - 0x6c, 0xd6, 0x69, 0x99, 0x8e, 0x83, 0xbb, 0x75, 0x10, 0xef, 0x14, 0x97, 0xc4, 0xca, 0x5e, 0xb0, - 0x90, 0x9e, 0x35, 0xe4, 0x15, 0x98, 0x88, 0x54, 0x9d, 0x1a, 0xfa, 0x71, 0x18, 0x5d, 0x46, 0xc2, - 0xa5, 0xa7, 0xca, 0xbd, 0x5a, 0x84, 0x21, 0x79, 0x86, 0x16, 0xb3, 0xa8, 0xd3, 0x1b, 0x72, 0x7f, - 0x3f, 0xb1, 0x8e, 0x2a, 0xf5, 0x22, 0x08, 0x7f, 0xe3, 0x80, 0xdc, 0x01, 0x68, 0x1b, 0x8e, 0x97, - 0x87, 0x39, 0xb4, 0x3b, 0x1f, 0x4e, 0x2a, 0x3d, 0xdb, 0xf6, 0x13, 0x77, 0x1a, 0x86, 0x9f, 0x58, - 0x47, 0x22, 0x2a, 0x23, 0xa2, 0xb6, 0x3c, 0xb1, 0x8e, 0xb8, 0xd7, 0x7f, 0x90, 0x7d, 0x53, 0x01, - 0xb2, 0x8e, 0xb5, 0x10, 0x9d, 0xae, 0xb3, 0xff, 0x3d, 0x65, 0x8e, 0xcb, 0xab, 0x85, 0xa8, 0x75, - 0x31, 0xd5, 0x42, 0x89, 0x8e, 0x9e, 0x73, 0x82, 0x01, 0xbd, 0x03, 0x85, 0x90, 0x28, 0xbb, 0x79, - 0x16, 0x2a, 0x9a, 0x5a, 0xa8, 0x68, 0xd2, 0x55, 0x20, 0x1b, 0xac, 0xc9, 0x22, 0x9a, 0x53, 0x18, - 0xee, 0x40, 0x21, 0xc4, 0x70, 0x8e, 0xfc, 0xdb, 0x30, 0xb6, 0xc5, 0xdc, 0x5e, 0x85, 0x6f, 0xc0, - 0x68, 0x40, 0xcd, 0x25, 0x5f, 0xc8, 0x05, 0x93, 0x30, 0xee, 0x49, 0xd9, 0x36, 0x1d, 0x57, 0xea, - 0xa5, 0x7b, 0x70, 0x29, 0x3c, 0xcd, 0x15, 0xbc, 0x0d, 0x63, 0x42, 0x81, 0x25, 0x8f, 0x70, 0x2f, - 0x62, 0x24, 0xd0, 0xe1, 0x9d, 0xee, 0x7a, 0xde, 0x51, 0x87, 0x0e, 0x7d, 0xc3, 0x0b, 0x1b, 0x1e, - 0xcb, 0x9e, 0x7d, 0xf3, 0x30, 0x80, 0xe7, 0x8e, 0x04, 0x2b, 0xce, 0x15, 0x41, 0x21, 0x16, 0x82, - 0x18, 0x49, 0x3e, 0xe9, 0xc3, 0x84, 0x33, 0x9d, 0x93, 0x6f, 0x31, 0x17, 0x69, 0x9d, 0x1e, 0x9c, - 0xf8, 0x1a, 0xe4, 0x15, 0x72, 0x2e, 0x9b, 0xc2, 0x20, 0xca, 0xf2, 0x6c, 0x53, 0x21, 0xc9, 0x15, - 0x19, 0xa8, 0x90, 0x21, 0x29, 0x90, 0x5e, 0xc5, 0x40, 0x29, 0xf0, 0xcf, 0x37, 0xfa, 0x3e, 0x4c, - 0xea, 0xac, 0x61, 0x3a, 0x2e, 0xeb, 0x88, 0x83, 0xde, 0x53, 0xb3, 0x08, 0x83, 0xe2, 0x78, 0x97, - 0xbc, 0x39, 0xe4, 0x95, 0x34, 0x72, 0x89, 0x96, 0x61, 0x3c, 0xca, 0xcd, 0xd5, 0xa6, 0xdd, 0x15, - 0xa8, 0x05, 0x84, 0xdf, 0x06, 0x05, 0x7d, 0x0f, 0x9e, 0xe3, 0x87, 0x98, 0x2f, 0x4d, 0xdc, 0x5b, - 0xb3, 0x7a, 0xd6, 0x13, 0x87, 0x97, 0x18, 0x93, 0x97, 0x8c, 0x96, 0xcd, 0xf7, 0x3f, 0x56, 0xe7, - 0x61, 0x1d, 0x4c, 0x67, 0x5d, 0xce, 0x50, 0x02, 0x85, 0x90, 0x42, 0xbb, 0x79, 0x46, 0x4f, 0x70, - 0xd7, 0xf5, 0x8e, 0x41, 0x75, 0x7a, 0x5f, 0xf8, 0x16, 0x13, 0x32, 0x36, 0x13, 0x31, 0xf6, 0x2d, - 0x8c, 0x9f, 0xaa, 0x9a, 0xbc, 0x0c, 0x43, 0x62, 0xd9, 0x8b, 0x7b, 0xc8, 0xb3, 0xde, 0x1a, 0xfd, - 0x14, 0x8a, 0x8f, 0xec, 0xba, 0xe1, 0xb2, 0x43, 0xff, 0x51, 0xc1, 0x3c, 0xa0, 0xa9, 0x77, 0xb1, - 0xe0, 0x06, 0xd5, 0x97, 0x74, 0x83, 0xa2, 0x45, 0x98, 0x8a, 0x11, 0xce, 0x1d, 0xf3, 0x1b, 0x0d, - 0x8a, 0x3e, 0xe2, 0xf7, 0x4f, 0x9b, 0xcd, 0x4a, 0xfb, 0xc4, 0xfa, 0xf1, 0x1c, 0x44, 0xae, 0xc1, - 0x98, 0xd5, 0x6e, 0x9e, 0xd5, 0xf8, 0xc5, 0xcd, 0x71, 0xf9, 0x73, 0x0c, 0xcf, 0xc6, 0x61, 0x7d, - 0x94, 0x4f, 0x6f, 0xe3, 0xec, 0xb6, 0xd5, 0xa0, 0xdf, 0x68, 0x90, 0x0f, 0x83, 0xe2, 0x3b, 0xf4, - 0x30, 0x79, 0x87, 0xca, 0x6b, 0x6b, 0xd7, 0xf5, 0xba, 0xaf, 0x87, 0xeb, 0x75, 0xf4, 0x7d, 0x98, - 0x39, 0xff, 0x7d, 0x48, 0x3f, 0x86, 0xa9, 0x18, 0xbf, 0xf1, 0x80, 0xbf, 0x07, 0x97, 0xa4, 0xfd, - 0x27, 0xa7, 0xcd, 0x66, 0xcd, 0x6c, 0x9f, 0x58, 0x5e, 0xe8, 0xc7, 0x15, 0xc8, 0x3e, 0xd3, 0xd8, - 0xb3, 0xd0, 0xd8, 0xa1, 0x7f, 0xd1, 0x60, 0x92, 0xd7, 0x48, 0xff, 0x25, 0xd6, 0xcb, 0x8e, 0x7d, - 0x15, 0x26, 0x1c, 0x9f, 0xa1, 0x66, 0x34, 0x1b, 0x56, 0xc7, 0x74, 0x1f, 0xb7, 0x64, 0x70, 0xc6, - 0x83, 0xb5, 0x07, 0xde, 0x12, 0x79, 0x19, 0xf2, 0x1d, 0x21, 0xb8, 0xd6, 0x3e, 0x6d, 0x1d, 0xb1, - 0x0e, 0x46, 0x6b, 0x40, 0x1f, 0x95, 0xb3, 0x55, 0x9c, 0x24, 0x4b, 0x90, 0x6f, 0x5a, 0x8d, 0x9a, - 0x92, 0x93, 0xfd, 0x98, 0x93, 0x23, 0x4d, 0xab, 0x71, 0xe8, 0xa7, 0xe5, 0x34, 0x0c, 0xa3, 0x4f, - 0x39, 0xb4, 0x01, 0x01, 0x0d, 0xc7, 0x95, 0x3a, 0xbd, 0x27, 0x4e, 0x02, 0xd5, 0x9c, 0x5e, 0xeb, - 0xe1, 0xcf, 0x35, 0xb8, 0xc2, 0x79, 0x1f, 0x5b, 0xa7, 0xcd, 0xfa, 0xf7, 0x2b, 0x23, 0x6f, 0x41, - 0x91, 0xf1, 0xa7, 0x68, 0xcd, 0x91, 0x6f, 0xd1, 0x2e, 0xa7, 0x4c, 0x31, 0xf5, 0xa9, 0x1a, 0xf8, - 0x25, 0xc5, 0x94, 0x3d, 0x98, 0x8e, 0x87, 0x23, 0x8e, 0xc9, 0x29, 0x07, 0x57, 0x50, 0xa5, 0xea, - 0x30, 0x0d, 0x1d, 0x36, 0xee, 0x44, 0xf8, 0x2a, 0x75, 0x87, 0x76, 0xb0, 0x32, 0xc9, 0x5d, 0xf6, - 0xe2, 0xd5, 0x71, 0x11, 0x46, 0xbd, 0xad, 0xcc, 0xef, 0x6a, 0x8e, 0xec, 0x27, 0x79, 0xfb, 0x9b, - 0xdf, 0xd2, 0x1c, 0xba, 0x8b, 0x55, 0xca, 0xd7, 0xc9, 0xb1, 0xdf, 0x87, 0x82, 0x92, 0x02, 0x3c, - 0x73, 0xc2, 0x47, 0x70, 0xa8, 0xdb, 0xa2, 0xe7, 0x5b, 0xea, 0xd0, 0xa1, 0x0e, 0x14, 0x75, 0x66, - 0x5b, 0x1d, 0x37, 0x20, 0xeb, 0xc5, 0x96, 0x38, 0xa5, 0x99, 0x9e, 0x95, 0x16, 0x61, 0x2a, 0x46, - 0x29, 0x2f, 0x6a, 0x7f, 0xd0, 0x20, 0xbb, 0x63, 0xd5, 0x99, 0xa8, 0x1b, 0xb3, 0x00, 0x02, 0x80, - 0xf2, 0x08, 0xc8, 0xe2, 0x0c, 0xde, 0x59, 0x43, 0xe5, 0xaa, 0x2f, 0x52, 0xae, 0x56, 0x00, 0xfc, - 0x4a, 0xe1, 0x24, 0x3c, 0xd5, 0x15, 0x0a, 0x72, 0x2d, 0xb8, 0x00, 0xf7, 0x23, 0xf1, 0x88, 0x6a, - 0x48, 0x70, 0x1d, 0x9e, 0x05, 0x68, 0x71, 0x80, 0x35, 0x9b, 0x3f, 0x68, 0xc5, 0x26, 0xcb, 0xe2, - 0x0c, 0x7f, 0xcd, 0xd2, 0xd7, 0x21, 0xb7, 0x61, 0xb8, 0xc6, 0x3e, 0x73, 0xd1, 0x82, 0xb8, 0x07, - 0x0c, 0x81, 0x7e, 0xe4, 0x15, 0x88, 0xf1, 0x9b, 0x9a, 0x50, 0xd8, 0x37, 0x9e, 0x86, 0x2f, 0x91, - 0xe7, 0x58, 0x1f, 0xff, 0x0e, 0x8a, 0xb4, 0x41, 0x32, 0xdd, 0x6d, 0x90, 0x02, 0xe4, 0x15, 0x55, - 0xdc, 0xe9, 0x3f, 0xd3, 0x84, 0x76, 0x74, 0xbc, 0xa7, 0x7d, 0x09, 0x06, 0xd0, 0x2a, 0x59, 0xb2, - 0x85, 0xeb, 0xfc, 0xd0, 0xe8, 0x62, 0x91, 0xdc, 0x82, 0xe1, 0xba, 0xe1, 0x1a, 0xb2, 0x5e, 0x07, - 0x77, 0x4b, 0xc5, 0x07, 0xfa, 0x50, 0x5d, 0x0c, 0xc8, 0x02, 0x8c, 0xb8, 0xac, 0xed, 0x58, 0x9d, - 0xda, 0x91, 0x65, 0x74, 0xea, 0xf2, 0x02, 0x90, 0x13, 0x73, 0x0f, 0xf9, 0x94, 0x07, 0x4e, 0x22, - 0xe1, 0xe0, 0x8a, 0x58, 0xad, 0xf9, 0x64, 0x9d, 0x43, 0x36, 0x99, 0xb7, 0x3d, 0xe9, 0x06, 0x4c, - 0x74, 0xad, 0xf0, 0x84, 0xb8, 0x0d, 0xb8, 0x4d, 0x4d, 0x96, 0x76, 0x15, 0xf5, 0x48, 0xe8, 0x1b, - 0xa2, 0x62, 0x73, 0x29, 0xa8, 0xd5, 0xe9, 0xcd, 0xfd, 0xf4, 0x1d, 0x51, 0x1a, 0x55, 0x3e, 0xae, - 0xfc, 0x1a, 0x0c, 0xa2, 0x67, 0x9c, 0x50, 0x83, 0x20, 0xf0, 0x9b, 0x5c, 0xa5, 0x7a, 0x00, 0x3e, - 0xe4, 0xf6, 0x17, 0xd8, 0xf2, 0x74, 0x0d, 0x48, 0x44, 0x26, 0x47, 0xd4, 0x53, 0x20, 0xe9, 0xdf, - 0x35, 0x98, 0xdb, 0x57, 0x4b, 0xbd, 0x9f, 0x25, 0x3f, 0xd2, 0x11, 0xa6, 0x96, 0xea, 0x4c, 0xa8, - 0x54, 0x93, 0x1d, 0x98, 0x54, 0xa4, 0x29, 0x59, 0x2c, 0x12, 0xb3, 0x28, 0xc2, 0xd9, 0x8d, 0x54, - 0x57, 0x40, 0x04, 0xf0, 0xe9, 0x3d, 0x98, 0x49, 0xb4, 0x4c, 0xbe, 0x1c, 0x7c, 0x24, 0x5a, 0xf8, - 0xd0, 0x78, 0x1b, 0xe6, 0xb6, 0xce, 0x75, 0x4a, 0x12, 0x73, 0x0b, 0x66, 0xb6, 0xd2, 0xf4, 0x26, - 0x9a, 0xa9, 0x5d, 0xc8, 0xcc, 0x77, 0x61, 0x21, 0x5e, 0x9d, 0xf2, 0x86, 0x4b, 0x7b, 0xf6, 0x7c, - 0xa7, 0xc1, 0x54, 0x0c, 0x37, 0x4f, 0xdc, 0x64, 0x23, 0x2f, 0x12, 0xf9, 0x44, 0xbb, 0x33, 0x17, - 0xb2, 0xfb, 0x39, 0x5c, 0x4d, 0xb3, 0x9b, 0x7b, 0xfa, 0x10, 0xa6, 0xe3, 0x34, 0xaa, 0x67, 0xe5, - 0x95, 0x24, 0xad, 0xfc, 0xfc, 0xba, 0xec, 0xc4, 0xce, 0x3b, 0xb4, 0x0c, 0x93, 0xfc, 0x4e, 0x10, - 0xb0, 0xf5, 0xe0, 0xe7, 0x49, 0x18, 0x8f, 0xf2, 0xf0, 0x3a, 0xf7, 0x6f, 0x0d, 0x16, 0xf6, 0x99, - 0x1b, 0xdf, 0x83, 0xff, 0xe9, 0x6e, 0x4d, 0x91, 0x54, 0x3c, 0x84, 0xe9, 0x88, 0xd0, 0xae, 0x74, - 0x14, 0x9e, 0x8b, 0xc7, 0xad, 0x5f, 0x66, 0xf1, 0xf6, 0xd0, 0xfb, 0x70, 0x35, 0xcd, 0xda, 0x73, - 0xf2, 0x52, 0xec, 0xf5, 0xf3, 0x7d, 0x95, 0xc4, 0x2f, 0xf6, 0x4c, 0xaa, 0xf6, 0x54, 0xcb, 0xb5, - 0x17, 0xb0, 0xfc, 0x01, 0x2c, 0x25, 0xea, 0xee, 0x31, 0x55, 0xff, 0xac, 0xc1, 0x74, 0xbc, 0x80, - 0x73, 0xb2, 0xf5, 0xe2, 0x7b, 0x24, 0xd5, 0x1d, 0x99, 0x17, 0x70, 0xc7, 0xff, 0x6b, 0x40, 0xcf, - 0xf1, 0x07, 0x0f, 0x87, 0x01, 0xb3, 0x49, 0xfa, 0xd5, 0x34, 0x9e, 0x4b, 0xc1, 0xc0, 0x33, 0xb9, - 0xc4, 0x92, 0x96, 0x1c, 0xfa, 0x4f, 0x0d, 0x16, 0x3f, 0x34, 0x9a, 0x26, 0x7f, 0x6d, 0xa7, 0x95, - 0xfc, 0x8b, 0xf4, 0xd4, 0xfe, 0x0b, 0xea, 0xe4, 0xbb, 0xb0, 0x90, 0x6e, 0x9d, 0xcc, 0x39, 0xd3, - 0xa9, 0x3d, 0xe5, 0x74, 0xf2, 0x37, 0x8a, 0x21, 0xd3, 0x41, 0xb6, 0x9b, 0x8f, 0x60, 0x34, 0xf4, - 0x7b, 0x2f, 0x29, 0xc0, 0xc8, 0xa3, 0xea, 0x07, 0xd5, 0xdd, 0xc3, 0x6a, 0xed, 0xe0, 0xe3, 0xbd, - 0xcd, 0xc2, 0x4b, 0x04, 0x60, 0x70, 0x63, 0xf7, 0xd1, 0xc3, 0xed, 0xcd, 0x82, 0x46, 0x86, 0x20, - 0x53, 0xa9, 0x1e, 0x14, 0xfa, 0xc8, 0x08, 0x0c, 0x6f, 0x54, 0xf6, 0xd7, 0xf5, 0xcd, 0x83, 0xcd, - 0x42, 0x86, 0x8c, 0x41, 0x6e, 0xfd, 0xc1, 0xc1, 0xe6, 0xd6, 0xae, 0x5e, 0x59, 0x7f, 0xb0, 0x5d, - 0xe8, 0xbf, 0xf9, 0x3f, 0x50, 0x88, 0xb6, 0xe6, 0x49, 0x11, 0x26, 0x3c, 0xc9, 0xbb, 0x7b, 0x07, - 0x95, 0x9d, 0xca, 0x27, 0x0f, 0x0e, 0x2a, 0xbb, 0xd5, 0xc2, 0x4b, 0x5c, 0xd8, 0x4e, 0xa5, 0xca, - 0x67, 0xb8, 0x0e, 0x3e, 0x7a, 0xf0, 0x91, 0x18, 0xf5, 0xdd, 0xdc, 0x82, 0x01, 0x6c, 0x8f, 0x90, - 0x1c, 0x0c, 0xed, 0x6d, 0x56, 0x37, 0x2a, 0xd5, 0xad, 0xc2, 0x4b, 0x7c, 0xa0, 0x3f, 0xaa, 0x56, - 0xf9, 0x40, 0x23, 0xa3, 0x90, 0x5d, 0xdf, 0xdd, 0xd9, 0xdb, 0xde, 0x3c, 0xd8, 0xdc, 0x28, 0xf4, - 0x71, 0xbc, 0x1f, 0x54, 0xb6, 0xb7, 0x37, 0x37, 0x0a, 0x19, 0x92, 0x85, 0x81, 0x4d, 0x5d, 0xdf, - 0xd5, 0x0b, 0x5f, 0x94, 0x7f, 0x3d, 0x0d, 0x43, 0x3b, 0x46, 0xdb, 0x68, 0xb0, 0x0e, 0x69, 0x41, - 0x4e, 0x69, 0x07, 0x93, 0xcb, 0xe8, 0xf4, 0xee, 0x5e, 0x73, 0x69, 0xb2, 0x7b, 0x81, 0x57, 0xf5, - 0x95, 0xff, 0xfb, 0xeb, 0xbf, 0x7e, 0xd5, 0xb7, 0x4c, 0x8b, 0xf8, 0x87, 0x03, 0x29, 0x74, 0x55, - 0x21, 0x5b, 0x0b, 0xed, 0x25, 0xf2, 0x19, 0x0c, 0x7b, 0x3d, 0x56, 0x22, 0x7a, 0xde, 0x91, 0xee, - 0x6f, 0x89, 0x44, 0x66, 0xb9, 0x96, 0x65, 0xd4, 0x42, 0xc9, 0x7c, 0x48, 0x8b, 0x47, 0xb3, 0xfa, - 0xa5, 0x57, 0x47, 0xbe, 0x22, 0x4f, 0x20, 0xa7, 0x74, 0x9f, 0xa5, 0x39, 0xdd, 0x0d, 0x6c, 0x69, - 0x4e, 0xb4, 0x51, 0x4d, 0x6f, 0xa1, 0xa2, 0x97, 0xc9, 0x62, 0x48, 0x91, 0x42, 0xa6, 0xea, 0x3a, - 0x86, 0x11, 0xb5, 0x5f, 0x4c, 0x8a, 0x21, 0xe4, 0x4a, 0xa9, 0x2b, 0x4d, 0xc5, 0xac, 0x70, 0x75, - 0x0b, 0xa8, 0xee, 0x0a, 0x99, 0x8e, 0xb5, 0x0b, 0x85, 0x9e, 0x78, 0xf1, 0x11, 0xbf, 0xec, 0xaa, - 0xf1, 0x51, 0x7b, 0xb1, 0xa1, 0xf8, 0x04, 0x6d, 0x57, 0x7a, 0x1d, 0x35, 0x2c, 0xc4, 0xc6, 0x07, - 0xc9, 0xd6, 0x44, 0xf7, 0x95, 0x1c, 0x41, 0xd6, 0x6f, 0x0a, 0x93, 0x49, 0x0f, 0x6f, 0xa8, 0xa7, - 0x5c, 0x1a, 0x8f, 0x4e, 0x73, 0x0d, 0x37, 0x50, 0xc3, 0x22, 0x59, 0x88, 0xda, 0x20, 0x88, 0x54, - 0x87, 0x89, 0xe0, 0x0b, 0x43, 0x26, 0x42, 0xb2, 0xba, 0x82, 0xaf, 0x98, 0x90, 0x18, 0x7c, 0xa4, - 0x59, 0xfd, 0xd2, 0x6b, 0xf6, 0x7d, 0x45, 0x1c, 0xc8, 0x87, 0x7b, 0xc0, 0xa4, 0x84, 0xf2, 0x62, - 0xdb, 0xca, 0xa5, 0x62, 0xec, 0x9a, 0xb2, 0x0b, 0xe8, 0x95, 0x90, 0xc6, 0x30, 0xe5, 0x9a, 0x6c, - 0x3c, 0x93, 0x4f, 0x01, 0x82, 0xbe, 0x2a, 0xf1, 0x23, 0x1d, 0xee, 0x06, 0x95, 0x26, 0xba, 0xe6, - 0xb9, 0xa2, 0xab, 0xa8, 0x68, 0x9a, 0x5c, 0x8e, 0x9a, 0xe6, 0x89, 0x7b, 0x0e, 0x97, 0xba, 0xba, - 0xa3, 0x64, 0x16, 0x65, 0x25, 0xb5, 0x64, 0x4b, 0x57, 0x92, 0x96, 0x95, 0x68, 0x95, 0xe6, 0x42, - 0x1a, 0xbb, 0x88, 0xd7, 0xb4, 0x9b, 0xe4, 0x99, 0xd2, 0x98, 0xf6, 0x3b, 0x9d, 0xb3, 0x61, 0x3b, - 0x22, 0x6d, 0x59, 0xa9, 0x3b, 0xbe, 0xfb, 0x48, 0xaf, 0xa1, 0xee, 0x79, 0x32, 0x17, 0x6f, 0xad, - 0xaf, 0xa3, 0x8d, 0xbf, 0x4f, 0x28, 0x4d, 0x39, 0x19, 0xc6, 0xd8, 0xc6, 0x63, 0xa9, 0x18, 0xbb, - 0xa6, 0xe8, 0x8b, 0x84, 0x31, 0x4c, 0xc9, 0x0d, 0xfd, 0x5a, 0x13, 0x6f, 0xd5, 0x68, 0xeb, 0x8c, - 0xcc, 0xfb, 0xa2, 0x13, 0x9a, 0x7c, 0xa5, 0xb9, 0x14, 0x0a, 0x0e, 0xe1, 0x0d, 0x84, 0xf0, 0x0a, - 0xbd, 0x95, 0x90, 0x1c, 0x71, 0x9c, 0x1c, 0xd2, 0x67, 0xb8, 0xa9, 0xbc, 0x3f, 0xed, 0xf8, 0x9b, - 0x2a, 0xdc, 0x8b, 0x0b, 0x36, 0x95, 0xda, 0x2f, 0xa3, 0x14, 0x75, 0xce, 0xd0, 0xae, 0x4d, 0x25, - 0xa9, 0xb8, 0xfc, 0x5f, 0x6a, 0x70, 0x39, 0xe1, 0xcd, 0x48, 0x16, 0xc5, 0xb9, 0x9b, 0xfa, 0x2c, - 0x2c, 0x2d, 0xa4, 0x13, 0x71, 0x1c, 0xab, 0x88, 0xe3, 0x06, 0x5d, 0x0a, 0xe1, 0x48, 0x60, 0xe1, - 0xa0, 0x7e, 0xab, 0xc1, 0xe5, 0xad, 0x54, 0x50, 0x5b, 0xbd, 0x80, 0x4a, 0x7b, 0x93, 0xd2, 0x37, - 0x11, 0xd4, 0xab, 0x64, 0x35, 0x79, 0x4f, 0x04, 0x2c, 0xab, 0x5f, 0x7a, 0xf7, 0xcc, 0xaf, 0xc8, - 0xb7, 0x1a, 0x94, 0x92, 0x9f, 0x61, 0xe4, 0x5a, 0x8a, 0x6a, 0xf5, 0x24, 0x58, 0x3a, 0x97, 0x8e, - 0xa3, 0x5c, 0x43, 0x94, 0xaf, 0x91, 0x72, 0x0f, 0x28, 0x39, 0x97, 0x5a, 0x64, 0xbf, 0xd1, 0xa0, - 0x94, 0xfc, 0xf2, 0x90, 0x40, 0xcf, 0x7d, 0x88, 0x49, 0xa0, 0xe7, 0x3c, 0x61, 0x68, 0x19, 0x81, - 0xde, 0xa6, 0xd7, 0xa3, 0x31, 0x4e, 0xe0, 0xe2, 0x61, 0x96, 0x9e, 0x4c, 0x07, 0xb8, 0xd5, 0x23, - 0xc0, 0x73, 0x5e, 0x39, 0xc9, 0x9e, 0x4c, 0xe0, 0x52, 0x43, 0xfe, 0x3b, 0x0d, 0x66, 0x53, 0x6f, - 0xee, 0xe4, 0x46, 0x3a, 0x06, 0x35, 0xf0, 0xd7, 0x7b, 0x21, 0xe5, 0x88, 0xdf, 0x41, 0xc4, 0x6f, - 0x92, 0xd7, 0x7b, 0x43, 0x1c, 0x0d, 0xff, 0x27, 0x90, 0xf5, 0xbb, 0x9f, 0xf2, 0x1c, 0x8f, 0x36, - 0x5e, 0xe5, 0x39, 0x1e, 0x69, 0x92, 0xca, 0xbb, 0x08, 0x9d, 0x0a, 0x87, 0xd2, 0x23, 0xe2, 0x91, - 0x93, 0xb2, 0xb1, 0xb7, 0xa6, 0xc8, 0x56, 0xfb, 0x7b, 0x8a, 0x6c, 0xa5, 0xc7, 0x99, 0x2c, 0x1b, - 0x89, 0xb8, 0xec, 0xe7, 0x70, 0xa9, 0xab, 0x65, 0x2e, 0x4f, 0x9b, 0xa4, 0xfe, 0xbd, 0x3c, 0x6d, - 0x12, 0x3a, 0xed, 0xf2, 0xa4, 0xa3, 0x73, 0x91, 0x43, 0x3c, 0x42, 0xcc, 0x75, 0x5b, 0xe2, 0x3f, - 0x08, 0x4a, 0xa3, 0x95, 0xf8, 0x07, 0x59, 0x4c, 0x63, 0xb6, 0x34, 0x1d, 0xbf, 0xc8, 0xb5, 0x2e, - 0xa1, 0xd6, 0x39, 0x32, 0xd3, 0x95, 0xb9, 0xaa, 0xf4, 0xcf, 0xc5, 0x09, 0x17, 0xf4, 0x56, 0x95, - 0x13, 0xae, 0xab, 0x51, 0xab, 0x9c, 0x70, 0x91, 0x66, 0x2c, 0x5d, 0x44, 0x6d, 0xb3, 0xe4, 0x4a, - 0xac, 0x36, 0x29, 0xfa, 0x5b, 0x0d, 0x66, 0xd2, 0x1e, 0x46, 0x64, 0x19, 0xe5, 0xf7, 0xf0, 0x32, - 0x2c, 0x5d, 0xeb, 0x81, 0x92, 0xe3, 0x7a, 0x0d, 0x71, 0xad, 0xd0, 0x1b, 0x21, 0x5c, 0x69, 0x7c, - 0x6b, 0xda, 0xcd, 0xf2, 0x9f, 0x34, 0x80, 0x60, 0x8d, 0xbc, 0xff, 0xc3, 0x5c, 0x03, 0x88, 0xfd, - 0x53, 0x9b, 0x5f, 0x36, 0x61, 0x34, 0x94, 0xac, 0xe4, 0xa3, 0x1f, 0xeb, 0x82, 0x71, 0x34, 0x88, - 0xff, 0xeb, 0xbe, 0xfb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xd8, 0xc2, 0x1c, 0x07, 0x2e, - 0x00, 0x00, + // 3139 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x49, 0x6f, 0x23, 0xc7, + 0xf5, 0x77, 0x8b, 0xda, 0xf8, 0x28, 0x51, 0x9c, 0xd2, 0x32, 0x14, 0x47, 0xd2, 0x48, 0x25, 0x79, + 0x46, 0xb3, 0x49, 0x36, 0xc7, 0xdb, 0xc8, 0xe3, 0xbf, 0x31, 0x23, 0xc9, 0xfa, 0x13, 0x96, 0x28, + 0xa1, 0xa5, 0xb1, 0xbc, 0x00, 0x26, 0x5a, 0x62, 0x89, 0xd3, 0x63, 0x92, 0xdd, 0x61, 0xb7, 0x66, + 0xac, 0x31, 0x7c, 0xc9, 0x25, 0xb9, 0x04, 0x70, 0xb6, 0x4b, 0x0e, 0x3e, 0xfa, 0x03, 0x04, 0x30, + 0x72, 0xcb, 0x25, 0x40, 0x80, 0x1c, 0x72, 0x0a, 0x02, 0x04, 0x41, 0x8e, 0x39, 0xe6, 0x43, 0x04, + 0xf5, 0xaa, 0xba, 0xbb, 0xba, 0xd9, 0xdd, 0xa2, 0x35, 0xb6, 0x91, 0x1b, 0xbb, 0xea, 0x2d, 0xbf, + 0xb7, 0x56, 0xd5, 0x93, 0x20, 0x6b, 0xd8, 0xe6, 0x8a, 0xdd, 0xb1, 0x5c, 0x8b, 0x64, 0x0c, 0xdb, + 0x2c, 0xcd, 0x34, 0x2c, 0xab, 0xd1, 0x64, 0xab, 0x86, 0x6d, 0xae, 0x1a, 0xed, 0xb6, 0xe5, 0x1a, + 0xae, 0x69, 0xb5, 0x1d, 0x41, 0x42, 0x3f, 0x81, 0xd1, 0xf7, 0x98, 0xe1, 0x98, 0x47, 0x4d, 0xb6, + 0x6f, 0x1b, 0xc7, 0x8c, 0x14, 0x20, 0xd3, 0x32, 0x3e, 0x2f, 0x6a, 0xf3, 0xda, 0x72, 0x56, 0xe7, + 0x3f, 0x71, 0xc5, 0x6c, 0x17, 0xfb, 0xe4, 0x8a, 0xd9, 0x26, 0x04, 0xfa, 0x9b, 0xa6, 0xe3, 0x16, + 0x33, 0xf3, 0x99, 0xe5, 0xac, 0x8e, 0xbf, 0xf9, 0x9a, 0xe3, 0x32, 0xbb, 0xd8, 0x8f, 0x64, 0xf8, + 0x9b, 0x7e, 0xa5, 0xc1, 0xd8, 0x9e, 0xd1, 0x31, 0x5a, 0xcc, 0x65, 0x9d, 0x75, 0xab, 0x7d, 0x62, + 0x36, 0x38, 0x5d, 0xdb, 0x68, 0x31, 0xa9, 0x00, 0x7f, 0x93, 0x7b, 0x90, 0xb7, 0x3d, 0xb2, 0x9a, + 0x7b, 0x66, 0x33, 0x54, 0x96, 0x2f, 0x93, 0x15, 0x6e, 0x8b, 0x2f, 0xe1, 0xe0, 0xcc, 0x66, 0xfa, + 0xa8, 0xad, 0x7e, 0x92, 0x15, 0x18, 0x3e, 0x91, 0xf8, 0x8b, 0x99, 0x79, 0x6d, 0x39, 0x27, 0x99, + 0x42, 0x46, 0xe9, 0x3e, 0x0d, 0xb5, 0x21, 0xeb, 0xcb, 0xfb, 0xbe, 0xb1, 0x4c, 0xc0, 0xc0, 0x53, + 0xa3, 0x79, 0x2a, 0x80, 0x64, 0x75, 0xf1, 0x41, 0x7f, 0xa9, 0xc1, 0xe8, 0x0e, 0x73, 0x3b, 0xe6, + 0xb1, 0xb3, 0x6d, 0x35, 0xf6, 0x99, 0x4b, 0xae, 0x40, 0xf6, 0x99, 0xd5, 0xf9, 0x8c, 0x75, 0x6a, + 0x66, 0x5d, 0xea, 0x1e, 0x16, 0x0b, 0x95, 0x3a, 0x29, 0xc3, 0x48, 0x4b, 0x50, 0xd7, 0x9a, 0x56, + 0xc3, 0x29, 0xf6, 0xcd, 0x67, 0x96, 0x73, 0xe5, 0x31, 0xd4, 0x1e, 0x88, 0xd1, 0x73, 0x2d, 0xff, + 0xb7, 0x43, 0x56, 0x61, 0x54, 0x0a, 0x74, 0x5c, 0xc3, 0x3d, 0x75, 0x10, 0x40, 0xbe, 0x0c, 0xc8, + 0xb4, 0xef, 0x1a, 0x2e, 0xd3, 0x47, 0x04, 0xc1, 0x3e, 0xee, 0xd3, 0xbb, 0x30, 0x24, 0x65, 0xc5, + 0xfa, 0xc0, 0x37, 0xa4, 0x4f, 0x35, 0xe4, 0x3e, 0x14, 0x24, 0xd3, 0x07, 0xfc, 0xfb, 0xc0, 0x6c, + 0x31, 0xce, 0xed, 0x9a, 0x01, 0x37, 0xff, 0x9d, 0xc0, 0xbd, 0x0b, 0x10, 0xc0, 0x8f, 0xd5, 0x7a, + 0x07, 0x06, 0x91, 0xd4, 0xb3, 0x79, 0x52, 0xb5, 0xd9, 0x57, 0xa9, 0x4b, 0x22, 0xfa, 0x2e, 0x8c, + 0xef, 0x9f, 0x36, 0x1a, 0xcc, 0xe1, 0xe9, 0x9c, 0x1e, 0xd3, 0x78, 0x44, 0x0f, 0x61, 0x6a, 0xd3, + 0xe8, 0x34, 0xcf, 0xf6, 0x5d, 0xcb, 0xb6, 0xcd, 0x76, 0xe3, 0x22, 0x32, 0x56, 0x21, 0x73, 0x60, + 0x34, 0xbe, 0x03, 0xc3, 0x67, 0x30, 0xba, 0xef, 0x9e, 0xd6, 0xcf, 0x76, 0x9f, 0xb2, 0xce, 0x53, + 0x93, 0x3d, 0x4b, 0x62, 0xb5, 0x9e, 0xb5, 0x59, 0xc7, 0x63, 0xc5, 0x0f, 0x92, 0x87, 0x3e, 0xb3, + 0x2e, 0x73, 0xab, 0xcf, 0xac, 0x93, 0x79, 0xc8, 0xd5, 0x99, 0x73, 0xdc, 0x31, 0x6d, 0xee, 0x01, + 0x59, 0x78, 0xea, 0x12, 0xfd, 0xa7, 0x06, 0x03, 0x07, 0x1d, 0xd3, 0x68, 0x92, 0x69, 0x18, 0x76, + 0xf9, 0x8f, 0x20, 0xe3, 0x86, 0xf0, 0xbb, 0x52, 0xe7, 0x5b, 0x0e, 0x47, 0xc4, 0xb7, 0x84, 0xbe, + 0x21, 0xfc, 0xae, 0xd4, 0xc9, 0x5d, 0x08, 0x32, 0xbc, 0xe6, 0x30, 0x51, 0xf0, 0xb9, 0x72, 0x3e, + 0x5c, 0x0a, 0xfa, 0x88, 0x4f, 0xc4, 0xb3, 0xfb, 0x3a, 0x8c, 0x59, 0x47, 0x4f, 0xd8, 0xb1, 0x6b, + 0x3e, 0x65, 0x35, 0xe1, 0x01, 0x01, 0x2d, 0xef, 0x2f, 0x63, 0x30, 0xc9, 0x0c, 0xf4, 0xbb, 0x46, + 0xc3, 0x29, 0x0e, 0xa0, 0xd0, 0x61, 0x14, 0x7a, 0x60, 0x34, 0x74, 0x5c, 0x25, 0x57, 0x21, 0x77, + 0xdc, 0x61, 0x86, 0xcb, 0x6a, 0x98, 0x60, 0x83, 0x28, 0x02, 0xc4, 0x12, 0xcf, 0x03, 0xfa, 0x77, + 0x0d, 0x06, 0x0f, 0x31, 0xa9, 0xd3, 0x0b, 0x2a, 0xc5, 0x3e, 0xd5, 0x2b, 0x99, 0xb0, 0x57, 0x08, + 0xf4, 0xf3, 0x9a, 0xf6, 0xda, 0x19, 0xd6, 0x37, 0x85, 0x41, 0x59, 0x5f, 0x03, 0x5d, 0xf5, 0x25, + 0x77, 0x08, 0x85, 0x91, 0x03, 0xd6, 0xb2, 0x9b, 0x86, 0xcb, 0xf6, 0x0c, 0xf7, 0xb1, 0xc4, 0x1d, + 0x5a, 0xf3, 0x0d, 0x1f, 0x8a, 0x33, 0x9c, 0xfe, 0x41, 0x83, 0x6c, 0xd5, 0x70, 0x64, 0xbb, 0xbc, + 0x0b, 0x23, 0x8d, 0x8e, 0x61, 0x3f, 0xae, 0x1d, 0xe3, 0x37, 0x5a, 0x97, 0x2b, 0x17, 0x90, 0x67, + 0x8b, 0x6f, 0x08, 0x3a, 0x3d, 0xd7, 0x08, 0x3e, 0xc8, 0x3d, 0x00, 0xcb, 0x66, 0x1d, 0xd1, 0xe8, + 0xd1, 0xe8, 0x5c, 0x79, 0x1a, 0x59, 0x7c, 0xc1, 0x2b, 0xbb, 0x3e, 0x81, 0xae, 0x10, 0x97, 0xd6, + 0x00, 0x82, 0x1d, 0x72, 0x1b, 0xb2, 0xfe, 0x5e, 0x51, 0x53, 0x82, 0xef, 0xd3, 0xe8, 0x01, 0x01, + 0x6d, 0x42, 0x4e, 0x81, 0x44, 0x66, 0x01, 0xda, 0xa7, 0xad, 0x5a, 0xd3, 0x38, 0x63, 0x1d, 0x07, + 0x81, 0x0f, 0xe8, 0xd9, 0xf6, 0x69, 0x6b, 0x1b, 0x17, 0xf8, 0xb6, 0xd9, 0xb6, 0x4f, 0xdd, 0x9a, + 0x63, 0x3e, 0x67, 0x58, 0xf2, 0x03, 0x7a, 0x16, 0x57, 0xf6, 0xcd, 0xe7, 0x8c, 0xc7, 0xdf, 0x3a, + 0x75, 0xfd, 0xfd, 0x0c, 0xee, 0x83, 0x58, 0xe2, 0x04, 0xf4, 0x4f, 0x1a, 0x64, 0x7d, 0x18, 0x64, + 0x09, 0x46, 0x7d, 0x20, 0x18, 0x38, 0x91, 0x06, 0xe1, 0x45, 0xb2, 0x0d, 0x97, 0x82, 0x84, 0x16, + 0x1e, 0xf5, 0xfc, 0x73, 0x35, 0x6c, 0xd7, 0x4a, 0xe4, 0xdc, 0x72, 0xf4, 0x82, 0x1d, 0x59, 0x29, + 0x3d, 0x84, 0x42, 0x94, 0x8a, 0xac, 0xc0, 0x90, 0x27, 0x57, 0xf8, 0x6b, 0x22, 0x5c, 0x2c, 0x32, + 0x5c, 0x1e, 0x11, 0xfd, 0xb6, 0x1f, 0x72, 0xd8, 0x10, 0x52, 0x8e, 0xc7, 0xf8, 0x76, 0xf0, 0x10, + 0x2e, 0x59, 0xb6, 0x6b, 0xb6, 0xcc, 0xe7, 0x08, 0x58, 0x9c, 0x55, 0xa2, 0xf1, 0x4f, 0x4a, 0x5b, + 0x82, 0x5d, 0x3c, 0xae, 0x0a, 0x56, 0x64, 0x85, 0xdc, 0x8a, 0xc8, 0x68, 0x58, 0x46, 0x13, 0x53, + 0x5e, 0x0b, 0x13, 0x6f, 0x59, 0x46, 0x93, 0x54, 0xe3, 0x9c, 0x37, 0x80, 0xce, 0x5b, 0x90, 0x95, + 0xe0, 0xdb, 0xd1, 0x83, 0xfb, 0xc8, 0x1d, 0x20, 0xc6, 0xf1, 0x31, 0x73, 0x9c, 0x9a, 0xcd, 0x3a, + 0x2d, 0xd3, 0x71, 0x30, 0x5b, 0x07, 0xf1, 0x4e, 0x71, 0x49, 0xec, 0xec, 0x05, 0x1b, 0xe9, 0x55, + 0x43, 0x5e, 0x81, 0x89, 0x48, 0xd7, 0xa9, 0xa1, 0x1f, 0x87, 0xd1, 0x65, 0x24, 0xdc, 0x7a, 0xaa, + 0xdc, 0xab, 0x45, 0x18, 0x92, 0x67, 0x68, 0x31, 0x8b, 0x3a, 0xbd, 0x4f, 0xee, 0xef, 0x27, 0xd6, + 0x51, 0xa5, 0x5e, 0x04, 0xe1, 0x6f, 0xfc, 0x20, 0x77, 0x00, 0xda, 0x86, 0xe3, 0xd5, 0x61, 0x0e, + 0xed, 0xce, 0x87, 0x8b, 0x4a, 0xcf, 0xb6, 0xfd, 0xc2, 0x9d, 0x86, 0xe1, 0x27, 0xd6, 0x91, 0x88, + 0xca, 0x88, 0xe8, 0x2d, 0x4f, 0xac, 0x23, 0xee, 0xf5, 0xef, 0x25, 0x6f, 0x2a, 0x40, 0xd6, 0xb1, + 0x17, 0xa2, 0xd3, 0x75, 0xf6, 0x93, 0x53, 0xe6, 0xb8, 0xbc, 0x5b, 0x88, 0x5e, 0x17, 0xd3, 0x2d, + 0x94, 0xe8, 0xe8, 0x39, 0x27, 0xf8, 0xa0, 0x77, 0xa0, 0x10, 0x12, 0x65, 0x37, 0xcf, 0x42, 0x4d, + 0x53, 0x0b, 0x35, 0x4d, 0xba, 0x0a, 0x64, 0x83, 0x35, 0x59, 0x44, 0x73, 0x0a, 0xc3, 0x1d, 0x28, + 0x84, 0x18, 0xce, 0x91, 0x7f, 0x1b, 0xc6, 0xb6, 0x98, 0xdb, 0xab, 0xf0, 0x0d, 0x18, 0x0d, 0xa8, + 0xb9, 0xe4, 0x0b, 0xb9, 0x60, 0x12, 0xc6, 0x3d, 0x29, 0xdb, 0xa6, 0xe3, 0x4a, 0xbd, 0x74, 0x0f, + 0x2e, 0x85, 0x97, 0xb9, 0x82, 0xb7, 0x61, 0x4c, 0x28, 0xb0, 0xe4, 0x11, 0xee, 0x45, 0x8c, 0x04, + 0x3a, 0xbc, 0xd3, 0x5d, 0xcf, 0x3b, 0xea, 0xa7, 0x43, 0xdf, 0xf0, 0xc2, 0x86, 0xc7, 0xb2, 0x67, + 0xdf, 0x3c, 0x0c, 0xe0, 0xb9, 0x23, 0xc1, 0x8a, 0x73, 0x45, 0x50, 0x88, 0x8d, 0x20, 0x46, 0x92, + 0x4f, 0xfa, 0x30, 0xe1, 0x4c, 0xe7, 0xe4, 0x5b, 0xcc, 0x45, 0x5a, 0xa7, 0x07, 0x27, 0xbe, 0x06, + 0x79, 0x85, 0x9c, 0xcb, 0xa6, 0x30, 0x88, 0xb2, 0x3c, 0xdb, 0x54, 0x48, 0x72, 0x47, 0x06, 0x2a, + 0x64, 0x48, 0x0a, 0xa4, 0x57, 0x31, 0x50, 0x0a, 0xfc, 0xf3, 0x8d, 0xbe, 0x0f, 0x93, 0x3a, 0x6b, + 0x98, 0x8e, 0xcb, 0x3a, 0xe2, 0xa0, 0xf7, 0xd4, 0x2c, 0xc2, 0xa0, 0x38, 0xde, 0x25, 0x6f, 0x0e, + 0x79, 0x25, 0x8d, 0xdc, 0xa2, 0x65, 0x18, 0x8f, 0x72, 0x73, 0xb5, 0x69, 0x77, 0x05, 0x6a, 0x01, + 0xe1, 0xb7, 0x41, 0x41, 0xdf, 0x83, 0xe7, 0xf8, 0x21, 0xe6, 0x4b, 0x13, 0xf7, 0xd6, 0xac, 0x9e, + 0xf5, 0xc4, 0xe1, 0x25, 0xc6, 0xe4, 0x2d, 0xa3, 0x65, 0xf3, 0xfc, 0xc7, 0xee, 0x3c, 0xac, 0x83, + 0xe9, 0xac, 0xcb, 0x15, 0x4a, 0xa0, 0x10, 0x52, 0x68, 0x37, 0xcf, 0xe8, 0x09, 0x66, 0x5d, 0xef, + 0x18, 0x54, 0xa7, 0xf7, 0x85, 0x6f, 0x31, 0x21, 0x63, 0x33, 0x11, 0x63, 0xdf, 0xc2, 0xf8, 0xa9, + 0xaa, 0xc9, 0xcb, 0x30, 0x24, 0xb6, 0xbd, 0xb8, 0x87, 0x3c, 0xeb, 0xed, 0xd1, 0x4f, 0xa0, 0xf8, + 0xc8, 0xae, 0x1b, 0x2e, 0x3b, 0xf4, 0x1f, 0x15, 0xcc, 0x03, 0x9a, 0x7a, 0x17, 0x0b, 0x6e, 0x50, + 0x7d, 0x49, 0x37, 0x28, 0x5a, 0x84, 0xa9, 0x18, 0xe1, 0xdc, 0x31, 0xbf, 0xd5, 0xa0, 0xe8, 0x23, + 0x7e, 0xef, 0xb4, 0xd9, 0xac, 0xb4, 0x4f, 0xac, 0x1f, 0xce, 0x41, 0xe4, 0x1a, 0x8c, 0x59, 0xed, + 0xe6, 0x59, 0x8d, 0x5f, 0xdc, 0x1c, 0x97, 0x3f, 0xc7, 0xf0, 0x6c, 0x1c, 0xd6, 0x47, 0xf9, 0xf2, + 0x36, 0xae, 0x6e, 0x5b, 0x0d, 0xfa, 0xb5, 0x06, 0xf9, 0x30, 0x28, 0x9e, 0xa1, 0x87, 0xc9, 0x19, + 0x2a, 0xaf, 0xad, 0x5d, 0xd7, 0xeb, 0xbe, 0x1e, 0xae, 0xd7, 0xd1, 0xf7, 0x61, 0xe6, 0xfc, 0xf7, + 0x21, 0xfd, 0x08, 0xa6, 0x62, 0xfc, 0xc6, 0x03, 0xfe, 0x2e, 0x5c, 0x92, 0xf6, 0x9f, 0x9c, 0x36, + 0x9b, 0x35, 0xb3, 0x7d, 0x62, 0x79, 0xa1, 0x1f, 0x57, 0x20, 0xfb, 0x4c, 0x63, 0xcf, 0x42, 0xdf, + 0x0e, 0xfd, 0xab, 0x06, 0x93, 0xbc, 0x47, 0xfa, 0x2f, 0xb1, 0x5e, 0x32, 0xf6, 0x55, 0x98, 0x70, + 0x7c, 0x86, 0x9a, 0xd1, 0x6c, 0x58, 0x1d, 0xd3, 0x7d, 0xdc, 0x92, 0xc1, 0x19, 0x0f, 0xf6, 0x1e, + 0x78, 0x5b, 0xe4, 0x65, 0xc8, 0x77, 0x84, 0xe0, 0x5a, 0xfb, 0xb4, 0x75, 0xc4, 0x3a, 0x18, 0xad, + 0x01, 0x7d, 0x54, 0xae, 0x56, 0x71, 0x91, 0x2c, 0x41, 0xbe, 0x69, 0x35, 0x6a, 0x4a, 0x4d, 0xf6, + 0x63, 0x4d, 0x8e, 0x34, 0xad, 0xc6, 0xa1, 0x5f, 0x96, 0xd3, 0x30, 0x8c, 0x3e, 0xe5, 0xd0, 0x06, + 0x04, 0x34, 0xfc, 0xae, 0xd4, 0xe9, 0x3d, 0x71, 0x12, 0xa8, 0xe6, 0xf4, 0xda, 0x0f, 0x7f, 0xa1, + 0xc1, 0x15, 0xce, 0xfb, 0xd8, 0x3a, 0x6d, 0xd6, 0xbf, 0x5b, 0x1b, 0x79, 0x0b, 0x8a, 0x8c, 0x3f, + 0x45, 0x6b, 0x8e, 0x7c, 0x8b, 0x76, 0x39, 0x65, 0x8a, 0xa9, 0x4f, 0xd5, 0xc0, 0x2f, 0x29, 0xa6, + 0xec, 0xc1, 0x74, 0x3c, 0x1c, 0x71, 0x4c, 0x4e, 0x39, 0xb8, 0x83, 0x2a, 0x55, 0x87, 0x69, 0xe8, + 0xb0, 0x71, 0x27, 0xc2, 0x57, 0xa9, 0x3b, 0xb4, 0x83, 0x9d, 0x49, 0x66, 0xd9, 0x8b, 0x77, 0xc7, + 0x45, 0x18, 0xf5, 0x52, 0x99, 0xdf, 0xd5, 0x1c, 0x39, 0x4f, 0xf2, 0xf2, 0x9b, 0xdf, 0xd2, 0x1c, + 0xba, 0x8b, 0x5d, 0xca, 0xd7, 0xc9, 0xb1, 0xdf, 0x87, 0x82, 0x52, 0x02, 0xbc, 0x72, 0xc2, 0x47, + 0x70, 0x68, 0xda, 0xa2, 0xe7, 0x5b, 0xea, 0xa7, 0x43, 0x1d, 0x28, 0xea, 0xcc, 0xb6, 0x3a, 0x6e, + 0x40, 0xd6, 0x8b, 0x2d, 0x71, 0x4a, 0x33, 0x3d, 0x2b, 0x2d, 0xc2, 0x54, 0x8c, 0x52, 0xde, 0xd4, + 0xfe, 0xa8, 0x41, 0x76, 0xc7, 0xaa, 0x33, 0xd1, 0x37, 0x66, 0x01, 0x04, 0x00, 0xe5, 0x11, 0x90, + 0xc5, 0x15, 0xbc, 0xb3, 0x86, 0xda, 0x55, 0x5f, 0xa4, 0x5d, 0xad, 0x00, 0xf8, 0x9d, 0xc2, 0x49, + 0x78, 0xaa, 0x2b, 0x14, 0xe4, 0x5a, 0x70, 0x01, 0xee, 0x47, 0xe2, 0x11, 0xd5, 0x90, 0xe0, 0x3a, + 0x3c, 0x0b, 0xd0, 0xe2, 0x00, 0x6b, 0x36, 0x7f, 0xd0, 0x8a, 0x24, 0xcb, 0xe2, 0x0a, 0x7f, 0xcd, + 0xd2, 0xd7, 0x21, 0xb7, 0x61, 0xb8, 0xc6, 0x3e, 0x73, 0xd1, 0x82, 0xb8, 0x07, 0x0c, 0x81, 0x7e, + 0xe4, 0x15, 0x88, 0xf1, 0x37, 0x35, 0xa1, 0xb0, 0x6f, 0x3c, 0x0d, 0x5f, 0x22, 0xcf, 0xb1, 0x3e, + 0xfe, 0x1d, 0x14, 0x19, 0x83, 0x64, 0xba, 0xc7, 0x20, 0x05, 0xc8, 0x2b, 0xaa, 0xb8, 0xd3, 0x7f, + 0xae, 0x09, 0xed, 0xe8, 0x78, 0x4f, 0xfb, 0x12, 0x0c, 0xa0, 0x55, 0xb2, 0x65, 0x0b, 0xd7, 0xf9, + 0xa1, 0xd1, 0xc5, 0x26, 0xb9, 0x05, 0xc3, 0x75, 0xc3, 0x35, 0x64, 0xbf, 0x0e, 0xee, 0x96, 0x8a, + 0x0f, 0xf4, 0xa1, 0xba, 0xf8, 0x20, 0x0b, 0x30, 0xe2, 0xb2, 0xb6, 0x63, 0x75, 0x6a, 0x47, 0x96, + 0xd1, 0xa9, 0xcb, 0x0b, 0x40, 0x4e, 0xac, 0x3d, 0xe4, 0x4b, 0x1e, 0x38, 0x89, 0x84, 0x83, 0x2b, + 0x62, 0xb7, 0xe6, 0x8b, 0x75, 0x0e, 0xd9, 0x64, 0x5e, 0x7a, 0xd2, 0x0d, 0x98, 0xe8, 0xda, 0xe1, + 0x05, 0x71, 0x1b, 0x30, 0x4d, 0x4d, 0x96, 0x76, 0x15, 0xf5, 0x48, 0xe8, 0x1b, 0xa2, 0x63, 0x73, + 0x29, 0xa8, 0xd5, 0xe9, 0xcd, 0xfd, 0xf4, 0x1d, 0xd1, 0x1a, 0x55, 0x3e, 0xae, 0xfc, 0x1a, 0x0c, + 0xa2, 0x67, 0x9c, 0xd0, 0x80, 0x20, 0xf0, 0x9b, 0xdc, 0xa5, 0x7a, 0x00, 0x3e, 0xe4, 0xf6, 0x17, + 0x48, 0x79, 0xba, 0x06, 0x24, 0x22, 0x93, 0x23, 0xea, 0x29, 0x90, 0xf4, 0x1f, 0x1a, 0xcc, 0xed, + 0xab, 0xad, 0xde, 0xaf, 0x92, 0x1f, 0xe8, 0x08, 0x53, 0x5b, 0x75, 0x26, 0xd4, 0xaa, 0xc9, 0x0e, + 0x4c, 0x2a, 0xd2, 0x94, 0x2a, 0x16, 0x85, 0x59, 0x14, 0xe1, 0xec, 0x46, 0xaa, 0x2b, 0x20, 0x02, + 0xf8, 0xf4, 0x1e, 0xcc, 0x24, 0x5a, 0x26, 0x5f, 0x0e, 0x3e, 0x12, 0x2d, 0x7c, 0x68, 0xbc, 0x0d, + 0x73, 0x5b, 0xe7, 0x3a, 0x25, 0x89, 0xb9, 0x05, 0x33, 0x5b, 0x69, 0x7a, 0x13, 0xcd, 0xd4, 0x2e, + 0x64, 0xe6, 0xff, 0xc1, 0x42, 0xbc, 0x3a, 0xe5, 0x0d, 0x97, 0xf6, 0xec, 0xf9, 0x56, 0x83, 0xa9, + 0x18, 0x6e, 0x5e, 0xb8, 0xc9, 0x46, 0x5e, 0x24, 0xf2, 0x89, 0x76, 0x67, 0x2e, 0x64, 0xf7, 0x73, + 0xb8, 0x9a, 0x66, 0x37, 0xf7, 0xf4, 0x21, 0x4c, 0xc7, 0x69, 0x54, 0xcf, 0xca, 0x2b, 0x49, 0x5a, + 0xf9, 0xf9, 0x75, 0xd9, 0x89, 0x5d, 0x77, 0x68, 0x19, 0x26, 0xf9, 0x9d, 0x20, 0x60, 0xeb, 0xc1, + 0xcf, 0x93, 0x30, 0x1e, 0xe5, 0xe1, 0x7d, 0xee, 0x3f, 0x1a, 0x2c, 0xec, 0x33, 0x37, 0x7e, 0x06, + 0xff, 0xe3, 0xdd, 0x9a, 0x22, 0xa5, 0x78, 0x08, 0xd3, 0x11, 0xa1, 0x5d, 0xe5, 0x28, 0x3c, 0x17, + 0x8f, 0x5b, 0xbf, 0xcc, 0xe2, 0xed, 0xa1, 0xf7, 0xe1, 0x6a, 0x9a, 0xb5, 0xe7, 0xd4, 0xa5, 0xc8, + 0xf5, 0xf3, 0x7d, 0x95, 0xc4, 0x2f, 0x72, 0x26, 0x55, 0x7b, 0xaa, 0xe5, 0xda, 0x0b, 0x58, 0xfe, + 0x00, 0x96, 0x12, 0x75, 0xf7, 0x58, 0xaa, 0x7f, 0xd1, 0x60, 0x3a, 0x5e, 0xc0, 0x39, 0xd5, 0x7a, + 0xf1, 0x1c, 0x49, 0x75, 0x47, 0xe6, 0x05, 0xdc, 0xf1, 0x33, 0x0d, 0xe8, 0x39, 0xfe, 0xe0, 0xe1, + 0x30, 0x60, 0x36, 0x49, 0xbf, 0x5a, 0xc6, 0x73, 0x29, 0x18, 0x78, 0x25, 0x97, 0x58, 0xd2, 0x96, + 0x43, 0xff, 0xa5, 0xc1, 0xe2, 0x07, 0x46, 0xd3, 0xe4, 0xaf, 0xed, 0xb4, 0x96, 0x7f, 0x91, 0x99, + 0xda, 0xff, 0x40, 0x9f, 0x5c, 0x84, 0x85, 0x74, 0xeb, 0xec, 0xe6, 0xd9, 0xcd, 0x47, 0x30, 0x1a, + 0xfa, 0xa3, 0x2e, 0x29, 0xc0, 0xc8, 0xa3, 0xea, 0xfb, 0xd5, 0xdd, 0xc3, 0x6a, 0xed, 0xe0, 0xa3, + 0xbd, 0xcd, 0xc2, 0x4b, 0x04, 0x60, 0x70, 0x63, 0xf7, 0xd1, 0xc3, 0xed, 0xcd, 0x82, 0x46, 0x86, + 0x20, 0x53, 0xa9, 0x1e, 0x14, 0xfa, 0xc8, 0x08, 0x0c, 0x6f, 0x54, 0xf6, 0xd7, 0xf5, 0xcd, 0x83, + 0xcd, 0x42, 0x86, 0x8c, 0x41, 0x6e, 0xfd, 0xc1, 0xc1, 0xe6, 0xd6, 0xae, 0x5e, 0x59, 0x7f, 0xb0, + 0x5d, 0xe8, 0xbf, 0xf9, 0xff, 0x50, 0x88, 0xce, 0xdf, 0x49, 0x11, 0x26, 0x3c, 0xc9, 0xbb, 0x7b, + 0x07, 0x95, 0x9d, 0xca, 0xc7, 0x0f, 0x0e, 0x2a, 0xbb, 0xd5, 0xc2, 0x4b, 0x5c, 0xd8, 0x4e, 0xa5, + 0xca, 0x57, 0xb8, 0x0e, 0xfe, 0xf5, 0xe0, 0x43, 0xf1, 0xd5, 0x77, 0x73, 0x0b, 0x06, 0x70, 0x06, + 0x42, 0x72, 0x30, 0xb4, 0xb7, 0x59, 0xdd, 0xa8, 0x54, 0xb7, 0x0a, 0x2f, 0xf1, 0x0f, 0xfd, 0x51, + 0xb5, 0xca, 0x3f, 0x34, 0x32, 0x0a, 0xd9, 0xf5, 0xdd, 0x9d, 0xbd, 0xed, 0xcd, 0x83, 0xcd, 0x8d, + 0x42, 0x1f, 0xc7, 0xfb, 0x7e, 0x65, 0x7b, 0x7b, 0x73, 0xa3, 0x90, 0x21, 0x59, 0x18, 0xd8, 0xd4, + 0xf5, 0x5d, 0xbd, 0xf0, 0x79, 0xf9, 0x37, 0xd3, 0x30, 0xb4, 0x63, 0xb4, 0x8d, 0x06, 0xeb, 0x90, + 0x16, 0xe4, 0x94, 0x99, 0x2f, 0xb9, 0x8c, 0x9e, 0xed, 0x1e, 0x28, 0x97, 0x26, 0xbb, 0x37, 0x78, + 0xeb, 0x5e, 0xf9, 0xe9, 0xdf, 0xfe, 0xfd, 0xeb, 0xbe, 0x65, 0x5a, 0xc4, 0xff, 0x2a, 0x90, 0x42, + 0x57, 0x15, 0xb2, 0xb5, 0x50, 0xc2, 0x90, 0x4f, 0x61, 0xd8, 0x1b, 0xa4, 0x12, 0x31, 0xd8, 0x8e, + 0x8c, 0x78, 0x4b, 0x24, 0xb2, 0xca, 0xb5, 0x2c, 0xa3, 0x16, 0x4a, 0xe6, 0x43, 0x5a, 0x3c, 0x9a, + 0xd5, 0x2f, 0xbc, 0x66, 0xf1, 0x25, 0x79, 0x02, 0x39, 0x65, 0xc4, 0x2c, 0xcd, 0xe9, 0x9e, 0x52, + 0x4b, 0x73, 0xa2, 0xd3, 0x68, 0x7a, 0x0b, 0x15, 0xbd, 0x4c, 0x16, 0x43, 0x8a, 0x14, 0x32, 0x55, + 0xd7, 0x31, 0x8c, 0xa8, 0x43, 0x61, 0x52, 0x0c, 0x21, 0x57, 0xfa, 0x59, 0x69, 0x2a, 0x66, 0x87, + 0xab, 0x5b, 0x40, 0x75, 0x57, 0xc8, 0x74, 0xac, 0x5d, 0x28, 0xf4, 0xc4, 0x8b, 0x8f, 0xf8, 0xf3, + 0xad, 0x1a, 0x1f, 0x75, 0xe0, 0x1a, 0x8a, 0x4f, 0x30, 0x5b, 0xa5, 0xd7, 0x51, 0xc3, 0x42, 0x6c, + 0x7c, 0x90, 0x6c, 0x4d, 0x8c, 0x58, 0xc9, 0x11, 0x64, 0xfd, 0xc9, 0x2f, 0x99, 0xf4, 0xf0, 0x86, + 0x06, 0xc7, 0xa5, 0xf1, 0xe8, 0x32, 0xd7, 0x70, 0x03, 0x35, 0x2c, 0x92, 0x85, 0xa8, 0x0d, 0x82, + 0x48, 0x75, 0x98, 0x08, 0xbe, 0x30, 0x64, 0x22, 0x24, 0xab, 0x2b, 0xf8, 0x8a, 0x09, 0x89, 0xc1, + 0x47, 0x9a, 0xd5, 0x2f, 0xbc, 0x89, 0xde, 0x97, 0xc4, 0x81, 0x7c, 0x78, 0xd0, 0x4b, 0x4a, 0x28, + 0x2f, 0x76, 0x76, 0x5c, 0x2a, 0xc6, 0xee, 0x29, 0x59, 0x40, 0xaf, 0x84, 0x34, 0x86, 0x29, 0xd7, + 0xe4, 0x74, 0x99, 0x7c, 0x02, 0x10, 0x0c, 0x4f, 0x89, 0x1f, 0xe9, 0xf0, 0xc8, 0xa7, 0x34, 0xd1, + 0xb5, 0xce, 0x15, 0x5d, 0x45, 0x45, 0xd3, 0xe4, 0x72, 0xd4, 0x34, 0x4f, 0xdc, 0x73, 0xb8, 0xd4, + 0x35, 0x02, 0x25, 0xb3, 0x28, 0x2b, 0x69, 0xee, 0x5a, 0xba, 0x92, 0xb4, 0xad, 0x44, 0xab, 0x34, + 0x17, 0xd2, 0xd8, 0x45, 0xbc, 0xa6, 0xdd, 0x24, 0xcf, 0x94, 0xe9, 0xb3, 0x3f, 0xce, 0x9c, 0x0d, + 0xdb, 0x11, 0x99, 0xbd, 0x4a, 0xdd, 0xf1, 0x23, 0x46, 0x7a, 0x0d, 0x75, 0xcf, 0x93, 0xb9, 0x78, + 0x6b, 0x7d, 0x1d, 0x6d, 0xfc, 0x23, 0x84, 0x32, 0x79, 0x93, 0x61, 0x8c, 0x9d, 0x2e, 0x96, 0x8a, + 0xb1, 0x7b, 0x8a, 0xbe, 0x48, 0x18, 0xc3, 0x94, 0xdc, 0xd0, 0xaf, 0x34, 0xf1, 0x20, 0x8d, 0xce, + 0xc7, 0xc8, 0xbc, 0x2f, 0x3a, 0x61, 0x92, 0x57, 0x9a, 0x4b, 0xa1, 0xe0, 0x10, 0xde, 0x40, 0x08, + 0xaf, 0xd0, 0x5b, 0x09, 0xc5, 0x11, 0xc7, 0xc9, 0x21, 0x7d, 0x8a, 0x49, 0xe5, 0xfd, 0x67, 0x8e, + 0x9f, 0x54, 0xe1, 0x81, 0x5b, 0x90, 0x54, 0xea, 0x50, 0x8c, 0x52, 0xd4, 0x39, 0x43, 0xbb, 0x92, + 0x4a, 0x52, 0x71, 0xf9, 0xbf, 0xd2, 0xe0, 0x72, 0xc2, 0xc3, 0x90, 0x2c, 0x8a, 0xc3, 0x35, 0xf5, + 0xed, 0x57, 0x5a, 0x48, 0x27, 0xe2, 0x38, 0x56, 0x11, 0xc7, 0x0d, 0xba, 0x14, 0xc2, 0x91, 0xc0, + 0xc2, 0x41, 0xfd, 0x4e, 0x83, 0xcb, 0x5b, 0xa9, 0xa0, 0xb6, 0x7a, 0x01, 0x95, 0xf6, 0xf0, 0xa4, + 0x6f, 0x22, 0xa8, 0x57, 0xc9, 0x6a, 0x72, 0x4e, 0x04, 0x2c, 0xab, 0x5f, 0x78, 0x97, 0xc9, 0x2f, + 0xc9, 0x37, 0x1a, 0x94, 0x92, 0xdf, 0x5a, 0xe4, 0x5a, 0x8a, 0x6a, 0xf5, 0x24, 0x58, 0x3a, 0x97, + 0x8e, 0xa3, 0x5c, 0x43, 0x94, 0xaf, 0x91, 0x72, 0x0f, 0x28, 0x39, 0x97, 0xda, 0x64, 0xbf, 0xd6, + 0xa0, 0x94, 0xfc, 0xbc, 0x90, 0x40, 0xcf, 0x7d, 0x6d, 0x49, 0xa0, 0xe7, 0xbc, 0x53, 0x68, 0x19, + 0x81, 0xde, 0xa6, 0xd7, 0xa3, 0x31, 0x4e, 0xe0, 0xe2, 0x61, 0x96, 0x9e, 0x4c, 0x07, 0xb8, 0xd5, + 0x23, 0xc0, 0x73, 0x9e, 0x32, 0xc9, 0x9e, 0x4c, 0xe0, 0x52, 0x43, 0xfe, 0x7b, 0x0d, 0x66, 0x53, + 0xaf, 0xe7, 0xe4, 0x46, 0x3a, 0x06, 0x35, 0xf0, 0xd7, 0x7b, 0x21, 0xe5, 0x88, 0xdf, 0x41, 0xc4, + 0x6f, 0x92, 0xd7, 0x7b, 0x43, 0x1c, 0x0d, 0xff, 0xc7, 0x90, 0xf5, 0x47, 0x9c, 0xf2, 0x1c, 0x8f, + 0x4e, 0x57, 0xe5, 0x39, 0x1e, 0x99, 0x84, 0xca, 0xbb, 0x08, 0x9d, 0x0a, 0x87, 0xd2, 0x23, 0xe2, + 0x91, 0x93, 0xb2, 0x71, 0x80, 0xa6, 0xc8, 0x56, 0x87, 0x78, 0x8a, 0x6c, 0x65, 0x90, 0x99, 0x2c, + 0x1b, 0x89, 0xb8, 0xec, 0xe7, 0x70, 0xa9, 0x6b, 0x2e, 0x2e, 0x4f, 0x9b, 0xa4, 0x21, 0xbd, 0x3c, + 0x6d, 0x12, 0xc6, 0xe9, 0xf2, 0xa4, 0xa3, 0x73, 0x91, 0x43, 0x3c, 0x42, 0xcc, 0x75, 0x5b, 0xe2, + 0x1f, 0x0d, 0x94, 0x69, 0x2a, 0xf1, 0x0f, 0xb2, 0x98, 0xe9, 0x6b, 0x69, 0x3a, 0x7e, 0x93, 0x6b, + 0x5d, 0x42, 0xad, 0x73, 0x64, 0xa6, 0xab, 0x72, 0x55, 0xe9, 0x9f, 0x89, 0x13, 0x2e, 0x18, 0xa0, + 0x2a, 0x27, 0x5c, 0xd7, 0x34, 0x56, 0x39, 0xe1, 0x22, 0x13, 0x57, 0xba, 0x88, 0xda, 0x66, 0xc9, + 0x95, 0x58, 0x6d, 0x52, 0xf4, 0x37, 0x1a, 0xcc, 0xa4, 0xbd, 0x7e, 0xc8, 0x32, 0xca, 0xef, 0xe1, + 0xf9, 0x57, 0xba, 0xd6, 0x03, 0x25, 0xc7, 0xf5, 0x1a, 0xe2, 0x5a, 0xa1, 0x37, 0x42, 0xb8, 0xd2, + 0xf8, 0xd6, 0xb4, 0x9b, 0xe5, 0x3f, 0x6b, 0x00, 0xc1, 0x1e, 0x79, 0xef, 0xfb, 0xb9, 0x06, 0x10, + 0xfb, 0xc7, 0x36, 0xbf, 0x6c, 0xc2, 0x68, 0xa8, 0x58, 0xc9, 0x87, 0x3f, 0xd4, 0x05, 0xe3, 0x68, + 0x10, 0xff, 0x79, 0xfb, 0xee, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xcd, 0x39, 0xc3, 0x97, 0xec, + 0x2d, 0x00, 0x00, } diff --git a/pkg/api/api.proto b/pkg/api/api.proto index 7247c3aff5e..c793ca0ded9 100644 --- a/pkg/api/api.proto +++ b/pkg/api/api.proto @@ -805,5 +805,4 @@ message ValidateSuggestionParametersRequest { * Return 1 if Suggestion Parameters is Valid, 0 if not */ message ValidateSuggestionParametersReply { - int32 is_valid = 1; } diff --git a/pkg/api/api.swagger.json b/pkg/api/api.swagger.json index f0dda7988b9..59bc5da982c 100644 --- a/pkg/api/api.swagger.json +++ b/pkg/api/api.swagger.json @@ -1515,12 +1515,7 @@ }, "apiValidateSuggestionParametersReply": { "type": "object", - "properties": { - "is_valid": { - "type": "integer", - "format": "int32" - } - } + "title": "*\nReturn 1 if Suggestion Parameters is Valid, 0 if not" }, "apiValidateSuggestionParametersRequest": { "type": "object", diff --git a/pkg/api/gen-doc/api.md b/pkg/api/gen-doc/api.md index f4d454d52ad..1908f3d7fc9 100644 --- a/pkg/api/gen-doc/api.md +++ b/pkg/api/gen-doc/api.md @@ -1345,12 +1345,7 @@ Update a Status of Worker. ### ValidateSuggestionParametersReply - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| is_valid | [int32](#int32) | | | +Return 1 if Suggestion Parameters is Valid, 0 if not diff --git a/pkg/api/gen-doc/index.html b/pkg/api/gen-doc/index.html index 4eff3d07448..dee28a9b154 100644 --- a/pkg/api/gen-doc/index.html +++ b/pkg/api/gen-doc/index.html @@ -2767,25 +2767,9 @@

    UpdateWorkerStateRequest

    ValidateSuggestionParametersReply

    -

    +

    Return 1 if Suggestion Parameters is Valid, 0 if not

    - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    is_validint32

    - diff --git a/pkg/api/python/api_pb2.py b/pkg/api/python/api_pb2.py index c113735ba16..65b800b821c 100644 --- a/pkg/api/python/api_pb2.py +++ b/pkg/api/python/api_pb2.py @@ -21,7 +21,7 @@ name='api.proto', package='api', syntax='proto3', - serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x98\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\x12\x13\n\x0b\x63reate_time\x18\x06 \x01(\t\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet\"\xa4\x01\n#ValidateSuggestionParametersRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!ValidateSuggestionParametersReply\x12\x10\n\x08is_valid\x18\x01 \x01(\x05*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x94\x19\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels\x12\xa6\x01\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply\"4\x82\xd3\xe4\x93\x02.\")/api/Manager/ValidateSuggestionParameters:\x01*2\xc6\x01\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\x12p\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') + serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\x12\x0c\n\x04step\x18\x04 \x01(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x98\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\x12\x13\n\x0b\x63reate_time\x18\x06 \x01(\t\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet\"\xa4\x01\n#ValidateSuggestionParametersRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"#\n!ValidateSuggestionParametersReply*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x94\x19\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels\x12\xa6\x01\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply\"4\x82\xd3\xe4\x93\x02.\")/api/Manager/ValidateSuggestionParameters:\x01*2\xc6\x01\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\x12p\n\x1cValidateSuggestionParameters\x12(.api.ValidateSuggestionParametersRequest\x1a&.api.ValidateSuggestionParametersReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') , dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) @@ -54,8 +54,8 @@ ], containing_type=None, options=None, - serialized_start=6193, - serialized_end=6278, + serialized_start=6175, + serialized_end=6260, ) _sym_db.RegisterEnumDescriptor(_PARAMETERTYPE) @@ -81,8 +81,8 @@ ], containing_type=None, options=None, - serialized_start=6280, - serialized_end=6352, + serialized_start=6262, + serialized_end=6334, ) _sym_db.RegisterEnumDescriptor(_OPTIMIZATIONTYPE) @@ -116,8 +116,8 @@ ], containing_type=None, options=None, - serialized_start=6354, - serialized_end=6425, + serialized_start=6336, + serialized_end=6407, ) _sym_db.RegisterEnumDescriptor(_STATE) @@ -3223,13 +3223,6 @@ file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name='is_valid', full_name='api.ValidateSuggestionParametersReply.is_valid', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), ], extensions=[ ], @@ -3243,7 +3236,7 @@ oneofs=[ ], serialized_start=6138, - serialized_end=6191, + serialized_end=6173, ) _PARAMETERCONFIG.fields_by_name['parameter_type'].enum_type = _PARAMETERTYPE @@ -3979,8 +3972,8 @@ file=DESCRIPTOR, index=0, options=None, - serialized_start=6428, - serialized_end=9648, + serialized_start=6410, + serialized_end=9630, methods=[ _descriptor.MethodDescriptor( name='CreateStudy', @@ -4228,8 +4221,8 @@ file=DESCRIPTOR, index=1, options=None, - serialized_start=9651, - serialized_end=9849, + serialized_start=9633, + serialized_end=9831, methods=[ _descriptor.MethodDescriptor( name='GetSuggestions', @@ -4261,8 +4254,8 @@ file=DESCRIPTOR, index=2, options=None, - serialized_start=9851, - serialized_end=9956, + serialized_start=9833, + serialized_end=9938, methods=[ _descriptor.MethodDescriptor( name='GetShouldStopWorkers', diff --git a/pkg/controller/studyjob/const.go b/pkg/controller/studyjob/const.go index 2d9b268d343..bce9bd15902 100644 --- a/pkg/controller/studyjob/const.go +++ b/pkg/controller/studyjob/const.go @@ -17,9 +17,6 @@ const ( PyTorchJobWorker = "PyTorchJob" jobTypeNAS = "NAS" jobTypeHP = "HP" - suggestionNASRL = "nasrl" ) var ValidWorkerKindList = [...]string{DefaultJobWorker, TFJobWorker, PyTorchJobWorker} - -var suggestionNASList = []string{suggestionNASRL} diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index 880aeb98fcc..e7c0dcdd242 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -17,12 +17,16 @@ package studyjob import ( "context" "errors" + "fmt" "log" + "reflect" "github.com/kubeflow/katib/pkg" katibapi "github.com/kubeflow/katib/pkg/api" katibv1alpha1 "github.com/kubeflow/katib/pkg/api/operators/apis/studyjob/v1alpha1" "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" ) func initializeStudy(instance *katibv1alpha1.StudyJob) error { @@ -44,13 +48,14 @@ func initializeStudy(instance *katibv1alpha1.StudyJob) error { studyConfig, err := getStudyConf(instance) if err != nil { + instance.Status.Condition = katibv1alpha1.ConditionFailed return err } - log.Println("Validate Parameters Start") + log.Println("Validate Parameters inside Suggestion Start") isValidSuggestionParameters := validateSuggestionParameters(c, studyConfig, instance.Spec.SuggestionSpec.SuggestionParameters, instance.Spec.SuggestionSpec.SuggestionAlgorithm) - if isValidSuggestionParameters == 1 { + if isValidSuggestionParameters { log.Println("Suggestion Parameters is valid") } else { instance.Status.Condition = katibv1alpha1.ConditionFailed @@ -86,15 +91,16 @@ func initializeStudy(instance *katibv1alpha1.StudyJob) error { } func getStudyConf(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConfig, error) { - jobType := getJobType(instance.Spec.SuggestionSpec.SuggestionAlgorithm) + jobType := getJobType(instance) + if jobType == jobTypeNAS { return populateConfigForNAS(instance) } return populateConfigForHP(instance) } -func getJobType(suggestionAlgorithm string) string { - if contains(suggestionNASList, suggestionAlgorithm) { +func getJobType(instance *katibv1alpha1.StudyJob) string { + if instance.Spec.NasConfig != nil { return jobTypeNAS } return jobTypeHP @@ -179,6 +185,10 @@ func populateConfigForNAS(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConf } populateCommonConfigFields(instance, sconf) + if reflect.DeepEqual(instance.Spec.NasConfig.GraphConfig, katibv1alpha1.GraphConfig{}) { + return nil, fmt.Errorf("Missing GraphConfig in NasConfig: %v", instance.Spec.NasConfig) + } + sconf.NasConfig.GraphConfig.NumLayers = instance.Spec.NasConfig.GraphConfig.NumLayers for _, i := range instance.Spec.NasConfig.GraphConfig.InputSize { sconf.NasConfig.GraphConfig.InputSize = append(sconf.NasConfig.GraphConfig.InputSize, i) @@ -186,6 +196,11 @@ func populateConfigForNAS(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConf for _, o := range instance.Spec.NasConfig.GraphConfig.OutputSize { sconf.NasConfig.GraphConfig.OutputSize = append(sconf.NasConfig.GraphConfig.OutputSize, o) } + + if instance.Spec.NasConfig.Operations == nil { + return nil, fmt.Errorf("Missing Operations in NasConfig") + } + for _, op := range instance.Spec.NasConfig.Operations { operation := &katibapi.Operation{ ParameterConfigs: &katibapi.Operation_ParameterConfigs{ @@ -342,7 +357,7 @@ func getSuggestion(c katibapi.ManagerClient, studyID string, suggestionSpec *kat return getSuggestReply, nil } -func validateSuggestionParameters(c katibapi.ManagerClient, studyConfig *katibapi.StudyConfig, suggestionParameters []katibapi.SuggestionParameter, suggestionAlgorithm string) int32 { +func validateSuggestionParameters(c katibapi.ManagerClient, studyConfig *katibapi.StudyConfig, suggestionParameters []katibapi.SuggestionParameter, suggestionAlgorithm string) bool { ctx := context.Background() validateSuggestionParametersReq := &katibapi.ValidateSuggestionParametersRequest{ @@ -360,16 +375,19 @@ func validateSuggestionParameters(c katibapi.ManagerClient, studyConfig *katibap ) } - validateSuggestionParametersReply, err := c.ValidateSuggestionParameters(ctx, validateSuggestionParametersReq) + _, err := c.ValidateSuggestionParameters(ctx, validateSuggestionParametersReq) - if err != nil && err.Error() == "rpc error: code = Unimplemented desc = Method not found!" { + statusCode, _ := status.FromError(err) + + if statusCode.Code() == codes.Unknown { log.Printf("Method ValidateSuggestionParameters not found inside Suggestion service: %s", suggestionAlgorithm) - return 1 + return true } + if err != nil { log.Printf("ValidateSuggestionParameters Error: %v", err) - return 0 + return false } - return validateSuggestionParametersReply.IsValid + return true } diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index 7ee1284c9db..bd2c635b816 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -15,7 +15,6 @@ import ( "fmt" "io/ioutil" "log" - "reflect" "strings" katibapi "github.com/kubeflow/katib/pkg/api" @@ -209,86 +208,6 @@ func contains(l []string, s string) bool { return false } -func validateHPJob(instance *katibv1alpha1.StudyJob) error { - log.Printf("Validation for the HP job") - if instance.Spec.ParameterConfigs == nil { - return fmt.Errorf("No Spec.ParameterConfigs specified") - } - return validateParameterConfigs(instance.Spec.ParameterConfigs, jobTypeHP, instance.Spec.SuggestionSpec.SuggestionAlgorithm) - -} - -func validateNASJob(instance *katibv1alpha1.StudyJob) error { - - log.Printf("Validation for the NAS job") - if instance.Spec.NasConfig == nil { - return fmt.Errorf("No Spec.NasConfig specified") - } - - if reflect.DeepEqual(instance.Spec.NasConfig.GraphConfig, katibv1alpha1.GraphConfig{}) { - return fmt.Errorf("Missing GraphConfig in NasConfig: %v", instance.Spec.NasConfig) - } - - if instance.Spec.NasConfig.GraphConfig.InputSize == nil { - return fmt.Errorf("Missing InputSize in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) - } - - if instance.Spec.NasConfig.GraphConfig.OutputSize == nil { - return fmt.Errorf("Missing OutputSize in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) - } - - if instance.Spec.NasConfig.GraphConfig.NumLayers == 0 && contains(suggestionNASList, instance.Spec.SuggestionSpec.SuggestionAlgorithm) { - return fmt.Errorf("Missing NumLayers in NasConfig.GraphConfig: %v", instance.Spec.NasConfig.GraphConfig) - } - - if instance.Spec.NasConfig.Operations == nil { - return fmt.Errorf("Missing Operations in NasConfig: %v", instance.Spec.NasConfig) - } - - for _, op := range instance.Spec.NasConfig.Operations { - if op.OperationType == "" { - return fmt.Errorf("Missing OperationType in Operation: %v", op) - } - if op.ParameterConfigs == nil { - return fmt.Errorf("Missing ParameterConfig in Operation: %v", op) - } - return validateParameterConfigs(op.ParameterConfigs, jobTypeNAS, instance.Spec.SuggestionSpec.SuggestionAlgorithm) - } - - return nil -} - -func validateParameterConfigs(parameterConfigs []katibv1alpha1.ParameterConfig, jobType string, suggestionAlgorithm string) error { - for _, pc := range parameterConfigs { - if pc.Name == "" { - return fmt.Errorf("Missing Name in ParameterConfig: %v", pc) - } - if pc.ParameterType == "" { - return fmt.Errorf("Missing ParameterType in ParameterConfig: %v", pc) - } - if reflect.DeepEqual(pc.Feasible, katibv1alpha1.FeasibleSpace{}) { - return fmt.Errorf("Missing Feasible in ParameterConfig: %v", pc) - } - if pc.ParameterType == katibv1alpha1.ParameterTypeCategorical || pc.ParameterType == katibv1alpha1.ParameterTypeDiscrete { - if pc.Feasible.List == nil { - return fmt.Errorf("Missing List in ParameterConfig.Feasible: %v", pc.Feasible) - } - } - if pc.ParameterType == katibv1alpha1.ParameterTypeDouble || pc.ParameterType == katibv1alpha1.ParameterTypeInt { - if pc.Feasible.Min == "" { - return fmt.Errorf("Missing Min in ParameterConfig.Feasible: %v", pc.Feasible) - } - if pc.Feasible.Max == "" { - return fmt.Errorf("Missing Max in ParameterConfig.Feasible: %v", pc.Feasible) - } - if jobType == jobTypeNAS && pc.Feasible.Step == "" && pc.ParameterType == katibv1alpha1.ParameterTypeDouble && contains(suggestionNASList, suggestionAlgorithm) { - return fmt.Errorf("Missing Step in ParameterConfig.Feasible for NAS job: %v", pc.Feasible) - } - } - } - return nil -} - func getMyNamespace() string { data, _ := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace") return strings.TrimSpace(string(data)) diff --git a/pkg/suggestion/NAS_Reinforcement_Learning/Operation.py b/pkg/suggestion/NAS_Reinforcement_Learning/Operation.py index 0d6fc5395cb..b3da9d4fc1a 100644 --- a/pkg/suggestion/NAS_Reinforcement_Learning/Operation.py +++ b/pkg/suggestion/NAS_Reinforcement_Learning/Operation.py @@ -58,9 +58,6 @@ def _parse_operations(self): spec_min = float(ispec.feasible.min) spec_max = float(ispec.feasible.max) spec_step = float(ispec.feasible.step) - if spec_step == 0: - print("Error, NAS Reinforcement Learning algorithm cannot accept continuous search space!") - exit(999) double_list = np.arange(spec_min, spec_max+spec_step, spec_step) if double_list[-1] > spec_max: del double_list[-1] diff --git a/pkg/suggestion/nasrl_service.py b/pkg/suggestion/nasrl_service.py index f2a42f52078..fd73d7a3483 100644 --- a/pkg/suggestion/nasrl_service.py +++ b/pkg/suggestion/nasrl_service.py @@ -152,11 +152,75 @@ def __init__(self, logger=None): def ValidateSuggestionParameters(self, request, context): self.logger.info("Start Validation Suggestion Parameters") - self.logger.info("requst is {}".format(request)) - self.logger.info("study Config is {}".format(request.study_config)) - self.logger.info("Suggest Params is {}".format(request.suggestion_parameters)) - - return api_pb2.ValidateSuggestionParametersReply(is_valid=0) + graph_config = request.study_config.nas_config.graph_config + + # Validate GraphConfig + if not graph_config.input_size: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Missing InputSize in GraphConfig:\n{}".format(graph_config)) + return api_pb2.ValidateSuggestionParametersReply() + + if not graph_config.output_size: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Missing OutputSize in GraphConfig:\n{}".format(graph_config)) + return api_pb2.ValidateSuggestionParametersReply() + + if not graph_config.num_layers: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Missing NumLayers in GraphConfig:\n{}".format(graph_config)) + return api_pb2.ValidateSuggestionParametersReply() + + # Validate each operation + operations_list = list(request.study_config.nas_config.operations.operation) + for operation in operations_list: + + if not operation.operationType: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Missing OperationType in Operation:\n{}".format(operation)) + return api_pb2.ValidateSuggestionParametersReply() + + if not operation.parameter_configs.configs: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Missing ParameterConfigs in Operation:\n{}".format(operation)) + return api_pb2.ValidateSuggestionParametersReply() + + # Validate each ParameterConfig in Operation + configs_list = list(operation.parameter_configs.configs) + for config in configs_list: + + # Check Name + if not config.name: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Missing Name in ParameterConfig:\n{}".format(config)) + return api_pb2.ValidateSuggestionParametersReply() + + # Check ParameterType + if not config.parameter_type: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Missing ParameterType in ParameterConfig:\n{}".format(config)) + return api_pb2.ValidateSuggestionParametersReply() + + # Check List in Categorical or Discrete Type + if config.parameter_type == api_pb2.CATEGORICAL or config.parameter_type == api_pb2.DISCRETE: + if not config.feasible.list: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Missing List in ParameterConfig.Feasible:\n{}".format(config)) + return api_pb2.ValidateSuggestionParametersReply() + + # Check Max, Min, Step in Int or Double Type + elif config.parameter_type == api_pb2.INT or config.parameter_type == api_pb2.DOUBLE: + if not config.feasible.min and not config.feasible.max: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Missing Max and Min in ParameterConfig.Feasible:\n{}".format(config)) + return api_pb2.ValidateSuggestionParametersReply() + + if config.parameter_type == api_pb2.DOUBLE and (not config.feasible.step or float(config.feasible.step) <= 0): + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details("Step parameter should be > 0 in ParameterConfig.Feasible:\n{}".format(config)) + return api_pb2.ValidateSuggestionParametersReply() + + self.logger.info("All Suggestion Parameters are Valid") + return api_pb2.ValidateSuggestionParametersReply() def GetSuggestions(self, request, context): From c16690e19063e942adf6ea42d3214707c43bb7e8 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Wed, 27 Feb 2019 19:59:55 -0800 Subject: [PATCH 12/17] Fix small problems --- pkg/controller/studyjob/katib_api_util.go | 1 - pkg/controller/studyjob/utils.go | 2 -- pkg/suggestion/nasrl_service.py | 2 +- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index e7c0dcdd242..d8e42df474d 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -92,7 +92,6 @@ func initializeStudy(instance *katibv1alpha1.StudyJob) error { func getStudyConf(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConfig, error) { jobType := getJobType(instance) - if jobType == jobTypeNAS { return populateConfigForNAS(instance) } diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index bd2c635b816..968627328d8 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -101,7 +101,6 @@ func getWorkerKind(workerSpec *katibv1alpha1.WorkerSpec) (*schema.GroupVersionKi } func validateStudy(instance *katibv1alpha1.StudyJob) error { - if instance.Spec.SuggestionSpec == nil { return fmt.Errorf("No Spec.SuggestionSpec specified.") } @@ -156,7 +155,6 @@ func validateStudy(instance *katibv1alpha1.StudyJob) error { if mcjob.GetNamespace() != namespace || mcjob.GetName() != workerID { return fmt.Errorf("Invalid metricsCollector template.") } - return nil } diff --git a/pkg/suggestion/nasrl_service.py b/pkg/suggestion/nasrl_service.py index fd73d7a3483..5443768a98e 100644 --- a/pkg/suggestion/nasrl_service.py +++ b/pkg/suggestion/nasrl_service.py @@ -151,7 +151,7 @@ def __init__(self, logger=None): os.makedirs("ctrl_cache/") def ValidateSuggestionParameters(self, request, context): - self.logger.info("Start Validation Suggestion Parameters") + self.logger.info("Validate Suggestion Parameters start") graph_config = request.study_config.nas_config.graph_config # Validate GraphConfig From 30e876e1ca37eaeba0410779063f0c08213314a9 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Wed, 27 Feb 2019 20:23:33 -0800 Subject: [PATCH 13/17] Reduce code inside Validation function --- pkg/suggestion/nasrl_service.py | 50 +++++++++++++-------------------- 1 file changed, 20 insertions(+), 30 deletions(-) diff --git a/pkg/suggestion/nasrl_service.py b/pkg/suggestion/nasrl_service.py index 5443768a98e..435d134d259 100644 --- a/pkg/suggestion/nasrl_service.py +++ b/pkg/suggestion/nasrl_service.py @@ -155,34 +155,29 @@ def ValidateSuggestionParameters(self, request, context): graph_config = request.study_config.nas_config.graph_config # Validate GraphConfig + # Check InputSize if not graph_config.input_size: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Missing InputSize in GraphConfig:\n{}".format(graph_config)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Missing InputSize in GraphConfig:\n{}".format(graph_config)) + # Check OutputSize if not graph_config.output_size: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Missing OutputSize in GraphConfig:\n{}".format(graph_config)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Missing OutputSize in GraphConfig:\n{}".format(graph_config)) + # Check NumLayers if not graph_config.num_layers: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Missing NumLayers in GraphConfig:\n{}".format(graph_config)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Missing NumLayers in GraphConfig:\n{}".format(graph_config)) # Validate each operation operations_list = list(request.study_config.nas_config.operations.operation) for operation in operations_list: + # Check OperationType if not operation.operationType: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Missing OperationType in Operation:\n{}".format(operation)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Missing OperationType in Operation:\n{}".format(operation)) + # Check ParameterConfigs if not operation.parameter_configs.configs: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Missing ParameterConfigs in Operation:\n{}".format(operation)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Missing ParameterConfigs in Operation:\n{}".format(operation)) # Validate each ParameterConfig in Operation configs_list = list(operation.parameter_configs.configs) @@ -190,38 +185,33 @@ def ValidateSuggestionParameters(self, request, context): # Check Name if not config.name: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Missing Name in ParameterConfig:\n{}".format(config)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Missing Name in ParameterConfig:\n{}".format(config)) # Check ParameterType if not config.parameter_type: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Missing ParameterType in ParameterConfig:\n{}".format(config)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Missing ParameterType in ParameterConfig:\n{}".format(config)) # Check List in Categorical or Discrete Type if config.parameter_type == api_pb2.CATEGORICAL or config.parameter_type == api_pb2.DISCRETE: if not config.feasible.list: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Missing List in ParameterConfig.Feasible:\n{}".format(config)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Missing List in ParameterConfig.Feasible:\n{}".format(config) ) # Check Max, Min, Step in Int or Double Type elif config.parameter_type == api_pb2.INT or config.parameter_type == api_pb2.DOUBLE: if not config.feasible.min and not config.feasible.max: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Missing Max and Min in ParameterConfig.Feasible:\n{}".format(config)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Missing Max and Min in ParameterConfig.Feasible:\n{}".format(config)) if config.parameter_type == api_pb2.DOUBLE and (not config.feasible.step or float(config.feasible.step) <= 0): - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details("Step parameter should be > 0 in ParameterConfig.Feasible:\n{}".format(config)) - return api_pb2.ValidateSuggestionParametersReply() + return self.SetValidateContextError(context, "Step parameter should be > 0 in ParameterConfig.Feasible:\n{}".format(config)) self.logger.info("All Suggestion Parameters are Valid") return api_pb2.ValidateSuggestionParametersReply() + def SetValidateContextError(self, context, error_message): + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details(error_message) + self.logger.info(error_message) + return api_pb2.ValidateSuggestionParametersReply() def GetSuggestions(self, request, context): if request.study_id not in self.registered_studies: From 38febade137f8892c08f5037f47c4522ad6a139f Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Wed, 27 Feb 2019 21:05:59 -0800 Subject: [PATCH 14/17] Add empty ValidateSuggestionParameters function in each HP service written in GO --- pkg/suggestion/grid_service.go | 5 +++++ pkg/suggestion/hyperband_service.go | 5 +++++ pkg/suggestion/random_service.go | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/pkg/suggestion/grid_service.go b/pkg/suggestion/grid_service.go index 690e7a3041b..0be00759ddc 100644 --- a/pkg/suggestion/grid_service.go +++ b/pkg/suggestion/grid_service.go @@ -220,3 +220,8 @@ func (s *GridSuggestService) GetSuggestions(ctx context.Context, in *api.GetSugg } return &api.GetSuggestionsReply{Trials: trials}, nil } + +func (s *GridSuggestService) ValidateSuggestionParameters(ctx context.Context, in *api.ValidateSuggestionParametersRequest) (*api.ValidateSuggestionParametersReply, error) { + + return &api.ValidateSuggestionParametersReply{}, nil +} diff --git a/pkg/suggestion/hyperband_service.go b/pkg/suggestion/hyperband_service.go index 74a2b81a490..93d9c021727 100644 --- a/pkg/suggestion/hyperband_service.go +++ b/pkg/suggestion/hyperband_service.go @@ -445,3 +445,8 @@ func (h *HyperBandSuggestService) GetSuggestions(ctx context.Context, in *api.Ge Trials: ts, }, nil } + +func (s *HyperBandSuggestService) ValidateSuggestionParameters(ctx context.Context, in *api.ValidateSuggestionParametersRequest) (*api.ValidateSuggestionParametersReply, error) { + + return &api.ValidateSuggestionParametersReply{}, nil +} diff --git a/pkg/suggestion/random_service.go b/pkg/suggestion/random_service.go index 814ec6a7c52..690ab71339b 100644 --- a/pkg/suggestion/random_service.go +++ b/pkg/suggestion/random_service.go @@ -81,3 +81,8 @@ func (s *RandomSuggestService) GetSuggestions(ctx context.Context, in *api.GetSu } return &api.GetSuggestionsReply{Trials: sT}, nil } + +func (s *RandomSuggestService) ValidateSuggestionParameters(ctx context.Context, in *api.ValidateSuggestionParametersRequest) (*api.ValidateSuggestionParametersReply, error) { + + return &api.ValidateSuggestionParametersReply{}, nil +} From 8a01094f74b5216d5ac87038cc7a4732af2df6bf Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Wed, 27 Feb 2019 22:21:31 -0800 Subject: [PATCH 15/17] Fix logging --- pkg/api/api.proto | 2 +- pkg/controller/studyjob/katib_api_util.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/api/api.proto b/pkg/api/api.proto index c793ca0ded9..7e1069b4c73 100644 --- a/pkg/api/api.proto +++ b/pkg/api/api.proto @@ -802,7 +802,7 @@ message ValidateSuggestionParametersRequest { } /** - * Return 1 if Suggestion Parameters is Valid, 0 if not + * Return Invalid Argument Error if Suggestion Parameters are not Valid */ message ValidateSuggestionParametersReply { } diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index d8e42df474d..f58db3f2e62 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -52,14 +52,14 @@ func initializeStudy(instance *katibv1alpha1.StudyJob) error { return err } - log.Println("Validate Parameters inside Suggestion Start") + log.Println("Start to Validate Suggestion Parameters") isValidSuggestionParameters := validateSuggestionParameters(c, studyConfig, instance.Spec.SuggestionSpec.SuggestionParameters, instance.Spec.SuggestionSpec.SuggestionAlgorithm) if isValidSuggestionParameters { - log.Println("Suggestion Parameters is valid") + log.Println("Suggestion Parameters are valid") } else { instance.Status.Condition = katibv1alpha1.ConditionFailed - return errors.New("Suggestion Parameters is not valid") + return errors.New("Suggestion Parameters are not valid") } log.Printf("Create Study %s", studyConfig.Name) From ea896ae1a4c4690ef8873ce416a019e782710f9e Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Thu, 28 Feb 2019 19:08:13 -0800 Subject: [PATCH 16/17] Add ValidateSuggestionParameters to mock --- pkg/mock/api/manager.go | 18 ++++++++++++++++++ pkg/mock/api/suggestion.go | 18 ++++++++++++++++++ pkg/mock/db/db.go | 13 ------------- 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/pkg/mock/api/manager.go b/pkg/mock/api/manager.go index b68fba741b6..32e781fdb34 100644 --- a/pkg/mock/api/manager.go +++ b/pkg/mock/api/manager.go @@ -484,3 +484,21 @@ func (mr *MockManagerClientMockRecorder) UpdateWorkerState(arg0, arg1 interface{ varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateWorkerState", reflect.TypeOf((*MockManagerClient)(nil).UpdateWorkerState), varargs...) } + +// ValidateSuggestionParameters mocks base method +func (m *MockManagerClient) ValidateSuggestionParameters(arg0 context.Context, arg1 *api.ValidateSuggestionParametersRequest, arg2 ...grpc.CallOption) (*api.ValidateSuggestionParametersReply, error) { + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ValidateSuggestionParameters", varargs...) + ret0, _ := ret[0].(*api.ValidateSuggestionParametersReply) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ValidateSuggestionParameters indicates an expected call of ValidateSuggestionParameters +func (mr *MockManagerClientMockRecorder) ValidateSuggestionParameters(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateSuggestionParameters", reflect.TypeOf((*MockManagerClient)(nil).ValidateSuggestionParameters), varargs...) +} diff --git a/pkg/mock/api/suggestion.go b/pkg/mock/api/suggestion.go index 423e7aa0404..29f5ae964d4 100644 --- a/pkg/mock/api/suggestion.go +++ b/pkg/mock/api/suggestion.go @@ -52,3 +52,21 @@ func (mr *MockSuggestionClientMockRecorder) GetSuggestions(arg0, arg1 interface{ varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSuggestions", reflect.TypeOf((*MockSuggestionClient)(nil).GetSuggestions), varargs...) } + +// ValidateSuggestionParameters mocks base method +func (m *MockSuggestionClient) ValidateSuggestionParameters(arg0 context.Context, arg1 *api.ValidateSuggestionParametersRequest, arg2 ...grpc.CallOption) (*api.ValidateSuggestionParametersReply, error) { + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ValidateSuggestionParameters", varargs...) + ret0, _ := ret[0].(*api.ValidateSuggestionParametersReply) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ValidateSuggestionParameters indicates an expected call of ValidateSuggestionParameters +func (mr *MockSuggestionClientMockRecorder) ValidateSuggestionParameters(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateSuggestionParameters", reflect.TypeOf((*MockSuggestionClient)(nil).ValidateSuggestionParameters), varargs...) +} diff --git a/pkg/mock/db/db.go b/pkg/mock/db/db.go index 70d29f2f0a4..bcd6ef88f94 100644 --- a/pkg/mock/db/db.go +++ b/pkg/mock/db/db.go @@ -171,19 +171,6 @@ func (mr *MockVizierDBInterfaceMockRecorder) GetStudyList() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStudyList", reflect.TypeOf((*MockVizierDBInterface)(nil).GetStudyList)) } -// GetStudyMetrics mocks base method -func (m *MockVizierDBInterface) GetStudyMetrics(arg0 string) ([]string, error) { - ret := m.ctrl.Call(m, "GetStudyMetrics", arg0) - ret0, _ := ret[0].([]string) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetStudyMetrics indicates an expected call of GetStudyMetrics -func (mr *MockVizierDBInterfaceMockRecorder) GetStudyMetrics(arg0 interface{}) *gomock.Call { - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStudyMetrics", reflect.TypeOf((*MockVizierDBInterface)(nil).GetStudyMetrics), arg0) -} - // GetSuggestionParam mocks base method func (m *MockVizierDBInterface) GetSuggestionParam(arg0 string) ([]*api.SuggestionParameter, error) { ret := m.ctrl.Call(m, "GetSuggestionParam", arg0) From b88030b9e9a149b335189598d70ef881f38a6bf8 Mon Sep 17 00:00:00 2001 From: andreyvelich Date: Mon, 4 Mar 2019 11:43:54 -0800 Subject: [PATCH 17/17] Handle Unvailable error --- cmd/manager/main.go | 3 --- pkg/api/api.proto | 3 ++- pkg/controller/studyjob/katib_api_util.go | 4 ++-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 8a59eb21342..db825000201 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -116,9 +116,6 @@ func (s *server) GetSuggestions(ctx context.Context, in *api_pb.GetSuggestionsRe } func (s *server) ValidateSuggestionParameters(ctx context.Context, in *api_pb.ValidateSuggestionParametersRequest) (*api_pb.ValidateSuggestionParametersReply, error) { - if in.SuggestionAlgorithm == "" { - return &api_pb.ValidateSuggestionParametersReply{}, errors.New("No suggest algorithm specified") - } conn, err := grpc.Dial("vizier-suggestion-"+in.SuggestionAlgorithm+":6789", grpc.WithInsecure()) if err != nil { diff --git a/pkg/api/api.proto b/pkg/api/api.proto index 7e1069b4c73..cdad3eb214f 100644 --- a/pkg/api/api.proto +++ b/pkg/api/api.proto @@ -214,6 +214,7 @@ service Manager { }; /** * Validate Suggestion Parameters from Study Job. + * Suggestion service should return INVALID_ARGUMENT Error when the parameter is invalid */ rpc ValidateSuggestionParameters(ValidateSuggestionParametersRequest) returns (ValidateSuggestionParametersReply){ option (google.api.http) = { @@ -802,7 +803,7 @@ message ValidateSuggestionParametersRequest { } /** - * Return Invalid Argument Error if Suggestion Parameters are not Valid + * Return INVALID_ARGUMENT Error if Suggestion Parameters are not Valid */ message ValidateSuggestionParametersReply { } diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index f58db3f2e62..1694a03ec16 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -383,8 +383,8 @@ func validateSuggestionParameters(c katibapi.ManagerClient, studyConfig *katibap return true } - if err != nil { - log.Printf("ValidateSuggestionParameters Error: %v", err) + if statusCode.Code() == codes.InvalidArgument || statusCode.Code() == codes.Unavailable { + log.Printf("ValidateSuggestionParameters Error: %v", statusCode.Message()) return false } return true