From 38a38685cd4ee2d108f28f6e749ce06cf5db96ce Mon Sep 17 00:00:00 2001 From: Craig Condit Date: Thu, 15 Aug 2024 09:27:41 -0500 Subject: [PATCH] [YUNIKORN-2460] Unify ask and allocation APIs (#140) Remove ask-specific APIs and use UpdateAllocation for all communication. Closes: #140 --- lib/go/si/si.pb.go | 1577 +++++++++++++---------------------- scheduler-interface-spec.md | 186 ++--- si.proto | 96 +-- 3 files changed, 643 insertions(+), 1216 deletions(-) diff --git a/lib/go/si/si.pb.go b/lib/go/si/si.pb.go index 8de5c48..d8b941f 100644 --- a/lib/go/si/si.pb.go +++ b/lib/go/si/si.pb.go @@ -161,7 +161,7 @@ func (x NodeInfo_ActionFromRM) Number() protoreflect.EnumNumber { // Deprecated: Use NodeInfo_ActionFromRM.Descriptor instead. func (NodeInfo_ActionFromRM) EnumDescriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{24, 0} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{22, 0} } // container scheduling states @@ -223,7 +223,7 @@ func (x UpdateContainerSchedulingStateRequest_SchedulingState) Number() protoref // Deprecated: Use UpdateContainerSchedulingStateRequest_SchedulingState.Descriptor instead. func (UpdateContainerSchedulingStateRequest_SchedulingState) EnumDescriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{30, 0} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{27, 0} } type EventRecord_Type int32 @@ -282,7 +282,7 @@ func (x EventRecord_Type) Number() protoreflect.EnumNumber { // Deprecated: Use EventRecord_Type.Descriptor instead. func (EventRecord_Type) EnumDescriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{32, 0} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29, 0} } type EventRecord_ChangeType int32 @@ -334,7 +334,7 @@ func (x EventRecord_ChangeType) Number() protoreflect.EnumNumber { // Deprecated: Use EventRecord_ChangeType.Descriptor instead. func (EventRecord_ChangeType) EnumDescriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{32, 1} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29, 1} } type EventRecord_ChangeDetail int32 @@ -503,7 +503,7 @@ func (x EventRecord_ChangeDetail) Number() protoreflect.EnumNumber { // Deprecated: Use EventRecord_ChangeDetail.Descriptor instead. func (EventRecord_ChangeDetail) EnumDescriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{32, 2} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29, 2} } type RegisterResourceManagerRequest struct { @@ -646,13 +646,11 @@ type AllocationRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // New allocation requests or replace existing allocation request (if allocationKey is same) - Asks []*AllocationAsk `protobuf:"bytes,1,rep,name=asks,proto3" json:"asks,omitempty"` // Allocations can be released. Releases *AllocationReleasesRequest `protobuf:"bytes,2,opt,name=releases,proto3" json:"releases,omitempty"` // ID of RM, this will be used to identify which RM of the request comes from. RmID string `protobuf:"bytes,3,opt,name=rmID,proto3" json:"rmID,omitempty"` - // Existing allocations to be added. + // Allocation to add or update. Allocations []*Allocation `protobuf:"bytes,4,rep,name=allocations,proto3" json:"allocations,omitempty"` } @@ -688,13 +686,6 @@ func (*AllocationRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{2} } -func (x *AllocationRequest) GetAsks() []*AllocationAsk { - if x != nil { - return x.Asks - } - return nil -} - func (x *AllocationRequest) GetReleases() *AllocationReleasesRequest { if x != nil { return x.Releases @@ -850,10 +841,6 @@ type AllocationResponse struct { // Released allocations, this could be either ack from scheduler when RM asks to terminate some allocations. // Or it could be decision made by scheduler (such as preemption or timeout). Released []*AllocationRelease `protobuf:"bytes,2,rep,name=released,proto3" json:"released,omitempty"` - // Released allocation asks(placeholder), when the placeholder allocation times out - ReleasedAsks []*AllocationAskRelease `protobuf:"bytes,3,rep,name=releasedAsks,proto3" json:"releasedAsks,omitempty"` - // Rejected allocation requests - Rejected []*RejectedAllocationAsk `protobuf:"bytes,4,rep,name=rejected,proto3" json:"rejected,omitempty"` // Rejected allocations RejectedAllocations []*RejectedAllocation `protobuf:"bytes,5,rep,name=rejectedAllocations,proto3" json:"rejectedAllocations,omitempty"` } @@ -904,20 +891,6 @@ func (x *AllocationResponse) GetReleased() []*AllocationRelease { return nil } -func (x *AllocationResponse) GetReleasedAsks() []*AllocationAskRelease { - if x != nil { - return x.ReleasedAsks - } - return nil -} - -func (x *AllocationResponse) GetRejected() []*RejectedAllocationAsk { - if x != nil { - return x.Rejected - } - return nil -} - func (x *AllocationResponse) GetRejectedAllocations() []*RejectedAllocation { if x != nil { return x.RejectedAllocations @@ -1429,142 +1402,6 @@ func (x *Quantity) GetValue() int64 { return 0 } -type AllocationAsk struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Allocation key is used by both of scheduler and RM to track allocations. - // It doesn't have to be same as RM's internal allocation id (such as Pod name of K8s or ContainerID of YARN). - // Allocations from the same AllocationAsk which are returned to the RM at the same time will have the same allocationKey. - // The request is considered an update of the existing AllocationAsk if an AllocationAsk with the same allocationKey - // already exists. - AllocationKey string `protobuf:"bytes,1,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"` - // The application ID this allocation ask belongs to - ApplicationID string `protobuf:"bytes,2,opt,name=applicationID,proto3" json:"applicationID,omitempty"` - // The partition the application belongs to - PartitionName string `protobuf:"bytes,3,opt,name=partitionName,proto3" json:"partitionName,omitempty"` - // The amount of resources per ask - ResourceAsk *Resource `protobuf:"bytes,4,opt,name=resourceAsk,proto3" json:"resourceAsk,omitempty"` - // Priority of ask - Priority int32 `protobuf:"varint,6,opt,name=priority,proto3" json:"priority,omitempty"` - // A set of tags for this spscific AllocationAsk. Allocation level tags are used in placing this specific - // ask on nodes in the cluster. These tags are used in the PlacementConstraints. - // These tags are optional. - Tags map[string]string `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // The name of the TaskGroup this ask belongs to - TaskGroupName string `protobuf:"bytes,9,opt,name=taskGroupName,proto3" json:"taskGroupName,omitempty"` - // Is this a placeholder ask (true) or a real ask (false), defaults to false - // ignored if the taskGroupName is not set - Placeholder bool `protobuf:"varint,10,opt,name=placeholder,proto3" json:"placeholder,omitempty"` - // Is this ask the originator of the application? - Originator bool `protobuf:"varint,11,opt,name=Originator,proto3" json:"Originator,omitempty"` - // The preemption policy for this ask - PreemptionPolicy *PreemptionPolicy `protobuf:"bytes,12,opt,name=preemptionPolicy,proto3" json:"preemptionPolicy,omitempty"` -} - -func (x *AllocationAsk) Reset() { - *x = AllocationAsk{} - if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AllocationAsk) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AllocationAsk) ProtoMessage() {} - -func (x *AllocationAsk) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AllocationAsk.ProtoReflect.Descriptor instead. -func (*AllocationAsk) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{15} -} - -func (x *AllocationAsk) GetAllocationKey() string { - if x != nil { - return x.AllocationKey - } - return "" -} - -func (x *AllocationAsk) GetApplicationID() string { - if x != nil { - return x.ApplicationID - } - return "" -} - -func (x *AllocationAsk) GetPartitionName() string { - if x != nil { - return x.PartitionName - } - return "" -} - -func (x *AllocationAsk) GetResourceAsk() *Resource { - if x != nil { - return x.ResourceAsk - } - return nil -} - -func (x *AllocationAsk) GetPriority() int32 { - if x != nil { - return x.Priority - } - return 0 -} - -func (x *AllocationAsk) GetTags() map[string]string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *AllocationAsk) GetTaskGroupName() string { - if x != nil { - return x.TaskGroupName - } - return "" -} - -func (x *AllocationAsk) GetPlaceholder() bool { - if x != nil { - return x.Placeholder - } - return false -} - -func (x *AllocationAsk) GetOriginator() bool { - if x != nil { - return x.Originator - } - return false -} - -func (x *AllocationAsk) GetPreemptionPolicy() *PreemptionPolicy { - if x != nil { - return x.PreemptionPolicy - } - return nil -} - type PreemptionPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1579,7 +1416,7 @@ type PreemptionPolicy struct { func (x *PreemptionPolicy) Reset() { *x = PreemptionPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[16] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1592,7 +1429,7 @@ func (x *PreemptionPolicy) String() string { func (*PreemptionPolicy) ProtoMessage() {} func (x *PreemptionPolicy) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[16] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1605,7 +1442,7 @@ func (x *PreemptionPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use PreemptionPolicy.ProtoReflect.Descriptor instead. func (*PreemptionPolicy) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{16} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{15} } func (x *PreemptionPolicy) GetAllowPreemptSelf() bool { @@ -1638,7 +1475,6 @@ type AddApplicationRequest struct { Ugi *UserGroupInformation `protobuf:"bytes,4,opt,name=ugi,proto3" json:"ugi,omitempty"` // A set of tags for the application. These tags provide application level generic information. // The tags are optional and are used in placing an application or scheduling. - // Application tags are not considered when processing AllocationAsks. Tags map[string]string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Execution timeout: How long this application can be in a running state // 0 or negative value means never expire. @@ -1653,7 +1489,7 @@ type AddApplicationRequest struct { func (x *AddApplicationRequest) Reset() { *x = AddApplicationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[17] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1666,7 +1502,7 @@ func (x *AddApplicationRequest) String() string { func (*AddApplicationRequest) ProtoMessage() {} func (x *AddApplicationRequest) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[17] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1679,7 +1515,7 @@ func (x *AddApplicationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddApplicationRequest.ProtoReflect.Descriptor instead. func (*AddApplicationRequest) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{17} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{16} } func (x *AddApplicationRequest) GetApplicationID() string { @@ -1752,7 +1588,7 @@ type RemoveApplicationRequest struct { func (x *RemoveApplicationRequest) Reset() { *x = RemoveApplicationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[18] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1765,7 +1601,7 @@ func (x *RemoveApplicationRequest) String() string { func (*RemoveApplicationRequest) ProtoMessage() {} func (x *RemoveApplicationRequest) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[18] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1778,7 +1614,7 @@ func (x *RemoveApplicationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveApplicationRequest.ProtoReflect.Descriptor instead. func (*RemoveApplicationRequest) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{18} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{17} } func (x *RemoveApplicationRequest) GetApplicationID() string { @@ -1809,7 +1645,7 @@ type UserGroupInformation struct { func (x *UserGroupInformation) Reset() { *x = UserGroupInformation{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[19] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1822,7 +1658,7 @@ func (x *UserGroupInformation) String() string { func (*UserGroupInformation) ProtoMessage() {} func (x *UserGroupInformation) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[19] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1835,7 +1671,7 @@ func (x *UserGroupInformation) ProtoReflect() protoreflect.Message { // Deprecated: Use UserGroupInformation.ProtoReflect.Descriptor instead. func (*UserGroupInformation) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{19} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{18} } func (x *UserGroupInformation) GetUser() string { @@ -1857,13 +1693,13 @@ type Allocation struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // AllocationKey from AllocationAsk + // Allocation key AllocationKey string `protobuf:"bytes,1,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"` - // Allocation tags from AllocationAsk + // Allocation tags AllocationTags map[string]string `protobuf:"bytes,2,rep,name=allocationTags,proto3" json:"allocationTags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource for each allocation ResourcePerAlloc *Resource `protobuf:"bytes,5,opt,name=resourcePerAlloc,proto3" json:"resourcePerAlloc,omitempty"` - // Priority of ask + // Priority of allocation Priority int32 `protobuf:"varint,6,opt,name=priority,proto3" json:"priority,omitempty"` // Node which the allocation belongs to NodeID string `protobuf:"bytes,8,opt,name=nodeID,proto3" json:"nodeID,omitempty"` @@ -1885,7 +1721,7 @@ type Allocation struct { func (x *Allocation) Reset() { *x = Allocation{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[20] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1898,7 +1734,7 @@ func (x *Allocation) String() string { func (*Allocation) ProtoMessage() {} func (x *Allocation) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[20] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1911,7 +1747,7 @@ func (x *Allocation) ProtoReflect() protoreflect.Message { // Deprecated: Use Allocation.ProtoReflect.Descriptor instead. func (*Allocation) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{20} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{19} } func (x *Allocation) GetAllocationKey() string { @@ -1998,14 +1834,12 @@ type AllocationReleasesRequest struct { // The allocations to release AllocationsToRelease []*AllocationRelease `protobuf:"bytes,1,rep,name=allocationsToRelease,proto3" json:"allocationsToRelease,omitempty"` - // The asks to release - AllocationAsksToRelease []*AllocationAskRelease `protobuf:"bytes,2,rep,name=allocationAsksToRelease,proto3" json:"allocationAsksToRelease,omitempty"` } func (x *AllocationReleasesRequest) Reset() { *x = AllocationReleasesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[21] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2018,7 +1852,7 @@ func (x *AllocationReleasesRequest) String() string { func (*AllocationReleasesRequest) ProtoMessage() {} func (x *AllocationReleasesRequest) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[21] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2031,7 +1865,7 @@ func (x *AllocationReleasesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AllocationReleasesRequest.ProtoReflect.Descriptor instead. func (*AllocationReleasesRequest) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{21} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{20} } func (x *AllocationReleasesRequest) GetAllocationsToRelease() []*AllocationRelease { @@ -2041,13 +1875,6 @@ func (x *AllocationReleasesRequest) GetAllocationsToRelease() []*AllocationRelea return nil } -func (x *AllocationReleasesRequest) GetAllocationAsksToRelease() []*AllocationAskRelease { - if x != nil { - return x.AllocationAsksToRelease - } - return nil -} - // Release allocation: this is a bidirectional message. The Terminationtype defines the origin, or creator, // as per the comment. The confirmation or response from the receiver is the same message with the same // termination type set. @@ -2071,7 +1898,7 @@ type AllocationRelease struct { func (x *AllocationRelease) Reset() { *x = AllocationRelease{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[22] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2084,7 +1911,7 @@ func (x *AllocationRelease) String() string { func (*AllocationRelease) ProtoMessage() {} func (x *AllocationRelease) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[22] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2097,7 +1924,7 @@ func (x *AllocationRelease) ProtoReflect() protoreflect.Message { // Deprecated: Use AllocationRelease.ProtoReflect.Descriptor instead. func (*AllocationRelease) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{22} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{21} } func (x *AllocationRelease) GetPartitionName() string { @@ -2135,92 +1962,6 @@ func (x *AllocationRelease) GetAllocationKey() string { return "" } -// Release ask -type AllocationAskRelease struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Which partition to release the ask from, required. - PartitionName string `protobuf:"bytes,1,opt,name=partitionName,proto3" json:"partitionName,omitempty"` - // optional, when this is set, filter allocation key by application id. - // when application id is set and allocationKey is not set, release all allocations key under the application id. - ApplicationID string `protobuf:"bytes,2,opt,name=applicationID,proto3" json:"applicationID,omitempty"` - // optional, when this is set, only release allocation ask by specified - AllocationKey string `protobuf:"bytes,3,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"` - // Termination type of the released allocation ask - TerminationType TerminationType `protobuf:"varint,4,opt,name=terminationType,proto3,enum=si.v1.TerminationType" json:"terminationType,omitempty"` - // For human-readable message - Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` -} - -func (x *AllocationAskRelease) Reset() { - *x = AllocationAskRelease{} - if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AllocationAskRelease) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AllocationAskRelease) ProtoMessage() {} - -func (x *AllocationAskRelease) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AllocationAskRelease.ProtoReflect.Descriptor instead. -func (*AllocationAskRelease) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{23} -} - -func (x *AllocationAskRelease) GetPartitionName() string { - if x != nil { - return x.PartitionName - } - return "" -} - -func (x *AllocationAskRelease) GetApplicationID() string { - if x != nil { - return x.ApplicationID - } - return "" -} - -func (x *AllocationAskRelease) GetAllocationKey() string { - if x != nil { - return x.AllocationKey - } - return "" -} - -func (x *AllocationAskRelease) GetTerminationType() TerminationType { - if x != nil { - return x.TerminationType - } - return TerminationType_UNKNOWN_TERMINATION_TYPE -} - -func (x *AllocationAskRelease) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - type NodeInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2243,7 +1984,7 @@ type NodeInfo struct { func (x *NodeInfo) Reset() { *x = NodeInfo{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[24] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2256,7 +1997,7 @@ func (x *NodeInfo) String() string { func (*NodeInfo) ProtoMessage() {} func (x *NodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[24] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2269,7 +2010,7 @@ func (x *NodeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeInfo.ProtoReflect.Descriptor instead. func (*NodeInfo) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{24} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{22} } func (x *NodeInfo) GetNodeID() string { @@ -2307,72 +2048,6 @@ func (x *NodeInfo) GetOccupiedResource() *Resource { return nil } -type RejectedAllocationAsk struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // the ID of the allocation ask - AllocationKey string `protobuf:"bytes,1,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"` - // The ID of the application - ApplicationID string `protobuf:"bytes,2,opt,name=applicationID,proto3" json:"applicationID,omitempty"` - // A human-readable reason message - Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` -} - -func (x *RejectedAllocationAsk) Reset() { - *x = RejectedAllocationAsk{} - if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RejectedAllocationAsk) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RejectedAllocationAsk) ProtoMessage() {} - -func (x *RejectedAllocationAsk) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RejectedAllocationAsk.ProtoReflect.Descriptor instead. -func (*RejectedAllocationAsk) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{25} -} - -func (x *RejectedAllocationAsk) GetAllocationKey() string { - if x != nil { - return x.AllocationKey - } - return "" -} - -func (x *RejectedAllocationAsk) GetApplicationID() string { - if x != nil { - return x.ApplicationID - } - return "" -} - -func (x *RejectedAllocationAsk) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - type RejectedAllocation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2389,7 +2064,7 @@ type RejectedAllocation struct { func (x *RejectedAllocation) Reset() { *x = RejectedAllocation{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[26] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2402,7 +2077,7 @@ func (x *RejectedAllocation) String() string { func (*RejectedAllocation) ProtoMessage() {} func (x *RejectedAllocation) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[26] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2415,7 +2090,7 @@ func (x *RejectedAllocation) ProtoReflect() protoreflect.Message { // Deprecated: Use RejectedAllocation.ProtoReflect.Descriptor instead. func (*RejectedAllocation) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{26} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{23} } func (x *RejectedAllocation) GetAllocationKey() string { @@ -2456,7 +2131,7 @@ type PredicatesArgs struct { func (x *PredicatesArgs) Reset() { *x = PredicatesArgs{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[27] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2469,7 +2144,7 @@ func (x *PredicatesArgs) String() string { func (*PredicatesArgs) ProtoMessage() {} func (x *PredicatesArgs) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[27] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2482,7 +2157,7 @@ func (x *PredicatesArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use PredicatesArgs.ProtoReflect.Descriptor instead. func (*PredicatesArgs) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{27} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{24} } func (x *PredicatesArgs) GetAllocationKey() string { @@ -2524,7 +2199,7 @@ type PreemptionPredicatesArgs struct { func (x *PreemptionPredicatesArgs) Reset() { *x = PreemptionPredicatesArgs{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[28] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2537,7 +2212,7 @@ func (x *PreemptionPredicatesArgs) String() string { func (*PreemptionPredicatesArgs) ProtoMessage() {} func (x *PreemptionPredicatesArgs) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[28] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2550,7 +2225,7 @@ func (x *PreemptionPredicatesArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use PreemptionPredicatesArgs.ProtoReflect.Descriptor instead. func (*PreemptionPredicatesArgs) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{28} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{25} } func (x *PreemptionPredicatesArgs) GetAllocationKey() string { @@ -2595,7 +2270,7 @@ type PreemptionPredicatesResponse struct { func (x *PreemptionPredicatesResponse) Reset() { *x = PreemptionPredicatesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[29] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2608,7 +2283,7 @@ func (x *PreemptionPredicatesResponse) String() string { func (*PreemptionPredicatesResponse) ProtoMessage() {} func (x *PreemptionPredicatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[29] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2621,7 +2296,7 @@ func (x *PreemptionPredicatesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PreemptionPredicatesResponse.ProtoReflect.Descriptor instead. func (*PreemptionPredicatesResponse) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{26} } func (x *PreemptionPredicatesResponse) GetSuccess() bool { @@ -2656,7 +2331,7 @@ type UpdateContainerSchedulingStateRequest struct { func (x *UpdateContainerSchedulingStateRequest) Reset() { *x = UpdateContainerSchedulingStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[30] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2669,7 +2344,7 @@ func (x *UpdateContainerSchedulingStateRequest) String() string { func (*UpdateContainerSchedulingStateRequest) ProtoMessage() {} func (x *UpdateContainerSchedulingStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[30] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2682,7 +2357,7 @@ func (x *UpdateContainerSchedulingStateRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use UpdateContainerSchedulingStateRequest.ProtoReflect.Descriptor instead. func (*UpdateContainerSchedulingStateRequest) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{30} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{27} } func (x *UpdateContainerSchedulingStateRequest) GetApplicationID() string { @@ -2731,7 +2406,7 @@ type UpdateConfigurationRequest struct { func (x *UpdateConfigurationRequest) Reset() { *x = UpdateConfigurationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[31] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2744,7 +2419,7 @@ func (x *UpdateConfigurationRequest) String() string { func (*UpdateConfigurationRequest) ProtoMessage() {} func (x *UpdateConfigurationRequest) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[31] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2757,7 +2432,7 @@ func (x *UpdateConfigurationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateConfigurationRequest.ProtoReflect.Descriptor instead. func (*UpdateConfigurationRequest) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{31} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{28} } func (x *UpdateConfigurationRequest) GetRmID() string { @@ -2814,7 +2489,7 @@ type EventRecord struct { func (x *EventRecord) Reset() { *x = EventRecord{} if protoimpl.UnsafeEnabled { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[32] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2827,7 +2502,7 @@ func (x *EventRecord) String() string { func (*EventRecord) ProtoMessage() {} func (x *EventRecord) ProtoReflect() protoreflect.Message { - mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[32] + mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2840,7 +2515,7 @@ func (x *EventRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use EventRecord.ProtoReflect.Descriptor instead. func (*EventRecord) Descriptor() ([]byte, []int) { - return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{32} + return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29} } func (x *EventRecord) GetType() EventRecord_Type { @@ -2956,509 +2631,441 @@ var file_yunikorn_scheduler_interface_si_proto_rawDesc = []byte{ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x21, 0x0a, 0x1f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x11, 0x41, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x11, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x28, 0x0a, 0x04, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x73, 0x6b, 0x52, 0x04, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6d, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x33, 0x0a, 0x0b, - 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x91, 0x01, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, - 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x12, 0x37, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x72, 0x6d, 0x49, 0x44, 0x22, 0x48, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, - 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x22, - 0xb7, 0x02, 0x0a, 0x12, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x12, 0x34, 0x0a, 0x08, 0x72, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x64, 0x12, 0x3f, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x73, 0x6b, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x73, - 0x6b, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6a, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x73, 0x6b, 0x52, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x13, - 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x13, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6a, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x61, 0x63, 0x63, - 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, - 0x64, 0x12, 0x33, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x70, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, - 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x22, 0xa6, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x18, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x53, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6d, + 0x49, 0x44, 0x12, 0x33, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x61, + 0x73, 0x6b, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x03, 0x6e, 0x65, + 0x77, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x12, 0x37, 0x0a, 0x06, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x06, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x22, 0x48, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, + 0x44, 0x22, 0xe0, 0x01, 0x0a, 0x12, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x12, 0x34, 0x0a, + 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, + 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x72, 0x65, 0x6a, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0c, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x73, 0x6b, 0x73, 0x52, 0x08, 0x72, 0x65, 0x6a, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, + 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72, 0x65, 0x6a, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x07, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x22, 0x70, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6a, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x65, 0x64, 0x22, 0xa6, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x18, 0x73, 0x74, 0x61, 0x74, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x73, 0x74, 0x61, 0x74, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x53, 0x0a, 0x13, + 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x22, 0x3b, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, - 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x22, 0x3e, 0x0a, 0x0c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, - 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x4e, - 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x22, 0x97, 0x01, 0x0a, 0x08, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x4d, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x08, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa4, 0x04, 0x0a, 0x0d, 0x41, 0x6c, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, - 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0b, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x73, 0x6b, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x2e, 0x54, - 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x24, - 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, - 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x10, 0x70, 0x72, 0x65, 0x65, 0x6d, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x37, 0x0a, 0x09, 0x54, + 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x3e, + 0x0a, 0x0c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x26, + 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x22, 0x97, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x1a, 0x4d, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x20, 0x0a, 0x08, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x6c, 0x0a, 0x10, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, + 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x53, 0x65, + 0x6c, 0x66, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x65, 0x6d, + 0x70, 0x74, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x4f, 0x74, 0x68, 0x65, 0x72, + 0x22, 0xd4, 0x03, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, + 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, + 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x03, 0x75, 0x67, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, + 0x75, 0x67, 0x69, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, + 0x42, 0x0a, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x53, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x12, 0x37, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, + 0x65, 0x72, 0x41, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0e, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x41, 0x73, 0x6b, 0x12, 0x30, 0x0a, 0x13, + 0x67, 0x61, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, + 0x79, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x67, 0x61, 0x6e, 0x67, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x1a, 0x37, + 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x66, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x42, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x22, 0xdf, 0x04, 0x0a, 0x0a, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x50, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x65, 0x72, 0x41, + 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24, + 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x73, + 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x10, + 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x10, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x1a, 0x41, 0x0a, 0x13, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, - 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x6c, - 0x0a, 0x10, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x65, 0x6d, - 0x70, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x12, 0x2c, - 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x4f, 0x74, - 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x22, 0xd4, 0x03, 0x0a, - 0x15, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, - 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x03, 0x75, 0x67, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x75, 0x67, 0x69, 0x12, - 0x3a, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x42, 0x0a, 0x1c, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, - 0x69, 0x6c, 0x6c, 0x69, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, - 0x37, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x41, 0x73, - 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x41, 0x73, 0x6b, 0x12, 0x30, 0x0a, 0x13, 0x67, 0x61, 0x6e, 0x67, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x67, 0x61, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, - 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x66, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x14, 0x55, - 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, - 0xdf, 0x04, 0x0a, 0x0a, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, + 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, + 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x88, 0x01, 0x0a, 0x19, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x14, 0x61, 0x6c, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x22, 0x81, 0x02, 0x0a, 0x11, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x44, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, - 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, + 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x85, 0x04, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x4d, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3f, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x12, 0x41, 0x0a, 0x13, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x13, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x10, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, - 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, - 0x64, 0x65, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x65, - 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x65, 0x6d, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x10, 0x70, 0x72, 0x65, - 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x41, 0x0a, - 0x13, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x0d, - 0x10, 0x0e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x55, - 0x55, 0x49, 0x44, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x22, 0xc0, 0x01, 0x0a, 0x19, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x4c, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, - 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x55, 0x0a, - 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x73, 0x54, - 0x6f, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x8f, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x4d, + 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x52, 0x4d, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, + 0x54, 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, + 0x44, 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x49, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x54, + 0x4f, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, + 0x10, 0x0a, 0x0c, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x10, + 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x13, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x78, 0x0a, 0x12, + 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x6a, 0x0a, 0x0e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x16, + 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, + 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, + 0x15, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x70, 0x72, + 0x65, 0x65, 0x6d, 0x70, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, + 0x65, 0x79, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x22, 0x4e, 0x0a, 0x1c, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x22, 0xc6, 0x02, 0x0a, 0x25, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, + 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, + 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, + 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x0f, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0x8f, 0x02, 0x0a, + 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, + 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x12, + 0x20, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x54, 0x0a, 0x0b, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, + 0x3e, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0xc7, + 0x0b, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2b, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x61, + 0x6e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x4e, 0x61, 0x6e, 0x6f, 0x12, 0x47, 0x0a, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1d, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x4d, 0x0a, 0x11, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x11, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, + 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, + 0x44, 0x12, 0x2b, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x5e, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, + 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x50, 0x50, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, + 0x44, 0x45, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x55, 0x53, 0x45, 0x52, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x05, 0x22, 0x34, + 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, + 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, + 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, + 0x56, 0x45, 0x10, 0x03, 0x22, 0x94, 0x07, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x53, + 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0x64, 0x12, 0x11, 0x0a, 0x0d, 0x52, + 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0x65, 0x12, 0x13, + 0x0a, 0x0f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, + 0x54, 0x10, 0x66, 0x12, 0x0e, 0x0a, 0x09, 0x41, 0x50, 0x50, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, + 0x10, 0xc8, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x10, 0xc9, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x45, 0x4a, + 0x45, 0x43, 0x54, 0x10, 0xca, 0x01, 0x12, 0x0c, 0x0a, 0x07, 0x41, 0x50, 0x50, 0x5f, 0x4e, 0x45, + 0x57, 0x10, 0xcb, 0x01, 0x12, 0x11, 0x0a, 0x0c, 0x41, 0x50, 0x50, 0x5f, 0x41, 0x43, 0x43, 0x45, + 0x50, 0x54, 0x45, 0x44, 0x10, 0xcc, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x52, + 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0xce, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x50, 0x50, + 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0xcf, 0x01, 0x12, 0x12, + 0x0a, 0x0d, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, + 0xd0, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x49, 0x4e, + 0x47, 0x10, 0xd1, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x41, 0x50, 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, + 0x45, 0x44, 0x10, 0xd2, 0x01, 0x12, 0x11, 0x0a, 0x0c, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x45, 0x53, + 0x55, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0xd3, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, + 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0xd4, 0x01, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x50, + 0x50, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x52, 0x55, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x55, + 0x45, 0x10, 0xd5, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xd6, 0x01, 0x12, 0x18, 0x0a, + 0x13, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x52, 0x55, 0x4e, 0x5f, 0x51, + 0x55, 0x4f, 0x54, 0x41, 0x10, 0xd7, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x50, 0x50, 0x5f, 0x52, + 0x55, 0x4e, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0xd8, 0x01, + 0x12, 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x49, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xac, 0x02, 0x12, 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, + 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xae, 0x02, 0x12, 0x0f, + 0x0a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0xaf, 0x02, 0x12, + 0x12, 0x0a, 0x0d, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, + 0x10, 0xb0, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x43, 0x43, 0x55, + 0x50, 0x49, 0x45, 0x44, 0x10, 0xb1, 0x02, 0x12, 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, + 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xb2, 0x02, 0x12, 0x11, + 0x0a, 0x0c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x90, + 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, + 0x49, 0x43, 0x10, 0x91, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x92, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, + 0x4d, 0x41, 0x58, 0x10, 0x93, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, + 0x47, 0x55, 0x41, 0x52, 0x41, 0x4e, 0x54, 0x45, 0x45, 0x44, 0x10, 0x94, 0x03, 0x12, 0x0e, 0x0a, + 0x09, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x95, 0x03, 0x12, 0x10, 0x0a, + 0x0b, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0x96, 0x03, 0x12, + 0x11, 0x0a, 0x0c, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, + 0xf4, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x50, 0x52, 0x45, 0x45, + 0x4d, 0x50, 0x54, 0x10, 0xf5, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, + 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0xf6, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x4c, + 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x44, 0x10, 0xf7, 0x03, 0x12, + 0x16, 0x0a, 0x11, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x52, 0x45, 0x4d, + 0x4f, 0x56, 0x45, 0x44, 0x10, 0xf8, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x55, 0x47, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0xd8, 0x04, 0x12, 0x13, 0x0a, 0x0e, 0x55, + 0x47, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0xd9, 0x04, + 0x12, 0x10, 0x0a, 0x0b, 0x55, 0x47, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, + 0xda, 0x04, 0x12, 0x15, 0x0a, 0x10, 0x55, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0xdb, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x55, 0x47, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0xdc, + 0x04, 0x22, 0x06, 0x08, 0xcd, 0x01, 0x10, 0xcd, 0x01, 0x22, 0x06, 0x08, 0xad, 0x02, 0x10, 0xad, + 0x02, 0x2a, 0x0c, 0x41, 0x50, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x2a, + 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, + 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2a, 0x85, 0x01, 0x0a, 0x0f, 0x54, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, + 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, + 0x45, 0x45, 0x4d, 0x50, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, + 0x55, 0x4c, 0x45, 0x52, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x48, + 0x4f, 0x4c, 0x44, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x44, 0x10, 0x04, + 0x32, 0xd5, 0x02, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x6a, + 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x10, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x73, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x17, 0x61, 0x6c, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x11, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x16, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, - 0x08, 0x07, 0x10, 0x08, 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0xe4, 0x01, 0x0a, 0x14, 0x41, 0x6c, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a, - 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0x85, 0x04, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, - 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, - 0x64, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, - 0x52, 0x4d, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0a, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x13, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x13, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3b, - 0x0a, 0x10, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, 0x6f, 0x63, 0x63, 0x75, 0x70, - 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8f, 0x01, 0x0a, 0x0c, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x4d, 0x12, 0x1a, 0x0a, 0x16, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x52, - 0x4f, 0x4d, 0x5f, 0x52, 0x4d, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, - 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, - 0x0e, 0x0a, 0x0a, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, - 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, - 0x12, 0x18, 0x0a, 0x14, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x43, 0x48, - 0x45, 0x44, 0x55, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, - 0x10, 0x07, 0x52, 0x13, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x6c, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7b, 0x0a, 0x15, 0x52, 0x65, 0x6a, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, - 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x78, 0x0a, 0x12, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, - 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x6a, - 0x0a, 0x0e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, - 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x1a, - 0x0a, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x18, 0x50, - 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, - 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, - 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x15, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, - 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x41, 0x6c, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x4e, 0x0a, 0x1c, 0x50, - 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xc6, 0x02, 0x0a, 0x25, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, - 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x12, 0x52, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, - 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x65, 0x0a, - 0x0f, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45, - 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, - 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, - 0x45, 0x44, 0x10, 0x04, 0x22, 0x8f, 0x02, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x54, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x3e, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x72, 0x61, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0xc7, 0x0b, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, - 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x61, 0x6e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x61, 0x6e, 0x6f, 0x12, - 0x47, 0x0a, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x11, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x11, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x12, 0x2b, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x52, - 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, - 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x50, 0x50, - 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, - 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x53, 0x45, 0x52, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x10, 0x05, 0x22, 0x34, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, - 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x02, - 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x03, 0x22, 0x94, 0x07, 0x0a, - 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, - 0x0c, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, - 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, - 0x4c, 0x10, 0x64, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, - 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, - 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x66, 0x12, 0x0e, 0x0a, 0x09, 0x41, - 0x50, 0x50, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0xc8, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x41, - 0x50, 0x50, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0xc9, 0x01, 0x12, 0x0f, 0x0a, - 0x0a, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x10, 0xca, 0x01, 0x12, 0x0c, - 0x0a, 0x07, 0x41, 0x50, 0x50, 0x5f, 0x4e, 0x45, 0x57, 0x10, 0xcb, 0x01, 0x12, 0x11, 0x0a, 0x0c, - 0x41, 0x50, 0x50, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0xcc, 0x01, 0x12, - 0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0xce, - 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, - 0x49, 0x4e, 0x47, 0x10, 0xcf, 0x01, 0x12, 0x12, 0x0a, 0x0d, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x4f, - 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xd0, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x50, - 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0xd1, 0x01, 0x12, 0x0f, 0x0a, 0x0a, - 0x41, 0x50, 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0xd2, 0x01, 0x12, 0x11, 0x0a, - 0x0c, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0xd3, 0x01, - 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, - 0xd4, 0x01, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, - 0x52, 0x55, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xd5, 0x01, 0x12, 0x17, 0x0a, 0x12, - 0x41, 0x50, 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x10, 0xd6, 0x01, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x41, 0x4e, - 0x4e, 0x4f, 0x54, 0x52, 0x55, 0x4e, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0xd7, 0x01, 0x12, - 0x17, 0x0a, 0x12, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0xd8, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, - 0x5f, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xac, 0x02, 0x12, - 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0xae, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41, - 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0xaf, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x4f, 0x44, 0x45, 0x5f, - 0x43, 0x41, 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, 0x10, 0xb0, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x4e, - 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x49, 0x45, 0x44, 0x10, 0xb1, 0x02, 0x12, - 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0xb2, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, - 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x90, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x91, 0x03, 0x12, 0x0f, 0x0a, - 0x0a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x92, 0x03, 0x12, 0x0e, - 0x0a, 0x09, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x93, 0x03, 0x12, 0x15, - 0x0a, 0x10, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x47, 0x55, 0x41, 0x52, 0x41, 0x4e, 0x54, 0x45, - 0x45, 0x44, 0x10, 0x94, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, - 0x50, 0x50, 0x10, 0x95, 0x03, 0x12, 0x10, 0x0a, 0x0b, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, - 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0x96, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x41, 0x4c, 0x4c, 0x4f, 0x43, - 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0xf4, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x41, 0x4c, - 0x4c, 0x4f, 0x43, 0x5f, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54, 0x10, 0xf5, 0x03, 0x12, 0x12, - 0x0a, 0x0d, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, - 0xf6, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x50, 0x4c, - 0x41, 0x43, 0x45, 0x44, 0x10, 0xf7, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x41, 0x4c, 0x4c, 0x4f, 0x43, - 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0xf8, 0x03, 0x12, - 0x12, 0x0a, 0x0d, 0x55, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, - 0x10, 0xd8, 0x04, 0x12, 0x13, 0x0a, 0x0e, 0x55, 0x47, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, - 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0xd9, 0x04, 0x12, 0x10, 0x0a, 0x0b, 0x55, 0x47, 0x5f, 0x41, - 0x50, 0x50, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0xda, 0x04, 0x12, 0x15, 0x0a, 0x10, 0x55, 0x47, - 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0xdb, - 0x04, 0x12, 0x16, 0x0a, 0x11, 0x55, 0x47, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0xdc, 0x04, 0x22, 0x06, 0x08, 0xcd, 0x01, 0x10, 0xcd, - 0x01, 0x22, 0x06, 0x08, 0xad, 0x02, 0x10, 0xad, 0x02, 0x2a, 0x0c, 0x41, 0x50, 0x50, 0x5f, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x2a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, - 0x41, 0x44, 0x59, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x2a, 0x85, 0x01, 0x0a, 0x0f, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, - 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, - 0x5f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, - 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54, 0x45, 0x44, 0x5f, - 0x42, 0x59, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x03, 0x12, 0x18, - 0x0a, 0x14, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x45, 0x52, 0x5f, 0x52, 0x45, - 0x50, 0x4c, 0x41, 0x43, 0x45, 0x44, 0x10, 0x04, 0x32, 0xd5, 0x02, 0x0a, 0x09, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x6a, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x12, 0x25, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, - 0x01, 0x12, 0x50, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, - 0x01, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, - 0x65, 0x12, 0x12, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, - 0x3a, 0x3b, 0x0a, 0x09, 0x73, 0x69, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x69, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b, 0x5a, - 0x09, 0x6c, 0x69, 0x62, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x50, 0x0a, 0x11, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, + 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x0a, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x2e, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x3a, 0x3b, 0x0a, 0x09, 0x73, 0x69, 0x5f, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x69, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b, 0x5a, 0x09, 0x6c, 0x69, 0x62, 0x2f, 0x67, 0x6f, 0x2f, + 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3474,7 +3081,7 @@ func file_yunikorn_scheduler_interface_si_proto_rawDescGZIP() []byte { } var file_yunikorn_scheduler_interface_si_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_yunikorn_scheduler_interface_si_proto_msgTypes = make([]protoimpl.MessageInfo, 41) +var file_yunikorn_scheduler_interface_si_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_yunikorn_scheduler_interface_si_proto_goTypes = []interface{}{ (TerminationType)(0), // 0: si.v1.TerminationType (NodeInfo_ActionFromRM)(0), // 1: si.v1.NodeInfo.ActionFromRM @@ -3497,92 +3104,80 @@ var file_yunikorn_scheduler_interface_si_proto_goTypes = []interface{}{ (*AcceptedNode)(nil), // 18: si.v1.AcceptedNode (*Resource)(nil), // 19: si.v1.Resource (*Quantity)(nil), // 20: si.v1.Quantity - (*AllocationAsk)(nil), // 21: si.v1.AllocationAsk - (*PreemptionPolicy)(nil), // 22: si.v1.PreemptionPolicy - (*AddApplicationRequest)(nil), // 23: si.v1.AddApplicationRequest - (*RemoveApplicationRequest)(nil), // 24: si.v1.RemoveApplicationRequest - (*UserGroupInformation)(nil), // 25: si.v1.UserGroupInformation - (*Allocation)(nil), // 26: si.v1.Allocation - (*AllocationReleasesRequest)(nil), // 27: si.v1.AllocationReleasesRequest - (*AllocationRelease)(nil), // 28: si.v1.AllocationRelease - (*AllocationAskRelease)(nil), // 29: si.v1.AllocationAskRelease - (*NodeInfo)(nil), // 30: si.v1.NodeInfo - (*RejectedAllocationAsk)(nil), // 31: si.v1.RejectedAllocationAsk - (*RejectedAllocation)(nil), // 32: si.v1.RejectedAllocation - (*PredicatesArgs)(nil), // 33: si.v1.PredicatesArgs - (*PreemptionPredicatesArgs)(nil), // 34: si.v1.PreemptionPredicatesArgs - (*PreemptionPredicatesResponse)(nil), // 35: si.v1.PreemptionPredicatesResponse - (*UpdateContainerSchedulingStateRequest)(nil), // 36: si.v1.UpdateContainerSchedulingStateRequest - (*UpdateConfigurationRequest)(nil), // 37: si.v1.UpdateConfigurationRequest - (*EventRecord)(nil), // 38: si.v1.EventRecord - nil, // 39: si.v1.RegisterResourceManagerRequest.BuildInfoEntry - nil, // 40: si.v1.RegisterResourceManagerRequest.ExtraConfigEntry - nil, // 41: si.v1.Resource.ResourcesEntry - nil, // 42: si.v1.AllocationAsk.TagsEntry - nil, // 43: si.v1.AddApplicationRequest.TagsEntry - nil, // 44: si.v1.Allocation.AllocationTagsEntry - nil, // 45: si.v1.NodeInfo.AttributesEntry - nil, // 46: si.v1.UpdateConfigurationRequest.ExtraConfigEntry - (*descriptorpb.FieldOptions)(nil), // 47: google.protobuf.FieldOptions + (*PreemptionPolicy)(nil), // 21: si.v1.PreemptionPolicy + (*AddApplicationRequest)(nil), // 22: si.v1.AddApplicationRequest + (*RemoveApplicationRequest)(nil), // 23: si.v1.RemoveApplicationRequest + (*UserGroupInformation)(nil), // 24: si.v1.UserGroupInformation + (*Allocation)(nil), // 25: si.v1.Allocation + (*AllocationReleasesRequest)(nil), // 26: si.v1.AllocationReleasesRequest + (*AllocationRelease)(nil), // 27: si.v1.AllocationRelease + (*NodeInfo)(nil), // 28: si.v1.NodeInfo + (*RejectedAllocation)(nil), // 29: si.v1.RejectedAllocation + (*PredicatesArgs)(nil), // 30: si.v1.PredicatesArgs + (*PreemptionPredicatesArgs)(nil), // 31: si.v1.PreemptionPredicatesArgs + (*PreemptionPredicatesResponse)(nil), // 32: si.v1.PreemptionPredicatesResponse + (*UpdateContainerSchedulingStateRequest)(nil), // 33: si.v1.UpdateContainerSchedulingStateRequest + (*UpdateConfigurationRequest)(nil), // 34: si.v1.UpdateConfigurationRequest + (*EventRecord)(nil), // 35: si.v1.EventRecord + nil, // 36: si.v1.RegisterResourceManagerRequest.BuildInfoEntry + nil, // 37: si.v1.RegisterResourceManagerRequest.ExtraConfigEntry + nil, // 38: si.v1.Resource.ResourcesEntry + nil, // 39: si.v1.AddApplicationRequest.TagsEntry + nil, // 40: si.v1.Allocation.AllocationTagsEntry + nil, // 41: si.v1.NodeInfo.AttributesEntry + nil, // 42: si.v1.UpdateConfigurationRequest.ExtraConfigEntry + (*descriptorpb.FieldOptions)(nil), // 43: google.protobuf.FieldOptions } var file_yunikorn_scheduler_interface_si_proto_depIdxs = []int32{ - 39, // 0: si.v1.RegisterResourceManagerRequest.buildInfo:type_name -> si.v1.RegisterResourceManagerRequest.BuildInfoEntry - 40, // 1: si.v1.RegisterResourceManagerRequest.extraConfig:type_name -> si.v1.RegisterResourceManagerRequest.ExtraConfigEntry - 21, // 2: si.v1.AllocationRequest.asks:type_name -> si.v1.AllocationAsk - 27, // 3: si.v1.AllocationRequest.releases:type_name -> si.v1.AllocationReleasesRequest - 26, // 4: si.v1.AllocationRequest.allocations:type_name -> si.v1.Allocation - 23, // 5: si.v1.ApplicationRequest.new:type_name -> si.v1.AddApplicationRequest - 24, // 6: si.v1.ApplicationRequest.remove:type_name -> si.v1.RemoveApplicationRequest - 30, // 7: si.v1.NodeRequest.nodes:type_name -> si.v1.NodeInfo - 26, // 8: si.v1.AllocationResponse.new:type_name -> si.v1.Allocation - 28, // 9: si.v1.AllocationResponse.released:type_name -> si.v1.AllocationRelease - 29, // 10: si.v1.AllocationResponse.releasedAsks:type_name -> si.v1.AllocationAskRelease - 31, // 11: si.v1.AllocationResponse.rejected:type_name -> si.v1.RejectedAllocationAsk - 32, // 12: si.v1.AllocationResponse.rejectedAllocations:type_name -> si.v1.RejectedAllocation - 15, // 13: si.v1.ApplicationResponse.rejected:type_name -> si.v1.RejectedApplication - 16, // 14: si.v1.ApplicationResponse.accepted:type_name -> si.v1.AcceptedApplication - 14, // 15: si.v1.ApplicationResponse.updated:type_name -> si.v1.UpdatedApplication - 17, // 16: si.v1.NodeResponse.rejected:type_name -> si.v1.RejectedNode - 18, // 17: si.v1.NodeResponse.accepted:type_name -> si.v1.AcceptedNode - 41, // 18: si.v1.Resource.resources:type_name -> si.v1.Resource.ResourcesEntry - 19, // 19: si.v1.AllocationAsk.resourceAsk:type_name -> si.v1.Resource - 42, // 20: si.v1.AllocationAsk.tags:type_name -> si.v1.AllocationAsk.TagsEntry - 22, // 21: si.v1.AllocationAsk.preemptionPolicy:type_name -> si.v1.PreemptionPolicy - 25, // 22: si.v1.AddApplicationRequest.ugi:type_name -> si.v1.UserGroupInformation - 43, // 23: si.v1.AddApplicationRequest.tags:type_name -> si.v1.AddApplicationRequest.TagsEntry - 19, // 24: si.v1.AddApplicationRequest.placeholderAsk:type_name -> si.v1.Resource - 44, // 25: si.v1.Allocation.allocationTags:type_name -> si.v1.Allocation.AllocationTagsEntry - 19, // 26: si.v1.Allocation.resourcePerAlloc:type_name -> si.v1.Resource - 22, // 27: si.v1.Allocation.preemptionPolicy:type_name -> si.v1.PreemptionPolicy - 28, // 28: si.v1.AllocationReleasesRequest.allocationsToRelease:type_name -> si.v1.AllocationRelease - 29, // 29: si.v1.AllocationReleasesRequest.allocationAsksToRelease:type_name -> si.v1.AllocationAskRelease - 0, // 30: si.v1.AllocationRelease.terminationType:type_name -> si.v1.TerminationType - 0, // 31: si.v1.AllocationAskRelease.terminationType:type_name -> si.v1.TerminationType - 1, // 32: si.v1.NodeInfo.action:type_name -> si.v1.NodeInfo.ActionFromRM - 45, // 33: si.v1.NodeInfo.attributes:type_name -> si.v1.NodeInfo.AttributesEntry - 19, // 34: si.v1.NodeInfo.schedulableResource:type_name -> si.v1.Resource - 19, // 35: si.v1.NodeInfo.occupiedResource:type_name -> si.v1.Resource - 2, // 36: si.v1.UpdateContainerSchedulingStateRequest.state:type_name -> si.v1.UpdateContainerSchedulingStateRequest.SchedulingState - 46, // 37: si.v1.UpdateConfigurationRequest.extraConfig:type_name -> si.v1.UpdateConfigurationRequest.ExtraConfigEntry - 3, // 38: si.v1.EventRecord.type:type_name -> si.v1.EventRecord.Type - 4, // 39: si.v1.EventRecord.eventChangeType:type_name -> si.v1.EventRecord.ChangeType - 5, // 40: si.v1.EventRecord.eventChangeDetail:type_name -> si.v1.EventRecord.ChangeDetail - 19, // 41: si.v1.EventRecord.resource:type_name -> si.v1.Resource - 20, // 42: si.v1.Resource.ResourcesEntry.value:type_name -> si.v1.Quantity - 47, // 43: si.v1.si_secret:extendee -> google.protobuf.FieldOptions - 6, // 44: si.v1.Scheduler.RegisterResourceManager:input_type -> si.v1.RegisterResourceManagerRequest - 8, // 45: si.v1.Scheduler.UpdateAllocation:input_type -> si.v1.AllocationRequest - 9, // 46: si.v1.Scheduler.UpdateApplication:input_type -> si.v1.ApplicationRequest - 10, // 47: si.v1.Scheduler.UpdateNode:input_type -> si.v1.NodeRequest - 7, // 48: si.v1.Scheduler.RegisterResourceManager:output_type -> si.v1.RegisterResourceManagerResponse - 11, // 49: si.v1.Scheduler.UpdateAllocation:output_type -> si.v1.AllocationResponse - 12, // 50: si.v1.Scheduler.UpdateApplication:output_type -> si.v1.ApplicationResponse - 13, // 51: si.v1.Scheduler.UpdateNode:output_type -> si.v1.NodeResponse - 48, // [48:52] is the sub-list for method output_type - 44, // [44:48] is the sub-list for method input_type - 44, // [44:44] is the sub-list for extension type_name - 43, // [43:44] is the sub-list for extension extendee - 0, // [0:43] is the sub-list for field type_name + 36, // 0: si.v1.RegisterResourceManagerRequest.buildInfo:type_name -> si.v1.RegisterResourceManagerRequest.BuildInfoEntry + 37, // 1: si.v1.RegisterResourceManagerRequest.extraConfig:type_name -> si.v1.RegisterResourceManagerRequest.ExtraConfigEntry + 26, // 2: si.v1.AllocationRequest.releases:type_name -> si.v1.AllocationReleasesRequest + 25, // 3: si.v1.AllocationRequest.allocations:type_name -> si.v1.Allocation + 22, // 4: si.v1.ApplicationRequest.new:type_name -> si.v1.AddApplicationRequest + 23, // 5: si.v1.ApplicationRequest.remove:type_name -> si.v1.RemoveApplicationRequest + 28, // 6: si.v1.NodeRequest.nodes:type_name -> si.v1.NodeInfo + 25, // 7: si.v1.AllocationResponse.new:type_name -> si.v1.Allocation + 27, // 8: si.v1.AllocationResponse.released:type_name -> si.v1.AllocationRelease + 29, // 9: si.v1.AllocationResponse.rejectedAllocations:type_name -> si.v1.RejectedAllocation + 15, // 10: si.v1.ApplicationResponse.rejected:type_name -> si.v1.RejectedApplication + 16, // 11: si.v1.ApplicationResponse.accepted:type_name -> si.v1.AcceptedApplication + 14, // 12: si.v1.ApplicationResponse.updated:type_name -> si.v1.UpdatedApplication + 17, // 13: si.v1.NodeResponse.rejected:type_name -> si.v1.RejectedNode + 18, // 14: si.v1.NodeResponse.accepted:type_name -> si.v1.AcceptedNode + 38, // 15: si.v1.Resource.resources:type_name -> si.v1.Resource.ResourcesEntry + 24, // 16: si.v1.AddApplicationRequest.ugi:type_name -> si.v1.UserGroupInformation + 39, // 17: si.v1.AddApplicationRequest.tags:type_name -> si.v1.AddApplicationRequest.TagsEntry + 19, // 18: si.v1.AddApplicationRequest.placeholderAsk:type_name -> si.v1.Resource + 40, // 19: si.v1.Allocation.allocationTags:type_name -> si.v1.Allocation.AllocationTagsEntry + 19, // 20: si.v1.Allocation.resourcePerAlloc:type_name -> si.v1.Resource + 21, // 21: si.v1.Allocation.preemptionPolicy:type_name -> si.v1.PreemptionPolicy + 27, // 22: si.v1.AllocationReleasesRequest.allocationsToRelease:type_name -> si.v1.AllocationRelease + 0, // 23: si.v1.AllocationRelease.terminationType:type_name -> si.v1.TerminationType + 1, // 24: si.v1.NodeInfo.action:type_name -> si.v1.NodeInfo.ActionFromRM + 41, // 25: si.v1.NodeInfo.attributes:type_name -> si.v1.NodeInfo.AttributesEntry + 19, // 26: si.v1.NodeInfo.schedulableResource:type_name -> si.v1.Resource + 19, // 27: si.v1.NodeInfo.occupiedResource:type_name -> si.v1.Resource + 2, // 28: si.v1.UpdateContainerSchedulingStateRequest.state:type_name -> si.v1.UpdateContainerSchedulingStateRequest.SchedulingState + 42, // 29: si.v1.UpdateConfigurationRequest.extraConfig:type_name -> si.v1.UpdateConfigurationRequest.ExtraConfigEntry + 3, // 30: si.v1.EventRecord.type:type_name -> si.v1.EventRecord.Type + 4, // 31: si.v1.EventRecord.eventChangeType:type_name -> si.v1.EventRecord.ChangeType + 5, // 32: si.v1.EventRecord.eventChangeDetail:type_name -> si.v1.EventRecord.ChangeDetail + 19, // 33: si.v1.EventRecord.resource:type_name -> si.v1.Resource + 20, // 34: si.v1.Resource.ResourcesEntry.value:type_name -> si.v1.Quantity + 43, // 35: si.v1.si_secret:extendee -> google.protobuf.FieldOptions + 6, // 36: si.v1.Scheduler.RegisterResourceManager:input_type -> si.v1.RegisterResourceManagerRequest + 8, // 37: si.v1.Scheduler.UpdateAllocation:input_type -> si.v1.AllocationRequest + 9, // 38: si.v1.Scheduler.UpdateApplication:input_type -> si.v1.ApplicationRequest + 10, // 39: si.v1.Scheduler.UpdateNode:input_type -> si.v1.NodeRequest + 7, // 40: si.v1.Scheduler.RegisterResourceManager:output_type -> si.v1.RegisterResourceManagerResponse + 11, // 41: si.v1.Scheduler.UpdateAllocation:output_type -> si.v1.AllocationResponse + 12, // 42: si.v1.Scheduler.UpdateApplication:output_type -> si.v1.ApplicationResponse + 13, // 43: si.v1.Scheduler.UpdateNode:output_type -> si.v1.NodeResponse + 40, // [40:44] is the sub-list for method output_type + 36, // [36:40] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 35, // [35:36] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name } func init() { file_yunikorn_scheduler_interface_si_proto_init() } @@ -3772,18 +3367,6 @@ func file_yunikorn_scheduler_interface_si_proto_init() { } } file_yunikorn_scheduler_interface_si_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AllocationAsk); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_yunikorn_scheduler_interface_si_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PreemptionPolicy); i { case 0: return &v.state @@ -3795,7 +3378,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddApplicationRequest); i { case 0: return &v.state @@ -3807,7 +3390,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveApplicationRequest); i { case 0: return &v.state @@ -3819,7 +3402,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserGroupInformation); i { case 0: return &v.state @@ -3831,7 +3414,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Allocation); i { case 0: return &v.state @@ -3843,7 +3426,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AllocationReleasesRequest); i { case 0: return &v.state @@ -3855,7 +3438,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AllocationRelease); i { case 0: return &v.state @@ -3867,19 +3450,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AllocationAskRelease); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_yunikorn_scheduler_interface_si_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeInfo); i { case 0: return &v.state @@ -3891,19 +3462,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RejectedAllocationAsk); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_yunikorn_scheduler_interface_si_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RejectedAllocation); i { case 0: return &v.state @@ -3915,7 +3474,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PredicatesArgs); i { case 0: return &v.state @@ -3927,7 +3486,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PreemptionPredicatesArgs); i { case 0: return &v.state @@ -3939,7 +3498,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PreemptionPredicatesResponse); i { case 0: return &v.state @@ -3951,7 +3510,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateContainerSchedulingStateRequest); i { case 0: return &v.state @@ -3963,7 +3522,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateConfigurationRequest); i { case 0: return &v.state @@ -3975,7 +3534,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { return nil } } - file_yunikorn_scheduler_interface_si_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_yunikorn_scheduler_interface_si_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EventRecord); i { case 0: return &v.state @@ -3994,7 +3553,7 @@ func file_yunikorn_scheduler_interface_si_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_yunikorn_scheduler_interface_si_proto_rawDesc, NumEnums: 6, - NumMessages: 41, + NumMessages: 37, NumExtensions: 1, NumServices: 1, }, diff --git a/scheduler-interface-spec.md b/scheduler-interface-spec.md index 31e6db3..b51f58a 100644 --- a/scheduler-interface-spec.md +++ b/scheduler-interface-spec.md @@ -30,6 +30,7 @@ To define a standard interface that can be used by different types of resource m - Interface can handle multiple types of resource managers from multiple zones, and different policies can be configured in different zones. Possible use cases: + - A large cluster needs multiple schedulers to achieve horizontally scalability. - Multiple resource managers need to run on the same cluster. The managers grow and shrink according to runtime resource usage and policies. @@ -40,6 +41,7 @@ Possible use cases: ## Design considerations Highlights: + - The scheduler should be as stateless as possible. It should try to eliminate any local persistent storage for scheduling decisions. - When a RM starts, restarts or recovers the RM needs to sync its state with scheduler. @@ -50,6 +52,7 @@ Highlights: Interface and messages generic definition. The syntax used for the declarations is `proto3`. The definition currently only provides go related info. + ```protobuf syntax = "proto3"; package si.v1; @@ -79,9 +82,9 @@ Unless specifically required we strongly recommend the use of the API based inte There are three sets of RPCs: -* **Scheduler Service**: RM can communicate with the Scheduler Service and do resource allocation/request update, etc. -* **Admin Service**: Admin can communicate with Scheduler Interface and get configuration updated. -* **Metrics Service**: Used to retrieve state of scheduler by users / RMs. +- **Scheduler Service**: RM can communicate with the Scheduler Service and do resource allocation/request update, etc. +- **Admin Service**: Admin can communicate with Scheduler Interface and get configuration updated. +- **Metrics Service**: Used to retrieve state of scheduler by users / RMs. Currently only the design and implementation for the Scheduler Service is provided. @@ -108,6 +111,7 @@ service Scheduler { returns (stream NodeResponse) { } } ``` + #### Why bi-directional gRPC The reason of using bi-directional streaming gRPC is, according to performance benchmark: https://grpc.io/docs/guides/benchmarking.html latency is close to 0.5 ms. @@ -121,7 +125,6 @@ Below is an example of the Scheduler Service as defined in the RPC. The Schedule For the asynchronous cases the API requires a callback interface to be implemented in the resource manager. The callback must be provided to the scheduler as part of the registration. - ```golang package api @@ -249,17 +252,17 @@ Below is overview of how scheduler/RM keep connection and updates. ```protobuf message AllocationRequest { - // New allocation requests or replace existing allocation request (if allocationKey is same) - repeated AllocationAsk asks = 1; - // Allocations can be released. AllocationReleasesRequest releases = 2; // ID of RM, this will be used to identify which RM of the request comes from. string rmID = 3; - // Existing allocations to be added. + // Allocation to add or update. repeated Allocation allocations = 4; + + reserved 1; + reserved "asks"; } message ApplicationRequest { @@ -290,14 +293,13 @@ message AllocationResponse { // Or it could be decision made by scheduler (such as preemption or timeout). repeated AllocationRelease released = 2; - // Released allocation asks(placeholder), when the placeholder allocation times out - repeated AllocationAskRelease releasedAsks = 3; - - // Rejected allocation requests - repeated RejectedAllocationAsk rejected = 4; - // Rejected allocations repeated RejectedAllocation rejectedAllocations = 5; + + reserved 3; + reserved "releasedAsks"; + reserved 4; + reserved "rejected"; } message ApplicationResponse { @@ -355,9 +357,9 @@ message AcceptedNode { } ``` -#### Ask for more resources +#### Request for more resources -Lifecycle of AllocationAsk: +Lifecycle of Allocation: ``` Rejected by Scheduler @@ -365,36 +367,22 @@ Lifecycle of AllocationAsk: | | | v +-------+---+ Asked +-----------+Scheduler or,+-----------+ - |Initial +------->|Pending |+----+----+->|Rejected | - +-----------+By RM +-+---------+ Asked by RM +-----------+ - + + | Initial |+------>|Pending |+----+----+->|Rejected | + +-----------+ By RM +-----+-----+ Asked by RM +-----------+ | v - +-----------+ - |Allocated | - +-----------+ -``` - -Lifecycle of Allocations: - -``` - +--Allocated by - v Scheduler - +-----------+ +------------+ - |Allocated |+------ |Completed | - +---+-------+ Stoppe +------------+ - | by RM - | +------------+ - +--------------->|Preempted | - + Preempted by +------------+ - | Scheduler - | - | - | +------------+ - +--------------->|Expired | - Timeout +------------+ - (Part of Allocation - ask) + +-----------+ +------------+ + |Allocated |+-------+|Completed | + +---+-------+ Stopped +------------+ + | by RM + | +------------+ + +--------------->|Preempted | + + Preempted by +------------+ + | Scheduler + | +------------+ + +--------------->|Expired | + Timeout +------------+ + (Part of Allocation request) ``` Common fields for allocation: @@ -412,45 +400,6 @@ message Quantity { } ``` -Allocation ask: - -```protobuf -message AllocationAsk { - // Allocation key is used by both of scheduler and RM to track allocations. - // It doesn't have to be same as RM's internal allocation id (such as Pod name of K8s or ContainerID of YARN). - // Allocations from the same AllocationAsk which are returned to the RM at the same time will have the same allocationKey. - // The request is considered an update of the existing AllocationAsk if an AllocationAsk with the same allocationKey - // already exists. - string allocationKey = 1; - // The application ID this allocation ask belongs to - string applicationID = 2; - // The partition the application belongs to - string partitionName = 3; - // The amount of resources per ask - Resource resourceAsk = 4; - // Priority of ask - int32 priority = 6; - // A set of tags for this spscific AllocationAsk. Allocation level tags are used in placing this specific - // ask on nodes in the cluster. These tags are used in the PlacementConstraints. - // These tags are optional. - map tags = 8; - // The name of the TaskGroup this ask belongs to - string taskGroupName = 9; - // Is this a placeholder ask (true) or a real ask (false), defaults to false - // ignored if the taskGroupName is not set - bool placeholder = 10; - // Is this ask the originator of the application? - bool Originator = 11; - // The preemption policy for this ask - PreemptionPolicy preemptionPolicy = 12; - - reserved 5; - reserved "maxAllocations"; - reserved 7; - reserved "executionTimeoutMilliSeconds"; -} -``` - Preemption policy: ```protobuf @@ -477,7 +426,6 @@ message AddApplicationRequest { UserGroupInformation ugi = 4; // A set of tags for the application. These tags provide application level generic information. // The tags are optional and are used in placing an application or scheduling. - // Application tags are not considered when processing AllocationAsks. map tags = 5; // Execution timeout: How long this application can be in a running state // 0 or negative value means never expire. @@ -499,6 +447,7 @@ message RemoveApplicationRequest { User information: The user that owns the application. Group information can be empty. If the group information is empty the groups will be resolved by the scheduler when needed. + ```protobuf message UserGroupInformation { // the user name @@ -511,23 +460,24 @@ message UserGroupInformation { ### Allocation of resources The Allocation message is used in two cases: + 1. A recovered allocation send from the RM to the scheduler 2. A newly created allocation from the scheduler. ```protobuf message Allocation { - // AllocationKey from AllocationAsk + // Allocation key string allocationKey = 1; - // Allocation tags from AllocationAsk + // Allocation tags map allocationTags = 2; - + // Resource for each allocation Resource resourcePerAlloc = 5; - // Priority of ask + // Priority of allocation int32 priority = 6; // Node which the allocation belongs to string nodeID = 8; - + // The ID of the application string applicationID = 9; // Partition of the allocation @@ -541,7 +491,7 @@ message Allocation { bool originator = 14; // The preemption policy for this allocation PreemptionPolicy preemptionPolicy = 15; - + reserved 7; reserved "queueName"; reserved 3; @@ -557,8 +507,9 @@ message Allocation { message AllocationReleasesRequest { // The allocations to release repeated AllocationRelease allocationsToRelease = 1; - // The asks to release - repeated AllocationAskRelease allocationAsksToRelease = 2; + + reserved 2; + reserved "allocationAsksToRelease"; } enum TerminationType { @@ -584,27 +535,12 @@ message AllocationRelease { string message = 5; // AllocationKey of the allocation to release, if not set all allocations are released for the applicationID string allocationKey = 6; - + reserved 3; reserved "UUID"; reserved 7; reserved "allocationID"; } - -// Release ask -message AllocationAskRelease { - // Which partition to release the ask from, required. - string partitionName = 1; - // optional, when this is set, filter allocation key by application id. - // when application id is set and allocationKey is not set, release all allocations key under the application id. - string applicationID = 2; - // optional, when this is set, only release allocation ask by specified - string allocationKey = 3; - // Termination type of the released allocation ask - TerminationType terminationType = 4; - // For human-readable message - string message = 5; -} ``` #### Schedulable nodes registration and updates @@ -612,21 +548,24 @@ message AllocationAskRelease { State transition of node: ``` - +-----------+ +--------+ +-------+ - |SCHEDULABLE|+-------->|DRAINING|+---------->|REMOVED| - +-----------+ +--------+ +-------+ - ^ Asked by + Aasked by - | RM to DRAIN | RM to REMOVE - | | - +---------------------+ - Asked by RM to - SCHEDULE again + ++-----------+ +--------+ +-------+ +|SCHEDULABLE|+-------->|DRAINING|+---------->|REMOVED| ++-----------+ +--------+ +-------+ +^ Asked by + Aasked by +| RM to DRAIN | RM to REMOVE +| | ++---------------------+ +Asked by RM to +SCHEDULE again + ``` See protocol below: During new node registration with the scheduler, request will be rejected if the node exist already. While updating registered node with the scheduler, request will fail if the node doesn't exist. + ```protobuf message NodeInfo { // Action from RM @@ -683,19 +622,6 @@ message NodeInfo { The following is the feedback produced from the scheduler to the RM: -Rejected allocation ask: - -```protobuf -message RejectedAllocationAsk { - // the ID of the allocation ask - string allocationKey = 1; - // The ID of the application - string applicationID = 2; - // A human-readable reason message - string reason = 3; -} -``` - Rejected allocation: ```protobuf diff --git a/si.proto b/si.proto index 7d6a50c..5be9be3 100644 --- a/si.proto +++ b/si.proto @@ -75,17 +75,17 @@ message RegisterResourceManagerResponse { // Intentionally empty. } message AllocationRequest { - // New allocation requests or replace existing allocation request (if allocationKey is same) - repeated AllocationAsk asks = 1; - // Allocations can be released. AllocationReleasesRequest releases = 2; // ID of RM, this will be used to identify which RM of the request comes from. string rmID = 3; - // Existing allocations to be added. + // Allocation to add or update. repeated Allocation allocations = 4; + + reserved 1; + reserved "asks"; } message ApplicationRequest { @@ -116,14 +116,13 @@ message AllocationResponse { // Or it could be decision made by scheduler (such as preemption or timeout). repeated AllocationRelease released = 2; - // Released allocation asks(placeholder), when the placeholder allocation times out - repeated AllocationAskRelease releasedAsks = 3; - - // Rejected allocation requests - repeated RejectedAllocationAsk rejected = 4; - // Rejected allocations repeated RejectedAllocation rejectedAllocations = 5; + + reserved 3; + reserved "releasedAsks"; + reserved 4; + reserved "rejected"; } message ApplicationResponse { @@ -189,40 +188,6 @@ message Resource { message Quantity { int64 value = 1; } -message AllocationAsk { - // Allocation key is used by both of scheduler and RM to track allocations. - // It doesn't have to be same as RM's internal allocation id (such as Pod name of K8s or ContainerID of YARN). - // Allocations from the same AllocationAsk which are returned to the RM at the same time will have the same allocationKey. - // The request is considered an update of the existing AllocationAsk if an AllocationAsk with the same allocationKey - // already exists. - string allocationKey = 1; - // The application ID this allocation ask belongs to - string applicationID = 2; - // The partition the application belongs to - string partitionName = 3; - // The amount of resources per ask - Resource resourceAsk = 4; - // Priority of ask - int32 priority = 6; - // A set of tags for this spscific AllocationAsk. Allocation level tags are used in placing this specific - // ask on nodes in the cluster. These tags are used in the PlacementConstraints. - // These tags are optional. - map tags = 8; - // The name of the TaskGroup this ask belongs to - string taskGroupName = 9; - // Is this a placeholder ask (true) or a real ask (false), defaults to false - // ignored if the taskGroupName is not set - bool placeholder = 10; - // Is this ask the originator of the application? - bool Originator = 11; - // The preemption policy for this ask - PreemptionPolicy preemptionPolicy = 12; - - reserved 5; - reserved "maxAllocations"; - reserved 7; - reserved "executionTimeoutMilliSeconds"; -} message PreemptionPolicy { // Opt-out from preemption bool allowPreemptSelf = 1; @@ -241,7 +206,6 @@ message AddApplicationRequest { UserGroupInformation ugi = 4; // A set of tags for the application. These tags provide application level generic information. // The tags are optional and are used in placing an application or scheduling. - // Application tags are not considered when processing AllocationAsks. map tags = 5; // Execution timeout: How long this application can be in a running state // 0 or negative value means never expire. @@ -266,18 +230,18 @@ message UserGroupInformation { repeated string groups = 2; } message Allocation { - // AllocationKey from AllocationAsk + // Allocation key string allocationKey = 1; - // Allocation tags from AllocationAsk + // Allocation tags map allocationTags = 2; - + // Resource for each allocation Resource resourcePerAlloc = 5; - // Priority of ask + // Priority of allocation int32 priority = 6; // Node which the allocation belongs to string nodeID = 8; - + // The ID of the application string applicationID = 9; // Partition of the allocation @@ -291,7 +255,7 @@ message Allocation { bool originator = 14; // The preemption policy for this allocation PreemptionPolicy preemptionPolicy = 15; - + reserved 7; reserved "queueName"; reserved 3; @@ -302,8 +266,9 @@ message Allocation { message AllocationReleasesRequest { // The allocations to release repeated AllocationRelease allocationsToRelease = 1; - // The asks to release - repeated AllocationAskRelease allocationAsksToRelease = 2; + + reserved 2; + reserved "allocationAsksToRelease"; } enum TerminationType { @@ -329,27 +294,12 @@ message AllocationRelease { string message = 5; // AllocationKey of the allocation to release, if not set all allocations are released for the applicationID string allocationKey = 6; - + reserved 3; reserved "UUID"; reserved 7; reserved "allocationID"; } - -// Release ask -message AllocationAskRelease { - // Which partition to release the ask from, required. - string partitionName = 1; - // optional, when this is set, filter allocation key by application id. - // when application id is set and allocationKey is not set, release all allocations key under the application id. - string applicationID = 2; - // optional, when this is set, only release allocation ask by specified - string allocationKey = 3; - // Termination type of the released allocation ask - TerminationType terminationType = 4; - // For human-readable message - string message = 5; -} message NodeInfo { // Action from RM enum ActionFromRM { @@ -399,14 +349,6 @@ message NodeInfo { reserved 6; reserved "existingAllocations"; } -message RejectedAllocationAsk { - // the ID of the allocation ask - string allocationKey = 1; - // The ID of the application - string applicationID = 2; - // A human-readable reason message - string reason = 3; -} message RejectedAllocation { // the ID of the allocation string allocationKey = 1;