diff --git a/api/deployment/v1/message.go-helpers.pb.go b/api/deployment/v1/message.go-helpers.pb.go index 3fdf3f1658c..4eb8823139a 100644 --- a/api/deployment/v1/message.go-helpers.pb.go +++ b/api/deployment/v1/message.go-helpers.pb.go @@ -29,35 +29,35 @@ import ( "google.golang.org/protobuf/proto" ) -// Marshal an object of type WorkerDeploymentTaskQueueData to the protobuf v3 wire format -func (val *WorkerDeploymentTaskQueueData) Marshal() ([]byte, error) { +// Marshal an object of type DeploymentVersionTaskQueueData to the protobuf v3 wire format +func (val *DeploymentVersionTaskQueueData) Marshal() ([]byte, error) { return proto.Marshal(val) } -// Unmarshal an object of type WorkerDeploymentTaskQueueData from the protobuf v3 wire format -func (val *WorkerDeploymentTaskQueueData) Unmarshal(buf []byte) error { +// Unmarshal an object of type DeploymentVersionTaskQueueData from the protobuf v3 wire format +func (val *DeploymentVersionTaskQueueData) Unmarshal(buf []byte) error { return proto.Unmarshal(buf, val) } // Size returns the size of the object, in bytes, once serialized -func (val *WorkerDeploymentTaskQueueData) Size() int { +func (val *DeploymentVersionTaskQueueData) Size() int { return proto.Size(val) } -// Equal returns whether two WorkerDeploymentTaskQueueData values are equivalent by recursively +// Equal returns whether two DeploymentVersionTaskQueueData values are equivalent by recursively // comparing the message's fields. // For more information see the documentation for // https://pkg.go.dev/google.golang.org/protobuf/proto#Equal -func (this *WorkerDeploymentTaskQueueData) Equal(that interface{}) bool { +func (this *DeploymentVersionTaskQueueData) Equal(that interface{}) bool { if that == nil { return this == nil } - var that1 *WorkerDeploymentTaskQueueData + var that1 *DeploymentVersionTaskQueueData switch t := that.(type) { - case *WorkerDeploymentTaskQueueData: + case *DeploymentVersionTaskQueueData: that1 = t - case WorkerDeploymentTaskQueueData: + case DeploymentVersionTaskQueueData: that1 = &t default: return false @@ -436,35 +436,35 @@ func (this *StartWorkerDeploymentRequest) Equal(that interface{}) bool { return proto.Equal(this, that1) } -// Marshal an object of type SyncWorkerDeploymentUserDataRequest to the protobuf v3 wire format -func (val *SyncWorkerDeploymentUserDataRequest) Marshal() ([]byte, error) { +// Marshal an object of type SyncDeploymentVersionUserDataRequest to the protobuf v3 wire format +func (val *SyncDeploymentVersionUserDataRequest) Marshal() ([]byte, error) { return proto.Marshal(val) } -// Unmarshal an object of type SyncWorkerDeploymentUserDataRequest from the protobuf v3 wire format -func (val *SyncWorkerDeploymentUserDataRequest) Unmarshal(buf []byte) error { +// Unmarshal an object of type SyncDeploymentVersionUserDataRequest from the protobuf v3 wire format +func (val *SyncDeploymentVersionUserDataRequest) Unmarshal(buf []byte) error { return proto.Unmarshal(buf, val) } // Size returns the size of the object, in bytes, once serialized -func (val *SyncWorkerDeploymentUserDataRequest) Size() int { +func (val *SyncDeploymentVersionUserDataRequest) Size() int { return proto.Size(val) } -// Equal returns whether two SyncWorkerDeploymentUserDataRequest values are equivalent by recursively +// Equal returns whether two SyncDeploymentVersionUserDataRequest values are equivalent by recursively // comparing the message's fields. // For more information see the documentation for // https://pkg.go.dev/google.golang.org/protobuf/proto#Equal -func (this *SyncWorkerDeploymentUserDataRequest) Equal(that interface{}) bool { +func (this *SyncDeploymentVersionUserDataRequest) Equal(that interface{}) bool { if that == nil { return this == nil } - var that1 *SyncWorkerDeploymentUserDataRequest + var that1 *SyncDeploymentVersionUserDataRequest switch t := that.(type) { - case *SyncWorkerDeploymentUserDataRequest: + case *SyncDeploymentVersionUserDataRequest: that1 = t - case SyncWorkerDeploymentUserDataRequest: + case SyncDeploymentVersionUserDataRequest: that1 = &t default: return false @@ -473,35 +473,35 @@ func (this *SyncWorkerDeploymentUserDataRequest) Equal(that interface{}) bool { return proto.Equal(this, that1) } -// Marshal an object of type SyncWorkerDeploymentUserDataResponse to the protobuf v3 wire format -func (val *SyncWorkerDeploymentUserDataResponse) Marshal() ([]byte, error) { +// Marshal an object of type SyncDeploymentVersionUserDataResponse to the protobuf v3 wire format +func (val *SyncDeploymentVersionUserDataResponse) Marshal() ([]byte, error) { return proto.Marshal(val) } -// Unmarshal an object of type SyncWorkerDeploymentUserDataResponse from the protobuf v3 wire format -func (val *SyncWorkerDeploymentUserDataResponse) Unmarshal(buf []byte) error { +// Unmarshal an object of type SyncDeploymentVersionUserDataResponse from the protobuf v3 wire format +func (val *SyncDeploymentVersionUserDataResponse) Unmarshal(buf []byte) error { return proto.Unmarshal(buf, val) } // Size returns the size of the object, in bytes, once serialized -func (val *SyncWorkerDeploymentUserDataResponse) Size() int { +func (val *SyncDeploymentVersionUserDataResponse) Size() int { return proto.Size(val) } -// Equal returns whether two SyncWorkerDeploymentUserDataResponse values are equivalent by recursively +// Equal returns whether two SyncDeploymentVersionUserDataResponse values are equivalent by recursively // comparing the message's fields. // For more information see the documentation for // https://pkg.go.dev/google.golang.org/protobuf/proto#Equal -func (this *SyncWorkerDeploymentUserDataResponse) Equal(that interface{}) bool { +func (this *SyncDeploymentVersionUserDataResponse) Equal(that interface{}) bool { if that == nil { return this == nil } - var that1 *SyncWorkerDeploymentUserDataResponse + var that1 *SyncDeploymentVersionUserDataResponse switch t := that.(type) { - case *SyncWorkerDeploymentUserDataResponse: + case *SyncDeploymentVersionUserDataResponse: that1 = t - case SyncWorkerDeploymentUserDataResponse: + case SyncDeploymentVersionUserDataResponse: that1 = &t default: return false diff --git a/api/deployment/v1/message.pb.go b/api/deployment/v1/message.pb.go index 1e1d36b591e..0a316b15581 100644 --- a/api/deployment/v1/message.pb.go +++ b/api/deployment/v1/message.pb.go @@ -50,14 +50,14 @@ const ( // Data for each worker deployment version + task queue pair. // This is stored in each worker deployment version (for each task queue), // and synced to task queue user data (for each worker deployment version). -type WorkerDeploymentTaskQueueData struct { +type DeploymentVersionTaskQueueData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *WorkerDeploymentTaskQueueData) Reset() { - *x = WorkerDeploymentTaskQueueData{} +func (x *DeploymentVersionTaskQueueData) Reset() { + *x = DeploymentVersionTaskQueueData{} if protoimpl.UnsafeEnabled { mi := &file_temporal_server_api_deployment_v1_message_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -65,13 +65,13 @@ func (x *WorkerDeploymentTaskQueueData) Reset() { } } -func (x *WorkerDeploymentTaskQueueData) String() string { +func (x *DeploymentVersionTaskQueueData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WorkerDeploymentTaskQueueData) ProtoMessage() {} +func (*DeploymentVersionTaskQueueData) ProtoMessage() {} -func (x *WorkerDeploymentTaskQueueData) ProtoReflect() protoreflect.Message { +func (x *DeploymentVersionTaskQueueData) ProtoReflect() protoreflect.Message { mi := &file_temporal_server_api_deployment_v1_message_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -83,8 +83,8 @@ func (x *WorkerDeploymentTaskQueueData) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WorkerDeploymentTaskQueueData.ProtoReflect.Descriptor instead. -func (*WorkerDeploymentTaskQueueData) Descriptor() ([]byte, []int) { +// Deprecated: Use DeploymentVersionTaskQueueData.ProtoReflect.Descriptor instead. +func (*DeploymentVersionTaskQueueData) Descriptor() ([]byte, []int) { return file_temporal_server_api_deployment_v1_message_proto_rawDescGZIP(), []int{0} } @@ -721,18 +721,18 @@ func (x *StartWorkerDeploymentRequest) GetRequestId() string { } // used as Worker Deployment Version workflow activity input: -type SyncWorkerDeploymentUserDataRequest struct { +type SyncDeploymentVersionUserDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DeploymentName string `protobuf:"bytes,1,opt,name=deployment_name,json=deploymentName,proto3" json:"deployment_name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Sync []*SyncWorkerDeploymentUserDataRequest_SyncUserData `protobuf:"bytes,3,rep,name=sync,proto3" json:"sync,omitempty"` + DeploymentName string `protobuf:"bytes,1,opt,name=deployment_name,json=deploymentName,proto3" json:"deployment_name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Sync []*SyncDeploymentVersionUserDataRequest_SyncUserData `protobuf:"bytes,3,rep,name=sync,proto3" json:"sync,omitempty"` } -func (x *SyncWorkerDeploymentUserDataRequest) Reset() { - *x = SyncWorkerDeploymentUserDataRequest{} +func (x *SyncDeploymentVersionUserDataRequest) Reset() { + *x = SyncDeploymentVersionUserDataRequest{} if protoimpl.UnsafeEnabled { mi := &file_temporal_server_api_deployment_v1_message_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -740,13 +740,13 @@ func (x *SyncWorkerDeploymentUserDataRequest) Reset() { } } -func (x *SyncWorkerDeploymentUserDataRequest) String() string { +func (x *SyncDeploymentVersionUserDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SyncWorkerDeploymentUserDataRequest) ProtoMessage() {} +func (*SyncDeploymentVersionUserDataRequest) ProtoMessage() {} -func (x *SyncWorkerDeploymentUserDataRequest) ProtoReflect() protoreflect.Message { +func (x *SyncDeploymentVersionUserDataRequest) ProtoReflect() protoreflect.Message { mi := &file_temporal_server_api_deployment_v1_message_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -758,26 +758,26 @@ func (x *SyncWorkerDeploymentUserDataRequest) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use SyncWorkerDeploymentUserDataRequest.ProtoReflect.Descriptor instead. -func (*SyncWorkerDeploymentUserDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use SyncDeploymentVersionUserDataRequest.ProtoReflect.Descriptor instead. +func (*SyncDeploymentVersionUserDataRequest) Descriptor() ([]byte, []int) { return file_temporal_server_api_deployment_v1_message_proto_rawDescGZIP(), []int{11} } -func (x *SyncWorkerDeploymentUserDataRequest) GetDeploymentName() string { +func (x *SyncDeploymentVersionUserDataRequest) GetDeploymentName() string { if x != nil { return x.DeploymentName } return "" } -func (x *SyncWorkerDeploymentUserDataRequest) GetVersion() string { +func (x *SyncDeploymentVersionUserDataRequest) GetVersion() string { if x != nil { return x.Version } return "" } -func (x *SyncWorkerDeploymentUserDataRequest) GetSync() []*SyncWorkerDeploymentUserDataRequest_SyncUserData { +func (x *SyncDeploymentVersionUserDataRequest) GetSync() []*SyncDeploymentVersionUserDataRequest_SyncUserData { if x != nil { return x.Sync } @@ -785,7 +785,7 @@ func (x *SyncWorkerDeploymentUserDataRequest) GetSync() []*SyncWorkerDeploymentU } // used as Worker Deployment Version workflow activity output: -type SyncWorkerDeploymentUserDataResponse struct { +type SyncDeploymentVersionUserDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -793,8 +793,8 @@ type SyncWorkerDeploymentUserDataResponse struct { TaskQueueMaxVersions map[string]int64 `protobuf:"bytes,1,rep,name=task_queue_max_versions,json=taskQueueMaxVersions,proto3" json:"task_queue_max_versions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } -func (x *SyncWorkerDeploymentUserDataResponse) Reset() { - *x = SyncWorkerDeploymentUserDataResponse{} +func (x *SyncDeploymentVersionUserDataResponse) Reset() { + *x = SyncDeploymentVersionUserDataResponse{} if protoimpl.UnsafeEnabled { mi := &file_temporal_server_api_deployment_v1_message_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -802,13 +802,13 @@ func (x *SyncWorkerDeploymentUserDataResponse) Reset() { } } -func (x *SyncWorkerDeploymentUserDataResponse) String() string { +func (x *SyncDeploymentVersionUserDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SyncWorkerDeploymentUserDataResponse) ProtoMessage() {} +func (*SyncDeploymentVersionUserDataResponse) ProtoMessage() {} -func (x *SyncWorkerDeploymentUserDataResponse) ProtoReflect() protoreflect.Message { +func (x *SyncDeploymentVersionUserDataResponse) ProtoReflect() protoreflect.Message { mi := &file_temporal_server_api_deployment_v1_message_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -820,12 +820,12 @@ func (x *SyncWorkerDeploymentUserDataResponse) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use SyncWorkerDeploymentUserDataResponse.ProtoReflect.Descriptor instead. -func (*SyncWorkerDeploymentUserDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use SyncDeploymentVersionUserDataResponse.ProtoReflect.Descriptor instead. +func (*SyncDeploymentVersionUserDataResponse) Descriptor() ([]byte, []int) { return file_temporal_server_api_deployment_v1_message_proto_rawDescGZIP(), []int{12} } -func (x *SyncWorkerDeploymentUserDataResponse) GetTaskQueueMaxVersions() map[string]int64 { +func (x *SyncDeploymentVersionUserDataResponse) GetTaskQueueMaxVersions() map[string]int64 { if x != nil { return x.TaskQueueMaxVersions } @@ -2323,7 +2323,7 @@ type VersionLocalState_TaskQueueFamilyData struct { // Key: enums.TaskQueueType, Value: TaskQueueData // All fields in TaskQueueData are valid except last_became_current_time, the source of // truth for that is the value at the root of WorkerDeploymentLocalState. - TaskQueues map[int32]*WorkerDeploymentTaskQueueData `protobuf:"bytes,1,rep,name=task_queues,json=taskQueues,proto3" json:"task_queues,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TaskQueues map[int32]*DeploymentVersionTaskQueueData `protobuf:"bytes,1,rep,name=task_queues,json=taskQueues,proto3" json:"task_queues,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *VersionLocalState_TaskQueueFamilyData) Reset() { @@ -2358,7 +2358,7 @@ func (*VersionLocalState_TaskQueueFamilyData) Descriptor() ([]byte, []int) { return file_temporal_server_api_deployment_v1_message_proto_rawDescGZIP(), []int{1, 1} } -func (x *VersionLocalState_TaskQueueFamilyData) GetTaskQueues() map[int32]*WorkerDeploymentTaskQueueData { +func (x *VersionLocalState_TaskQueueFamilyData) GetTaskQueues() map[int32]*DeploymentVersionTaskQueueData { if x != nil { return x.TaskQueues } @@ -2415,18 +2415,18 @@ func (x *SyncVersionStateArgs_SetCurrent) GetLastBecameCurrentTime() *timestampp return nil } -type SyncWorkerDeploymentUserDataRequest_SyncUserData struct { +type SyncDeploymentVersionUserDataRequest_SyncUserData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type v1.TaskQueueType `protobuf:"varint,2,opt,name=type,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"type,omitempty"` - Data *WorkerDeploymentTaskQueueData `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type v1.TaskQueueType `protobuf:"varint,2,opt,name=type,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"type,omitempty"` + Data *DeploymentVersionTaskQueueData `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` } -func (x *SyncWorkerDeploymentUserDataRequest_SyncUserData) Reset() { - *x = SyncWorkerDeploymentUserDataRequest_SyncUserData{} +func (x *SyncDeploymentVersionUserDataRequest_SyncUserData) Reset() { + *x = SyncDeploymentVersionUserDataRequest_SyncUserData{} if protoimpl.UnsafeEnabled { mi := &file_temporal_server_api_deployment_v1_message_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2434,13 +2434,13 @@ func (x *SyncWorkerDeploymentUserDataRequest_SyncUserData) Reset() { } } -func (x *SyncWorkerDeploymentUserDataRequest_SyncUserData) String() string { +func (x *SyncDeploymentVersionUserDataRequest_SyncUserData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SyncWorkerDeploymentUserDataRequest_SyncUserData) ProtoMessage() {} +func (*SyncDeploymentVersionUserDataRequest_SyncUserData) ProtoMessage() {} -func (x *SyncWorkerDeploymentUserDataRequest_SyncUserData) ProtoReflect() protoreflect.Message { +func (x *SyncDeploymentVersionUserDataRequest_SyncUserData) ProtoReflect() protoreflect.Message { mi := &file_temporal_server_api_deployment_v1_message_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2452,26 +2452,26 @@ func (x *SyncWorkerDeploymentUserDataRequest_SyncUserData) ProtoReflect() protor return mi.MessageOf(x) } -// Deprecated: Use SyncWorkerDeploymentUserDataRequest_SyncUserData.ProtoReflect.Descriptor instead. -func (*SyncWorkerDeploymentUserDataRequest_SyncUserData) Descriptor() ([]byte, []int) { +// Deprecated: Use SyncDeploymentVersionUserDataRequest_SyncUserData.ProtoReflect.Descriptor instead. +func (*SyncDeploymentVersionUserDataRequest_SyncUserData) Descriptor() ([]byte, []int) { return file_temporal_server_api_deployment_v1_message_proto_rawDescGZIP(), []int{11, 0} } -func (x *SyncWorkerDeploymentUserDataRequest_SyncUserData) GetName() string { +func (x *SyncDeploymentVersionUserDataRequest_SyncUserData) GetName() string { if x != nil { return x.Name } return "" } -func (x *SyncWorkerDeploymentUserDataRequest_SyncUserData) GetType() v1.TaskQueueType { +func (x *SyncDeploymentVersionUserDataRequest_SyncUserData) GetType() v1.TaskQueueType { if x != nil { return x.Type } return v1.TaskQueueType(0) } -func (x *SyncWorkerDeploymentUserDataRequest_SyncUserData) GetData() *WorkerDeploymentTaskQueueData { +func (x *SyncDeploymentVersionUserDataRequest_SyncUserData) GetData() *DeploymentVersionTaskQueueData { if x != nil { return x.Data } @@ -2658,571 +2658,571 @@ var file_temporal_server_api_deployment_v1_message_proto_rawDesc = []byte{ 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x1f, 0x0a, 0x1d, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x9a, 0x07, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, - 0x12, 0x1c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, 0x00, 0x12, 0x7f, 0x0a, 0x13, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, - 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x22, 0x9b, 0x07, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, + 0x00, 0x12, 0x1c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, 0x00, 0x12, 0x7f, 0x0a, + 0x13, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, + 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x11, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, + 0x6c, 0x69, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x57, 0x0a, 0x18, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x3f, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x42, 0x0a, 0x1b, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x96, 0x01, 0x0a, + 0x16, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x62, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x9f, 0x02, + 0x0a, 0x13, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x7d, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x58, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x11, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, - 0x69, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x57, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x43, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x3f, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x42, 0x0a, 0x1b, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x96, 0x01, 0x0a, 0x16, - 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x62, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, + 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x88, 0x01, + 0x0a, 0x0f, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x5b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0xd6, 0x01, 0x0a, 0x23, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, + 0x12, 0x25, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, + 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x5d, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, + 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, + 0xf6, 0x01, 0x0a, 0x1c, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x67, 0x73, 0x12, 0x29, + 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x25, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x2b, 0x0a, 0x0f, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x57, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x9b, 0x01, 0x0a, 0x1a, + 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x0f, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, + 0x68, 0x00, 0x22, 0x93, 0x02, 0x0a, 0x1b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x6f, + 0x72, 0x6b, 0x65, 0x72, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x73, + 0x12, 0x2a, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, 0x0a, 0x0f, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x4a, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, + 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x66, 0x69, + 0x72, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, + 0x12, 0x2a, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x54, 0x61, 0x73, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x22, 0xe6, 0x01, 0x0a, 0x14, 0x53, + 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, + 0x67, 0x73, 0x12, 0x67, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, 0x67, 0x73, 0x2e, 0x53, 0x65, 0x74, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x73, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x65, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x63, 0x61, 0x6d, + 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6c, + 0x61, 0x73, 0x74, 0x42, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x79, 0x0a, 0x18, 0x53, 0x79, 0x6e, 0x63, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x9e, 0x02, 0x0a, - 0x13, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x7d, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x58, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, + 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x7d, 0x0a, 0x1c, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0d, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xd9, 0x01, 0x0a, 0x13, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x2b, 0x0a, 0x0f, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x1c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, + 0x02, 0x68, 0x00, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, + 0x00, 0x12, 0x36, 0x0a, 0x15, 0x69, 0x73, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, + 0x69, 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x22, 0x6e, 0x0a, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, + 0x21, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, + 0x22, 0xa1, 0x03, 0x0a, 0x24, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, + 0x68, 0x00, 0x12, 0x1c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, 0x00, 0x12, 0x6c, + 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x73, + 0x79, 0x6e, 0x63, 0x42, 0x02, 0x68, 0x00, 0x1a, 0xbf, 0x01, 0x0a, 0x0c, 0x53, 0x79, 0x6e, 0x63, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x3c, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x59, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x02, 0x68, 0x00, 0x22, + 0x98, 0x02, 0x0a, 0x25, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9d, 0x01, 0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x62, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, 0x61, - 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x87, 0x01, 0x0a, 0x0f, - 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x42, 0x02, 0x68, 0x00, 0x12, 0x5a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xd6, 0x01, 0x0a, 0x23, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x41, 0x72, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x25, - 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x42, - 0x02, 0x68, 0x00, 0x12, 0x5d, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, - 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xf6, 0x01, - 0x0a, 0x1c, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x0e, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x25, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x57, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x9b, 0x01, 0x0a, 0x1a, 0x57, 0x6f, - 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, - 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, - 0x68, 0x00, 0x12, 0x50, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, - 0x22, 0x93, 0x02, 0x0a, 0x1b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, - 0x65, 0x72, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x73, 0x12, 0x2a, - 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, - 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, - 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x4a, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x73, - 0x74, 0x50, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x2a, - 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, - 0x65, 0x75, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x22, 0xe6, 0x01, 0x0a, 0x14, 0x53, 0x79, 0x6e, 0x63, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, 0x67, 0x73, 0x12, - 0x67, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, 0x67, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x73, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, - 0x02, 0x68, 0x00, 0x1a, 0x65, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x57, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x5f, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6c, 0x61, 0x73, - 0x74, 0x42, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x79, 0x0a, 0x18, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x5d, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, - 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x7d, 0x0a, 0x1c, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x55, + 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x68, 0x00, 0x1a, + 0x4f, 0x0a, 0x19, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, + 0x12, 0x18, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xac, 0x02, 0x0a, + 0x2f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x70, + 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xa7, 0x01, + 0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x6c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x02, 0x68, 0x00, 0x22, 0xd9, 0x01, 0x0a, 0x13, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x42, 0x02, 0x68, 0x00, 0x12, 0x1c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, - 0x00, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x36, - 0x0a, 0x15, 0x69, 0x73, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x73, - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x42, 0x02, 0x68, 0x00, 0x22, 0x6e, 0x0a, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, - 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x22, 0x9e, - 0x03, 0x0a, 0x23, 0x53, 0x79, 0x6e, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, - 0x1c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, 0x00, 0x12, 0x6b, 0x0a, 0x04, 0x73, - 0x79, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, - 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x57, - 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x79, - 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x42, - 0x02, 0x68, 0x00, 0x1a, 0xbe, 0x01, 0x0a, 0x0c, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, - 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x58, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x02, 0x68, 0x00, 0x22, 0x96, 0x02, 0x0a, 0x24, 0x53, - 0x79, 0x6e, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, - 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x61, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x14, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x4f, 0x0a, 0x19, 0x54, 0x61, 0x73, 0x6b, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x18, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, - 0x00, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xac, 0x02, 0x0a, 0x2f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x57, 0x6f, - 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xa7, 0x01, 0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, 0x5f, - 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x6c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x70, + 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x68, 0x00, 0x1a, + 0x4f, 0x0a, 0x19, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, + 0x12, 0x18, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, 0x15, + 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x41, 0x72, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x02, + 0x68, 0x00, 0x12, 0x1c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, 0x00, 0x12, + 0x21, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, + 0x22, 0x1b, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x1c, + 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x72, 0x67, 0x73, 0x12, 0x2b, 0x0a, 0x0f, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x1c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, + 0x68, 0x00, 0x12, 0x4f, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x41, 0x72, 0x67, 0x73, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x42, 0x02, 0x68, 0x00, 0x12, + 0x21, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, + 0x22, 0x7f, 0x0a, 0x1e, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x5d, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x57, - 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x14, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x4f, 0x0a, 0x19, 0x54, 0x61, 0x73, 0x6b, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x18, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, - 0x00, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x08, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x1c, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x22, 0x1b, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x43, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x1c, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x41, 0x72, 0x67, 0x73, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x1c, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, 0x00, 0x12, 0x4f, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xca, 0x01, 0x0a, 0x1c, + 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x2b, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, 0x00, + 0x12, 0x50, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xb4, + 0x01, 0x0a, 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x4a, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x54, + 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x57, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xdd, 0x08, 0x0a, 0x14, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x4a, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x13, + 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, + 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, 0x67, 0x73, 0x52, 0x04, - 0x61, 0x72, 0x67, 0x73, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x22, 0x7f, 0x0a, 0x1e, 0x53, 0x79, 0x6e, - 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5d, 0x0a, 0x0d, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x42, 0x02, 0x68, 0x00, 0x22, 0xca, 0x01, 0x0a, 0x1c, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, - 0x65, 0x6d, 0x6f, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x2b, - 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xb4, 0x01, 0x0a, 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4a, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, - 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x66, 0x69, - 0x72, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, - 0x12, 0x57, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x5f, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6c, 0x61, 0x73, 0x74, - 0x42, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xdd, 0x08, 0x0a, 0x14, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4a, 0x0a, 0x0a, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x42, 0x02, 0x68, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x13, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x4e, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, - 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x74, - 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x42, - 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x42, 0x02, 0x68, 0x00, 0x12, 0x57, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x63, 0x61, - 0x6d, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x15, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x65, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, - 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x42, 0x02, 0x68, 0x00, 0x12, 0x3a, 0x0a, 0x17, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x02, 0x68, - 0x00, 0x1a, 0x99, 0x01, 0x0a, 0x16, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, - 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, - 0x12, 0x65, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, - 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, - 0x69, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, - 0x00, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x64, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, - 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, - 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x91, 0x02, 0x0a, 0x13, 0x54, 0x61, 0x73, 0x6b, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x80, 0x01, - 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x5b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x77, 0x0a, 0x0f, 0x54, 0x61, 0x73, - 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, - 0x12, 0x4a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, - 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, + 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x69, 0x73, + 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, + 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x57, 0x0a, 0x18, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x65, 0x63, 0x61, + 0x6d, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, + 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x65, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x45, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbd, 0x01, 0x0a, - 0x16, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x41, 0x72, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, - 0x25, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x42, 0x02, 0x68, 0x00, 0x12, 0x51, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, - 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x02, 0x68, 0x00, 0x22, 0xe4, 0x01, 0x0a, 0x1c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x72, - 0x67, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x25, 0x0a, 0x0c, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, - 0x12, 0x23, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x42, - 0x02, 0x68, 0x00, 0x12, 0x4d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x92, - 0x01, 0x0a, 0x10, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, - 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x96, 0x02, 0x0a, 0x1e, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x6e, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x72, 0x67, 0x73, 0x12, 0x2a, 0x0a, - 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, - 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x6e, - 0x75, 0x6d, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x4a, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x73, 0x74, - 0x50, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x2a, 0x0a, - 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x22, 0xcf, 0x02, 0x0a, 0x17, 0x53, 0x79, 0x6e, 0x63, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, 0x67, - 0x73, 0x12, 0x6a, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x02, 0x68, 0x00, 0x12, + 0x3a, 0x0a, 0x17, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, + 0x73, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x99, 0x01, 0x0a, 0x16, 0x54, 0x61, 0x73, + 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x65, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, 0x67, 0x73, 0x2e, 0x53, - 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x73, 0x65, 0x74, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x61, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x65, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x63, 0x61, - 0x6d, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, - 0x6c, 0x61, 0x73, 0x74, 0x42, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x90, 0x01, 0x0a, 0x1b, 0x53, 0x79, 0x6e, 0x63, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x16, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x14, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x42, 0x02, 0x68, 0x00, 0x22, 0x94, 0x01, 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x16, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x14, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x02, 0x68, 0x00, 0x22, 0xdd, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x4a, 0x0a, 0x0a, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x64, 0x0a, 0x0d, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, + 0x68, 0x00, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x91, 0x02, + 0x0a, 0x13, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, + 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x80, 0x01, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, + 0x65, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5b, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, - 0x02, 0x68, 0x00, 0x12, 0x36, 0x0a, 0x15, 0x69, 0x73, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x13, 0x69, 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x22, 0x66, 0x0a, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x69, - 0x65, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x22, 0xef, 0x02, 0x0a, 0x13, 0x53, - 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x5b, 0x0a, 0x04, 0x73, 0x79, 0x6e, - 0x63, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, - 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x79, 0x6e, - 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x02, - 0x68, 0x00, 0x1a, 0xae, 0x01, 0x0a, 0x0c, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x44, + 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x02, 0x68, + 0x00, 0x1a, 0x77, 0x0a, 0x0f, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x4a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbd, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x67, 0x73, 0x12, 0x29, 0x0a, + 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x25, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x51, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xe4, 0x01, 0x0a, 0x1c, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, + 0x02, 0x68, 0x00, 0x12, 0x25, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x23, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x69, 0x65, + 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x4d, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x92, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x10, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, + 0x02, 0x68, 0x00, 0x22, 0x96, 0x02, 0x0a, 0x1e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x41, 0x72, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, + 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, + 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x42, 0x02, 0x68, 0x00, 0x12, 0x48, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x02, 0x68, 0x00, 0x22, 0xf6, 0x01, 0x0a, 0x14, 0x53, - 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x14, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x4f, 0x0a, 0x19, 0x54, 0x61, 0x73, - 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x18, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, - 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8c, 0x02, 0x0a, 0x1f, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x97, 0x01, 0x0a, 0x17, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5c, 0x2e, 0x74, 0x65, 0x6d, 0x70, - 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, - 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x14, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x4f, 0x0a, 0x19, 0x54, - 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x18, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdf, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x41, 0x72, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x02, - 0x68, 0x00, 0x12, 0x1d, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, - 0x61, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, + 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x4a, 0x0a, 0x11, + 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x54, 0x69, 0x6d, + 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x2a, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, + 0x78, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x02, 0x68, 0x00, 0x22, 0xcf, + 0x02, 0x0a, 0x17, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, 0x67, 0x73, 0x12, 0x6a, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, + 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x41, 0x72, 0x67, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x52, 0x0a, 0x73, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, + 0x61, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, - 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x22, - 0x8e, 0x02, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, - 0x0a, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, - 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x16, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, - 0x77, 0x0a, 0x19, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, - 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x17, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, - 0x68, 0x00, 0x22, 0xe4, 0x01, 0x0a, 0x1f, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x41, 0x72, 0x67, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x02, 0x68, 0x00, 0x1a, 0x65, 0x0a, + 0x0a, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x18, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x65, 0x63, 0x61, 0x6d, + 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, + 0x90, 0x01, 0x0a, 0x1b, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, + 0x0a, 0x16, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x14, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0x94, 0x01, 0x0a, 0x1f, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, + 0x16, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x14, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xdd, 0x01, 0x0a, 0x16, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x4a, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x52, 0x0a, 0x04, - 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x3f, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x36, 0x0a, 0x15, 0x69, 0x73, + 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, 0x00, 0x22, + 0x66, 0x0a, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, + 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, + 0x68, 0x00, 0x22, 0xef, 0x02, 0x0a, 0x13, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x02, 0x68, + 0x00, 0x12, 0x5b, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, + 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x02, 0x68, 0x00, 0x1a, 0xae, 0x01, 0x0a, 0x0c, 0x53, 0x79, + 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, + 0x00, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, + 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x6e, 0x75, + 0x6d, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x48, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x02, + 0x68, 0x00, 0x22, 0xf6, 0x01, 0x0a, 0x14, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x17, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, - 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, - 0x72, 0x67, 0x73, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x22, 0x76, 0x0a, - 0x21, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x51, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, - 0xc3, 0x01, 0x0a, 0x1c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6d, 0x6f, 0x12, - 0x23, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, - 0x68, 0x00, 0x12, 0x2c, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, - 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x42, 0x34, 0x5a, 0x32, 0x67, - 0x6f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x68, + 0x00, 0x1a, 0x4f, 0x0a, 0x19, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, + 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x02, + 0x68, 0x00, 0x12, 0x18, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8c, + 0x02, 0x0a, 0x1f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, + 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x97, 0x01, 0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x5c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x61, 0x73, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, + 0x02, 0x68, 0x00, 0x1a, 0x4f, 0x0a, 0x19, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, + 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, + 0x02, 0x68, 0x00, 0x12, 0x18, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x68, 0x00, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xdf, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x72, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x08, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x02, 0x68, 0x00, 0x12, 0x1d, 0x0a, 0x08, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x61, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x22, 0x8e, 0x02, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x16, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x77, 0x0a, 0x19, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, + 0x75, 0x73, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x17, + 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xe4, 0x01, 0x0a, 0x1f, 0x53, + 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x72, 0x67, 0x73, 0x12, 0x4a, 0x0a, 0x0a, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x42, 0x02, 0x68, 0x00, 0x12, 0x52, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, 0x67, 0x73, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, + 0x42, 0x02, 0x68, 0x00, 0x12, 0x21, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x22, 0x76, 0x0a, 0x21, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x51, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x68, 0x00, 0x22, 0xc3, 0x01, 0x0a, 0x1c, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x23, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x02, 0x68, 0x00, 0x12, 0x2c, 0x0a, 0x10, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x49, 0x64, 0x42, 0x02, 0x68, 0x00, 0x12, 0x50, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x42, 0x02, 0x68, 0x00, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, + 0x61, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3239,7 +3239,7 @@ func file_temporal_server_api_deployment_v1_message_proto_rawDescGZIP() []byte { var file_temporal_server_api_deployment_v1_message_proto_msgTypes = make([]protoimpl.MessageInfo, 53) var file_temporal_server_api_deployment_v1_message_proto_goTypes = []interface{}{ - (*WorkerDeploymentTaskQueueData)(nil), // 0: temporal.server.api.deployment.v1.WorkerDeploymentTaskQueueData + (*DeploymentVersionTaskQueueData)(nil), // 0: temporal.server.api.deployment.v1.DeploymentVersionTaskQueueData (*VersionLocalState)(nil), // 1: temporal.server.api.deployment.v1.VersionLocalState (*WorkerDeploymentVersionWorkflowArgs)(nil), // 2: temporal.server.api.deployment.v1.WorkerDeploymentVersionWorkflowArgs (*WorkerDeploymentWorkflowArgs)(nil), // 3: temporal.server.api.deployment.v1.WorkerDeploymentWorkflowArgs @@ -3250,8 +3250,8 @@ var file_temporal_server_api_deployment_v1_message_proto_goTypes = []interface{} (*QueryDescribeVersionResponse)(nil), // 8: temporal.server.api.deployment.v1.QueryDescribeVersionResponse (*VersionWorkflowMemo)(nil), // 9: temporal.server.api.deployment.v1.VersionWorkflowMemo (*StartWorkerDeploymentRequest)(nil), // 10: temporal.server.api.deployment.v1.StartWorkerDeploymentRequest - (*SyncWorkerDeploymentUserDataRequest)(nil), // 11: temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataRequest - (*SyncWorkerDeploymentUserDataResponse)(nil), // 12: temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataResponse + (*SyncDeploymentVersionUserDataRequest)(nil), // 11: temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataRequest + (*SyncDeploymentVersionUserDataResponse)(nil), // 12: temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataResponse (*CheckWorkerDeploymentUserDataPropagationRequest)(nil), // 13: temporal.server.api.deployment.v1.CheckWorkerDeploymentUserDataPropagationRequest (*SetCurrentVersionArgs)(nil), // 14: temporal.server.api.deployment.v1.SetCurrentVersionArgs (*SetCurrentVersionResponse)(nil), // 15: temporal.server.api.deployment.v1.SetCurrentVersionResponse @@ -3281,8 +3281,8 @@ var file_temporal_server_api_deployment_v1_message_proto_goTypes = []interface{} (*VersionLocalState_TaskQueueFamilyData)(nil), // 39: temporal.server.api.deployment.v1.VersionLocalState.TaskQueueFamilyData nil, // 40: temporal.server.api.deployment.v1.VersionLocalState.TaskQueueFamilyData.TaskQueuesEntry (*SyncVersionStateArgs_SetCurrent)(nil), // 41: temporal.server.api.deployment.v1.SyncVersionStateArgs.SetCurrent - (*SyncWorkerDeploymentUserDataRequest_SyncUserData)(nil), // 42: temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataRequest.SyncUserData - nil, // 43: temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataResponse.TaskQueueMaxVersionsEntry + (*SyncDeploymentVersionUserDataRequest_SyncUserData)(nil), // 42: temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataRequest.SyncUserData + nil, // 43: temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataResponse.TaskQueueMaxVersionsEntry nil, // 44: temporal.server.api.deployment.v1.CheckWorkerDeploymentUserDataPropagationRequest.TaskQueueMaxVersionsEntry nil, // 45: temporal.server.api.deployment.v1.DeploymentLocalState.TaskQueueFamiliesEntry nil, // 46: temporal.server.api.deployment.v1.DeploymentLocalState.MetadataEntry @@ -3311,8 +3311,8 @@ var file_temporal_server_api_deployment_v1_message_proto_depIdxs = []int32{ 1, // 9: temporal.server.api.deployment.v1.SyncVersionStateResponse.version_state:type_name -> temporal.server.api.deployment.v1.VersionLocalState 1, // 10: temporal.server.api.deployment.v1.QueryDescribeVersionResponse.version_state:type_name -> temporal.server.api.deployment.v1.VersionLocalState 53, // 11: temporal.server.api.deployment.v1.VersionWorkflowMemo.create_time:type_name -> google.protobuf.Timestamp - 42, // 12: temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataRequest.sync:type_name -> temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataRequest.SyncUserData - 43, // 13: temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataResponse.task_queue_max_versions:type_name -> temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataResponse.TaskQueueMaxVersionsEntry + 42, // 12: temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataRequest.sync:type_name -> temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataRequest.SyncUserData + 43, // 13: temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataResponse.task_queue_max_versions:type_name -> temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataResponse.TaskQueueMaxVersionsEntry 44, // 14: temporal.server.api.deployment.v1.CheckWorkerDeploymentUserDataPropagationRequest.task_queue_max_versions:type_name -> temporal.server.api.deployment.v1.CheckWorkerDeploymentUserDataPropagationRequest.TaskQueueMaxVersionsEntry 6, // 15: temporal.server.api.deployment.v1.SyncVersionStateActivityArgs.args:type_name -> temporal.server.api.deployment.v1.SyncVersionStateArgs 1, // 16: temporal.server.api.deployment.v1.SyncVersionStateActivityResult.version_state:type_name -> temporal.server.api.deployment.v1.VersionLocalState @@ -3348,10 +3348,10 @@ var file_temporal_server_api_deployment_v1_message_proto_depIdxs = []int32{ 53, // 46: temporal.server.api.deployment.v1.DeploymentSeriesWorkflowMemo.current_changed_time:type_name -> google.protobuf.Timestamp 39, // 47: temporal.server.api.deployment.v1.VersionLocalState.TaskQueueFamiliesEntry.value:type_name -> temporal.server.api.deployment.v1.VersionLocalState.TaskQueueFamilyData 40, // 48: temporal.server.api.deployment.v1.VersionLocalState.TaskQueueFamilyData.task_queues:type_name -> temporal.server.api.deployment.v1.VersionLocalState.TaskQueueFamilyData.TaskQueuesEntry - 0, // 49: temporal.server.api.deployment.v1.VersionLocalState.TaskQueueFamilyData.TaskQueuesEntry.value:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentTaskQueueData + 0, // 49: temporal.server.api.deployment.v1.VersionLocalState.TaskQueueFamilyData.TaskQueuesEntry.value:type_name -> temporal.server.api.deployment.v1.DeploymentVersionTaskQueueData 53, // 50: temporal.server.api.deployment.v1.SyncVersionStateArgs.SetCurrent.last_became_current_time:type_name -> google.protobuf.Timestamp - 54, // 51: temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataRequest.SyncUserData.type:type_name -> temporal.api.enums.v1.TaskQueueType - 0, // 52: temporal.server.api.deployment.v1.SyncWorkerDeploymentUserDataRequest.SyncUserData.data:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentTaskQueueData + 54, // 51: temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataRequest.SyncUserData.type:type_name -> temporal.api.enums.v1.TaskQueueType + 0, // 52: temporal.server.api.deployment.v1.SyncDeploymentVersionUserDataRequest.SyncUserData.data:type_name -> temporal.server.api.deployment.v1.DeploymentVersionTaskQueueData 47, // 53: temporal.server.api.deployment.v1.DeploymentLocalState.TaskQueueFamiliesEntry.value:type_name -> temporal.server.api.deployment.v1.DeploymentLocalState.TaskQueueFamilyData 57, // 54: temporal.server.api.deployment.v1.DeploymentLocalState.MetadataEntry.value:type_name -> temporal.api.common.v1.Payload 48, // 55: temporal.server.api.deployment.v1.DeploymentLocalState.TaskQueueFamilyData.task_queues:type_name -> temporal.server.api.deployment.v1.DeploymentLocalState.TaskQueueFamilyData.TaskQueuesEntry @@ -3373,7 +3373,7 @@ func file_temporal_server_api_deployment_v1_message_proto_init() { } if !protoimpl.UnsafeEnabled { file_temporal_server_api_deployment_v1_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkerDeploymentTaskQueueData); i { + switch v := v.(*DeploymentVersionTaskQueueData); i { case 0: return &v.state case 1: @@ -3505,7 +3505,7 @@ func file_temporal_server_api_deployment_v1_message_proto_init() { } } file_temporal_server_api_deployment_v1_message_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncWorkerDeploymentUserDataRequest); i { + switch v := v.(*SyncDeploymentVersionUserDataRequest); i { case 0: return &v.state case 1: @@ -3517,7 +3517,7 @@ func file_temporal_server_api_deployment_v1_message_proto_init() { } } file_temporal_server_api_deployment_v1_message_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncWorkerDeploymentUserDataResponse); i { + switch v := v.(*SyncDeploymentVersionUserDataResponse); i { case 0: return &v.state case 1: @@ -3853,7 +3853,7 @@ func file_temporal_server_api_deployment_v1_message_proto_init() { } } file_temporal_server_api_deployment_v1_message_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncWorkerDeploymentUserDataRequest_SyncUserData); i { + switch v := v.(*SyncDeploymentVersionUserDataRequest_SyncUserData); i { case 0: return &v.state case 1: diff --git a/client/frontend/client_gen.go b/client/frontend/client_gen.go index 19289ae3e8f..8ad5a21740c 100644 --- a/client/frontend/client_gen.go +++ b/client/frontend/client_gen.go @@ -133,6 +133,16 @@ func (c *clientImpl) DescribeTaskQueue( return c.client.DescribeTaskQueue(ctx, request, opts...) } +func (c *clientImpl) DescribeWorkerDeploymentVersion( + ctx context.Context, + request *workflowservice.DescribeWorkerDeploymentVersionRequest, + opts ...grpc.CallOption, +) (*workflowservice.DescribeWorkerDeploymentVersionResponse, error) { + ctx, cancel := c.createContext(ctx) + defer cancel() + return c.client.DescribeWorkerDeploymentVersion(ctx, request, opts...) +} + func (c *clientImpl) DescribeWorkflowExecution( ctx context.Context, request *workflowservice.DescribeWorkflowExecutionRequest, @@ -623,6 +633,16 @@ func (c *clientImpl) SetCurrentDeployment( return c.client.SetCurrentDeployment(ctx, request, opts...) } +func (c *clientImpl) SetCurrentDeploymentVersion( + ctx context.Context, + request *workflowservice.SetCurrentDeploymentVersionRequest, + opts ...grpc.CallOption, +) (*workflowservice.SetCurrentDeploymentVersionResponse, error) { + ctx, cancel := c.createContext(ctx) + defer cancel() + return c.client.SetCurrentDeploymentVersion(ctx, request, opts...) +} + func (c *clientImpl) ShutdownWorker( ctx context.Context, request *workflowservice.ShutdownWorkerRequest, diff --git a/client/frontend/metric_client_gen.go b/client/frontend/metric_client_gen.go index 24f657f1bba..38fedd7bb46 100644 --- a/client/frontend/metric_client_gen.go +++ b/client/frontend/metric_client_gen.go @@ -173,6 +173,20 @@ func (c *metricClient) DescribeTaskQueue( return c.client.DescribeTaskQueue(ctx, request, opts...) } +func (c *metricClient) DescribeWorkerDeploymentVersion( + ctx context.Context, + request *workflowservice.DescribeWorkerDeploymentVersionRequest, + opts ...grpc.CallOption, +) (_ *workflowservice.DescribeWorkerDeploymentVersionResponse, retError error) { + + metricsHandler, startTime := c.startMetricsRecording(ctx, "FrontendClientDescribeWorkerDeploymentVersion") + defer func() { + c.finishMetricsRecording(metricsHandler, startTime, retError) + }() + + return c.client.DescribeWorkerDeploymentVersion(ctx, request, opts...) +} + func (c *metricClient) DescribeWorkflowExecution( ctx context.Context, request *workflowservice.DescribeWorkflowExecutionRequest, @@ -859,6 +873,20 @@ func (c *metricClient) SetCurrentDeployment( return c.client.SetCurrentDeployment(ctx, request, opts...) } +func (c *metricClient) SetCurrentDeploymentVersion( + ctx context.Context, + request *workflowservice.SetCurrentDeploymentVersionRequest, + opts ...grpc.CallOption, +) (_ *workflowservice.SetCurrentDeploymentVersionResponse, retError error) { + + metricsHandler, startTime := c.startMetricsRecording(ctx, "FrontendClientSetCurrentDeploymentVersion") + defer func() { + c.finishMetricsRecording(metricsHandler, startTime, retError) + }() + + return c.client.SetCurrentDeploymentVersion(ctx, request, opts...) +} + func (c *metricClient) ShutdownWorker( ctx context.Context, request *workflowservice.ShutdownWorkerRequest, diff --git a/client/frontend/retryable_client_gen.go b/client/frontend/retryable_client_gen.go index 7b59c0076ed..fba34b08838 100644 --- a/client/frontend/retryable_client_gen.go +++ b/client/frontend/retryable_client_gen.go @@ -185,6 +185,21 @@ func (c *retryableClient) DescribeTaskQueue( return resp, err } +func (c *retryableClient) DescribeWorkerDeploymentVersion( + ctx context.Context, + request *workflowservice.DescribeWorkerDeploymentVersionRequest, + opts ...grpc.CallOption, +) (*workflowservice.DescribeWorkerDeploymentVersionResponse, error) { + var resp *workflowservice.DescribeWorkerDeploymentVersionResponse + op := func(ctx context.Context) error { + var err error + resp, err = c.client.DescribeWorkerDeploymentVersion(ctx, request, opts...) + return err + } + err := backoff.ThrottleRetryContext(ctx, op, c.policy, c.isRetryable) + return resp, err +} + func (c *retryableClient) DescribeWorkflowExecution( ctx context.Context, request *workflowservice.DescribeWorkflowExecutionRequest, @@ -920,6 +935,21 @@ func (c *retryableClient) SetCurrentDeployment( return resp, err } +func (c *retryableClient) SetCurrentDeploymentVersion( + ctx context.Context, + request *workflowservice.SetCurrentDeploymentVersionRequest, + opts ...grpc.CallOption, +) (*workflowservice.SetCurrentDeploymentVersionResponse, error) { + var resp *workflowservice.SetCurrentDeploymentVersionResponse + op := func(ctx context.Context) error { + var err error + resp, err = c.client.SetCurrentDeploymentVersion(ctx, request, opts...) + return err + } + err := backoff.ThrottleRetryContext(ctx, op, c.policy, c.isRetryable) + return resp, err +} + func (c *retryableClient) ShutdownWorker( ctx context.Context, request *workflowservice.ShutdownWorkerRequest, diff --git a/common/api/metadata.go b/common/api/metadata.go index 6222d4f2875..3caf379f9a3 100644 --- a/common/api/metadata.go +++ b/common/api/metadata.go @@ -145,11 +145,13 @@ var ( "UnpauseActivityById": {Scope: ScopeNamespace, Access: AccessWrite}, "ResetActivityById": {Scope: ScopeNamespace, Access: AccessWrite}, "UpdateWorkflowExecutionOptions": {Scope: ScopeNamespace, Access: AccessWrite}, - "DescribeDeployment": {Scope: ScopeNamespace, Access: AccessReadOnly}, - "ListDeployments": {Scope: ScopeNamespace, Access: AccessReadOnly}, - "GetDeploymentReachability": {Scope: ScopeNamespace, Access: AccessReadOnly}, - "GetCurrentDeployment": {Scope: ScopeNamespace, Access: AccessReadOnly}, - "SetCurrentDeployment": {Scope: ScopeNamespace, Access: AccessWrite}, + "DescribeDeployment": {Scope: ScopeNamespace, Access: AccessReadOnly}, // [cleanup-wv-pre-release] + "ListDeployments": {Scope: ScopeNamespace, Access: AccessReadOnly}, // [cleanup-wv-pre-release] + "GetDeploymentReachability": {Scope: ScopeNamespace, Access: AccessReadOnly}, // [cleanup-wv-pre-release] + "GetCurrentDeployment": {Scope: ScopeNamespace, Access: AccessReadOnly}, // [cleanup-wv-pre-release] + "SetCurrentDeployment": {Scope: ScopeNamespace, Access: AccessWrite}, // [cleanup-wv-pre-release] + "DescribeWorkerDeploymentVersion": {Scope: ScopeNamespace, Access: AccessReadOnly}, + "SetCurrentDeploymentVersion": {Scope: ScopeNamespace, Access: AccessWrite}, } operatorServiceMetadata = map[string]MethodMetadata{ "AddSearchAttributes": {Scope: ScopeNamespace, Access: AccessAdmin}, diff --git a/common/dynamicconfig/constants.go b/common/dynamicconfig/constants.go index 793d0b3dd2b..714f156ed97 100644 --- a/common/dynamicconfig/constants.go +++ b/common/dynamicconfig/constants.go @@ -857,11 +857,19 @@ of Timeout and if no activity is seen even after that the connection is closed.` true, `FrontendEnableSchedules enables schedule-related RPCs in the frontend`, ) + // [cleanup-wv-pre-release] EnableDeployments = NewNamespaceBoolSetting( "system.enableDeployments", false, - `EnableDeployments enables deployments (versioning v3) in all services, + `EnableDeployments enables deployments (deprecated versioning v3 pre-release) in all services, including deployment-related RPCs in the frontend, deployment entity workflows in the worker, +and deployment interaction in matching and history.`, + ) + EnableDeploymentVersions = NewNamespaceBoolSetting( + "system.enableDeploymentVersions", + false, + `EnableDeploymentVersions enables deployment versions (versioning v3) in all services, +including deployment-related RPCs in the frontend, deployment version entity workflows in the worker, and deployment interaction in matching and history.`, ) EnableNexus = NewGlobalBoolSetting( diff --git a/common/rpc/interceptor/logtags/workflow_service_server_gen.go b/common/rpc/interceptor/logtags/workflow_service_server_gen.go index d7e2d3295f3..b77a5bfb0ac 100644 --- a/common/rpc/interceptor/logtags/workflow_service_server_gen.go +++ b/common/rpc/interceptor/logtags/workflow_service_server_gen.go @@ -56,6 +56,8 @@ func (wt *WorkflowTags) extractFromWorkflowServiceServerRequest(req any) []tag.T return nil case *workflowservice.DescribeTaskQueueRequest: return nil + case *workflowservice.DescribeWorkerDeploymentVersionRequest: + return nil case *workflowservice.DescribeWorkflowExecutionRequest: return []tag.Tag{ tag.WorkflowID(r.GetExecution().GetWorkflowId()), @@ -196,6 +198,8 @@ func (wt *WorkflowTags) extractFromWorkflowServiceServerRequest(req any) []tag.T return nil case *workflowservice.SetCurrentDeploymentRequest: return nil + case *workflowservice.SetCurrentDeploymentVersionRequest: + return nil case *workflowservice.ShutdownWorkerRequest: return nil case *workflowservice.SignalWithStartWorkflowExecutionRequest: diff --git a/common/rpc/interceptor/redirection.go b/common/rpc/interceptor/redirection.go index 828e3410932..356d8c42777 100644 --- a/common/rpc/interceptor/redirection.go +++ b/common/rpc/interceptor/redirection.go @@ -133,11 +133,13 @@ var ( "ResetActivityById": func() any { return &workflowservice.ResetActivityByIdResponse{} }, "UpdateWorkflowExecutionOptions": func() any { return &workflowservice.UpdateWorkflowExecutionOptionsResponse{} }, - "DescribeDeployment": func() any { return &workflowservice.DescribeDeploymentResponse{} }, - "ListDeployments": func() any { return &workflowservice.ListDeploymentsResponse{} }, - "GetDeploymentReachability": func() any { return &workflowservice.GetDeploymentReachabilityResponse{} }, - "GetCurrentDeployment": func() any { return &workflowservice.GetCurrentDeploymentResponse{} }, - "SetCurrentDeployment": func() any { return &workflowservice.SetCurrentDeploymentResponse{} }, + "DescribeDeployment": func() any { return &workflowservice.DescribeDeploymentResponse{} }, // [cleanup-wv-pre-release] + "ListDeployments": func() any { return &workflowservice.ListDeploymentsResponse{} }, // [cleanup-wv-pre-release] + "GetDeploymentReachability": func() any { return &workflowservice.GetDeploymentReachabilityResponse{} }, // [cleanup-wv-pre-release] + "GetCurrentDeployment": func() any { return &workflowservice.GetCurrentDeploymentResponse{} }, // [cleanup-wv-pre-release] + "SetCurrentDeployment": func() any { return &workflowservice.SetCurrentDeploymentResponse{} }, // [cleanup-wv-pre-release] + "DescribeWorkerDeploymentVersion": func() any { return &workflowservice.DescribeWorkerDeploymentVersionResponse{} }, + "SetCurrentDeploymentVersion": func() any { return &workflowservice.SetCurrentDeploymentVersionResponse{} }, } ) diff --git a/common/rpc/interceptor/redirection_test.go b/common/rpc/interceptor/redirection_test.go index d2b5812f9ee..3b8b4436fc9 100644 --- a/common/rpc/interceptor/redirection_test.go +++ b/common/rpc/interceptor/redirection_test.go @@ -180,20 +180,22 @@ func (s *redirectionInterceptorSuite) TestGlobalAPI() { "GetWorkerVersioningRules": {}, "GetWorkerTaskReachability": {}, - "StartBatchOperation": {}, - "StopBatchOperation": {}, - "DescribeBatchOperation": {}, - "ListBatchOperations": {}, - "UpdateActivityOptionsById": {}, - "PauseActivityById": {}, - "UnpauseActivityById": {}, - "ResetActivityById": {}, - "UpdateWorkflowExecutionOptions": {}, - "DescribeDeployment": {}, - "ListDeployments": {}, - "GetDeploymentReachability": {}, - "GetCurrentDeployment": {}, - "SetCurrentDeployment": {}, + "StartBatchOperation": {}, + "StopBatchOperation": {}, + "DescribeBatchOperation": {}, + "ListBatchOperations": {}, + "UpdateActivityOptionsById": {}, + "PauseActivityById": {}, + "UnpauseActivityById": {}, + "ResetActivityById": {}, + "UpdateWorkflowExecutionOptions": {}, + "DescribeDeployment": {}, + "ListDeployments": {}, + "GetDeploymentReachability": {}, + "GetCurrentDeployment": {}, + "SetCurrentDeployment": {}, + "DescribeWorkerDeploymentVersion": {}, + "SetCurrentDeploymentVersion": {}, }, apis) } diff --git a/common/testing/mockapi/workflowservicemock/v1/service_grpc.pb.mock.go b/common/testing/mockapi/workflowservicemock/v1/service_grpc.pb.mock.go index d4045328983..57de88aa1de 100644 --- a/common/testing/mockapi/workflowservicemock/v1/service_grpc.pb.mock.go +++ b/common/testing/mockapi/workflowservicemock/v1/service_grpc.pb.mock.go @@ -265,6 +265,26 @@ func (mr *MockWorkflowServiceClientMockRecorder) DescribeTaskQueue(arg0, arg1 an return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeTaskQueue", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DescribeTaskQueue), varargs...) } +// DescribeWorkerDeploymentVersion mocks base method. +func (m *MockWorkflowServiceClient) DescribeWorkerDeploymentVersion(arg0 context.Context, arg1 *workflowservice.DescribeWorkerDeploymentVersionRequest, arg2 ...grpc.CallOption) (*workflowservice.DescribeWorkerDeploymentVersionResponse, error) { + m.ctrl.T.Helper() + varargs := []any{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DescribeWorkerDeploymentVersion", varargs...) + ret0, _ := ret[0].(*workflowservice.DescribeWorkerDeploymentVersionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DescribeWorkerDeploymentVersion indicates an expected call of DescribeWorkerDeploymentVersion. +func (mr *MockWorkflowServiceClientMockRecorder) DescribeWorkerDeploymentVersion(arg0, arg1 any, arg2 ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeWorkerDeploymentVersion", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DescribeWorkerDeploymentVersion), varargs...) +} + // DescribeWorkflowExecution mocks base method. func (m *MockWorkflowServiceClient) DescribeWorkflowExecution(arg0 context.Context, arg1 *workflowservice.DescribeWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.DescribeWorkflowExecutionResponse, error) { m.ctrl.T.Helper() @@ -1245,6 +1265,26 @@ func (mr *MockWorkflowServiceClientMockRecorder) SetCurrentDeployment(arg0, arg1 return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetCurrentDeployment", reflect.TypeOf((*MockWorkflowServiceClient)(nil).SetCurrentDeployment), varargs...) } +// SetCurrentDeploymentVersion mocks base method. +func (m *MockWorkflowServiceClient) SetCurrentDeploymentVersion(arg0 context.Context, arg1 *workflowservice.SetCurrentDeploymentVersionRequest, arg2 ...grpc.CallOption) (*workflowservice.SetCurrentDeploymentVersionResponse, error) { + m.ctrl.T.Helper() + varargs := []any{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "SetCurrentDeploymentVersion", varargs...) + ret0, _ := ret[0].(*workflowservice.SetCurrentDeploymentVersionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SetCurrentDeploymentVersion indicates an expected call of SetCurrentDeploymentVersion. +func (mr *MockWorkflowServiceClientMockRecorder) SetCurrentDeploymentVersion(arg0, arg1 any, arg2 ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetCurrentDeploymentVersion", reflect.TypeOf((*MockWorkflowServiceClient)(nil).SetCurrentDeploymentVersion), varargs...) +} + // ShutdownWorker mocks base method. func (m *MockWorkflowServiceClient) ShutdownWorker(arg0 context.Context, arg1 *workflowservice.ShutdownWorkerRequest, arg2 ...grpc.CallOption) (*workflowservice.ShutdownWorkerResponse, error) { m.ctrl.T.Helper() diff --git a/common/testing/testvars/test_vars.go b/common/testing/testvars/test_vars.go index ce69329fb72..4feac86c385 100644 --- a/common/testing/testvars/test_vars.go +++ b/common/testing/testvars/test_vars.go @@ -232,22 +232,27 @@ func (tv *TestVars) RequestID() string { return getOrCreate(tv, "request_id", tv.uuidString, tv.uuidNSetter) } +// [cleanup-wv-pre-release] func (tv *TestVars) BuildID() string { return getOrCreate(tv, "build_id", tv.uniqueString, tv.stringNSetter) } +// [cleanup-wv-pre-release] func (tv *TestVars) WithBuildIDNumber(n int) *TestVars { return tv.cloneSetN("build_id", n) } +// [cleanup-wv-pre-release] func (tv *TestVars) DeploymentSeries() string { return getOrCreate(tv, "deployment_series", tv.uniqueString, tv.stringNSetter) } +// [cleanup-wv-pre-release] func (tv *TestVars) WithDeploymentSeriesNumber(n int) *TestVars { return tv.cloneSetN("deployment_series", n) } +// [cleanup-wv-pre-release] func (tv *TestVars) Deployment() *deploymentpb.Deployment { return &deploymentpb.Deployment{ SeriesName: tv.DeploymentSeries(), @@ -255,6 +260,22 @@ func (tv *TestVars) Deployment() *deploymentpb.Deployment { } } +func (tv *TestVars) DeploymentVersion() string { + return getOrCreate(tv, "version", tv.uniqueString, tv.stringNSetter) +} + +func (tv *TestVars) WithDeploymentVersionNumber(n int) *TestVars { + return tv.cloneSetN("version", n) +} + +func (tv *TestVars) DeploymentName() string { + return getOrCreate(tv, "deployment_name", tv.uniqueString, tv.stringNSetter) +} + +func (tv *TestVars) WithDeploymentNameNumber(n int) *TestVars { + return tv.cloneSetN("deployment_name", n) +} + func (tv *TestVars) DeploymentTransition() *workflowpb.DeploymentTransition { return &workflowpb.DeploymentTransition{ Deployment: tv.Deployment(), diff --git a/go.mod b/go.mod index a992bdc7ffc..95b4cc266ac 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/go-sql-driver/mysql v1.5.0 github.com/gocql/gocql v1.6.0 github.com/golang-jwt/jwt/v4 v4.5.1 + github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 github.com/gorilla/mux v1.8.1 @@ -100,7 +101,6 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/s2a-go v0.1.7 // indirect @@ -154,3 +154,5 @@ require ( modernc.org/strutil v1.2.0 // indirect modernc.org/token v1.1.0 // indirect ) + +replace go.temporal.io/api => github.com/temporalio/api-go v1.43.2-0.20250117224308-f070b00264f6 diff --git a/go.sum b/go.sum index 8f65b72eefd..0ee99811ae5 100644 --- a/go.sum +++ b/go.sum @@ -277,6 +277,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/temporalio/api-go v1.43.2-0.20250117224308-f070b00264f6 h1:SDyLJJs+wbLrdWN+O0g4fTPpvSa2Nc3XcWDC4q1LkHw= +github.com/temporalio/api-go v1.43.2-0.20250117224308-f070b00264f6/go.mod h1:1WwYUMo6lao8yl0371xWUm13paHExN5ATYT/B7QtFis= github.com/temporalio/ringpop-go v0.0.0-20241119001152-e505ebd8f887 h1:08Y1jDl4UKVu+TiQHIVKcW6TKQaHl15vBKkcZ094/SA= github.com/temporalio/ringpop-go v0.0.0-20241119001152-e505ebd8f887/go.mod h1:RE+CHmY+kOZQk47AQaVzwrGmxpflnLgTd6EOK0853j4= github.com/temporalio/sqlparser v0.0.0-20231115171017-f4060bcfa6cb h1:YzHH/U/dN7vMP+glybzcXRTczTrgfdRisNTzAj7La04= @@ -331,8 +333,6 @@ go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HY go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= -go.temporal.io/api v1.43.2-0.20250114194029-61f369a5f511 h1:4YhvSVBPmEkNFE5wupUSXUx0+HotlAYjXyWqWfUCgqY= -go.temporal.io/api v1.43.2-0.20250114194029-61f369a5f511/go.mod h1:1WwYUMo6lao8yl0371xWUm13paHExN5ATYT/B7QtFis= go.temporal.io/sdk v1.31.0 h1:CLYiP0R5Sdj0gq8LyYKDDz4ccGOdJPR8wNGJU0JGwj8= go.temporal.io/sdk v1.31.0/go.mod h1:8U8H7rF9u4Hyb4Ry9yiEls5716DHPNvVITPNkgWUwE8= go.temporal.io/version v0.3.0 h1:dMrei9l9NyHt8nG6EB8vAwDLLTwx2SvRyucCSumAiig= diff --git a/proto/internal/buf.yaml b/proto/internal/buf.yaml index 4a907c1e95e..d491bb7510d 100644 --- a/proto/internal/buf.yaml +++ b/proto/internal/buf.yaml @@ -12,6 +12,7 @@ breaking: # Uncomment this to temporarily ignore specific files or directories: ignore: - temporal/server/api/historyservice/v1/ + - temporal/server/api/deployment/v1/message.proto lint: use: diff --git a/proto/internal/temporal/server/api/deployment/v1/message.proto b/proto/internal/temporal/server/api/deployment/v1/message.proto index c1872f5c93d..d3780857d01 100644 --- a/proto/internal/temporal/server/api/deployment/v1/message.proto +++ b/proto/internal/temporal/server/api/deployment/v1/message.proto @@ -34,7 +34,8 @@ import "temporal/api/common/v1/message.proto"; // Data for each worker deployment version + task queue pair. // This is stored in each worker deployment version (for each task queue), // and synced to task queue user data (for each worker deployment version). -message WorkerDeploymentTaskQueueData { +message DeploymentVersionTaskQueueData { + // TODO (Shivam): Add PollerStatus after it gets added in the API repo. } // Local state for Worker Deployment Version @@ -55,7 +56,7 @@ message VersionLocalState { // Key: enums.TaskQueueType, Value: TaskQueueData // All fields in TaskQueueData are valid except last_became_current_time, the source of // truth for that is the value at the root of WorkerDeploymentLocalState. - map task_queues = 1; + map task_queues = 1; } } @@ -125,7 +126,7 @@ message StartWorkerDeploymentRequest { } // used as Worker Deployment Version workflow activity input: -message SyncWorkerDeploymentUserDataRequest { +message SyncDeploymentVersionUserDataRequest { string deployment_name = 1; string version = 2; repeated SyncUserData sync = 3; @@ -133,12 +134,12 @@ message SyncWorkerDeploymentUserDataRequest { message SyncUserData { string name = 1; temporal.api.enums.v1.TaskQueueType type = 2; - WorkerDeploymentTaskQueueData data = 3; + DeploymentVersionTaskQueueData data = 3; } } // used as Worker Deployment Version workflow activity output: -message SyncWorkerDeploymentUserDataResponse { +message SyncDeploymentVersionUserDataResponse { map task_queue_max_versions = 1; } diff --git a/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto b/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto index 15b8f9210e3..6380792a04d 100644 --- a/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto +++ b/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto @@ -328,7 +328,7 @@ message SyncDeploymentUserDataRequest { temporal.api.enums.v1.TaskQueueType task_queue_type = 3; // This is the deployment being modified. - temporal.api.deployment.v1.Deployment deployment = 4; + temporal.api.deployment.v1.Deployment deployment = 4; // Data for this deployment. temporal.server.api.deployment.v1.TaskQueueData data = 5; } diff --git a/service/frontend/configs/quotas.go b/service/frontend/configs/quotas.go index b838d433247..056fa9232cb 100644 --- a/service/frontend/configs/quotas.go +++ b/service/frontend/configs/quotas.go @@ -111,20 +111,22 @@ var ( "/temporal.api.workflowservice.v1.WorkflowService/UnpauseActivityById": 2, "/temporal.api.workflowservice.v1.WorkflowService/ResetActivityById": 2, "/temporal.api.workflowservice.v1.WorkflowService/UpdateWorkflowExecutionOptions": 2, - "/temporal.api.workflowservice.v1.WorkflowService/SetCurrentDeployment": 2, + "/temporal.api.workflowservice.v1.WorkflowService/SetCurrentDeployment": 2, // [cleanup-wv-pre-release] + "/temporal.api.workflowservice.v1.WorkflowService/SetCurrentDeploymentVersion": 2, // [cleanup-wv-pre-release] // P3: Status Querying APIs - "/temporal.api.workflowservice.v1.WorkflowService/DescribeWorkflowExecution": 3, - "/temporal.api.workflowservice.v1.WorkflowService/DescribeTaskQueue": 3, - "/temporal.api.workflowservice.v1.WorkflowService/GetWorkerBuildIdCompatibility": 3, - "/temporal.api.workflowservice.v1.WorkflowService/GetWorkerVersioningRules": 3, - "/temporal.api.workflowservice.v1.WorkflowService/ListTaskQueuePartitions": 3, - "/temporal.api.workflowservice.v1.WorkflowService/QueryWorkflow": 3, - "/temporal.api.workflowservice.v1.WorkflowService/DescribeSchedule": 3, - "/temporal.api.workflowservice.v1.WorkflowService/ListScheduleMatchingTimes": 3, - "/temporal.api.workflowservice.v1.WorkflowService/DescribeBatchOperation": 3, - "/temporal.api.workflowservice.v1.WorkflowService/DescribeDeployment": 3, - "/temporal.api.workflowservice.v1.WorkflowService/GetCurrentDeployment": 3, + "/temporal.api.workflowservice.v1.WorkflowService/DescribeWorkflowExecution": 3, + "/temporal.api.workflowservice.v1.WorkflowService/DescribeTaskQueue": 3, + "/temporal.api.workflowservice.v1.WorkflowService/GetWorkerBuildIdCompatibility": 3, + "/temporal.api.workflowservice.v1.WorkflowService/GetWorkerVersioningRules": 3, + "/temporal.api.workflowservice.v1.WorkflowService/ListTaskQueuePartitions": 3, + "/temporal.api.workflowservice.v1.WorkflowService/QueryWorkflow": 3, + "/temporal.api.workflowservice.v1.WorkflowService/DescribeSchedule": 3, + "/temporal.api.workflowservice.v1.WorkflowService/ListScheduleMatchingTimes": 3, + "/temporal.api.workflowservice.v1.WorkflowService/DescribeBatchOperation": 3, + "/temporal.api.workflowservice.v1.WorkflowService/DescribeDeployment": 3, // [cleanup-wv-pre-release] + "/temporal.api.workflowservice.v1.WorkflowService/GetCurrentDeployment": 3, // [cleanup-wv-pre-release] + "/temporal.api.workflowservice.v1.WorkflowService/DescribeWorkerDeploymentVersion": 3, // P4: Progress APIs "/temporal.api.workflowservice.v1.WorkflowService/RecordActivityTaskHeartbeat": 4, diff --git a/service/frontend/fx.go b/service/frontend/fx.go index 49ade9d59ee..2077c7ef520 100644 --- a/service/frontend/fx.go +++ b/service/frontend/fx.go @@ -68,6 +68,7 @@ import ( "go.temporal.io/server/service/history/tasks" "go.temporal.io/server/service/worker/deployment" "go.temporal.io/server/service/worker/scheduler" + "go.temporal.io/server/service/worker/workerdeployment" "go.uber.org/fx" "google.golang.org/grpc" "google.golang.org/grpc/health" @@ -88,6 +89,7 @@ var Module = fx.Options( scheduler.Module, dynamicconfig.Module, deployment.Module, + workerdeployment.Module, // Note that with this approach routes may be registered in arbitrary order. // This is okay because our routes don't have overlapping matches. // The only important detail is that the PathPrefix("/") route registered in the HTTPAPIServerProvider comes last. @@ -700,6 +702,7 @@ func HandlerProvider( historyClient resource.HistoryClient, matchingClient resource.MatchingClient, deploymentStoreClient deployment.DeploymentStoreClient, + workerDeploymentStoreClient workerdeployment.Client, archiverProvider provider.ArchiverProvider, metricsHandler metrics.Handler, payloadSerializer serialization.Serializer, @@ -726,6 +729,7 @@ func HandlerProvider( historyClient, matchingClient, deploymentStoreClient, + workerDeploymentStoreClient, archiverProvider, payloadSerializer, namespaceRegistry, diff --git a/service/frontend/service.go b/service/frontend/service.go index d6d9f01355d..c8793e1fb7d 100644 --- a/service/frontend/service.go +++ b/service/frontend/service.go @@ -185,6 +185,9 @@ type Config struct { // Enable deployment RPCs EnableDeployments dynamicconfig.BoolPropertyFnWithNamespaceFilter + // Enable deployment version RPCs + EnableDeploymentVersions dynamicconfig.BoolPropertyFnWithNamespaceFilter + // Enable batcher RPCs EnableBatcher dynamicconfig.BoolPropertyFnWithNamespaceFilter // Batch operation dynamic configs @@ -317,7 +320,9 @@ func NewConfig( EnableSchedules: dynamicconfig.FrontendEnableSchedules.Get(dc), - EnableDeployments: dynamicconfig.EnableDeployments.Get(dc), + // [cleanup-wv-pre-release] + EnableDeployments: dynamicconfig.EnableDeployments.Get(dc), + EnableDeploymentVersions: dynamicconfig.EnableDeploymentVersions.Get(dc), EnableBatcher: dynamicconfig.FrontendEnableBatcher.Get(dc), MaxConcurrentBatchOperation: dynamicconfig.FrontendMaxConcurrentBatchOperationPerNamespace.Get(dc), diff --git a/service/frontend/workflow_handler.go b/service/frontend/workflow_handler.go index 9b5c4b028db..2579fc08a17 100644 --- a/service/frontend/workflow_handler.go +++ b/service/frontend/workflow_handler.go @@ -91,6 +91,7 @@ import ( "go.temporal.io/server/service/worker/batcher" "go.temporal.io/server/service/worker/deployment" "go.temporal.io/server/service/worker/scheduler" + "go.temporal.io/server/service/worker/workerdeployment" "google.golang.org/grpc/codes" "google.golang.org/grpc/health" healthpb "google.golang.org/grpc/health/grpc_health_v1" @@ -132,7 +133,8 @@ type ( clusterMetadata cluster.Metadata historyClient historyservice.HistoryServiceClient matchingClient matchingservice.MatchingServiceClient - deploymentStoreClient deployment.DeploymentStoreClient + deploymentStoreClient deployment.DeploymentStoreClient // [cleanup-wv-pre-release] + workerDeploymentClient workerdeployment.Client archiverProvider provider.ArchiverProvider payloadSerializer serialization.Serializer namespaceRegistry namespace.Registry @@ -163,6 +165,7 @@ func NewWorkflowHandler( historyClient historyservice.HistoryServiceClient, matchingClient matchingservice.MatchingServiceClient, deploymentStoreClient deployment.DeploymentStoreClient, + workerDeploymentClient workerdeployment.Client, archiverProvider provider.ArchiverProvider, payloadSerializer serialization.Serializer, namespaceRegistry namespace.Registry, @@ -203,6 +206,7 @@ func NewWorkflowHandler( historyClient: historyClient, matchingClient: matchingClient, deploymentStoreClient: deploymentStoreClient, + workerDeploymentClient: workerDeploymentClient, archiverProvider: archiverProvider, payloadSerializer: payloadSerializer, namespaceRegistry: namespaceRegistry, @@ -3158,6 +3162,7 @@ func (wh *WorkflowHandler) DescribeDeployment(ctx context.Context, request *work }, nil } +// [cleanup-wv-pre-release] func (wh *WorkflowHandler) GetCurrentDeployment(ctx context.Context, request *workflowservice.GetCurrentDeploymentRequest) (_ *workflowservice.GetCurrentDeploymentResponse, retError error) { defer log.CapturePanic(wh.logger, &retError) @@ -3188,6 +3193,7 @@ func (wh *WorkflowHandler) GetCurrentDeployment(ctx context.Context, request *wo }, nil } +// [cleanup-wv-pre-release] func (wh *WorkflowHandler) ListDeployments( ctx context.Context, request *workflowservice.ListDeploymentsRequest, @@ -3231,6 +3237,7 @@ func (wh *WorkflowHandler) ListDeployments( }, nil } +// [cleanup-wv-pre-release] func (wh *WorkflowHandler) GetDeploymentReachability( ctx context.Context, request *workflowservice.GetDeploymentReachabilityRequest, @@ -3265,6 +3272,7 @@ func (wh *WorkflowHandler) GetDeploymentReachability( return resp, nil } +// [cleanup-wv-pre-release] func (wh *WorkflowHandler) SetCurrentDeployment(ctx context.Context, request *workflowservice.SetCurrentDeploymentRequest) (_ *workflowservice.SetCurrentDeploymentResponse, retError error) { defer log.CapturePanic(wh.logger, &retError) @@ -3306,6 +3314,42 @@ func (wh *WorkflowHandler) SetCurrentDeployment(ctx context.Context, request *wo }, nil } +// Versioning-3 Public-Preview API's + +func (wh *WorkflowHandler) DescribeWorkerDeploymentVersion(ctx context.Context, request *workflowservice.DescribeWorkerDeploymentVersionRequest) (_ *workflowservice.DescribeWorkerDeploymentVersionResponse, retError error) { + defer log.CapturePanic(wh.logger, &retError) + + if request == nil { + return nil, errRequestNotSet + } + + if len(request.Namespace) == 0 { + return nil, errNamespaceNotSet + } + + if !wh.config.EnableDeploymentVersions(request.Namespace) { + return nil, errDeploymentsNotAllowed + } + + namespaceEntry, err := wh.namespaceRegistry.GetNamespace(namespace.Name(request.GetNamespace())) + if err != nil { + return nil, err + } + workerDeploymentVersionInfo, err := wh.workerDeploymentClient.DescribeVersion(ctx, namespaceEntry, request.Version) + if err != nil { + return nil, err + } + + return &workflowservice.DescribeWorkerDeploymentVersionResponse{ + WorkerDeploymentVersionInfo: workerDeploymentVersionInfo, + }, nil +} + +// TODO (Shivam): Implement this +func (wh *WorkflowHandler) SetCurrentDeploymentVersion(ctx context.Context, request *workflowservice.SetCurrentDeploymentVersionRequest) (_ *workflowservice.SetCurrentDeploymentVersionResponse, retError error) { + return nil, nil +} + // Returns the schedule description and current state of an existing schedule. func (wh *WorkflowHandler) DescribeSchedule(ctx context.Context, request *workflowservice.DescribeScheduleRequest) (_ *workflowservice.DescribeScheduleResponse, retError error) { defer log.CapturePanic(wh.logger, &retError) diff --git a/service/frontend/workflow_handler_test.go b/service/frontend/workflow_handler_test.go index d6420a64c81..c08f6143e91 100644 --- a/service/frontend/workflow_handler_test.go +++ b/service/frontend/workflow_handler_test.go @@ -184,7 +184,8 @@ func (s *WorkflowHandlerSuite) getWorkflowHandler(config *Config) *WorkflowHandl s.mockResource.GetMetadataManager(), s.mockResource.GetHistoryClient(), s.mockResource.GetMatchingClient(), - nil, // TODO (Shivam): test deploymentStoreClient here if desired + nil, + nil, s.mockResource.GetArchiverProvider(), s.mockResource.GetPayloadSerializer(), s.mockResource.GetNamespaceRegistry(), diff --git a/service/matching/config.go b/service/matching/config.go index f6685526998..8501b088ef8 100644 --- a/service/matching/config.go +++ b/service/matching/config.go @@ -54,7 +54,8 @@ type ( ShutdownDrainDuration dynamicconfig.DurationPropertyFn HistoryMaxPageSize dynamicconfig.IntPropertyFnWithNamespaceFilter MatchingDropNonRetryableTasks dynamicconfig.BoolPropertyFn - EnableDeployments dynamicconfig.BoolPropertyFnWithNamespaceFilter + EnableDeployments dynamicconfig.BoolPropertyFnWithNamespaceFilter // [cleanup-wv-pre-release] + EnableDeploymentVersions dynamicconfig.BoolPropertyFnWithNamespaceFilter MaxTaskQueuesInDeployment dynamicconfig.IntPropertyFnWithNamespaceFilter MaxIDLengthLimit dynamicconfig.IntPropertyFn @@ -219,7 +220,8 @@ func NewConfig( TestDisableSyncMatch: dynamicconfig.TestMatchingDisableSyncMatch.Get(dc), LoadUserData: dynamicconfig.MatchingLoadUserData.Get(dc), HistoryMaxPageSize: dynamicconfig.MatchingHistoryMaxPageSize.Get(dc), - EnableDeployments: dynamicconfig.EnableDeployments.Get(dc), + EnableDeployments: dynamicconfig.EnableDeployments.Get(dc), // [cleanup-wv-pre-release] + EnableDeploymentVersions: dynamicconfig.EnableDeploymentVersions.Get(dc), MaxTaskQueuesInDeployment: dynamicconfig.MatchingMaxTaskQueuesInDeployment.Get(dc), RPS: dynamicconfig.MatchingRPS.Get(dc), OperatorRPSRatio: dynamicconfig.OperatorRPSRatio.Get(dc), diff --git a/service/matching/deployment_util.go b/service/matching/deployment_util.go index 23ad118b56f..2fc25a0055b 100644 --- a/service/matching/deployment_util.go +++ b/service/matching/deployment_util.go @@ -32,9 +32,13 @@ import ( var ( errDeploymentsNotAllowed = serviceerror.NewPermissionDenied("deployments are disabled on this namespace", "") - errMissingDeployment = serviceerror.NewInvalidArgument("missing deployment") + // [cleanup-wv-pre-release] + errMissingDeployment = serviceerror.NewInvalidArgument("missing deployment") + + errMissingDeploymentVersion = serviceerror.NewInvalidArgument("missing deployment version") ) +// [cleanup-wv-pre-release] func findDeployment(deployments *persistencespb.DeploymentData, deployment *deploymentpb.Deployment) int { for i, d := range deployments.GetDeployments() { if d.Deployment.Equal(deployment) { diff --git a/service/matching/fx.go b/service/matching/fx.go index 404337268d3..af2b65159f1 100644 --- a/service/matching/fx.go +++ b/service/matching/fx.go @@ -44,6 +44,7 @@ import ( "go.temporal.io/server/service" "go.temporal.io/server/service/matching/configs" "go.temporal.io/server/service/worker/deployment" + "go.temporal.io/server/service/worker/workerdeployment" "go.uber.org/fx" "google.golang.org/grpc" healthpb "google.golang.org/grpc/health/grpc_health_v1" @@ -53,6 +54,7 @@ var Module = fx.Options( resource.Module, dynamicconfig.Module, deployment.Module, + workerdeployment.Module, fx.Provide(ConfigProvider), fx.Provide(PersistenceRateLimitingParamsProvider), service.PersistenceLazyLoadedServiceResolverModule, diff --git a/service/matching/handler.go b/service/matching/handler.go index c2ae8263a84..67cd728c11a 100644 --- a/service/matching/handler.go +++ b/service/matching/handler.go @@ -44,6 +44,7 @@ import ( "go.temporal.io/server/common/resource" "go.temporal.io/server/common/tqid" "go.temporal.io/server/service/worker/deployment" + "go.temporal.io/server/service/worker/workerdeployment" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" ) @@ -80,6 +81,7 @@ func NewHandler( historyClient resource.HistoryClient, matchingRawClient resource.MatchingRawClient, deploymentStoreClient deployment.DeploymentStoreClient, + workerDeploymentClient workerdeployment.Client, hostInfoProvider membership.HostInfoProvider, matchingServiceResolver membership.ServiceResolver, metricsHandler metrics.Handler, @@ -99,6 +101,7 @@ func NewHandler( historyClient, matchingRawClient, // Use non retry client inside matching deploymentStoreClient, + workerDeploymentClient, config, logger, throttledLogger, diff --git a/service/matching/matching_engine.go b/service/matching/matching_engine.go index c975703a9be..95800e659d7 100644 --- a/service/matching/matching_engine.go +++ b/service/matching/matching_engine.go @@ -73,6 +73,7 @@ import ( "go.temporal.io/server/common/util" "go.temporal.io/server/common/worker_versioning" "go.temporal.io/server/service/worker/deployment" + "go.temporal.io/server/service/worker/workerdeployment" "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -125,6 +126,7 @@ type ( historyClient resource.HistoryClient matchingRawClient resource.MatchingRawClient deploymentStoreClient deployment.DeploymentStoreClient + workerDeploymentClient workerdeployment.Client tokenSerializer common.TaskTokenSerializer historySerializer serialization.Serializer logger log.Logger @@ -191,7 +193,8 @@ func NewEngine( taskManager persistence.TaskManager, historyClient resource.HistoryClient, matchingRawClient resource.MatchingRawClient, - deploymentStoreClient deployment.DeploymentStoreClient, + deploymentStoreClient deployment.DeploymentStoreClient, // [wv-cleanup-pre-release] + workerDeploymentClient workerdeployment.Client, config *Config, logger log.Logger, throttledLogger log.ThrottledLogger, @@ -211,6 +214,7 @@ func NewEngine( historyClient: historyClient, matchingRawClient: matchingRawClient, deploymentStoreClient: deploymentStoreClient, + workerDeploymentClient: workerDeploymentClient, tokenSerializer: common.NewProtoTaskTokenSerializer(), historySerializer: serialization.NewSerializer(), logger: log.With(logger, tag.ComponentMatchingEngine), @@ -576,7 +580,7 @@ pollLoop: return nil, err } pollMetadata := &pollMetadata{ - workerVersionCapabilities: request.WorkerVersionCapabilities, + workerVersionCapabilities: request.WorkerVersionCapabilities, // [deprecated=true] forwardedFrom: req.GetForwardedSource(), } task, versionSetUsed, err := e.pollTask(pollerCtx, partition, pollMetadata) @@ -810,7 +814,7 @@ pollLoop: pollerCtx := context.WithValue(ctx, pollerIDKey, pollerID) pollerCtx = context.WithValue(pollerCtx, identityKey, request.GetIdentity()) pollMetadata := &pollMetadata{ - workerVersionCapabilities: request.WorkerVersionCapabilities, + workerVersionCapabilities: request.WorkerVersionCapabilities, // [deprecated=true] forwardedFrom: req.GetForwardedSource(), } if request.TaskQueueMetadata != nil && request.TaskQueueMetadata.MaxTasksPerSecond != nil { diff --git a/service/matching/physical_task_queue_manager.go b/service/matching/physical_task_queue_manager.go index bfddde6a953..9f1e9800d75 100644 --- a/service/matching/physical_task_queue_manager.go +++ b/service/matching/physical_task_queue_manager.go @@ -104,10 +104,11 @@ type ( tasksDispatchedInIntervals *taskTracker // deploymentWorkflowStarted keeps track if we have already registered the task queue worker // in the deployment. - deploymentLock sync.Mutex - deploymentRegistered bool - deploymentRegisterError error // last "too many ..." error we got when registering - firstPoll time.Time + deploymentLock sync.Mutex // TODO (Shivam): Rename after the pre-release versioning API's are removed. + deploymentRegistered bool // TODO (Shivam): Rename after the pre-release versioning API's are removed. + deploymentRegisterError error // last "too many ..." error we got when registering // TODO (Shivam): Rename after the pre-release versioning API's are removed. + + firstPoll time.Time } ) @@ -342,8 +343,17 @@ func (c *physicalTaskQueueManagerImpl) PollTask( return nil, err } - if err = c.ensureRegisteredInDeployment(ctx, namespaceEntry, pollMetadata); err != nil { - return nil, err + // [cleanup-wv-pre-release] + if c.partitionMgr.engine.config.EnableDeployments(namespaceEntry.Name().String()) { + if err = c.ensureRegisteredInDeployment(ctx, namespaceEntry, pollMetadata); err != nil { + return nil, err + } + } + + if c.partitionMgr.engine.config.EnableDeploymentVersions(namespaceEntry.Name().String()) { + if err = c.ensureRegisteredInDeploymentVersion(ctx, namespaceEntry, pollMetadata); err != nil { + return nil, err + } } // the desired global rate limit for the task queue comes from the @@ -539,6 +549,7 @@ func (c *physicalTaskQueueManagerImpl) TrySyncMatch(ctx context.Context, task *i return c.matcher.Offer(childCtx, task) } +// [cleanup-wv-pre-release] func (c *physicalTaskQueueManagerImpl) ensureRegisteredInDeployment( ctx context.Context, namespaceEntry *namespace.Namespace, @@ -619,6 +630,87 @@ func (c *physicalTaskQueueManagerImpl) ensureRegisteredInDeployment( return nil } +// TODO (Shivam): Complete the implementation of this. +func (c *physicalTaskQueueManagerImpl) ensureRegisteredInDeploymentVersion( + ctx context.Context, + namespaceEntry *namespace.Namespace, + pollMetadata *pollMetadata, +) error { + workerDeployment := worker_versioning.DeploymentFromCapabilities(pollMetadata.workerVersionCapabilities) + if workerDeployment == nil { + return nil + } + if !c.partitionMgr.engine.config.EnableDeploymentVersions(namespaceEntry.Name().String()) { + return errMissingDeploymentVersion + } + + // lock so that only one poll does the update and the rest wait for it + c.deploymentLock.Lock() + defer c.deploymentLock.Unlock() + + if c.deploymentRegistered { + // deployment already registered + return nil + } + + if c.deploymentRegisterError != nil { + // deployment not possible due to registration limits + return c.deploymentRegisterError + } + + // userData, _, err := c.partitionMgr.GetUserDataManager().GetUserData() + // if err != nil { + // return err + // } + + // deploymentVersionData := userData.GetData().GetPerType()[int32(c.queue.TaskType())].GetDeploymentVersionData() + // if findDeploymentVersion(deploymentVersionData, workerDeployment.SeriesName, workerDeployment.BuildId) >= 0 { + // // already registered in user data, we can assume the workflow is running. + // // TODO: consider replication scenarios where user data is replicated before + // // the deployment workflow. + // return nil + // } + + // we need to update the deployment workflow to tell it about this task queue + // TODO: add some backoff here if we got an error last time + + if c.firstPoll.IsZero() { + c.firstPoll = c.partitionMgr.engine.timeSource.Now() + } + err := c.partitionMgr.engine.workerDeploymentClient.RegisterTaskQueueWorker( + ctx, namespaceEntry, workerDeployment.SeriesName, workerDeployment.BuildId, c.queue.TaskQueueFamily().Name(), c.queue.TaskType(), c.firstPoll, + "matching service", uuid.New()) + if err != nil { + var errTooMany deployment.ErrMaxTaskQueuesInDeployment + if errors.As(err, &errTooMany) { + c.deploymentRegisterError = errTooMany + } + return err + } + + // the deployment workflow will register itself in this task queue's user data. + // wait for it to propagate here. + // for { + // userData, userDataChanged, err := c.partitionMgr.GetUserDataManager().GetUserData() + // if err != nil { + // return err + // } + // deploymentData := userData.GetData().GetPerType()[int32(c.queue.TaskType())].GetDeploymentData() + // if findDeployment(deploymentData, workerDeployment) >= 0 { + // break + // } + // select { + // case <-userDataChanged: + // case <-ctx.Done(): + // c.logger.Error("timed out waiting for deployment to appear in user data") + // return ctx.Err() + // } + // } + + c.deploymentRegistered = true + return nil +} + // newChildContext creates a child context with desired timeout. // if tailroom is non-zero, then child context timeout will be // the minOf(parentCtx.Deadline()-tailroom, timeout). Use this diff --git a/service/worker/deployment/fx.go b/service/worker/deployment/fx.go index 046cf8a4680..92dd4052b38 100644 --- a/service/worker/deployment/fx.go +++ b/service/worker/deployment/fx.go @@ -41,7 +41,6 @@ import ( type ( workerComponent struct { activityDeps activityDeps - enabledForNs dynamicconfig.BoolPropertyFnWithNamespaceFilter } activityDeps struct { @@ -93,14 +92,13 @@ func NewResult( return fxResult{ Component: &workerComponent{ activityDeps: params, - enabledForNs: dynamicconfig.EnableDeployments.Get(dc), }, } } func (s *workerComponent) DedicatedWorkerOptions(ns *namespace.Namespace) *workercommon.PerNSDedicatedWorkerOptions { return &workercommon.PerNSDedicatedWorkerOptions{ - Enabled: s.enabledForNs(ns.Name().String()), + Enabled: true, } } diff --git a/service/worker/fx.go b/service/worker/fx.go index 353307eb5d9..d9ce2aa1451 100644 --- a/service/worker/fx.go +++ b/service/worker/fx.go @@ -53,6 +53,7 @@ import ( "go.temporal.io/server/service/worker/dlq" "go.temporal.io/server/service/worker/migration" "go.temporal.io/server/service/worker/scheduler" + "go.temporal.io/server/service/worker/workerdeployment" "go.uber.org/fx" ) @@ -63,7 +64,8 @@ var Module = fx.Options( deletenamespace.Module, scheduler.Module, batcher.Module, - deployment.Module, + deployment.Module, // [cleanup-wv-pre-release] + workerdeployment.Module, dlq.Module, dynamicconfig.Module, fx.Provide( diff --git a/service/worker/workerdeployment/activities.go b/service/worker/workerdeployment/activities.go index a564f47d03b..c4a3e7e9e81 100644 --- a/service/worker/workerdeployment/activities.go +++ b/service/worker/workerdeployment/activities.go @@ -40,7 +40,7 @@ type ( ) func (a *Activities) SyncWorkerDeploymentVersion(ctx context.Context, args *deploymentspb.SyncVersionStateActivityArgs) (*deploymentspb.SyncVersionStateActivityResult, error) { - identity := "deployment series workflow " + activity.GetInfo(ctx).WorkflowExecution.ID + identity := "worker-deployment workflow " + activity.GetInfo(ctx).WorkflowExecution.ID res, err := a.deploymentClient.SyncVersionWorkflowFromWorkerDeployment( ctx, a.namespace, diff --git a/service/worker/workerdeployment/client.go b/service/worker/workerdeployment/client.go index e386f68169f..3b444d2ca53 100644 --- a/service/worker/workerdeployment/client.go +++ b/service/worker/workerdeployment/client.go @@ -65,48 +65,30 @@ type Client interface { requestID string, ) error - DescribeVersion( - ctx context.Context, - namespaceEntry *namespace.Namespace, - seriesName string, - buildID string, - ) (*deploymentpb.DeploymentInfo, error) - - GetCurrentVersion( - ctx context.Context, - namespaceEntry *namespace.Namespace, - seriesName string, - ) (*deploymentpb.DeploymentInfo, error) + // TODO (Shivam) - + // Add ListWorkerDeployment + DescribeWorkerDeployment + DeleteWorkerDeployment + DeleteDeploymentVersion - ListVersions( - ctx context.Context, - namespaceEntry *namespace.Namespace, - seriesName string, - pageSize int, - nextPageToken []byte, - ) ([]*deploymentpb.DeploymentListInfo, []byte, error) - - GetVersionReachability( + DescribeVersion( ctx context.Context, namespaceEntry *namespace.Namespace, - seriesName string, - buildID string, - ) (*workflowservice.GetDeploymentReachabilityResponse, error) + version string, + ) (*deploymentpb.WorkerDeploymentVersionInfo, error) SetCurrentVersion( ctx context.Context, namespaceEntry *namespace.Namespace, - deployment *deploymentpb.Deployment, + deploymentName string, + version string, updateMetadata *deploymentpb.UpdateDeploymentMetadata, identity string, requestID string, - ) (*deploymentpb.DeploymentInfo, *deploymentpb.DeploymentInfo, error) + ) (*deploymentpb.WorkerDeploymentVersionInfo, *deploymentpb.WorkerDeploymentVersionInfo, error) // Only used internally by Worker Deployment Version workflow: - Start( + StartWorkerDeployment( ctx context.Context, namespaceEntry *namespace.Namespace, - seriesName string, + deploymentName string, identity string, requestID string, ) error @@ -126,7 +108,7 @@ type ErrMaxTaskQueuesInDeployment struct{ error } type ErrRegister struct{ error } -// ClientImpl implements StoreClient +// ClientImpl implements Client type ClientImpl struct { logger log.Logger historyClient historyservice.HistoryServiceClient @@ -187,23 +169,18 @@ func (d *ClientImpl) RegisterTaskQueueWorker( func (d *ClientImpl) DescribeVersion( ctx context.Context, namespaceEntry *namespace.Namespace, - seriesName string, - buildID string, -) (_ *deploymentpb.DeploymentInfo, retErr error) { + version string, +) (_ *deploymentpb.WorkerDeploymentVersionInfo, retErr error) { //revive:disable-next-line:defer - defer d.record("DescribeDeployment", &retErr, seriesName, buildID)() + defer d.record("DescribeVersion", &retErr, version)() // validating params - err := ValidateVersionWfParams(WorkerDeploymentFieldName, seriesName, d.maxIDLengthLimit()) - if err != nil { - return nil, err - } - err = ValidateVersionWfParams(BuildIDFieldName, buildID, d.maxIDLengthLimit()) + err := ValidateVersionWfParams(WorkerDeploymentVersionFieldName, version, d.maxIDLengthLimit()) if err != nil { return nil, err } - deploymentWorkflowID := GenerateVersionWorkflowID(seriesName, buildID) + deploymentWorkflowID := GenerateVersionWorkflowID(version) req := &historyservice.QueryWorkflowRequest{ NamespaceId: namespaceEntry.ID().String(), @@ -220,7 +197,7 @@ func (d *ClientImpl) DescribeVersion( if err != nil { var notFound *serviceerror.NotFound if errors.As(err, ¬Found) { - return nil, serviceerror.NewNotFound("Deployment not found") + return nil, serviceerror.NewNotFound("Deployment Version not found") } return nil, err } @@ -234,56 +211,21 @@ func (d *ClientImpl) DescribeVersion( return stateToInfo(queryResponse.VersionState), nil } -// TODO (carly): pass deployment instead of seriesName + buildId in all these APIs -- separate PR -func (d *ClientImpl) GetVersionReachability( - ctx context.Context, - namespaceEntry *namespace.Namespace, - seriesName string, - buildID string, -) (_ *workflowservice.GetDeploymentReachabilityResponse, retErr error) { - //revive:disable-next-line:defer - defer d.record("GetDeploymentReachability", &retErr, seriesName, buildID)() - - deployInfo, err := d.DescribeVersion(ctx, namespaceEntry, seriesName, buildID) - if err != nil { - return nil, err - } - reachability, lastUpdateTime, err := getDeploymentReachability( - ctx, - namespaceEntry.ID().String(), - namespaceEntry.Name().String(), - seriesName, - buildID, - deployInfo.GetIsCurrent(), - d.reachabilityCache, - ) - - if err != nil { - return nil, err - } - - return &workflowservice.GetDeploymentReachabilityResponse{ - DeploymentInfo: deployInfo, - Reachability: reachability, - LastUpdateTime: timestamppb.New(lastUpdateTime), - }, nil -} - func (d *ClientImpl) GetCurrentVersion( ctx context.Context, namespaceEntry *namespace.Namespace, - seriesName string, -) (_ *deploymentpb.DeploymentInfo, retErr error) { + deploymentName string, +) (_ *deploymentpb.WorkerDeploymentVersionInfo, retErr error) { //revive:disable-next-line:defer - defer d.record("GetCurrentDeployment", &retErr, seriesName)() + defer d.record("GetCurrentDeployment", &retErr, deploymentName)() // Validating params - err := ValidateVersionWfParams(WorkerDeploymentFieldName, seriesName, d.maxIDLengthLimit()) + err := ValidateVersionWfParams(WorkerDeploymentFieldName, deploymentName, d.maxIDLengthLimit()) if err != nil { return nil, err } - workflowID := GenerateWorkflowID(seriesName) + workflowID := GenerateWorkflowID(deploymentName) resp, err := d.historyClient.DescribeWorkflowExecution(ctx, &historyservice.DescribeWorkflowExecutionRequest{ NamespaceId: namespaceEntry.ID().String(), Request: &workflowservice.DescribeWorkflowExecutionRequest{ @@ -318,7 +260,7 @@ func (d *ClientImpl) GetCurrentVersion( return nil, nil } - deploymentInfo, err := d.DescribeVersion(ctx, namespaceEntry, seriesName, memo.CurrentVersion) + deploymentInfo, err := d.DescribeVersion(ctx, namespaceEntry, memo.CurrentVersion) if err != nil { return nil, nil } @@ -326,70 +268,21 @@ func (d *ClientImpl) GetCurrentVersion( return deploymentInfo, nil } -func (d *ClientImpl) ListVersions( - ctx context.Context, - namespaceEntry *namespace.Namespace, - seriesName string, - pageSize int, - nextPageToken []byte, -) (_ []*deploymentpb.DeploymentListInfo, _ []byte, retErr error) { - //revive:disable-next-line:defer - defer d.record("ListDeployments", &retErr, seriesName)() - - query := "" - if seriesName != "" { - query = BuildQueryWithWorkerDeploymentFilter(seriesName) - } else { - query = DeploymentVisibilityBaseListQuery - } - - if pageSize == 0 { - pageSize = d.visibilityMaxPageSize(namespaceEntry.Name().String()) - } - - persistenceResp, err := d.visibilityManager.ListWorkflowExecutions( - ctx, - &manager.ListWorkflowExecutionsRequestV2{ - NamespaceID: namespaceEntry.ID(), - Namespace: namespaceEntry.Name(), - PageSize: pageSize, - NextPageToken: nextPageToken, - Query: query, - }, - ) - if err != nil { - return nil, nil, err - } - - deployments := make([]*deploymentpb.DeploymentListInfo, len(persistenceResp.Executions)) - for i, ex := range persistenceResp.Executions { - versionWorkflowMemo := DecodeVersionMemo(ex.GetMemo()) - - deploymentListInfo := &deploymentpb.DeploymentListInfo{ - Deployment: &deploymentpb.Deployment{SeriesName: versionWorkflowMemo.DeploymentName, BuildId: versionWorkflowMemo.Version}, - CreateTime: versionWorkflowMemo.CreateTime, - IsCurrent: versionWorkflowMemo.IsCurrentDeployment, - } - deployments[i] = deploymentListInfo - } - - return deployments, persistenceResp.NextPageToken, nil -} - func (d *ClientImpl) SetCurrentVersion( ctx context.Context, namespaceEntry *namespace.Namespace, - deployment *deploymentpb.Deployment, + deploymentName string, + version string, updateMetadata *deploymentpb.UpdateDeploymentMetadata, identity string, requestID string, -) (_ *deploymentpb.DeploymentInfo, _ *deploymentpb.DeploymentInfo, retErr error) { +) (_ *deploymentpb.WorkerDeploymentVersionInfo, _ *deploymentpb.WorkerDeploymentVersionInfo, retErr error) { //revive:disable-next-line:defer - defer d.record("SetCurrentDeployment", &retErr, namespaceEntry.Name(), deployment, identity)() + defer d.record("SetCurrentVersion", &retErr, namespaceEntry.Name(), deploymentName, version, identity)() updatePayload, err := sdk.PreferProtoDataConverter.ToPayloads(&deploymentspb.SetCurrentVersionArgs{ Identity: identity, - Version: deployment.BuildId, + Version: version, RequestId: requestID, }) if err != nil { @@ -398,7 +291,7 @@ func (d *ClientImpl) SetCurrentVersion( outcome, err := d.updateWithStartWorkerDeployment( ctx, namespaceEntry, - deployment.SeriesName, + deploymentName, &updatepb.Request{ Input: &updatepb.Input{Name: SetCurrentVersion, Args: updatePayload}, Meta: &updatepb.Meta{UpdateId: requestID, Identity: identity}, @@ -412,7 +305,7 @@ func (d *ClientImpl) SetCurrentVersion( if failure := outcome.GetFailure(); failure.GetApplicationFailureInfo().GetType() == errNoChangeType { return nil, nil, serviceerror.NewAlreadyExist(fmt.Sprintf("Build ID %q is already current for %q", - deployment.BuildId, deployment.SeriesName)) + version, deploymentName)) } else if failure != nil { // TODO: is there an easy way to recover the original type here? return nil, nil, serviceerror.NewInternal(failure.Message) @@ -430,7 +323,7 @@ func (d *ClientImpl) SetCurrentVersion( return stateToInfo(nil), stateToInfo(nil), nil } -func (d *ClientImpl) Start( +func (d *ClientImpl) StartWorkerDeployment( ctx context.Context, namespaceEntry *namespace.Namespace, deploymentName string, @@ -438,7 +331,7 @@ func (d *ClientImpl) Start( requestID string, ) (retErr error) { //revive:disable-next-line:defer - defer d.record("StartDeploymentSeries", &retErr, namespaceEntry.Name(), deploymentName, identity)() + defer d.record("StartWorkerDeployment", &retErr, namespaceEntry.Name(), deploymentName, identity)() workflowID := GenerateWorkflowID(deploymentName) @@ -487,7 +380,7 @@ func (d *ClientImpl) SyncVersionWorkflowFromWorkerDeployment( requestID string, ) (_ *deploymentspb.SyncVersionStateResponse, retErr error) { //revive:disable-next-line:defer - defer d.record("SyncDeploymentWorkflowFromSeries", &retErr, namespaceEntry.Name(), deploymentName, version, args, identity)() + defer d.record("SyncVersionWorkflowFromWorkerDeployment", &retErr, namespaceEntry.Name(), deploymentName, version, args, identity)() updatePayload, err := sdk.PreferProtoDataConverter.ToPayloads(args) if err != nil { @@ -546,12 +439,12 @@ func (d *ClientImpl) updateWithStartWorkerDeploymentVersion( if err != nil { return nil, err } - err = ValidateVersionWfParams(BuildIDFieldName, version, d.maxIDLengthLimit()) + err = ValidateVersionWfParams(WorkerDeploymentVersionFieldName, version, d.maxIDLengthLimit()) if err != nil { return nil, err } - workflowID := GenerateVersionWorkflowID(deploymentName, version) + workflowID := GenerateVersionWorkflowID(version) input, err := sdk.PreferProtoDataConverter.ToPayloads(&deploymentspb.WorkerDeploymentVersionWorkflowArgs{ NamespaceName: namespaceEntry.Name().String(), @@ -761,7 +654,7 @@ func (d *ClientImpl) buildInitialMemo(deploymentName string) (*commonpb.Memo, er func (d *ClientImpl) buildSearchAttributes() *commonpb.SearchAttributes { sa := &commonpb.SearchAttributes{} - searchattribute.AddSearchAttribute(&sa, searchattribute.TemporalNamespaceDivision, payload.EncodeString(WorkerDeploymentNamespaceDivision)) + searchattribute.AddSearchAttribute(&sa, searchattribute.TemporalNamespaceDivision, payload.EncodeString(WorkerDeploymentVersionNamespaceDivision)) return sa } @@ -790,22 +683,28 @@ func (d *ClientImpl) record(operation string, retErr *error, args ...any) func() } //nolint:staticcheck -func stateToInfo(state *deploymentspb.VersionLocalState) *deploymentpb.DeploymentInfo { +func stateToInfo(state *deploymentspb.VersionLocalState) *deploymentpb.WorkerDeploymentVersionInfo { if state == nil { return nil } - taskQueues := make([]*deploymentpb.DeploymentInfo_TaskQueueInfo, 0, len(state.TaskQueueFamilies)*2) + taskQueues := make([]*deploymentpb.WorkerDeploymentVersionInfo_DeploymentVersionTaskQueueInfo, 0, len(state.TaskQueueFamilies)*2) for taskQueueName, taskQueueFamilyInfo := range state.TaskQueueFamilies { for taskQueueType := range taskQueueFamilyInfo.TaskQueues { - element := &deploymentpb.DeploymentInfo_TaskQueueInfo{ + element := &deploymentpb.WorkerDeploymentVersionInfo_DeploymentVersionTaskQueueInfo{ Name: taskQueueName, Type: enumspb.TaskQueueType(taskQueueType), - // FirstPollerTime: taskQueueInfo.FirstPollerTime, + // TODO (Shivam): Add fields here as needed. } taskQueues = append(taskQueues, element) } } - return nil + // TODO (Shivam): Add metadata and aggregated pollers status + return &deploymentpb.WorkerDeploymentVersionInfo{ + DeploymentName: state.DeploymentName, + Version: state.Version, + CreateTime: state.CreateTime, + TaskQueueInfos: taskQueues, + } } diff --git a/service/worker/workerdeployment/fx.go b/service/worker/workerdeployment/fx.go index a95a1d08d9c..efe92c7a3d7 100644 --- a/service/worker/workerdeployment/fx.go +++ b/service/worker/workerdeployment/fx.go @@ -41,7 +41,6 @@ import ( type ( workerComponent struct { activityDeps activityDeps - enabledForNs dynamicconfig.BoolPropertyFnWithNamespaceFilter } activityDeps struct { @@ -93,14 +92,13 @@ func NewResult( return fxResult{ Component: &workerComponent{ activityDeps: params, - enabledForNs: dynamicconfig.EnableDeployments.Get(dc), }, } } func (s *workerComponent) DedicatedWorkerOptions(ns *namespace.Namespace) *workercommon.PerNSDedicatedWorkerOptions { return &workercommon.PerNSDedicatedWorkerOptions{ - Enabled: s.enabledForNs(ns.Name().String()), + Enabled: true, } } diff --git a/service/worker/workerdeployment/util.go b/service/worker/workerdeployment/util.go index 85db1415968..549cbd6d027 100644 --- a/service/worker/workerdeployment/util.go +++ b/service/worker/workerdeployment/util.go @@ -44,7 +44,7 @@ const ( WorkerDeploymentWorkflowType = "temporal-sys-worker-deployment-workflow" // Namespace division - WorkerDeploymentNamespaceDivision = "TemporalDeployment" // todo: this is the same as the namespace division for the pre-release deployment APIs + WorkerDeploymentVersionNamespaceDivision = "TemporalWorkerDeploymentVersion" // Updates RegisterWorkerInDeployment = "register-task-queue-worker" // for Worker Deployment Version wf @@ -56,7 +56,7 @@ const ( // Queries QueryDescribeVersion = "describe-version" // for Worker Deployment Version wf - QueryCurrentVersion = "current-version" // for series wf + QueryCurrentVersion = "current-version" // for Worker Deployment wf // Memos WorkerDeploymentVersionMemoField = "WorkerDeploymentVersionMemo" // for Worker Deployment Version wf @@ -67,9 +67,9 @@ const ( WorkerDeploymentWorkflowIDPrefix = "temporal-sys-worker-deployment" WorkerDeploymentVersionWorkflowIDDelimeter = ":" WorkerDeploymentVersionWorkflowIDEscape = "|" - WorkerDeploymentVersionWorkflowIDInitialSize = (2 * len(WorkerDeploymentVersionWorkflowIDDelimeter)) + len(WorkerDeploymentVersionWorkflowIDPrefix) + WorkerDeploymentVersionWorkflowIDInitialSize = len(WorkerDeploymentVersionWorkflowIDDelimeter) + len(WorkerDeploymentVersionWorkflowIDPrefix) // todo (Shivam): Do we need 2 * len(WorkerDeploymentVersionWorkflowIDDelimeter)? WorkerDeploymentFieldName = "WorkerDeployment" - BuildIDFieldName = "BuildID" + WorkerDeploymentVersionFieldName = "Version" // Application error names for rejected updates errNoChangeType = "errNoChange" @@ -82,7 +82,7 @@ var ( searchattribute.WorkflowType, WorkerDeploymentVersionWorkflowType, searchattribute.TemporalNamespaceDivision, - WorkerDeploymentNamespaceDivision, + WorkerDeploymentVersionNamespaceDivision, searchattribute.ExecutionStatus, enumspb.WORKFLOW_EXECUTION_STATUS_RUNNING.String(), ) @@ -96,8 +96,8 @@ func ValidateVersionWfParams(fieldName string, field string, maxIDLengthLimit in return serviceerror.NewInvalidArgument(fmt.Sprintf("%v cannot be empty", fieldName)) } - // Length of each field should be: (MaxIDLengthLimit - prefix and delimeter length) / 2 - if len(field) > (maxIDLengthLimit-WorkerDeploymentVersionWorkflowIDInitialSize)/2 { + // Length of each field should be: (MaxIDLengthLimit - (prefix + delimeter length)) + if len(field) > (maxIDLengthLimit - WorkerDeploymentVersionWorkflowIDInitialSize) { return serviceerror.NewInvalidArgument(fmt.Sprintf("size of %v larger than the maximum allowed", fieldName)) } @@ -105,7 +105,7 @@ func ValidateVersionWfParams(fieldName string, field string, maxIDLengthLimit in return common.ValidateUTF8String(fieldName, field) } -// EscapeChar is a helper which escapes the DeploymentWorkflowIDDelimeter character +// EscapeChar is a helper which escapes the WorkerDeploymentVersionWorkflowIDDelimeter character // in the input string func escapeChar(s string) string { s = strings.Replace(s, WorkerDeploymentVersionWorkflowIDEscape, WorkerDeploymentVersionWorkflowIDEscape+WorkerDeploymentVersionWorkflowIDEscape, -1) @@ -123,11 +123,10 @@ func GenerateWorkflowID(WorkerDeploymentName string) string { // GenerateVersionWorkflowID is a helper that generates a system accepted // workflowID which are used in our Worker Deployment Version workflows -func GenerateVersionWorkflowID(seriesName string, buildID string) string { - escapedSeriesName := escapeChar(seriesName) - escapedBuildId := escapeChar(buildID) +func GenerateVersionWorkflowID(version string) string { + escapedVersion := escapeChar(version) - return WorkerDeploymentVersionWorkflowIDPrefix + WorkerDeploymentVersionWorkflowIDDelimeter + escapedSeriesName + WorkerDeploymentVersionWorkflowIDDelimeter + escapedBuildId + return WorkerDeploymentVersionWorkflowIDPrefix + WorkerDeploymentVersionWorkflowIDDelimeter + escapedVersion } func GenerateVersionWorkflowIDForPatternMatching(seriesName string) string { diff --git a/service/worker/workerdeployment/version_activities.go b/service/worker/workerdeployment/version_activities.go index 1077fb3fcc9..fa14bd9cd14 100644 --- a/service/worker/workerdeployment/version_activities.go +++ b/service/worker/workerdeployment/version_activities.go @@ -49,15 +49,15 @@ func (a *VersionActivities) StartWorkerDeploymentWorkflow( input *deploymentspb.StartWorkerDeploymentRequest, ) error { logger := activity.GetLogger(ctx) - logger.Info("starting deployment workflow", "deploymentName", input.DeploymentName) - identity := "deployment workflow " + activity.GetInfo(ctx).WorkflowExecution.ID - return a.deploymentClient.Start(ctx, a.namespace, input.DeploymentName, identity, input.RequestId) + logger.Info("starting worker-deployment workflow", "deploymentName", input.DeploymentName) + identity := "deployment-version workflow " + activity.GetInfo(ctx).WorkflowExecution.ID + return a.deploymentClient.StartWorkerDeployment(ctx, a.namespace, input.DeploymentName, identity, input.RequestId) } -func (a *VersionActivities) SyncWorkerDeploymentUserData( +func (a *VersionActivities) SyncDeploymentVersionUserData( ctx context.Context, - input *deploymentspb.SyncWorkerDeploymentUserDataRequest, -) (*deploymentspb.SyncWorkerDeploymentUserDataResponse, error) { + input *deploymentspb.SyncDeploymentVersionUserDataRequest, +) (*deploymentspb.SyncDeploymentVersionUserDataResponse, error) { logger := activity.GetLogger(ctx) errs := make(chan error) @@ -66,14 +66,14 @@ func (a *VersionActivities) SyncWorkerDeploymentUserData( maxVersionByName := make(map[string]int64) for _, e := range input.Sync { - go func(syncData *deploymentspb.SyncWorkerDeploymentUserDataRequest_SyncUserData) { - logger.Info("syncing task queue userdata for deployment", "taskQueue", syncData.Name, "type", syncData.Type) + go func(syncData *deploymentspb.SyncDeploymentVersionUserDataRequest_SyncUserData) { + logger.Info("syncing task queue userdata for deployment version", "taskQueue", syncData.Name, "type", syncData.Type) res, err := a.matchingClient.SyncDeploymentUserData(ctx, &matchingservice.SyncDeploymentUserDataRequest{ NamespaceId: a.namespace.ID().String(), TaskQueue: syncData.Name, TaskQueueType: syncData.Type, - // Deployment: input.Deployment, - // Data: syncData.Data, + Deployment: nil, // TODO (Shivam): Pass nil until matchingservice.SyncDeploymentUserDataRequest gets updated. + Data: nil, // TODO (Shivam): Pass nil until matchingservice.SyncDeploymentUserDataRequest gets updated. }) if err != nil { logger.Error("syncing task queue userdata", "taskQueue", syncData.Name, "type", syncData.Type, "error", err) @@ -93,7 +93,7 @@ func (a *VersionActivities) SyncWorkerDeploymentUserData( if err != nil { return nil, err } - return &deploymentspb.SyncWorkerDeploymentUserDataResponse{TaskQueueMaxVersions: maxVersionByName}, nil + return &deploymentspb.SyncDeploymentVersionUserDataResponse{TaskQueueMaxVersions: maxVersionByName}, nil } func (a *VersionActivities) CheckWorkerDeploymentUserDataPropagation(ctx context.Context, input *deploymentspb.CheckWorkerDeploymentUserDataPropagationRequest) error { diff --git a/service/worker/workerdeployment/version_workflow.go b/service/worker/workerdeployment/version_workflow.go index 588e54c067f..31cedbeac4c 100644 --- a/service/worker/workerdeployment/version_workflow.go +++ b/service/worker/workerdeployment/version_workflow.go @@ -148,19 +148,7 @@ func (d *VersionWorkflowRunner) run(ctx workflow.Context) error { return err } - /* - - Posting this as a reminder to limit the number of signals coming through since we use CAN: - - Workflows cannot have infinitely-sized history and when the event count grows too large, `ContinueAsNew` can be returned - to start a new one atomically. However, in order not to lose any data, signals must be drained and any other futures - that need to be reacted to must be completed first. This means there must be a period where there are no signals to - drain and no futures to wait on. If signals come in faster than processed or futures wait so long there is no idle - period, `ContinueAsNew` will not happen in a timely manner and history will grow. - - */ - - d.logger.Debug("Deployment doing continue-as-new") + d.logger.Debug("Version doing continue-as-new") return workflow.NewContinueAsNewError(ctx, VersionWorkflow, d.WorkerDeploymentVersionWorkflowArgs) } @@ -198,37 +186,37 @@ func (d *VersionWorkflowRunner) handleRegisterWorker(ctx workflow.Context, args } // initial data - data := &deploymentspb.WorkerDeploymentTaskQueueData{} + data := &deploymentspb.DeploymentVersionTaskQueueData{} // sync to user data - activityCtx := workflow.WithActivityOptions(ctx, defaultActivityOptions) - var syncRes deploymentspb.SyncWorkerDeploymentUserDataResponse - err = workflow.ExecuteActivity(activityCtx, d.a.SyncWorkerDeploymentUserData, &deploymentspb.SyncWorkerDeploymentUserDataRequest{ - DeploymentName: d.VersionState.DeploymentName, - Sync: []*deploymentspb.SyncWorkerDeploymentUserDataRequest_SyncUserData{ - &deploymentspb.SyncWorkerDeploymentUserDataRequest_SyncUserData{ - Name: args.TaskQueueName, - Type: args.TaskQueueType, - Data: d.dataWithTime(data), - }, - }, - }).Get(ctx, &syncRes) - if err != nil { - return err - } + // activityCtx := workflow.WithActivityOptions(ctx, defaultActivityOptions) + // var syncRes deploymentspb.SyncDeploymentVersionUserDataResponse + // err = workflow.ExecuteActivity(activityCtx, d.a.SyncDeploymentVersionUserData, &deploymentspb.SyncDeploymentVersionUserDataRequest{ + // DeploymentName: d.VersionState.DeploymentName, + // Sync: []*deploymentspb.SyncDeploymentVersionUserDataRequest_SyncUserData{ + // &deploymentspb.SyncDeploymentVersionUserDataRequest_SyncUserData{ + // Name: args.TaskQueueName, + // Type: args.TaskQueueType, + // Data: d.dataWithTime(data), + // }, + // }, + // }).Get(ctx, &syncRes) + // if err != nil { + // return err + // } - if len(syncRes.TaskQueueMaxVersions) > 0 { - // wait for propagation - err = workflow.ExecuteActivity( - activityCtx, - d.a.CheckWorkerDeploymentUserDataPropagation, - &deploymentspb.CheckWorkerDeploymentUserDataPropagationRequest{ - TaskQueueMaxVersions: syncRes.TaskQueueMaxVersions, - }).Get(ctx, nil) - if err != nil { - return err - } - } + // if len(syncRes.TaskQueueMaxVersions) > 0 { + // // wait for propagation + // err = workflow.ExecuteActivity( + // activityCtx, + // d.a.CheckWorkerDeploymentUserDataPropagation, + // &deploymentspb.CheckWorkerDeploymentUserDataPropagationRequest{ + // TaskQueueMaxVersions: syncRes.TaskQueueMaxVersions, + // }).Get(ctx, nil) + // if err != nil { + // return err + // } + // } // if successful, add the task queue to the local state if d.VersionState.TaskQueueFamilies == nil { @@ -238,7 +226,7 @@ func (d *VersionWorkflowRunner) handleRegisterWorker(ctx workflow.Context, args d.VersionState.TaskQueueFamilies[args.TaskQueueName] = &deploymentspb.VersionLocalState_TaskQueueFamilyData{} } if d.VersionState.TaskQueueFamilies[args.TaskQueueName].TaskQueues == nil { - d.VersionState.TaskQueueFamilies[args.TaskQueueName].TaskQueues = make(map[int32]*deploymentspb.WorkerDeploymentTaskQueueData) + d.VersionState.TaskQueueFamilies[args.TaskQueueName].TaskQueues = make(map[int32]*deploymentspb.DeploymentVersionTaskQueueData) } d.VersionState.TaskQueueFamilies[args.TaskQueueName].TaskQueues[int32(args.TaskQueueType)] = data @@ -300,13 +288,13 @@ func (d *VersionWorkflowRunner) handleSyncState(ctx workflow.Context, args *depl } // sync to task queues - syncReq := &deploymentspb.SyncWorkerDeploymentUserDataRequest{ + syncReq := &deploymentspb.SyncDeploymentVersionUserDataRequest{ DeploymentName: d.VersionState.DeploymentName, Version: d.VersionState.Version, } for tqName, byType := range d.VersionState.TaskQueueFamilies { for tqType, data := range byType.TaskQueues { - syncReq.Sync = append(syncReq.Sync, &deploymentspb.SyncWorkerDeploymentUserDataRequest_SyncUserData{ + syncReq.Sync = append(syncReq.Sync, &deploymentspb.SyncDeploymentVersionUserDataRequest_SyncUserData{ Name: tqName, Type: enumspb.TaskQueueType(tqType), Data: d.dataWithTime(data), @@ -314,8 +302,8 @@ func (d *VersionWorkflowRunner) handleSyncState(ctx workflow.Context, args *depl } } activityCtx := workflow.WithActivityOptions(ctx, defaultActivityOptions) - var syncRes deploymentspb.SyncWorkerDeploymentUserDataResponse - err = workflow.ExecuteActivity(activityCtx, d.a.SyncWorkerDeploymentUserData, syncReq).Get(ctx, &syncRes) + var syncRes deploymentspb.SyncDeploymentVersionUserDataResponse + err = workflow.ExecuteActivity(activityCtx, d.a.SyncDeploymentVersionUserData, syncReq).Get(ctx, &syncRes) if err != nil { // TODO: if this fails, should we roll back anything? return nil, err @@ -334,6 +322,8 @@ func (d *VersionWorkflowRunner) handleSyncState(ctx workflow.Context, args *depl } } + // TODO (Shivam) - Move this when UpdateMetadata is implemented. + // apply changes to metadata // if d.VersionState.Metadata == nil && args.UpdateMetadata != nil { // d.VersionState.Metadata = make(map[string]*commonpb.Payload) @@ -350,7 +340,7 @@ func (d *VersionWorkflowRunner) handleSyncState(ctx workflow.Context, args *depl }, nil } -func (d *VersionWorkflowRunner) dataWithTime(data *deploymentspb.WorkerDeploymentTaskQueueData) *deploymentspb.WorkerDeploymentTaskQueueData { +func (d *VersionWorkflowRunner) dataWithTime(data *deploymentspb.DeploymentVersionTaskQueueData) *deploymentspb.DeploymentVersionTaskQueueData { data = common.CloneProto(data) return data } diff --git a/tests/deployment_version_test.go b/tests/deployment_version_test.go new file mode 100644 index 00000000000..2445867d363 --- /dev/null +++ b/tests/deployment_version_test.go @@ -0,0 +1,206 @@ +// The MIT License +// +// Copyright (c) 2024 Temporal Technologies Inc. All rights reserved. +// +// Copyright (c) 2024 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package tests + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/dgryski/go-farm" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/suite" + commonpb "go.temporal.io/api/common/v1" + enumspb "go.temporal.io/api/enums/v1" + taskqueuepb "go.temporal.io/api/taskqueue/v1" + "go.temporal.io/api/workflowservice/v1" + sdkclient "go.temporal.io/sdk/client" + "go.temporal.io/server/common/dynamicconfig" + "go.temporal.io/server/common/testing/testvars" + "go.temporal.io/server/common/tqid" + "go.temporal.io/server/tests/testcore" +) + +const ( + maxConcurrentBatchOperations = 3 +) + +type ( + DeploymentVersionSuite struct { + testcore.FunctionalTestSuite + sdkClient sdkclient.Client + } +) + +func TestDeploymentVersionSuite(t *testing.T) { + t.Parallel() + suite.Run(t, new(DeploymentVersionSuite)) +} + +func (s *DeploymentVersionSuite) SetupSuite() { + s.FunctionalTestSuite.SetupSuiteWithDefaultCluster(testcore.WithDynamicConfigOverrides(map[dynamicconfig.Key]any{ + dynamicconfig.EnableDeploymentVersions.Key(): true, + dynamicconfig.FrontendEnableWorkerVersioningDataAPIs.Key(): true, // [wv-cleanup-pre-release] + dynamicconfig.FrontendEnableWorkerVersioningWorkflowAPIs.Key(): true, // [wv-cleanup-pre-release] + dynamicconfig.FrontendEnableWorkerVersioningRuleAPIs.Key(): true, // [wv-cleanup-pre-release] + dynamicconfig.FrontendEnableExecuteMultiOperation.Key(): true, + + // Make sure we don't hit the rate limiter in tests + dynamicconfig.FrontendGlobalNamespaceNamespaceReplicationInducingAPIsRPS.Key(): 1000, + dynamicconfig.FrontendMaxNamespaceNamespaceReplicationInducingAPIsBurstRatioPerInstance.Key(): 1, + dynamicconfig.FrontendNamespaceReplicationInducingAPIsRPS.Key(): 1000, + + // Reduce the chance of hitting max batch job limit in tests + dynamicconfig.FrontendMaxConcurrentBatchOperationPerNamespace.Key(): maxConcurrentBatchOperations, + })) +} + +func (s *DeploymentVersionSuite) SetupTest() { + s.FunctionalTestSuite.SetupTest() + + var err error + s.sdkClient, err = sdkclient.Dial(sdkclient.Options{ + HostPort: s.FrontendGRPCAddress(), + Namespace: s.Namespace().String(), + }) + s.NoError(err) +} + +func (s *DeploymentVersionSuite) TearDownTest() { + if s.sdkClient != nil { + s.sdkClient.Close() + } +} + +// pollFromDeployment calls PollWorkflowTaskQueue to start deployment related workflows +func (s *DeploymentVersionSuite) pollFromDeployment(ctx context.Context, taskQueue *taskqueuepb.TaskQueue, + deploymentName string, version string) { + _, _ = s.FrontendClient().PollWorkflowTaskQueue(ctx, &workflowservice.PollWorkflowTaskQueueRequest{ + Namespace: s.Namespace().String(), + TaskQueue: taskQueue, + Identity: "random", + WorkerVersionCapabilities: &commonpb.WorkerVersionCapabilities{ + UseVersioning: true, + BuildId: version, + DeploymentSeriesName: deploymentName, + }, + }) +} + +func (s *DeploymentVersionSuite) pollActivityFromDeployment(ctx context.Context, taskQueue *taskqueuepb.TaskQueue, + deploymentName string, version string) { + _, _ = s.FrontendClient().PollActivityTaskQueue(ctx, &workflowservice.PollActivityTaskQueueRequest{ + Namespace: s.Namespace().String(), + TaskQueue: taskQueue, + Identity: "random", + WorkerVersionCapabilities: &commonpb.WorkerVersionCapabilities{ + UseVersioning: true, + BuildId: version, + DeploymentSeriesName: deploymentName, + }, + }) +} + +func (s *DeploymentVersionSuite) TestDescribeVersion_RegisterTaskQueue() { + ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) + defer cancel() + tv := testvars.New(s) + + numberOfDeployments := 1 + + // Starting a deployment workflow + go s.pollFromDeployment(ctx, tv.TaskQueue(), tv.DeploymentSeries(), tv.DeploymentVersion()) + + // Querying the Deployment + s.EventuallyWithT(func(t *assert.CollectT) { + a := assert.New(t) + + resp, err := s.FrontendClient().DescribeWorkerDeploymentVersion(ctx, &workflowservice.DescribeWorkerDeploymentVersionRequest{ + Namespace: s.Namespace().String(), + Version: tv.DeploymentVersion(), + }) + a.NoError(err) + + a.Equal(tv.DeploymentSeries(), resp.GetWorkerDeploymentVersionInfo().GetDeploymentName()) + a.Equal(tv.DeploymentVersion(), resp.GetWorkerDeploymentVersionInfo().GetVersion()) + + a.Equal(numberOfDeployments, len(resp.GetWorkerDeploymentVersionInfo().GetTaskQueueInfos())) + if len(resp.GetWorkerDeploymentVersionInfo().GetTaskQueueInfos()) < numberOfDeployments { + return + } + a.Equal(tv.TaskQueue().GetName(), resp.GetWorkerDeploymentVersionInfo().GetTaskQueueInfos()[0].Name) + }, time.Second*5, time.Millisecond*200) +} + +func (s *DeploymentVersionSuite) TestDescribeVersion_RegisterTaskQueue_ConcurrentPollers() { + ctx, cancel := context.WithTimeout(context.Background(), time.Second*15) + defer cancel() + tv := testvars.New(s) + + root, err := tqid.PartitionFromProto(tv.TaskQueue(), s.Namespace().String(), enumspb.TASK_QUEUE_TYPE_WORKFLOW) + s.NoError(err) + // Making concurrent polls to 4 partitions, 3 polls to each + for p := 0; p < 4; p++ { + tq := &taskqueuepb.TaskQueue{Name: root.TaskQueue().NormalPartition(p).RpcName(), Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + for i := 0; i < 3; i++ { + go s.pollFromDeployment(ctx, tq, tv.DeploymentSeries(), tv.DeploymentVersion()) + go s.pollActivityFromDeployment(ctx, tq, tv.DeploymentSeries(), tv.DeploymentVersion()) + } + } + + // Querying the Deployment + s.EventuallyWithT(func(t *assert.CollectT) { + a := assert.New(t) + + resp, err := s.FrontendClient().DescribeWorkerDeploymentVersion(ctx, &workflowservice.DescribeWorkerDeploymentVersionRequest{ + Namespace: s.Namespace().String(), + Version: tv.DeploymentVersion(), + }) + if !a.NoError(err) { + return + } + a.Equal(tv.DeploymentSeries(), resp.GetWorkerDeploymentVersionInfo().GetDeploymentName()) + a.Equal(tv.DeploymentVersion(), resp.GetWorkerDeploymentVersionInfo().GetVersion()) + + if !a.Equal(2, len(resp.GetWorkerDeploymentVersionInfo().GetTaskQueueInfos())) { + return + } + a.Equal(tv.TaskQueue().GetName(), resp.GetWorkerDeploymentVersionInfo().GetTaskQueueInfos()[0].Name) + }, time.Second*10, time.Millisecond*1000) +} + +// Name is used by testvars. We use a shorten test name in variables so that physical task queue IDs +// do not grow larger that DB column limit (currently as low as 272 chars). +func (s *DeploymentVersionSuite) Name() string { + fullName := s.T().Name() + if len(fullName) <= 30 { + return fullName + } + return fmt.Sprintf("%s-%08x", + fullName[len(fullName)-21:], + farm.Fingerprint32([]byte(fullName)), + ) +} diff --git a/workflowservicemock/v1/service_grpc.pb.mock.go b/workflowservicemock/v1/service_grpc.pb.mock.go new file mode 100644 index 00000000000..b8579bbaeb0 --- /dev/null +++ b/workflowservicemock/v1/service_grpc.pb.mock.go @@ -0,0 +1,1581 @@ +// The MIT License +// +// Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. +// +// Copyright (c) 2020 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Code generated by MockGen. DO NOT EDIT. +// Source: go.temporal.io/api/workflowservice/v1 (interfaces: WorkflowServiceClient) + +// Package workflowservicemock is a generated GoMock package. +package workflowservicemock + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + workflowservice "go.temporal.io/api/workflowservice/v1" + grpc "google.golang.org/grpc" +) + +// MockWorkflowServiceClient is a mock of WorkflowServiceClient interface. +type MockWorkflowServiceClient struct { + ctrl *gomock.Controller + recorder *MockWorkflowServiceClientMockRecorder +} + +// MockWorkflowServiceClientMockRecorder is the mock recorder for MockWorkflowServiceClient. +type MockWorkflowServiceClientMockRecorder struct { + mock *MockWorkflowServiceClient +} + +// NewMockWorkflowServiceClient creates a new mock instance. +func NewMockWorkflowServiceClient(ctrl *gomock.Controller) *MockWorkflowServiceClient { + mock := &MockWorkflowServiceClient{ctrl: ctrl} + mock.recorder = &MockWorkflowServiceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockWorkflowServiceClient) EXPECT() *MockWorkflowServiceClientMockRecorder { + return m.recorder +} + +// CountWorkflowExecutions mocks base method. +func (m *MockWorkflowServiceClient) CountWorkflowExecutions(arg0 context.Context, arg1 *workflowservice.CountWorkflowExecutionsRequest, arg2 ...grpc.CallOption) (*workflowservice.CountWorkflowExecutionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CountWorkflowExecutions", varargs...) + ret0, _ := ret[0].(*workflowservice.CountWorkflowExecutionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CountWorkflowExecutions indicates an expected call of CountWorkflowExecutions. +func (mr *MockWorkflowServiceClientMockRecorder) CountWorkflowExecutions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CountWorkflowExecutions", reflect.TypeOf((*MockWorkflowServiceClient)(nil).CountWorkflowExecutions), varargs...) +} + +// CreateSchedule mocks base method. +func (m *MockWorkflowServiceClient) CreateSchedule(arg0 context.Context, arg1 *workflowservice.CreateScheduleRequest, arg2 ...grpc.CallOption) (*workflowservice.CreateScheduleResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateSchedule", varargs...) + ret0, _ := ret[0].(*workflowservice.CreateScheduleResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateSchedule indicates an expected call of CreateSchedule. +func (mr *MockWorkflowServiceClientMockRecorder) CreateSchedule(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSchedule", reflect.TypeOf((*MockWorkflowServiceClient)(nil).CreateSchedule), varargs...) +} + +// DeleteSchedule mocks base method. +func (m *MockWorkflowServiceClient) DeleteSchedule(arg0 context.Context, arg1 *workflowservice.DeleteScheduleRequest, arg2 ...grpc.CallOption) (*workflowservice.DeleteScheduleResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteSchedule", varargs...) + ret0, _ := ret[0].(*workflowservice.DeleteScheduleResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteSchedule indicates an expected call of DeleteSchedule. +func (mr *MockWorkflowServiceClientMockRecorder) DeleteSchedule(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSchedule", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DeleteSchedule), varargs...) +} + +// DeleteWorkflowExecution mocks base method. +func (m *MockWorkflowServiceClient) DeleteWorkflowExecution(arg0 context.Context, arg1 *workflowservice.DeleteWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.DeleteWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteWorkflowExecution", varargs...) + ret0, _ := ret[0].(*workflowservice.DeleteWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteWorkflowExecution indicates an expected call of DeleteWorkflowExecution. +func (mr *MockWorkflowServiceClientMockRecorder) DeleteWorkflowExecution(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteWorkflowExecution", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DeleteWorkflowExecution), varargs...) +} + +// DeprecateNamespace mocks base method. +func (m *MockWorkflowServiceClient) DeprecateNamespace(arg0 context.Context, arg1 *workflowservice.DeprecateNamespaceRequest, arg2 ...grpc.CallOption) (*workflowservice.DeprecateNamespaceResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeprecateNamespace", varargs...) + ret0, _ := ret[0].(*workflowservice.DeprecateNamespaceResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeprecateNamespace indicates an expected call of DeprecateNamespace. +func (mr *MockWorkflowServiceClientMockRecorder) DeprecateNamespace(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeprecateNamespace", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DeprecateNamespace), varargs...) +} + +// DescribeBatchOperation mocks base method. +func (m *MockWorkflowServiceClient) DescribeBatchOperation(arg0 context.Context, arg1 *workflowservice.DescribeBatchOperationRequest, arg2 ...grpc.CallOption) (*workflowservice.DescribeBatchOperationResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DescribeBatchOperation", varargs...) + ret0, _ := ret[0].(*workflowservice.DescribeBatchOperationResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DescribeBatchOperation indicates an expected call of DescribeBatchOperation. +func (mr *MockWorkflowServiceClientMockRecorder) DescribeBatchOperation(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeBatchOperation", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DescribeBatchOperation), varargs...) +} + +// DescribeDeployment mocks base method. +func (m *MockWorkflowServiceClient) DescribeDeployment(arg0 context.Context, arg1 *workflowservice.DescribeDeploymentRequest, arg2 ...grpc.CallOption) (*workflowservice.DescribeDeploymentResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DescribeDeployment", varargs...) + ret0, _ := ret[0].(*workflowservice.DescribeDeploymentResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DescribeDeployment indicates an expected call of DescribeDeployment. +func (mr *MockWorkflowServiceClientMockRecorder) DescribeDeployment(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeDeployment", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DescribeDeployment), varargs...) +} + +// DescribeNamespace mocks base method. +func (m *MockWorkflowServiceClient) DescribeNamespace(arg0 context.Context, arg1 *workflowservice.DescribeNamespaceRequest, arg2 ...grpc.CallOption) (*workflowservice.DescribeNamespaceResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DescribeNamespace", varargs...) + ret0, _ := ret[0].(*workflowservice.DescribeNamespaceResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DescribeNamespace indicates an expected call of DescribeNamespace. +func (mr *MockWorkflowServiceClientMockRecorder) DescribeNamespace(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeNamespace", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DescribeNamespace), varargs...) +} + +// DescribeSchedule mocks base method. +func (m *MockWorkflowServiceClient) DescribeSchedule(arg0 context.Context, arg1 *workflowservice.DescribeScheduleRequest, arg2 ...grpc.CallOption) (*workflowservice.DescribeScheduleResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DescribeSchedule", varargs...) + ret0, _ := ret[0].(*workflowservice.DescribeScheduleResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DescribeSchedule indicates an expected call of DescribeSchedule. +func (mr *MockWorkflowServiceClientMockRecorder) DescribeSchedule(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeSchedule", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DescribeSchedule), varargs...) +} + +// DescribeTaskQueue mocks base method. +func (m *MockWorkflowServiceClient) DescribeTaskQueue(arg0 context.Context, arg1 *workflowservice.DescribeTaskQueueRequest, arg2 ...grpc.CallOption) (*workflowservice.DescribeTaskQueueResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DescribeTaskQueue", varargs...) + ret0, _ := ret[0].(*workflowservice.DescribeTaskQueueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DescribeTaskQueue indicates an expected call of DescribeTaskQueue. +func (mr *MockWorkflowServiceClientMockRecorder) DescribeTaskQueue(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeTaskQueue", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DescribeTaskQueue), varargs...) +} + +// DescribeWorkerDeploymentVersion mocks base method. +func (m *MockWorkflowServiceClient) DescribeWorkerDeploymentVersion(arg0 context.Context, arg1 *workflowservice.DescribeWorkerDeploymentVersionRequest, arg2 ...grpc.CallOption) (*workflowservice.DescribeWorkerDeploymentVersionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DescribeWorkerDeploymentVersion", varargs...) + ret0, _ := ret[0].(*workflowservice.DescribeWorkerDeploymentVersionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DescribeWorkerDeploymentVersion indicates an expected call of DescribeWorkerDeploymentVersion. +func (mr *MockWorkflowServiceClientMockRecorder) DescribeWorkerDeploymentVersion(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeWorkerDeploymentVersion", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DescribeWorkerDeploymentVersion), varargs...) +} + +// DescribeWorkflowExecution mocks base method. +func (m *MockWorkflowServiceClient) DescribeWorkflowExecution(arg0 context.Context, arg1 *workflowservice.DescribeWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.DescribeWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DescribeWorkflowExecution", varargs...) + ret0, _ := ret[0].(*workflowservice.DescribeWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DescribeWorkflowExecution indicates an expected call of DescribeWorkflowExecution. +func (mr *MockWorkflowServiceClientMockRecorder) DescribeWorkflowExecution(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeWorkflowExecution", reflect.TypeOf((*MockWorkflowServiceClient)(nil).DescribeWorkflowExecution), varargs...) +} + +// ExecuteMultiOperation mocks base method. +func (m *MockWorkflowServiceClient) ExecuteMultiOperation(arg0 context.Context, arg1 *workflowservice.ExecuteMultiOperationRequest, arg2 ...grpc.CallOption) (*workflowservice.ExecuteMultiOperationResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ExecuteMultiOperation", varargs...) + ret0, _ := ret[0].(*workflowservice.ExecuteMultiOperationResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ExecuteMultiOperation indicates an expected call of ExecuteMultiOperation. +func (mr *MockWorkflowServiceClientMockRecorder) ExecuteMultiOperation(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExecuteMultiOperation", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ExecuteMultiOperation), varargs...) +} + +// GetClusterInfo mocks base method. +func (m *MockWorkflowServiceClient) GetClusterInfo(arg0 context.Context, arg1 *workflowservice.GetClusterInfoRequest, arg2 ...grpc.CallOption) (*workflowservice.GetClusterInfoResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetClusterInfo", varargs...) + ret0, _ := ret[0].(*workflowservice.GetClusterInfoResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetClusterInfo indicates an expected call of GetClusterInfo. +func (mr *MockWorkflowServiceClientMockRecorder) GetClusterInfo(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetClusterInfo", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetClusterInfo), varargs...) +} + +// GetCurrentDeployment mocks base method. +func (m *MockWorkflowServiceClient) GetCurrentDeployment(arg0 context.Context, arg1 *workflowservice.GetCurrentDeploymentRequest, arg2 ...grpc.CallOption) (*workflowservice.GetCurrentDeploymentResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetCurrentDeployment", varargs...) + ret0, _ := ret[0].(*workflowservice.GetCurrentDeploymentResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCurrentDeployment indicates an expected call of GetCurrentDeployment. +func (mr *MockWorkflowServiceClientMockRecorder) GetCurrentDeployment(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCurrentDeployment", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetCurrentDeployment), varargs...) +} + +// GetDeploymentReachability mocks base method. +func (m *MockWorkflowServiceClient) GetDeploymentReachability(arg0 context.Context, arg1 *workflowservice.GetDeploymentReachabilityRequest, arg2 ...grpc.CallOption) (*workflowservice.GetDeploymentReachabilityResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetDeploymentReachability", varargs...) + ret0, _ := ret[0].(*workflowservice.GetDeploymentReachabilityResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetDeploymentReachability indicates an expected call of GetDeploymentReachability. +func (mr *MockWorkflowServiceClientMockRecorder) GetDeploymentReachability(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeploymentReachability", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetDeploymentReachability), varargs...) +} + +// GetSearchAttributes mocks base method. +func (m *MockWorkflowServiceClient) GetSearchAttributes(arg0 context.Context, arg1 *workflowservice.GetSearchAttributesRequest, arg2 ...grpc.CallOption) (*workflowservice.GetSearchAttributesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetSearchAttributes", varargs...) + ret0, _ := ret[0].(*workflowservice.GetSearchAttributesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSearchAttributes indicates an expected call of GetSearchAttributes. +func (mr *MockWorkflowServiceClientMockRecorder) GetSearchAttributes(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSearchAttributes", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetSearchAttributes), varargs...) +} + +// GetSystemInfo mocks base method. +func (m *MockWorkflowServiceClient) GetSystemInfo(arg0 context.Context, arg1 *workflowservice.GetSystemInfoRequest, arg2 ...grpc.CallOption) (*workflowservice.GetSystemInfoResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetSystemInfo", varargs...) + ret0, _ := ret[0].(*workflowservice.GetSystemInfoResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSystemInfo indicates an expected call of GetSystemInfo. +func (mr *MockWorkflowServiceClientMockRecorder) GetSystemInfo(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSystemInfo", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetSystemInfo), varargs...) +} + +// GetWorkerBuildIdCompatibility mocks base method. +func (m *MockWorkflowServiceClient) GetWorkerBuildIdCompatibility(arg0 context.Context, arg1 *workflowservice.GetWorkerBuildIdCompatibilityRequest, arg2 ...grpc.CallOption) (*workflowservice.GetWorkerBuildIdCompatibilityResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetWorkerBuildIdCompatibility", varargs...) + ret0, _ := ret[0].(*workflowservice.GetWorkerBuildIdCompatibilityResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetWorkerBuildIdCompatibility indicates an expected call of GetWorkerBuildIdCompatibility. +func (mr *MockWorkflowServiceClientMockRecorder) GetWorkerBuildIdCompatibility(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkerBuildIdCompatibility", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetWorkerBuildIdCompatibility), varargs...) +} + +// GetWorkerTaskReachability mocks base method. +func (m *MockWorkflowServiceClient) GetWorkerTaskReachability(arg0 context.Context, arg1 *workflowservice.GetWorkerTaskReachabilityRequest, arg2 ...grpc.CallOption) (*workflowservice.GetWorkerTaskReachabilityResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetWorkerTaskReachability", varargs...) + ret0, _ := ret[0].(*workflowservice.GetWorkerTaskReachabilityResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetWorkerTaskReachability indicates an expected call of GetWorkerTaskReachability. +func (mr *MockWorkflowServiceClientMockRecorder) GetWorkerTaskReachability(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkerTaskReachability", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetWorkerTaskReachability), varargs...) +} + +// GetWorkerVersioningRules mocks base method. +func (m *MockWorkflowServiceClient) GetWorkerVersioningRules(arg0 context.Context, arg1 *workflowservice.GetWorkerVersioningRulesRequest, arg2 ...grpc.CallOption) (*workflowservice.GetWorkerVersioningRulesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetWorkerVersioningRules", varargs...) + ret0, _ := ret[0].(*workflowservice.GetWorkerVersioningRulesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetWorkerVersioningRules indicates an expected call of GetWorkerVersioningRules. +func (mr *MockWorkflowServiceClientMockRecorder) GetWorkerVersioningRules(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkerVersioningRules", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetWorkerVersioningRules), varargs...) +} + +// GetWorkflowExecutionHistory mocks base method. +func (m *MockWorkflowServiceClient) GetWorkflowExecutionHistory(arg0 context.Context, arg1 *workflowservice.GetWorkflowExecutionHistoryRequest, arg2 ...grpc.CallOption) (*workflowservice.GetWorkflowExecutionHistoryResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetWorkflowExecutionHistory", varargs...) + ret0, _ := ret[0].(*workflowservice.GetWorkflowExecutionHistoryResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetWorkflowExecutionHistory indicates an expected call of GetWorkflowExecutionHistory. +func (mr *MockWorkflowServiceClientMockRecorder) GetWorkflowExecutionHistory(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkflowExecutionHistory", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetWorkflowExecutionHistory), varargs...) +} + +// GetWorkflowExecutionHistoryReverse mocks base method. +func (m *MockWorkflowServiceClient) GetWorkflowExecutionHistoryReverse(arg0 context.Context, arg1 *workflowservice.GetWorkflowExecutionHistoryReverseRequest, arg2 ...grpc.CallOption) (*workflowservice.GetWorkflowExecutionHistoryReverseResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetWorkflowExecutionHistoryReverse", varargs...) + ret0, _ := ret[0].(*workflowservice.GetWorkflowExecutionHistoryReverseResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetWorkflowExecutionHistoryReverse indicates an expected call of GetWorkflowExecutionHistoryReverse. +func (mr *MockWorkflowServiceClientMockRecorder) GetWorkflowExecutionHistoryReverse(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkflowExecutionHistoryReverse", reflect.TypeOf((*MockWorkflowServiceClient)(nil).GetWorkflowExecutionHistoryReverse), varargs...) +} + +// ListArchivedWorkflowExecutions mocks base method. +func (m *MockWorkflowServiceClient) ListArchivedWorkflowExecutions(arg0 context.Context, arg1 *workflowservice.ListArchivedWorkflowExecutionsRequest, arg2 ...grpc.CallOption) (*workflowservice.ListArchivedWorkflowExecutionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListArchivedWorkflowExecutions", varargs...) + ret0, _ := ret[0].(*workflowservice.ListArchivedWorkflowExecutionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListArchivedWorkflowExecutions indicates an expected call of ListArchivedWorkflowExecutions. +func (mr *MockWorkflowServiceClientMockRecorder) ListArchivedWorkflowExecutions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListArchivedWorkflowExecutions", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListArchivedWorkflowExecutions), varargs...) +} + +// ListBatchOperations mocks base method. +func (m *MockWorkflowServiceClient) ListBatchOperations(arg0 context.Context, arg1 *workflowservice.ListBatchOperationsRequest, arg2 ...grpc.CallOption) (*workflowservice.ListBatchOperationsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListBatchOperations", varargs...) + ret0, _ := ret[0].(*workflowservice.ListBatchOperationsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListBatchOperations indicates an expected call of ListBatchOperations. +func (mr *MockWorkflowServiceClientMockRecorder) ListBatchOperations(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListBatchOperations", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListBatchOperations), varargs...) +} + +// ListClosedWorkflowExecutions mocks base method. +func (m *MockWorkflowServiceClient) ListClosedWorkflowExecutions(arg0 context.Context, arg1 *workflowservice.ListClosedWorkflowExecutionsRequest, arg2 ...grpc.CallOption) (*workflowservice.ListClosedWorkflowExecutionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListClosedWorkflowExecutions", varargs...) + ret0, _ := ret[0].(*workflowservice.ListClosedWorkflowExecutionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListClosedWorkflowExecutions indicates an expected call of ListClosedWorkflowExecutions. +func (mr *MockWorkflowServiceClientMockRecorder) ListClosedWorkflowExecutions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListClosedWorkflowExecutions", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListClosedWorkflowExecutions), varargs...) +} + +// ListDeployments mocks base method. +func (m *MockWorkflowServiceClient) ListDeployments(arg0 context.Context, arg1 *workflowservice.ListDeploymentsRequest, arg2 ...grpc.CallOption) (*workflowservice.ListDeploymentsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListDeployments", varargs...) + ret0, _ := ret[0].(*workflowservice.ListDeploymentsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListDeployments indicates an expected call of ListDeployments. +func (mr *MockWorkflowServiceClientMockRecorder) ListDeployments(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListDeployments", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListDeployments), varargs...) +} + +// ListNamespaces mocks base method. +func (m *MockWorkflowServiceClient) ListNamespaces(arg0 context.Context, arg1 *workflowservice.ListNamespacesRequest, arg2 ...grpc.CallOption) (*workflowservice.ListNamespacesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListNamespaces", varargs...) + ret0, _ := ret[0].(*workflowservice.ListNamespacesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListNamespaces indicates an expected call of ListNamespaces. +func (mr *MockWorkflowServiceClientMockRecorder) ListNamespaces(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNamespaces", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListNamespaces), varargs...) +} + +// ListOpenWorkflowExecutions mocks base method. +func (m *MockWorkflowServiceClient) ListOpenWorkflowExecutions(arg0 context.Context, arg1 *workflowservice.ListOpenWorkflowExecutionsRequest, arg2 ...grpc.CallOption) (*workflowservice.ListOpenWorkflowExecutionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListOpenWorkflowExecutions", varargs...) + ret0, _ := ret[0].(*workflowservice.ListOpenWorkflowExecutionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListOpenWorkflowExecutions indicates an expected call of ListOpenWorkflowExecutions. +func (mr *MockWorkflowServiceClientMockRecorder) ListOpenWorkflowExecutions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListOpenWorkflowExecutions", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListOpenWorkflowExecutions), varargs...) +} + +// ListScheduleMatchingTimes mocks base method. +func (m *MockWorkflowServiceClient) ListScheduleMatchingTimes(arg0 context.Context, arg1 *workflowservice.ListScheduleMatchingTimesRequest, arg2 ...grpc.CallOption) (*workflowservice.ListScheduleMatchingTimesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListScheduleMatchingTimes", varargs...) + ret0, _ := ret[0].(*workflowservice.ListScheduleMatchingTimesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListScheduleMatchingTimes indicates an expected call of ListScheduleMatchingTimes. +func (mr *MockWorkflowServiceClientMockRecorder) ListScheduleMatchingTimes(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListScheduleMatchingTimes", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListScheduleMatchingTimes), varargs...) +} + +// ListSchedules mocks base method. +func (m *MockWorkflowServiceClient) ListSchedules(arg0 context.Context, arg1 *workflowservice.ListSchedulesRequest, arg2 ...grpc.CallOption) (*workflowservice.ListSchedulesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListSchedules", varargs...) + ret0, _ := ret[0].(*workflowservice.ListSchedulesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListSchedules indicates an expected call of ListSchedules. +func (mr *MockWorkflowServiceClientMockRecorder) ListSchedules(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSchedules", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListSchedules), varargs...) +} + +// ListTaskQueuePartitions mocks base method. +func (m *MockWorkflowServiceClient) ListTaskQueuePartitions(arg0 context.Context, arg1 *workflowservice.ListTaskQueuePartitionsRequest, arg2 ...grpc.CallOption) (*workflowservice.ListTaskQueuePartitionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListTaskQueuePartitions", varargs...) + ret0, _ := ret[0].(*workflowservice.ListTaskQueuePartitionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTaskQueuePartitions indicates an expected call of ListTaskQueuePartitions. +func (mr *MockWorkflowServiceClientMockRecorder) ListTaskQueuePartitions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTaskQueuePartitions", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListTaskQueuePartitions), varargs...) +} + +// ListWorkflowExecutions mocks base method. +func (m *MockWorkflowServiceClient) ListWorkflowExecutions(arg0 context.Context, arg1 *workflowservice.ListWorkflowExecutionsRequest, arg2 ...grpc.CallOption) (*workflowservice.ListWorkflowExecutionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListWorkflowExecutions", varargs...) + ret0, _ := ret[0].(*workflowservice.ListWorkflowExecutionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListWorkflowExecutions indicates an expected call of ListWorkflowExecutions. +func (mr *MockWorkflowServiceClientMockRecorder) ListWorkflowExecutions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListWorkflowExecutions", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ListWorkflowExecutions), varargs...) +} + +// PatchSchedule mocks base method. +func (m *MockWorkflowServiceClient) PatchSchedule(arg0 context.Context, arg1 *workflowservice.PatchScheduleRequest, arg2 ...grpc.CallOption) (*workflowservice.PatchScheduleResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchSchedule", varargs...) + ret0, _ := ret[0].(*workflowservice.PatchScheduleResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PatchSchedule indicates an expected call of PatchSchedule. +func (mr *MockWorkflowServiceClientMockRecorder) PatchSchedule(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchSchedule", reflect.TypeOf((*MockWorkflowServiceClient)(nil).PatchSchedule), varargs...) +} + +// PauseActivityById mocks base method. +func (m *MockWorkflowServiceClient) PauseActivityById(arg0 context.Context, arg1 *workflowservice.PauseActivityByIdRequest, arg2 ...grpc.CallOption) (*workflowservice.PauseActivityByIdResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PauseActivityById", varargs...) + ret0, _ := ret[0].(*workflowservice.PauseActivityByIdResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PauseActivityById indicates an expected call of PauseActivityById. +func (mr *MockWorkflowServiceClientMockRecorder) PauseActivityById(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PauseActivityById", reflect.TypeOf((*MockWorkflowServiceClient)(nil).PauseActivityById), varargs...) +} + +// PollActivityTaskQueue mocks base method. +func (m *MockWorkflowServiceClient) PollActivityTaskQueue(arg0 context.Context, arg1 *workflowservice.PollActivityTaskQueueRequest, arg2 ...grpc.CallOption) (*workflowservice.PollActivityTaskQueueResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PollActivityTaskQueue", varargs...) + ret0, _ := ret[0].(*workflowservice.PollActivityTaskQueueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PollActivityTaskQueue indicates an expected call of PollActivityTaskQueue. +func (mr *MockWorkflowServiceClientMockRecorder) PollActivityTaskQueue(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PollActivityTaskQueue", reflect.TypeOf((*MockWorkflowServiceClient)(nil).PollActivityTaskQueue), varargs...) +} + +// PollNexusTaskQueue mocks base method. +func (m *MockWorkflowServiceClient) PollNexusTaskQueue(arg0 context.Context, arg1 *workflowservice.PollNexusTaskQueueRequest, arg2 ...grpc.CallOption) (*workflowservice.PollNexusTaskQueueResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PollNexusTaskQueue", varargs...) + ret0, _ := ret[0].(*workflowservice.PollNexusTaskQueueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PollNexusTaskQueue indicates an expected call of PollNexusTaskQueue. +func (mr *MockWorkflowServiceClientMockRecorder) PollNexusTaskQueue(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PollNexusTaskQueue", reflect.TypeOf((*MockWorkflowServiceClient)(nil).PollNexusTaskQueue), varargs...) +} + +// PollWorkflowExecutionUpdate mocks base method. +func (m *MockWorkflowServiceClient) PollWorkflowExecutionUpdate(arg0 context.Context, arg1 *workflowservice.PollWorkflowExecutionUpdateRequest, arg2 ...grpc.CallOption) (*workflowservice.PollWorkflowExecutionUpdateResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PollWorkflowExecutionUpdate", varargs...) + ret0, _ := ret[0].(*workflowservice.PollWorkflowExecutionUpdateResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PollWorkflowExecutionUpdate indicates an expected call of PollWorkflowExecutionUpdate. +func (mr *MockWorkflowServiceClientMockRecorder) PollWorkflowExecutionUpdate(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PollWorkflowExecutionUpdate", reflect.TypeOf((*MockWorkflowServiceClient)(nil).PollWorkflowExecutionUpdate), varargs...) +} + +// PollWorkflowTaskQueue mocks base method. +func (m *MockWorkflowServiceClient) PollWorkflowTaskQueue(arg0 context.Context, arg1 *workflowservice.PollWorkflowTaskQueueRequest, arg2 ...grpc.CallOption) (*workflowservice.PollWorkflowTaskQueueResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PollWorkflowTaskQueue", varargs...) + ret0, _ := ret[0].(*workflowservice.PollWorkflowTaskQueueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PollWorkflowTaskQueue indicates an expected call of PollWorkflowTaskQueue. +func (mr *MockWorkflowServiceClientMockRecorder) PollWorkflowTaskQueue(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PollWorkflowTaskQueue", reflect.TypeOf((*MockWorkflowServiceClient)(nil).PollWorkflowTaskQueue), varargs...) +} + +// QueryWorkflow mocks base method. +func (m *MockWorkflowServiceClient) QueryWorkflow(arg0 context.Context, arg1 *workflowservice.QueryWorkflowRequest, arg2 ...grpc.CallOption) (*workflowservice.QueryWorkflowResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "QueryWorkflow", varargs...) + ret0, _ := ret[0].(*workflowservice.QueryWorkflowResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryWorkflow indicates an expected call of QueryWorkflow. +func (mr *MockWorkflowServiceClientMockRecorder) QueryWorkflow(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryWorkflow", reflect.TypeOf((*MockWorkflowServiceClient)(nil).QueryWorkflow), varargs...) +} + +// RecordActivityTaskHeartbeat mocks base method. +func (m *MockWorkflowServiceClient) RecordActivityTaskHeartbeat(arg0 context.Context, arg1 *workflowservice.RecordActivityTaskHeartbeatRequest, arg2 ...grpc.CallOption) (*workflowservice.RecordActivityTaskHeartbeatResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RecordActivityTaskHeartbeat", varargs...) + ret0, _ := ret[0].(*workflowservice.RecordActivityTaskHeartbeatResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RecordActivityTaskHeartbeat indicates an expected call of RecordActivityTaskHeartbeat. +func (mr *MockWorkflowServiceClientMockRecorder) RecordActivityTaskHeartbeat(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecordActivityTaskHeartbeat", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RecordActivityTaskHeartbeat), varargs...) +} + +// RecordActivityTaskHeartbeatById mocks base method. +func (m *MockWorkflowServiceClient) RecordActivityTaskHeartbeatById(arg0 context.Context, arg1 *workflowservice.RecordActivityTaskHeartbeatByIdRequest, arg2 ...grpc.CallOption) (*workflowservice.RecordActivityTaskHeartbeatByIdResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RecordActivityTaskHeartbeatById", varargs...) + ret0, _ := ret[0].(*workflowservice.RecordActivityTaskHeartbeatByIdResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RecordActivityTaskHeartbeatById indicates an expected call of RecordActivityTaskHeartbeatById. +func (mr *MockWorkflowServiceClientMockRecorder) RecordActivityTaskHeartbeatById(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecordActivityTaskHeartbeatById", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RecordActivityTaskHeartbeatById), varargs...) +} + +// RegisterNamespace mocks base method. +func (m *MockWorkflowServiceClient) RegisterNamespace(arg0 context.Context, arg1 *workflowservice.RegisterNamespaceRequest, arg2 ...grpc.CallOption) (*workflowservice.RegisterNamespaceResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RegisterNamespace", varargs...) + ret0, _ := ret[0].(*workflowservice.RegisterNamespaceResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RegisterNamespace indicates an expected call of RegisterNamespace. +func (mr *MockWorkflowServiceClientMockRecorder) RegisterNamespace(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterNamespace", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RegisterNamespace), varargs...) +} + +// RequestCancelWorkflowExecution mocks base method. +func (m *MockWorkflowServiceClient) RequestCancelWorkflowExecution(arg0 context.Context, arg1 *workflowservice.RequestCancelWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.RequestCancelWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RequestCancelWorkflowExecution", varargs...) + ret0, _ := ret[0].(*workflowservice.RequestCancelWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RequestCancelWorkflowExecution indicates an expected call of RequestCancelWorkflowExecution. +func (mr *MockWorkflowServiceClientMockRecorder) RequestCancelWorkflowExecution(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RequestCancelWorkflowExecution", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RequestCancelWorkflowExecution), varargs...) +} + +// ResetActivityById mocks base method. +func (m *MockWorkflowServiceClient) ResetActivityById(arg0 context.Context, arg1 *workflowservice.ResetActivityByIdRequest, arg2 ...grpc.CallOption) (*workflowservice.ResetActivityByIdResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ResetActivityById", varargs...) + ret0, _ := ret[0].(*workflowservice.ResetActivityByIdResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ResetActivityById indicates an expected call of ResetActivityById. +func (mr *MockWorkflowServiceClientMockRecorder) ResetActivityById(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResetActivityById", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ResetActivityById), varargs...) +} + +// ResetStickyTaskQueue mocks base method. +func (m *MockWorkflowServiceClient) ResetStickyTaskQueue(arg0 context.Context, arg1 *workflowservice.ResetStickyTaskQueueRequest, arg2 ...grpc.CallOption) (*workflowservice.ResetStickyTaskQueueResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ResetStickyTaskQueue", varargs...) + ret0, _ := ret[0].(*workflowservice.ResetStickyTaskQueueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ResetStickyTaskQueue indicates an expected call of ResetStickyTaskQueue. +func (mr *MockWorkflowServiceClientMockRecorder) ResetStickyTaskQueue(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResetStickyTaskQueue", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ResetStickyTaskQueue), varargs...) +} + +// ResetWorkflowExecution mocks base method. +func (m *MockWorkflowServiceClient) ResetWorkflowExecution(arg0 context.Context, arg1 *workflowservice.ResetWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.ResetWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ResetWorkflowExecution", varargs...) + ret0, _ := ret[0].(*workflowservice.ResetWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ResetWorkflowExecution indicates an expected call of ResetWorkflowExecution. +func (mr *MockWorkflowServiceClientMockRecorder) ResetWorkflowExecution(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResetWorkflowExecution", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ResetWorkflowExecution), varargs...) +} + +// RespondActivityTaskCanceled mocks base method. +func (m *MockWorkflowServiceClient) RespondActivityTaskCanceled(arg0 context.Context, arg1 *workflowservice.RespondActivityTaskCanceledRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondActivityTaskCanceledResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondActivityTaskCanceled", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondActivityTaskCanceledResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondActivityTaskCanceled indicates an expected call of RespondActivityTaskCanceled. +func (mr *MockWorkflowServiceClientMockRecorder) RespondActivityTaskCanceled(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondActivityTaskCanceled", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondActivityTaskCanceled), varargs...) +} + +// RespondActivityTaskCanceledById mocks base method. +func (m *MockWorkflowServiceClient) RespondActivityTaskCanceledById(arg0 context.Context, arg1 *workflowservice.RespondActivityTaskCanceledByIdRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondActivityTaskCanceledByIdResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondActivityTaskCanceledById", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondActivityTaskCanceledByIdResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondActivityTaskCanceledById indicates an expected call of RespondActivityTaskCanceledById. +func (mr *MockWorkflowServiceClientMockRecorder) RespondActivityTaskCanceledById(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondActivityTaskCanceledById", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondActivityTaskCanceledById), varargs...) +} + +// RespondActivityTaskCompleted mocks base method. +func (m *MockWorkflowServiceClient) RespondActivityTaskCompleted(arg0 context.Context, arg1 *workflowservice.RespondActivityTaskCompletedRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondActivityTaskCompletedResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondActivityTaskCompleted", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondActivityTaskCompletedResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondActivityTaskCompleted indicates an expected call of RespondActivityTaskCompleted. +func (mr *MockWorkflowServiceClientMockRecorder) RespondActivityTaskCompleted(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondActivityTaskCompleted", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondActivityTaskCompleted), varargs...) +} + +// RespondActivityTaskCompletedById mocks base method. +func (m *MockWorkflowServiceClient) RespondActivityTaskCompletedById(arg0 context.Context, arg1 *workflowservice.RespondActivityTaskCompletedByIdRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondActivityTaskCompletedByIdResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondActivityTaskCompletedById", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondActivityTaskCompletedByIdResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondActivityTaskCompletedById indicates an expected call of RespondActivityTaskCompletedById. +func (mr *MockWorkflowServiceClientMockRecorder) RespondActivityTaskCompletedById(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondActivityTaskCompletedById", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondActivityTaskCompletedById), varargs...) +} + +// RespondActivityTaskFailed mocks base method. +func (m *MockWorkflowServiceClient) RespondActivityTaskFailed(arg0 context.Context, arg1 *workflowservice.RespondActivityTaskFailedRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondActivityTaskFailedResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondActivityTaskFailed", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondActivityTaskFailedResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondActivityTaskFailed indicates an expected call of RespondActivityTaskFailed. +func (mr *MockWorkflowServiceClientMockRecorder) RespondActivityTaskFailed(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondActivityTaskFailed", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondActivityTaskFailed), varargs...) +} + +// RespondActivityTaskFailedById mocks base method. +func (m *MockWorkflowServiceClient) RespondActivityTaskFailedById(arg0 context.Context, arg1 *workflowservice.RespondActivityTaskFailedByIdRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondActivityTaskFailedByIdResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondActivityTaskFailedById", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondActivityTaskFailedByIdResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondActivityTaskFailedById indicates an expected call of RespondActivityTaskFailedById. +func (mr *MockWorkflowServiceClientMockRecorder) RespondActivityTaskFailedById(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondActivityTaskFailedById", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondActivityTaskFailedById), varargs...) +} + +// RespondNexusTaskCompleted mocks base method. +func (m *MockWorkflowServiceClient) RespondNexusTaskCompleted(arg0 context.Context, arg1 *workflowservice.RespondNexusTaskCompletedRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondNexusTaskCompletedResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondNexusTaskCompleted", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondNexusTaskCompletedResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondNexusTaskCompleted indicates an expected call of RespondNexusTaskCompleted. +func (mr *MockWorkflowServiceClientMockRecorder) RespondNexusTaskCompleted(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondNexusTaskCompleted", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondNexusTaskCompleted), varargs...) +} + +// RespondNexusTaskFailed mocks base method. +func (m *MockWorkflowServiceClient) RespondNexusTaskFailed(arg0 context.Context, arg1 *workflowservice.RespondNexusTaskFailedRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondNexusTaskFailedResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondNexusTaskFailed", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondNexusTaskFailedResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondNexusTaskFailed indicates an expected call of RespondNexusTaskFailed. +func (mr *MockWorkflowServiceClientMockRecorder) RespondNexusTaskFailed(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondNexusTaskFailed", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondNexusTaskFailed), varargs...) +} + +// RespondQueryTaskCompleted mocks base method. +func (m *MockWorkflowServiceClient) RespondQueryTaskCompleted(arg0 context.Context, arg1 *workflowservice.RespondQueryTaskCompletedRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondQueryTaskCompletedResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondQueryTaskCompleted", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondQueryTaskCompletedResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondQueryTaskCompleted indicates an expected call of RespondQueryTaskCompleted. +func (mr *MockWorkflowServiceClientMockRecorder) RespondQueryTaskCompleted(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondQueryTaskCompleted", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondQueryTaskCompleted), varargs...) +} + +// RespondWorkflowTaskCompleted mocks base method. +func (m *MockWorkflowServiceClient) RespondWorkflowTaskCompleted(arg0 context.Context, arg1 *workflowservice.RespondWorkflowTaskCompletedRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondWorkflowTaskCompletedResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondWorkflowTaskCompleted", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondWorkflowTaskCompletedResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondWorkflowTaskCompleted indicates an expected call of RespondWorkflowTaskCompleted. +func (mr *MockWorkflowServiceClientMockRecorder) RespondWorkflowTaskCompleted(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondWorkflowTaskCompleted", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondWorkflowTaskCompleted), varargs...) +} + +// RespondWorkflowTaskFailed mocks base method. +func (m *MockWorkflowServiceClient) RespondWorkflowTaskFailed(arg0 context.Context, arg1 *workflowservice.RespondWorkflowTaskFailedRequest, arg2 ...grpc.CallOption) (*workflowservice.RespondWorkflowTaskFailedResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RespondWorkflowTaskFailed", varargs...) + ret0, _ := ret[0].(*workflowservice.RespondWorkflowTaskFailedResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RespondWorkflowTaskFailed indicates an expected call of RespondWorkflowTaskFailed. +func (mr *MockWorkflowServiceClientMockRecorder) RespondWorkflowTaskFailed(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RespondWorkflowTaskFailed", reflect.TypeOf((*MockWorkflowServiceClient)(nil).RespondWorkflowTaskFailed), varargs...) +} + +// ScanWorkflowExecutions mocks base method. +func (m *MockWorkflowServiceClient) ScanWorkflowExecutions(arg0 context.Context, arg1 *workflowservice.ScanWorkflowExecutionsRequest, arg2 ...grpc.CallOption) (*workflowservice.ScanWorkflowExecutionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ScanWorkflowExecutions", varargs...) + ret0, _ := ret[0].(*workflowservice.ScanWorkflowExecutionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ScanWorkflowExecutions indicates an expected call of ScanWorkflowExecutions. +func (mr *MockWorkflowServiceClientMockRecorder) ScanWorkflowExecutions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ScanWorkflowExecutions", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ScanWorkflowExecutions), varargs...) +} + +// SetCurrentDeployment mocks base method. +func (m *MockWorkflowServiceClient) SetCurrentDeployment(arg0 context.Context, arg1 *workflowservice.SetCurrentDeploymentRequest, arg2 ...grpc.CallOption) (*workflowservice.SetCurrentDeploymentResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "SetCurrentDeployment", varargs...) + ret0, _ := ret[0].(*workflowservice.SetCurrentDeploymentResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SetCurrentDeployment indicates an expected call of SetCurrentDeployment. +func (mr *MockWorkflowServiceClientMockRecorder) SetCurrentDeployment(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetCurrentDeployment", reflect.TypeOf((*MockWorkflowServiceClient)(nil).SetCurrentDeployment), varargs...) +} + +// SetCurrentDeploymentVersion mocks base method. +func (m *MockWorkflowServiceClient) SetCurrentDeploymentVersion(arg0 context.Context, arg1 *workflowservice.SetCurrentDeploymentVersionRequest, arg2 ...grpc.CallOption) (*workflowservice.SetCurrentDeploymentVersionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "SetCurrentDeploymentVersion", varargs...) + ret0, _ := ret[0].(*workflowservice.SetCurrentDeploymentVersionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SetCurrentDeploymentVersion indicates an expected call of SetCurrentDeploymentVersion. +func (mr *MockWorkflowServiceClientMockRecorder) SetCurrentDeploymentVersion(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetCurrentDeploymentVersion", reflect.TypeOf((*MockWorkflowServiceClient)(nil).SetCurrentDeploymentVersion), varargs...) +} + +// ShutdownWorker mocks base method. +func (m *MockWorkflowServiceClient) ShutdownWorker(arg0 context.Context, arg1 *workflowservice.ShutdownWorkerRequest, arg2 ...grpc.CallOption) (*workflowservice.ShutdownWorkerResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ShutdownWorker", varargs...) + ret0, _ := ret[0].(*workflowservice.ShutdownWorkerResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ShutdownWorker indicates an expected call of ShutdownWorker. +func (mr *MockWorkflowServiceClientMockRecorder) ShutdownWorker(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ShutdownWorker", reflect.TypeOf((*MockWorkflowServiceClient)(nil).ShutdownWorker), varargs...) +} + +// SignalWithStartWorkflowExecution mocks base method. +func (m *MockWorkflowServiceClient) SignalWithStartWorkflowExecution(arg0 context.Context, arg1 *workflowservice.SignalWithStartWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.SignalWithStartWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "SignalWithStartWorkflowExecution", varargs...) + ret0, _ := ret[0].(*workflowservice.SignalWithStartWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SignalWithStartWorkflowExecution indicates an expected call of SignalWithStartWorkflowExecution. +func (mr *MockWorkflowServiceClientMockRecorder) SignalWithStartWorkflowExecution(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SignalWithStartWorkflowExecution", reflect.TypeOf((*MockWorkflowServiceClient)(nil).SignalWithStartWorkflowExecution), varargs...) +} + +// SignalWorkflowExecution mocks base method. +func (m *MockWorkflowServiceClient) SignalWorkflowExecution(arg0 context.Context, arg1 *workflowservice.SignalWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.SignalWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "SignalWorkflowExecution", varargs...) + ret0, _ := ret[0].(*workflowservice.SignalWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SignalWorkflowExecution indicates an expected call of SignalWorkflowExecution. +func (mr *MockWorkflowServiceClientMockRecorder) SignalWorkflowExecution(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SignalWorkflowExecution", reflect.TypeOf((*MockWorkflowServiceClient)(nil).SignalWorkflowExecution), varargs...) +} + +// StartBatchOperation mocks base method. +func (m *MockWorkflowServiceClient) StartBatchOperation(arg0 context.Context, arg1 *workflowservice.StartBatchOperationRequest, arg2 ...grpc.CallOption) (*workflowservice.StartBatchOperationResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "StartBatchOperation", varargs...) + ret0, _ := ret[0].(*workflowservice.StartBatchOperationResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// StartBatchOperation indicates an expected call of StartBatchOperation. +func (mr *MockWorkflowServiceClientMockRecorder) StartBatchOperation(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartBatchOperation", reflect.TypeOf((*MockWorkflowServiceClient)(nil).StartBatchOperation), varargs...) +} + +// StartWorkflowExecution mocks base method. +func (m *MockWorkflowServiceClient) StartWorkflowExecution(arg0 context.Context, arg1 *workflowservice.StartWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.StartWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "StartWorkflowExecution", varargs...) + ret0, _ := ret[0].(*workflowservice.StartWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// StartWorkflowExecution indicates an expected call of StartWorkflowExecution. +func (mr *MockWorkflowServiceClientMockRecorder) StartWorkflowExecution(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartWorkflowExecution", reflect.TypeOf((*MockWorkflowServiceClient)(nil).StartWorkflowExecution), varargs...) +} + +// StopBatchOperation mocks base method. +func (m *MockWorkflowServiceClient) StopBatchOperation(arg0 context.Context, arg1 *workflowservice.StopBatchOperationRequest, arg2 ...grpc.CallOption) (*workflowservice.StopBatchOperationResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "StopBatchOperation", varargs...) + ret0, _ := ret[0].(*workflowservice.StopBatchOperationResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// StopBatchOperation indicates an expected call of StopBatchOperation. +func (mr *MockWorkflowServiceClientMockRecorder) StopBatchOperation(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StopBatchOperation", reflect.TypeOf((*MockWorkflowServiceClient)(nil).StopBatchOperation), varargs...) +} + +// TerminateWorkflowExecution mocks base method. +func (m *MockWorkflowServiceClient) TerminateWorkflowExecution(arg0 context.Context, arg1 *workflowservice.TerminateWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.TerminateWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "TerminateWorkflowExecution", varargs...) + ret0, _ := ret[0].(*workflowservice.TerminateWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// TerminateWorkflowExecution indicates an expected call of TerminateWorkflowExecution. +func (mr *MockWorkflowServiceClientMockRecorder) TerminateWorkflowExecution(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TerminateWorkflowExecution", reflect.TypeOf((*MockWorkflowServiceClient)(nil).TerminateWorkflowExecution), varargs...) +} + +// UnpauseActivityById mocks base method. +func (m *MockWorkflowServiceClient) UnpauseActivityById(arg0 context.Context, arg1 *workflowservice.UnpauseActivityByIdRequest, arg2 ...grpc.CallOption) (*workflowservice.UnpauseActivityByIdResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnpauseActivityById", varargs...) + ret0, _ := ret[0].(*workflowservice.UnpauseActivityByIdResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UnpauseActivityById indicates an expected call of UnpauseActivityById. +func (mr *MockWorkflowServiceClientMockRecorder) UnpauseActivityById(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnpauseActivityById", reflect.TypeOf((*MockWorkflowServiceClient)(nil).UnpauseActivityById), varargs...) +} + +// UpdateActivityOptionsById mocks base method. +func (m *MockWorkflowServiceClient) UpdateActivityOptionsById(arg0 context.Context, arg1 *workflowservice.UpdateActivityOptionsByIdRequest, arg2 ...grpc.CallOption) (*workflowservice.UpdateActivityOptionsByIdResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateActivityOptionsById", varargs...) + ret0, _ := ret[0].(*workflowservice.UpdateActivityOptionsByIdResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateActivityOptionsById indicates an expected call of UpdateActivityOptionsById. +func (mr *MockWorkflowServiceClientMockRecorder) UpdateActivityOptionsById(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateActivityOptionsById", reflect.TypeOf((*MockWorkflowServiceClient)(nil).UpdateActivityOptionsById), varargs...) +} + +// UpdateNamespace mocks base method. +func (m *MockWorkflowServiceClient) UpdateNamespace(arg0 context.Context, arg1 *workflowservice.UpdateNamespaceRequest, arg2 ...grpc.CallOption) (*workflowservice.UpdateNamespaceResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateNamespace", varargs...) + ret0, _ := ret[0].(*workflowservice.UpdateNamespaceResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateNamespace indicates an expected call of UpdateNamespace. +func (mr *MockWorkflowServiceClientMockRecorder) UpdateNamespace(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateNamespace", reflect.TypeOf((*MockWorkflowServiceClient)(nil).UpdateNamespace), varargs...) +} + +// UpdateSchedule mocks base method. +func (m *MockWorkflowServiceClient) UpdateSchedule(arg0 context.Context, arg1 *workflowservice.UpdateScheduleRequest, arg2 ...grpc.CallOption) (*workflowservice.UpdateScheduleResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateSchedule", varargs...) + ret0, _ := ret[0].(*workflowservice.UpdateScheduleResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateSchedule indicates an expected call of UpdateSchedule. +func (mr *MockWorkflowServiceClientMockRecorder) UpdateSchedule(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSchedule", reflect.TypeOf((*MockWorkflowServiceClient)(nil).UpdateSchedule), varargs...) +} + +// UpdateWorkerBuildIdCompatibility mocks base method. +func (m *MockWorkflowServiceClient) UpdateWorkerBuildIdCompatibility(arg0 context.Context, arg1 *workflowservice.UpdateWorkerBuildIdCompatibilityRequest, arg2 ...grpc.CallOption) (*workflowservice.UpdateWorkerBuildIdCompatibilityResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateWorkerBuildIdCompatibility", varargs...) + ret0, _ := ret[0].(*workflowservice.UpdateWorkerBuildIdCompatibilityResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateWorkerBuildIdCompatibility indicates an expected call of UpdateWorkerBuildIdCompatibility. +func (mr *MockWorkflowServiceClientMockRecorder) UpdateWorkerBuildIdCompatibility(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateWorkerBuildIdCompatibility", reflect.TypeOf((*MockWorkflowServiceClient)(nil).UpdateWorkerBuildIdCompatibility), varargs...) +} + +// UpdateWorkerVersioningRules mocks base method. +func (m *MockWorkflowServiceClient) UpdateWorkerVersioningRules(arg0 context.Context, arg1 *workflowservice.UpdateWorkerVersioningRulesRequest, arg2 ...grpc.CallOption) (*workflowservice.UpdateWorkerVersioningRulesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateWorkerVersioningRules", varargs...) + ret0, _ := ret[0].(*workflowservice.UpdateWorkerVersioningRulesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateWorkerVersioningRules indicates an expected call of UpdateWorkerVersioningRules. +func (mr *MockWorkflowServiceClientMockRecorder) UpdateWorkerVersioningRules(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateWorkerVersioningRules", reflect.TypeOf((*MockWorkflowServiceClient)(nil).UpdateWorkerVersioningRules), varargs...) +} + +// UpdateWorkflowExecution mocks base method. +func (m *MockWorkflowServiceClient) UpdateWorkflowExecution(arg0 context.Context, arg1 *workflowservice.UpdateWorkflowExecutionRequest, arg2 ...grpc.CallOption) (*workflowservice.UpdateWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateWorkflowExecution", varargs...) + ret0, _ := ret[0].(*workflowservice.UpdateWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateWorkflowExecution indicates an expected call of UpdateWorkflowExecution. +func (mr *MockWorkflowServiceClientMockRecorder) UpdateWorkflowExecution(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateWorkflowExecution", reflect.TypeOf((*MockWorkflowServiceClient)(nil).UpdateWorkflowExecution), varargs...) +} + +// UpdateWorkflowExecutionOptions mocks base method. +func (m *MockWorkflowServiceClient) UpdateWorkflowExecutionOptions(arg0 context.Context, arg1 *workflowservice.UpdateWorkflowExecutionOptionsRequest, arg2 ...grpc.CallOption) (*workflowservice.UpdateWorkflowExecutionOptionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateWorkflowExecutionOptions", varargs...) + ret0, _ := ret[0].(*workflowservice.UpdateWorkflowExecutionOptionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateWorkflowExecutionOptions indicates an expected call of UpdateWorkflowExecutionOptions. +func (mr *MockWorkflowServiceClientMockRecorder) UpdateWorkflowExecutionOptions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateWorkflowExecutionOptions", reflect.TypeOf((*MockWorkflowServiceClient)(nil).UpdateWorkflowExecutionOptions), varargs...) +}