From 099ab1a414d20b3f479ef95cbf4fc67cc2456c79 Mon Sep 17 00:00:00 2001 From: Sandipan Panda Date: Wed, 28 Jan 2026 21:17:42 +0530 Subject: [PATCH] protos chnages for spark --- gen/api/v1/cluster.pb.go | 291 ++++-- gen/api/v1/common.pb.go | 1518 ++++++++++++++++++++-------- gen/api/v1/metrics_collector.pb.go | 1429 +++++++++++++------------- proto/dakr_proto_descriptor.bin | Bin 307923 -> 314754 bytes 4 files changed, 2020 insertions(+), 1218 deletions(-) diff --git a/gen/api/v1/cluster.pb.go b/gen/api/v1/cluster.pb.go index b07fc9c9..5d627836 100644 --- a/gen/api/v1/cluster.pb.go +++ b/gen/api/v1/cluster.pb.go @@ -556,6 +556,7 @@ type ExternalNode struct { unknownFields protoimpl.UnknownFields Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` + Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip,omitempty"` } func (x *ExternalNode) Reset() { @@ -597,6 +598,69 @@ func (x *ExternalNode) GetDomain() string { return "" } +func (x *ExternalNode) GetIp() string { + if x != nil { + return x.Ip + } + return "" +} + +// A service destination +type ServiceNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` +} + +func (x *ServiceNode) Reset() { + *x = ServiceNode{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_cluster_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServiceNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServiceNode) ProtoMessage() {} + +func (x *ServiceNode) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_cluster_proto_msgTypes[9] + 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 ServiceNode.ProtoReflect.Descriptor instead. +func (*ServiceNode) Descriptor() ([]byte, []int) { + return file_api_v1_cluster_proto_rawDescGZIP(), []int{9} +} + +func (x *ServiceNode) GetServiceName() string { + if x != nil { + return x.ServiceName + } + return "" +} + +func (x *ServiceNode) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + // An edge in the dependency graph type DependencyEdge struct { state protoimpl.MessageState @@ -606,6 +670,8 @@ type DependencyEdge struct { SrcWorkload *WorkloadNode `protobuf:"bytes,1,opt,name=src_workload,json=srcWorkload,proto3" json:"src_workload,omitempty"` DstWorkload *WorkloadNode `protobuf:"bytes,2,opt,name=dst_workload,json=dstWorkload,proto3" json:"dst_workload,omitempty"` DstExternal *ExternalNode `protobuf:"bytes,3,opt,name=dst_external,json=dstExternal,proto3" json:"dst_external,omitempty"` + DstService *ServiceNode `protobuf:"bytes,8,opt,name=dst_service,json=dstService,proto3" json:"dst_service,omitempty"` + DstType string `protobuf:"bytes,9,opt,name=dst_type,json=dstType,proto3" json:"dst_type,omitempty"` // "pod", "service", "node", "external", "endpoint" TrafficType string `protobuf:"bytes,4,opt,name=traffic_type,json=trafficType,proto3" json:"traffic_type,omitempty"` TxBytes int64 `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"` RxBytes int64 `protobuf:"varint,6,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"` @@ -615,7 +681,7 @@ type DependencyEdge struct { func (x *DependencyEdge) Reset() { *x = DependencyEdge{} if protoimpl.UnsafeEnabled { - mi := &file_api_v1_cluster_proto_msgTypes[9] + mi := &file_api_v1_cluster_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -628,7 +694,7 @@ func (x *DependencyEdge) String() string { func (*DependencyEdge) ProtoMessage() {} func (x *DependencyEdge) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_cluster_proto_msgTypes[9] + mi := &file_api_v1_cluster_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -641,7 +707,7 @@ func (x *DependencyEdge) ProtoReflect() protoreflect.Message { // Deprecated: Use DependencyEdge.ProtoReflect.Descriptor instead. func (*DependencyEdge) Descriptor() ([]byte, []int) { - return file_api_v1_cluster_proto_rawDescGZIP(), []int{9} + return file_api_v1_cluster_proto_rawDescGZIP(), []int{10} } func (x *DependencyEdge) GetSrcWorkload() *WorkloadNode { @@ -665,6 +731,20 @@ func (x *DependencyEdge) GetDstExternal() *ExternalNode { return nil } +func (x *DependencyEdge) GetDstService() *ServiceNode { + if x != nil { + return x.DstService + } + return nil +} + +func (x *DependencyEdge) GetDstType() string { + if x != nil { + return x.DstType + } + return "" +} + func (x *DependencyEdge) GetTrafficType() string { if x != nil { return x.TrafficType @@ -705,7 +785,7 @@ type GetNetworkDependenciesResponse struct { func (x *GetNetworkDependenciesResponse) Reset() { *x = GetNetworkDependenciesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_v1_cluster_proto_msgTypes[10] + mi := &file_api_v1_cluster_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -718,7 +798,7 @@ func (x *GetNetworkDependenciesResponse) String() string { func (*GetNetworkDependenciesResponse) ProtoMessage() {} func (x *GetNetworkDependenciesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_cluster_proto_msgTypes[10] + mi := &file_api_v1_cluster_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -731,7 +811,7 @@ func (x *GetNetworkDependenciesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNetworkDependenciesResponse.ProtoReflect.Descriptor instead. func (*GetNetworkDependenciesResponse) Descriptor() ([]byte, []int) { - return file_api_v1_cluster_proto_rawDescGZIP(), []int{10} + return file_api_v1_cluster_proto_rawDescGZIP(), []int{11} } func (x *GetNetworkDependenciesResponse) GetEdges() []*DependencyEdge { @@ -839,9 +919,15 @@ var file_api_v1_cluster_proto_rawDesc = []byte{ 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, - 0x69, 0x6e, 0x64, 0x22, 0x26, 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, + 0x69, 0x6e, 0x64, 0x22, 0x36, 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0xa8, 0x02, 0x0a, 0x0e, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x4e, 0x0a, 0x0b, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xf9, 0x02, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x72, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, @@ -853,54 +939,59 @@ var file_api_v1_cluster_proto_rawDesc = []byte{ 0x12, 0x37, 0x0a, 0x0c, 0x64, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x64, 0x73, - 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, - 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x64, 0x67, 0x65, 0x52, - 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x32, 0xa2, 0x03, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x85, 0x01, 0x0a, 0x0a, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, - 0x6e, 0x63, 0x2f, 0x7a, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, - 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, - 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x64, 0x73, 0x74, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x64, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x64, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, + 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x78, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x64, 0x67, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x64, 0x67, 0x65, + 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x32, 0xa2, 0x03, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, + 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x25, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, + 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x85, 0x01, 0x0a, + 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, + 0x69, 0x6e, 0x63, 0x2f, 0x7a, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, + 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -915,7 +1006,7 @@ func file_api_v1_cluster_proto_rawDescGZIP() []byte { return file_api_v1_cluster_proto_rawDescData } -var file_api_v1_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_api_v1_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_api_v1_cluster_proto_goTypes = []interface{}{ (*GetClustersBasicInfoRequest)(nil), // 0: api.v1.GetClustersBasicInfoRequest (*GetClustersBasicInfoResponse)(nil), // 1: api.v1.GetClustersBasicInfoResponse @@ -926,45 +1017,47 @@ var file_api_v1_cluster_proto_goTypes = []interface{}{ (*GetNetworkDependenciesRequest)(nil), // 6: api.v1.GetNetworkDependenciesRequest (*WorkloadNode)(nil), // 7: api.v1.WorkloadNode (*ExternalNode)(nil), // 8: api.v1.ExternalNode - (*DependencyEdge)(nil), // 9: api.v1.DependencyEdge - (*GetNetworkDependenciesResponse)(nil), // 10: api.v1.GetNetworkDependenciesResponse - (*Cluster)(nil), // 11: api.v1.Cluster - (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp - (*ResourceMetrics)(nil), // 13: api.v1.ResourceMetrics - (*CostInfo)(nil), // 14: api.v1.CostInfo - (*NodeInfo)(nil), // 15: api.v1.NodeInfo - (*CostDataPoint)(nil), // 16: api.v1.CostDataPoint - (*ResourceDataPoint)(nil), // 17: api.v1.ResourceDataPoint + (*ServiceNode)(nil), // 9: api.v1.ServiceNode + (*DependencyEdge)(nil), // 10: api.v1.DependencyEdge + (*GetNetworkDependenciesResponse)(nil), // 11: api.v1.GetNetworkDependenciesResponse + (*Cluster)(nil), // 12: api.v1.Cluster + (*timestamppb.Timestamp)(nil), // 13: google.protobuf.Timestamp + (*ResourceMetrics)(nil), // 14: api.v1.ResourceMetrics + (*CostInfo)(nil), // 15: api.v1.CostInfo + (*NodeInfo)(nil), // 16: api.v1.NodeInfo + (*CostDataPoint)(nil), // 17: api.v1.CostDataPoint + (*ResourceDataPoint)(nil), // 18: api.v1.ResourceDataPoint } var file_api_v1_cluster_proto_depIdxs = []int32{ - 11, // 0: api.v1.GetClustersBasicInfoResponse.clusters:type_name -> api.v1.Cluster - 12, // 1: api.v1.GetClustersWithMetricsRequest.start_time:type_name -> google.protobuf.Timestamp - 12, // 2: api.v1.GetClustersWithMetricsRequest.end_time:type_name -> google.protobuf.Timestamp - 11, // 3: api.v1.GetClustersWithMetricsResponse.clusters:type_name -> api.v1.Cluster - 13, // 4: api.v1.GetClustersWithMetricsResponse.resource_metrics:type_name -> api.v1.ResourceMetrics - 14, // 5: api.v1.GetClustersWithMetricsResponse.cost_info:type_name -> api.v1.CostInfo - 15, // 6: api.v1.GetClustersWithMetricsResponse.node_info:type_name -> api.v1.NodeInfo - 16, // 7: api.v1.GetClustersWithMetricsResponse.cost_data_points:type_name -> api.v1.CostDataPoint - 17, // 8: api.v1.GetClustersWithMetricsResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint - 12, // 9: api.v1.GetNetworkDependenciesRequest.start_time:type_name -> google.protobuf.Timestamp - 12, // 10: api.v1.GetNetworkDependenciesRequest.end_time:type_name -> google.protobuf.Timestamp + 12, // 0: api.v1.GetClustersBasicInfoResponse.clusters:type_name -> api.v1.Cluster + 13, // 1: api.v1.GetClustersWithMetricsRequest.start_time:type_name -> google.protobuf.Timestamp + 13, // 2: api.v1.GetClustersWithMetricsRequest.end_time:type_name -> google.protobuf.Timestamp + 12, // 3: api.v1.GetClustersWithMetricsResponse.clusters:type_name -> api.v1.Cluster + 14, // 4: api.v1.GetClustersWithMetricsResponse.resource_metrics:type_name -> api.v1.ResourceMetrics + 15, // 5: api.v1.GetClustersWithMetricsResponse.cost_info:type_name -> api.v1.CostInfo + 16, // 6: api.v1.GetClustersWithMetricsResponse.node_info:type_name -> api.v1.NodeInfo + 17, // 7: api.v1.GetClustersWithMetricsResponse.cost_data_points:type_name -> api.v1.CostDataPoint + 18, // 8: api.v1.GetClustersWithMetricsResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint + 13, // 9: api.v1.GetNetworkDependenciesRequest.start_time:type_name -> google.protobuf.Timestamp + 13, // 10: api.v1.GetNetworkDependenciesRequest.end_time:type_name -> google.protobuf.Timestamp 7, // 11: api.v1.DependencyEdge.src_workload:type_name -> api.v1.WorkloadNode 7, // 12: api.v1.DependencyEdge.dst_workload:type_name -> api.v1.WorkloadNode 8, // 13: api.v1.DependencyEdge.dst_external:type_name -> api.v1.ExternalNode - 9, // 14: api.v1.GetNetworkDependenciesResponse.edges:type_name -> api.v1.DependencyEdge - 0, // 15: api.v1.ClusterService.GetClustersBasicInfo:input_type -> api.v1.GetClustersBasicInfoRequest - 2, // 16: api.v1.ClusterService.GetClustersWithMetrics:input_type -> api.v1.GetClustersWithMetricsRequest - 4, // 17: api.v1.ClusterService.CreateClusterToken:input_type -> api.v1.CreateClusterTokenRequest - 6, // 18: api.v1.ClusterService.GetNetworkDependencies:input_type -> api.v1.GetNetworkDependenciesRequest - 1, // 19: api.v1.ClusterService.GetClustersBasicInfo:output_type -> api.v1.GetClustersBasicInfoResponse - 3, // 20: api.v1.ClusterService.GetClustersWithMetrics:output_type -> api.v1.GetClustersWithMetricsResponse - 5, // 21: api.v1.ClusterService.CreateClusterToken:output_type -> api.v1.CreateClusterTokenResponse - 10, // 22: api.v1.ClusterService.GetNetworkDependencies:output_type -> api.v1.GetNetworkDependenciesResponse - 19, // [19:23] is the sub-list for method output_type - 15, // [15:19] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 9, // 14: api.v1.DependencyEdge.dst_service:type_name -> api.v1.ServiceNode + 10, // 15: api.v1.GetNetworkDependenciesResponse.edges:type_name -> api.v1.DependencyEdge + 0, // 16: api.v1.ClusterService.GetClustersBasicInfo:input_type -> api.v1.GetClustersBasicInfoRequest + 2, // 17: api.v1.ClusterService.GetClustersWithMetrics:input_type -> api.v1.GetClustersWithMetricsRequest + 4, // 18: api.v1.ClusterService.CreateClusterToken:input_type -> api.v1.CreateClusterTokenRequest + 6, // 19: api.v1.ClusterService.GetNetworkDependencies:input_type -> api.v1.GetNetworkDependenciesRequest + 1, // 20: api.v1.ClusterService.GetClustersBasicInfo:output_type -> api.v1.GetClustersBasicInfoResponse + 3, // 21: api.v1.ClusterService.GetClustersWithMetrics:output_type -> api.v1.GetClustersWithMetricsResponse + 5, // 22: api.v1.ClusterService.CreateClusterToken:output_type -> api.v1.CreateClusterTokenResponse + 11, // 23: api.v1.ClusterService.GetNetworkDependencies:output_type -> api.v1.GetNetworkDependenciesResponse + 20, // [20:24] is the sub-list for method output_type + 16, // [16:20] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name } func init() { file_api_v1_cluster_proto_init() } @@ -1084,7 +1177,7 @@ func file_api_v1_cluster_proto_init() { } } file_api_v1_cluster_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DependencyEdge); i { + switch v := v.(*ServiceNode); i { case 0: return &v.state case 1: @@ -1096,6 +1189,18 @@ func file_api_v1_cluster_proto_init() { } } file_api_v1_cluster_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DependencyEdge); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v1_cluster_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkDependenciesResponse); i { case 0: return &v.state @@ -1115,7 +1220,7 @@ func file_api_v1_cluster_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_v1_cluster_proto_rawDesc, NumEnums: 0, - NumMessages: 11, + NumMessages: 12, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/api/v1/common.pb.go b/gen/api/v1/common.pb.go index b60662d9..3453edda 100644 --- a/gen/api/v1/common.pb.go +++ b/gen/api/v1/common.pb.go @@ -62,6 +62,7 @@ const ( K8SObjectKind_K8S_OBJECT_KIND_CLUSTER_ROLE_BINDING K8SObjectKind = 33 K8SObjectKind_K8S_OBJECT_KIND_NETWORK_POLICY K8SObjectKind = 34 K8SObjectKind_K8S_OBJECT_KIND_CLUSTER K8SObjectKind = 35 + K8SObjectKind_K8S_OBJECT_KIND_SPARK_APPLICATION K8SObjectKind = 36 ) // Enum value maps for K8SObjectKind. @@ -103,6 +104,7 @@ var ( 33: "K8S_OBJECT_KIND_CLUSTER_ROLE_BINDING", 34: "K8S_OBJECT_KIND_NETWORK_POLICY", 35: "K8S_OBJECT_KIND_CLUSTER", + 36: "K8S_OBJECT_KIND_SPARK_APPLICATION", } K8SObjectKind_value = map[string]int32{ "K8S_OBJECT_KIND_UNSPECIFIED": 0, @@ -141,6 +143,7 @@ var ( "K8S_OBJECT_KIND_CLUSTER_ROLE_BINDING": 33, "K8S_OBJECT_KIND_NETWORK_POLICY": 34, "K8S_OBJECT_KIND_CLUSTER": 35, + "K8S_OBJECT_KIND_SPARK_APPLICATION": 36, } ) @@ -3619,6 +3622,7 @@ type ResourceDetails struct { // *ResourceDetails_PodDisruptionBudgetDetails // *ResourceDetails_ResourceQuotaDetails // *ResourceDetails_VolcanoJobDetails + // *ResourceDetails_SparkApplicationDetails Details isResourceDetails_Details `protobuf_oneof:"details"` // Common fields that can be flattened at this level for easier access // These are populated based on the resource type @@ -4005,6 +4009,13 @@ func (x *ResourceDetails) GetVolcanoJobDetails() *VolcanoJobDetails { return nil } +func (x *ResourceDetails) GetSparkApplicationDetails() *SparkApplicationDetails { + if x, ok := x.GetDetails().(*ResourceDetails_SparkApplicationDetails); ok { + return x.SparkApplicationDetails + } + return nil +} + func (x *ResourceDetails) GetPhase() string { if x != nil { return x.Phase @@ -5191,6 +5202,11 @@ type ResourceDetails_VolcanoJobDetails struct { VolcanoJobDetails *VolcanoJobDetails `protobuf:"bytes,239,opt,name=volcano_job_details,json=volcanoJobDetails,proto3,oneof"` } +type ResourceDetails_SparkApplicationDetails struct { + // SparkApplication-specific fields + SparkApplicationDetails *SparkApplicationDetails `protobuf:"bytes,242,opt,name=spark_application_details,json=sparkApplicationDetails,proto3,oneof"` +} + func (*ResourceDetails_PodDetails) isResourceDetails_Details() {} func (*ResourceDetails_DeploymentDetails) isResourceDetails_Details() {} @@ -5241,6 +5257,8 @@ func (*ResourceDetails_ResourceQuotaDetails) isResourceDetails_Details() {} func (*ResourceDetails_VolcanoJobDetails) isResourceDetails_Details() {} +func (*ResourceDetails_SparkApplicationDetails) isResourceDetails_Details() {} + // PodDetails contains detailed Pod information (for the oneof, if we need nested data later) type PodDetails struct { state protoimpl.MessageState @@ -12052,6 +12070,446 @@ func (x *VolcanoTask) GetContainers() []*ContainerTemplate { return nil } +// SparkApplicationDetails contains detailed SparkApplication information for drill-down +type SparkApplicationDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from driver/executor specs + SparkVersion string `protobuf:"bytes,2,opt,name=spark_version,json=sparkVersion,proto3" json:"spark_version,omitempty"` // Spark version + ApplicationType string `protobuf:"bytes,3,opt,name=application_type,json=applicationType,proto3" json:"application_type,omitempty"` // Java, Scala, Python, R + DeployMode string `protobuf:"bytes,4,opt,name=deploy_mode,json=deployMode,proto3" json:"deploy_mode,omitempty"` // cluster, client, in-cluster-client + MainClass string `protobuf:"bytes,5,opt,name=main_class,json=mainClass,proto3" json:"main_class,omitempty"` // Main class for Java/Scala applications + MainApplicationFile string `protobuf:"bytes,6,opt,name=main_application_file,json=mainApplicationFile,proto3" json:"main_application_file,omitempty"` // Main application file path + Arguments []string `protobuf:"bytes,7,rep,name=arguments,proto3" json:"arguments,omitempty"` // Application arguments + SparkDriverInfo *SparkDriverInfo `protobuf:"bytes,8,opt,name=spark_driver_info,json=sparkDriverInfo,proto3" json:"spark_driver_info,omitempty"` // Driver information + ExecutorInstances int32 `protobuf:"varint,9,opt,name=executor_instances,json=executorInstances,proto3" json:"executor_instances,omitempty"` // Number of executor instances + ApplicationState string `protobuf:"bytes,10,opt,name=application_state,json=applicationState,proto3" json:"application_state,omitempty"` // Application state: SUBMITTED, RUNNING, COMPLETED, FAILED, etc. + SparkApplicationId string `protobuf:"bytes,11,opt,name=spark_application_id,json=sparkApplicationId,proto3" json:"spark_application_id,omitempty"` // Spark application ID + SubmissionId string `protobuf:"bytes,12,opt,name=submission_id,json=submissionId,proto3" json:"submission_id,omitempty"` // Submission ID + Suspended bool `protobuf:"varint,13,opt,name=suspended,proto3" json:"suspended,omitempty"` // Whether application is suspended + RestartPolicy *SparkRestartPolicyInfo `protobuf:"bytes,14,opt,name=restart_policy,json=restartPolicy,proto3" json:"restart_policy,omitempty"` // Restart policy information + DynamicAllocation *SparkDynamicAllocationInfo `protobuf:"bytes,15,opt,name=dynamic_allocation,json=dynamicAllocation,proto3" json:"dynamic_allocation,omitempty"` // Dynamic allocation configuration +} + +func (x *SparkApplicationDetails) Reset() { + *x = SparkApplicationDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_common_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SparkApplicationDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SparkApplicationDetails) ProtoMessage() {} + +func (x *SparkApplicationDetails) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_common_proto_msgTypes[118] + 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 SparkApplicationDetails.ProtoReflect.Descriptor instead. +func (*SparkApplicationDetails) Descriptor() ([]byte, []int) { + return file_api_v1_common_proto_rawDescGZIP(), []int{118} +} + +func (x *SparkApplicationDetails) GetContainers() []*ContainerTemplate { + if x != nil { + return x.Containers + } + return nil +} + +func (x *SparkApplicationDetails) GetSparkVersion() string { + if x != nil { + return x.SparkVersion + } + return "" +} + +func (x *SparkApplicationDetails) GetApplicationType() string { + if x != nil { + return x.ApplicationType + } + return "" +} + +func (x *SparkApplicationDetails) GetDeployMode() string { + if x != nil { + return x.DeployMode + } + return "" +} + +func (x *SparkApplicationDetails) GetMainClass() string { + if x != nil { + return x.MainClass + } + return "" +} + +func (x *SparkApplicationDetails) GetMainApplicationFile() string { + if x != nil { + return x.MainApplicationFile + } + return "" +} + +func (x *SparkApplicationDetails) GetArguments() []string { + if x != nil { + return x.Arguments + } + return nil +} + +func (x *SparkApplicationDetails) GetSparkDriverInfo() *SparkDriverInfo { + if x != nil { + return x.SparkDriverInfo + } + return nil +} + +func (x *SparkApplicationDetails) GetExecutorInstances() int32 { + if x != nil { + return x.ExecutorInstances + } + return 0 +} + +func (x *SparkApplicationDetails) GetApplicationState() string { + if x != nil { + return x.ApplicationState + } + return "" +} + +func (x *SparkApplicationDetails) GetSparkApplicationId() string { + if x != nil { + return x.SparkApplicationId + } + return "" +} + +func (x *SparkApplicationDetails) GetSubmissionId() string { + if x != nil { + return x.SubmissionId + } + return "" +} + +func (x *SparkApplicationDetails) GetSuspended() bool { + if x != nil { + return x.Suspended + } + return false +} + +func (x *SparkApplicationDetails) GetRestartPolicy() *SparkRestartPolicyInfo { + if x != nil { + return x.RestartPolicy + } + return nil +} + +func (x *SparkApplicationDetails) GetDynamicAllocation() *SparkDynamicAllocationInfo { + if x != nil { + return x.DynamicAllocation + } + return nil +} + +// SparkDriverInfo represents information about the Spark driver +type SparkDriverInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PodName string `protobuf:"bytes,1,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"` // Driver pod name + WebUiServiceName string `protobuf:"bytes,2,opt,name=web_ui_service_name,json=webUiServiceName,proto3" json:"web_ui_service_name,omitempty"` // Web UI service name + WebUiAddress string `protobuf:"bytes,3,opt,name=web_ui_address,json=webUiAddress,proto3" json:"web_ui_address,omitempty"` // Web UI address + WebUiPort int32 `protobuf:"varint,4,opt,name=web_ui_port,json=webUiPort,proto3" json:"web_ui_port,omitempty"` // Web UI port + WebUiIngressName string `protobuf:"bytes,5,opt,name=web_ui_ingress_name,json=webUiIngressName,proto3" json:"web_ui_ingress_name,omitempty"` // Web UI ingress name (if configured) + WebUiIngressAddress string `protobuf:"bytes,6,opt,name=web_ui_ingress_address,json=webUiIngressAddress,proto3" json:"web_ui_ingress_address,omitempty"` // Web UI ingress address (if configured) + Cores string `protobuf:"bytes,7,opt,name=cores,proto3" json:"cores,omitempty"` // Driver cores + Memory string `protobuf:"bytes,8,opt,name=memory,proto3" json:"memory,omitempty"` // Driver memory + ServiceAccount string `protobuf:"bytes,9,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"` // Service account used by driver +} + +func (x *SparkDriverInfo) Reset() { + *x = SparkDriverInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_common_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SparkDriverInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SparkDriverInfo) ProtoMessage() {} + +func (x *SparkDriverInfo) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_common_proto_msgTypes[119] + 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 SparkDriverInfo.ProtoReflect.Descriptor instead. +func (*SparkDriverInfo) Descriptor() ([]byte, []int) { + return file_api_v1_common_proto_rawDescGZIP(), []int{119} +} + +func (x *SparkDriverInfo) GetPodName() string { + if x != nil { + return x.PodName + } + return "" +} + +func (x *SparkDriverInfo) GetWebUiServiceName() string { + if x != nil { + return x.WebUiServiceName + } + return "" +} + +func (x *SparkDriverInfo) GetWebUiAddress() string { + if x != nil { + return x.WebUiAddress + } + return "" +} + +func (x *SparkDriverInfo) GetWebUiPort() int32 { + if x != nil { + return x.WebUiPort + } + return 0 +} + +func (x *SparkDriverInfo) GetWebUiIngressName() string { + if x != nil { + return x.WebUiIngressName + } + return "" +} + +func (x *SparkDriverInfo) GetWebUiIngressAddress() string { + if x != nil { + return x.WebUiIngressAddress + } + return "" +} + +func (x *SparkDriverInfo) GetCores() string { + if x != nil { + return x.Cores + } + return "" +} + +func (x *SparkDriverInfo) GetMemory() string { + if x != nil { + return x.Memory + } + return "" +} + +func (x *SparkDriverInfo) GetServiceAccount() string { + if x != nil { + return x.ServiceAccount + } + return "" +} + +// SparkRestartPolicyInfo represents restart policy information +type SparkRestartPolicyInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Always, OnFailure, Never + OnFailureRetries int32 `protobuf:"varint,2,opt,name=on_failure_retries,json=onFailureRetries,proto3" json:"on_failure_retries,omitempty"` // Number of retries on failure + OnFailureRetryInterval int64 `protobuf:"varint,3,opt,name=on_failure_retry_interval,json=onFailureRetryInterval,proto3" json:"on_failure_retry_interval,omitempty"` // Retry interval in seconds + OnSubmissionFailureRetries int32 `protobuf:"varint,4,opt,name=on_submission_failure_retries,json=onSubmissionFailureRetries,proto3" json:"on_submission_failure_retries,omitempty"` // Number of retries on submission failure + OnSubmissionFailureRetryInterval int64 `protobuf:"varint,5,opt,name=on_submission_failure_retry_interval,json=onSubmissionFailureRetryInterval,proto3" json:"on_submission_failure_retry_interval,omitempty"` // Submission retry interval in seconds +} + +func (x *SparkRestartPolicyInfo) Reset() { + *x = SparkRestartPolicyInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_common_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SparkRestartPolicyInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SparkRestartPolicyInfo) ProtoMessage() {} + +func (x *SparkRestartPolicyInfo) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_common_proto_msgTypes[120] + 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 SparkRestartPolicyInfo.ProtoReflect.Descriptor instead. +func (*SparkRestartPolicyInfo) Descriptor() ([]byte, []int) { + return file_api_v1_common_proto_rawDescGZIP(), []int{120} +} + +func (x *SparkRestartPolicyInfo) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *SparkRestartPolicyInfo) GetOnFailureRetries() int32 { + if x != nil { + return x.OnFailureRetries + } + return 0 +} + +func (x *SparkRestartPolicyInfo) GetOnFailureRetryInterval() int64 { + if x != nil { + return x.OnFailureRetryInterval + } + return 0 +} + +func (x *SparkRestartPolicyInfo) GetOnSubmissionFailureRetries() int32 { + if x != nil { + return x.OnSubmissionFailureRetries + } + return 0 +} + +func (x *SparkRestartPolicyInfo) GetOnSubmissionFailureRetryInterval() int64 { + if x != nil { + return x.OnSubmissionFailureRetryInterval + } + return 0 +} + +// SparkDynamicAllocationInfo represents dynamic allocation configuration +type SparkDynamicAllocationInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` // Whether dynamic allocation is enabled + InitialExecutors int32 `protobuf:"varint,2,opt,name=initial_executors,json=initialExecutors,proto3" json:"initial_executors,omitempty"` // Initial number of executors + MinExecutors int32 `protobuf:"varint,3,opt,name=min_executors,json=minExecutors,proto3" json:"min_executors,omitempty"` // Minimum number of executors + MaxExecutors int32 `protobuf:"varint,4,opt,name=max_executors,json=maxExecutors,proto3" json:"max_executors,omitempty"` // Maximum number of executors + ShuffleTrackingEnabled bool `protobuf:"varint,5,opt,name=shuffle_tracking_enabled,json=shuffleTrackingEnabled,proto3" json:"shuffle_tracking_enabled,omitempty"` // Whether shuffle tracking is enabled + ShuffleTrackingTimeout int64 `protobuf:"varint,6,opt,name=shuffle_tracking_timeout,json=shuffleTrackingTimeout,proto3" json:"shuffle_tracking_timeout,omitempty"` // Shuffle tracking timeout in milliseconds +} + +func (x *SparkDynamicAllocationInfo) Reset() { + *x = SparkDynamicAllocationInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_common_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SparkDynamicAllocationInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SparkDynamicAllocationInfo) ProtoMessage() {} + +func (x *SparkDynamicAllocationInfo) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_common_proto_msgTypes[121] + 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 SparkDynamicAllocationInfo.ProtoReflect.Descriptor instead. +func (*SparkDynamicAllocationInfo) Descriptor() ([]byte, []int) { + return file_api_v1_common_proto_rawDescGZIP(), []int{121} +} + +func (x *SparkDynamicAllocationInfo) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *SparkDynamicAllocationInfo) GetInitialExecutors() int32 { + if x != nil { + return x.InitialExecutors + } + return 0 +} + +func (x *SparkDynamicAllocationInfo) GetMinExecutors() int32 { + if x != nil { + return x.MinExecutors + } + return 0 +} + +func (x *SparkDynamicAllocationInfo) GetMaxExecutors() int32 { + if x != nil { + return x.MaxExecutors + } + return 0 +} + +func (x *SparkDynamicAllocationInfo) GetShuffleTrackingEnabled() bool { + if x != nil { + return x.ShuffleTrackingEnabled + } + return false +} + +func (x *SparkDynamicAllocationInfo) GetShuffleTrackingTimeout() int64 { + if x != nil { + return x.ShuffleTrackingTimeout + } + return 0 +} + type Event struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -12090,7 +12548,7 @@ type Event struct { func (x *Event) Reset() { *x = Event{} if protoimpl.UnsafeEnabled { - mi := &file_api_v1_common_proto_msgTypes[118] + mi := &file_api_v1_common_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12103,7 +12561,7 @@ func (x *Event) String() string { func (*Event) ProtoMessage() {} func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_common_proto_msgTypes[118] + mi := &file_api_v1_common_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12116,7 +12574,7 @@ func (x *Event) ProtoReflect() protoreflect.Message { // Deprecated: Use Event.ProtoReflect.Descriptor instead. func (*Event) Descriptor() ([]byte, []int) { - return file_api_v1_common_proto_rawDescGZIP(), []int{118} + return file_api_v1_common_proto_rawDescGZIP(), []int{122} } func (x *Event) GetId() string { @@ -12332,7 +12790,7 @@ type EventDatapointInfo struct { func (x *EventDatapointInfo) Reset() { *x = EventDatapointInfo{} if protoimpl.UnsafeEnabled { - mi := &file_api_v1_common_proto_msgTypes[119] + mi := &file_api_v1_common_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12345,7 +12803,7 @@ func (x *EventDatapointInfo) String() string { func (*EventDatapointInfo) ProtoMessage() {} func (x *EventDatapointInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_common_proto_msgTypes[119] + mi := &file_api_v1_common_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12358,7 +12816,7 @@ func (x *EventDatapointInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use EventDatapointInfo.ProtoReflect.Descriptor instead. func (*EventDatapointInfo) Descriptor() ([]byte, []int) { - return file_api_v1_common_proto_rawDescGZIP(), []int{119} + return file_api_v1_common_proto_rawDescGZIP(), []int{123} } func (x *EventDatapointInfo) GetName() string { @@ -12423,7 +12881,7 @@ type EventDatapoint struct { func (x *EventDatapoint) Reset() { *x = EventDatapoint{} if protoimpl.UnsafeEnabled { - mi := &file_api_v1_common_proto_msgTypes[120] + mi := &file_api_v1_common_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12436,7 +12894,7 @@ func (x *EventDatapoint) String() string { func (*EventDatapoint) ProtoMessage() {} func (x *EventDatapoint) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_common_proto_msgTypes[120] + mi := &file_api_v1_common_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12449,7 +12907,7 @@ func (x *EventDatapoint) ProtoReflect() protoreflect.Message { // Deprecated: Use EventDatapoint.ProtoReflect.Descriptor instead. func (*EventDatapoint) Descriptor() ([]byte, []int) { - return file_api_v1_common_proto_rawDescGZIP(), []int{120} + return file_api_v1_common_proto_rawDescGZIP(), []int{124} } func (x *EventDatapoint) GetUtcTime() string { @@ -13469,7 +13927,7 @@ var file_api_v1_common_proto_rawDesc = []byte{ 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x84, 0x46, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, + 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0xe4, 0x46, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x6f, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, @@ -13585,6 +14043,12 @@ var file_api_v1_common_proto_rawDesc = []byte{ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x76, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x5e, 0x0a, 0x19, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xf2, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, + 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x17, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x70, 0x12, 0x17, 0x0a, @@ -15267,212 +15731,320 @@ var file_api_v1_common_proto_rawDesc = []byte{ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x8b, 0x08, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x76, 0x6f, 0x6c, - 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x76, - 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, - 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x69, - 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, + 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0xe6, 0x05, 0x0a, 0x17, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x15, + 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x69, + 0x6e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, + 0x0a, 0x11, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0f, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x5f, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x30, 0x0a, 0x14, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x73, 0x70, 0x65, + 0x6e, 0x64, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x72, 0x65, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x51, 0x0a, 0x12, 0x64, + 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41, 0x6c, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x64, 0x79, 0x6e, + 0x61, 0x6d, 0x69, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xdc, + 0x02, 0x0a, 0x0f, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, + 0x13, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x65, 0x62, 0x55, + 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, + 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x65, 0x62, 0x55, 0x69, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x62, 0x55, 0x69, 0x50, 0x6f, + 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x77, 0x65, 0x62, 0x55, 0x69, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x33, 0x0a, 0x16, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x77, 0x65, 0x62, 0x55, 0x69, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, + 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa8, 0x02, + 0x0a, 0x16, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, + 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x6f, 0x6e, + 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x6f, + 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x41, 0x0a, 0x1d, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1a, 0x6f, 0x6e, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x24, 0x6f, 0x6e, 0x5f, 0x73, + 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x20, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xa1, 0x02, 0x0a, 0x1a, 0x53, 0x70, 0x61, + 0x72, 0x6b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x23, + 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x6f, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x68, 0x75, 0x66, + 0x66, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x68, 0x75, 0x66, + 0x66, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x68, 0x75, 0x66, 0x66, 0x6c, 0x65, 0x5f, 0x74, 0x72, + 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x73, 0x68, 0x75, 0x66, 0x66, 0x6c, 0x65, 0x54, 0x72, 0x61, + 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x8b, 0x08, 0x0a, + 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6f, + 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x30, + 0x0a, 0x14, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, + 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, + 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, - 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x2b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, - 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x41, 0x67, 0x65, 0x12, 0x24, - 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x61, 0x67, 0x65, - 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x41, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, - 0x6e, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, - 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, - 0x72, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, - 0x75, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x74, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x74, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0xe8, 0x09, 0x0a, 0x0d, 0x4b, 0x38, 0x73, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x38, 0x53, - 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, - 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, - 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x46, 0x55, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, - 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, - 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, + 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x31, + 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x29, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, + 0x65, 0x65, 0x6e, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, + 0x24, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x61, 0x67, + 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x41, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x41, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x2e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x67, 0x65, 0x12, + 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, + 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x74, 0x63, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x74, 0x63, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0x8f, 0x0a, + 0x0a, 0x0d, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, + 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, + 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x5f, 0x53, 0x45, 0x54, 0x10, + 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x46, 0x55, 0x4c, 0x5f, 0x53, 0x45, + 0x54, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x53, 0x45, + 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, - 0x4a, 0x4f, 0x42, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x5f, 0x4a, 0x4f, - 0x42, 0x10, 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x52, 0x10, 0x07, 0x12, - 0x17, 0x0a, 0x13, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x44, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x4b, 0x38, 0x53, 0x5f, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, - 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x38, 0x53, 0x5f, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, - 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0b, 0x12, 0x1d, - 0x0a, 0x19, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, - 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x0c, 0x12, 0x1b, 0x0a, - 0x17, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x0d, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x38, - 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, - 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x0e, 0x12, 0x25, 0x0a, 0x21, 0x4b, 0x38, - 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x45, - 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, - 0x0f, 0x12, 0x2b, 0x0a, 0x27, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x43, 0x52, 0x4f, 0x4e, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x4b, 0x38, + 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x45, + 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, + 0x4c, 0x4c, 0x45, 0x52, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x44, 0x10, 0x08, 0x12, + 0x1d, 0x0a, 0x19, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x09, 0x12, 0x18, + 0x0a, 0x14, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, + 0x44, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x38, 0x53, 0x5f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x47, 0x52, + 0x45, 0x53, 0x53, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, + 0x45, 0x52, 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, + 0x0d, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x50, 0x10, + 0x0e, 0x12, 0x25, 0x0a, 0x21, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, - 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x10, 0x10, 0x12, 0x21, - 0x0a, 0x1d, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, - 0x44, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, - 0x11, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x4f, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, - 0x54, 0x10, 0x12, 0x12, 0x2d, 0x0a, 0x29, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, - 0x4c, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x52, - 0x10, 0x13, 0x12, 0x2b, 0x0a, 0x27, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x45, 0x52, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x50, - 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x52, 0x10, 0x14, 0x12, - 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x15, - 0x12, 0x23, 0x0a, 0x1f, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x10, 0x16, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x17, 0x12, - 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, - 0x18, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x45, 0x44, 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x44, - 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x19, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x38, 0x53, - 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x41, 0x52, - 0x50, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, - 0x1a, 0x12, 0x29, 0x0a, 0x25, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x55, 0x44, 0x47, 0x45, 0x54, 0x10, 0x1b, 0x12, 0x22, 0x0a, 0x1e, + 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x0f, 0x12, 0x2b, 0x0a, 0x27, 0x4b, 0x38, 0x53, 0x5f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x53, + 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x4c, + 0x41, 0x49, 0x4d, 0x10, 0x10, 0x12, 0x21, 0x0a, 0x1d, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, + 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x11, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x4f, + 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x10, 0x12, 0x12, 0x2d, 0x0a, 0x29, 0x4b, 0x38, + 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x48, 0x4f, + 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, + 0x4f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x52, 0x10, 0x13, 0x12, 0x2b, 0x0a, 0x27, 0x4b, 0x38, 0x53, + 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x45, 0x52, + 0x54, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x43, + 0x41, 0x4c, 0x45, 0x52, 0x10, 0x14, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, + 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x15, 0x12, 0x23, 0x0a, 0x1f, 0x4b, 0x38, 0x53, 0x5f, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, + 0x43, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x16, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0x1c, - 0x12, 0x25, 0x0a, 0x21, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x54, - 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x1d, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x4f, 0x4c, 0x43, 0x41, - 0x4e, 0x4f, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4b, 0x38, 0x53, 0x5f, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x43, 0x52, - 0x45, 0x54, 0x10, 0x1f, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, - 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x20, 0x12, 0x28, 0x0a, 0x24, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, - 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x21, - 0x12, 0x22, 0x0a, 0x1e, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, 0x4f, 0x4c, 0x49, - 0x43, 0x59, 0x10, 0x22, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, - 0x23, 0x2a, 0x48, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x45, 0x6e, 0x75, 0x6d, - 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x45, 0x4e, 0x55, - 0x4d, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, - 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x53, 0x43, 0x10, 0x01, 0x2a, 0x94, 0x02, 0x0a, 0x15, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, - 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, - 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, - 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x22, - 0x0a, 0x1e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, - 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, - 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, - 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x58, - 0x49, 0x53, 0x54, 0x53, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, - 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, - 0x52, 0x5f, 0x44, 0x4f, 0x45, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, - 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, - 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x47, 0x54, - 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, - 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x54, - 0x10, 0x06, 0x2a, 0xa6, 0x01, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x22, 0x57, - 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, - 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, - 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, - 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x4f, - 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, - 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x42, 0x84, 0x01, 0x0a, 0x0a, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e, - 0x63, 0x2f, 0x7a, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, - 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, - 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x17, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, + 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x18, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x38, 0x53, 0x5f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x45, 0x44, 0x41, + 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x44, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x19, + 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x41, 0x52, 0x50, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x1a, 0x12, 0x29, 0x0a, 0x25, 0x4b, 0x38, 0x53, 0x5f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x44, 0x5f, + 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x55, 0x44, 0x47, 0x45, + 0x54, 0x10, 0x1b, 0x12, 0x22, 0x0a, 0x1e, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0x1c, 0x12, 0x25, 0x0a, 0x21, 0x4b, 0x38, 0x53, 0x5f, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x54, 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x1d, 0x12, 0x1f, + 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, + 0x44, 0x5f, 0x56, 0x4f, 0x4c, 0x43, 0x41, 0x4e, 0x4f, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x1e, 0x12, + 0x1a, 0x0a, 0x16, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x10, 0x1f, 0x12, 0x20, 0x0a, 0x1c, 0x4b, + 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, + 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x20, 0x12, 0x28, 0x0a, + 0x24, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, + 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, + 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x21, 0x12, 0x22, 0x0a, 0x1e, 0x4b, 0x38, 0x53, 0x5f, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, + 0x52, 0x4b, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x22, 0x12, 0x1b, 0x0a, 0x17, 0x4b, + 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, + 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x23, 0x12, 0x25, 0x0a, 0x21, 0x4b, 0x38, 0x53, 0x5f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x50, 0x41, 0x52, + 0x4b, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x24, 0x2a, + 0x48, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x22, + 0x0a, 0x1e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, + 0x44, 0x45, 0x53, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x45, + 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x53, 0x43, 0x10, 0x01, 0x2a, 0x94, 0x02, 0x0a, 0x15, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, + 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, + 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, + 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, + 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, + 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x02, + 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, + 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x58, 0x49, 0x53, + 0x54, 0x53, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, + 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, + 0x44, 0x4f, 0x45, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x04, + 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, + 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x47, 0x54, 0x10, 0x05, + 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, + 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x54, 0x10, 0x06, + 0x2a, 0xa6, 0x01, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x22, 0x57, 0x4f, 0x52, + 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, + 0x54, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x56, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x44, + 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x4f, 0x52, 0x4b, + 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, + 0x45, 0x52, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x42, 0x84, 0x01, 0x0a, 0x0a, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, + 0x7a, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, + 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -15488,7 +16060,7 @@ func file_api_v1_common_proto_rawDescGZIP() []byte { } var file_api_v1_common_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_api_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 158) +var file_api_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 162) var file_api_v1_common_proto_goTypes = []interface{}{ (K8SObjectKind)(0), // 0: api.v1.K8sObjectKind (OrderByEnum)(0), // 1: api.v1.OrderByEnum @@ -15612,107 +16184,111 @@ var file_api_v1_common_proto_goTypes = []interface{}{ (*VolcanoJobDetails)(nil), // 119: api.v1.VolcanoJobDetails (*VolcanoJobCondition)(nil), // 120: api.v1.VolcanoJobCondition (*VolcanoTask)(nil), // 121: api.v1.VolcanoTask - (*Event)(nil), // 122: api.v1.Event - (*EventDatapointInfo)(nil), // 123: api.v1.EventDatapointInfo - (*EventDatapoint)(nil), // 124: api.v1.EventDatapoint - nil, // 125: api.v1.WorkloadItem.LabelsEntry - nil, // 126: api.v1.WorkloadItem.AnnotationsEntry - nil, // 127: api.v1.Node.LabelsEntry - nil, // 128: api.v1.Node.AnnotationsEntry - nil, // 129: api.v1.LabelSelector.MatchLabelsEntry - nil, // 130: api.v1.ResourceDetails.ServiceSelectorEntry - nil, // 131: api.v1.ResourceDetails.ScParametersEntry - nil, // 132: api.v1.ServiceDetails.SelectorEntry - nil, // 133: api.v1.ResourceRequirements.RequestsEntry - nil, // 134: api.v1.ResourceRequirements.LimitsEntry - nil, // 135: api.v1.PersistentVolumeDetails.CapacityEntry - nil, // 136: api.v1.PVVolumeSource.VolumeAttributesEntry - nil, // 137: api.v1.CSIVolumeSource.VolumeAttributesEntry - nil, // 138: api.v1.StorageClassDetails.ParametersEntry - nil, // 139: api.v1.NamespaceDetails.ConditionsEntry - nil, // 140: api.v1.NodeDetails.CapacityEntry - nil, // 141: api.v1.NodeDetails.AllocatableEntry - nil, // 142: api.v1.TopologySelectorTerm.MatchLabelsEntry - nil, // 143: api.v1.HPAMetricSelector.SelectorEntry - nil, // 144: api.v1.VPAContainerResourcePolicy.MinAllowedEntry - nil, // 145: api.v1.VPAContainerResourcePolicy.MaxAllowedEntry - nil, // 146: api.v1.VPAContainerRecommendation.TargetEntry - nil, // 147: api.v1.VPAContainerRecommendation.LowerBoundEntry - nil, // 148: api.v1.VPAContainerRecommendation.UpperBoundEntry - nil, // 149: api.v1.VPAContainerRecommendation.UncappedTargetEntry - nil, // 150: api.v1.LimitRangeItem.DefaultLimitsEntry - nil, // 151: api.v1.LimitRangeItem.DefaultRequestEntry - nil, // 152: api.v1.LimitRangeItem.MaxEntry - nil, // 153: api.v1.LimitRangeItem.MinEntry - nil, // 154: api.v1.LimitRangeItem.MaxLimitRequestRatioEntry - nil, // 155: api.v1.KedaScaledObjectTrigger.MetadataEntry - nil, // 156: api.v1.KarpenterResourceDetails.LimitsEntry - nil, // 157: api.v1.KarpenterCapacity.OtherEntry - nil, // 158: api.v1.PodDisruptionBudgetDetails.SelectorLabelsEntry - nil, // 159: api.v1.ResourceQuotaDetails.HardLimitsEntry - nil, // 160: api.v1.ResourceQuotaDetails.UsedEntry - nil, // 161: api.v1.ResourceQuotaDetails.ScopeSelectorEntry - (*timestamppb.Timestamp)(nil), // 162: google.protobuf.Timestamp - (*money.Money)(nil), // 163: google.type.Money + (*SparkApplicationDetails)(nil), // 122: api.v1.SparkApplicationDetails + (*SparkDriverInfo)(nil), // 123: api.v1.SparkDriverInfo + (*SparkRestartPolicyInfo)(nil), // 124: api.v1.SparkRestartPolicyInfo + (*SparkDynamicAllocationInfo)(nil), // 125: api.v1.SparkDynamicAllocationInfo + (*Event)(nil), // 126: api.v1.Event + (*EventDatapointInfo)(nil), // 127: api.v1.EventDatapointInfo + (*EventDatapoint)(nil), // 128: api.v1.EventDatapoint + nil, // 129: api.v1.WorkloadItem.LabelsEntry + nil, // 130: api.v1.WorkloadItem.AnnotationsEntry + nil, // 131: api.v1.Node.LabelsEntry + nil, // 132: api.v1.Node.AnnotationsEntry + nil, // 133: api.v1.LabelSelector.MatchLabelsEntry + nil, // 134: api.v1.ResourceDetails.ServiceSelectorEntry + nil, // 135: api.v1.ResourceDetails.ScParametersEntry + nil, // 136: api.v1.ServiceDetails.SelectorEntry + nil, // 137: api.v1.ResourceRequirements.RequestsEntry + nil, // 138: api.v1.ResourceRequirements.LimitsEntry + nil, // 139: api.v1.PersistentVolumeDetails.CapacityEntry + nil, // 140: api.v1.PVVolumeSource.VolumeAttributesEntry + nil, // 141: api.v1.CSIVolumeSource.VolumeAttributesEntry + nil, // 142: api.v1.StorageClassDetails.ParametersEntry + nil, // 143: api.v1.NamespaceDetails.ConditionsEntry + nil, // 144: api.v1.NodeDetails.CapacityEntry + nil, // 145: api.v1.NodeDetails.AllocatableEntry + nil, // 146: api.v1.TopologySelectorTerm.MatchLabelsEntry + nil, // 147: api.v1.HPAMetricSelector.SelectorEntry + nil, // 148: api.v1.VPAContainerResourcePolicy.MinAllowedEntry + nil, // 149: api.v1.VPAContainerResourcePolicy.MaxAllowedEntry + nil, // 150: api.v1.VPAContainerRecommendation.TargetEntry + nil, // 151: api.v1.VPAContainerRecommendation.LowerBoundEntry + nil, // 152: api.v1.VPAContainerRecommendation.UpperBoundEntry + nil, // 153: api.v1.VPAContainerRecommendation.UncappedTargetEntry + nil, // 154: api.v1.LimitRangeItem.DefaultLimitsEntry + nil, // 155: api.v1.LimitRangeItem.DefaultRequestEntry + nil, // 156: api.v1.LimitRangeItem.MaxEntry + nil, // 157: api.v1.LimitRangeItem.MinEntry + nil, // 158: api.v1.LimitRangeItem.MaxLimitRequestRatioEntry + nil, // 159: api.v1.KedaScaledObjectTrigger.MetadataEntry + nil, // 160: api.v1.KarpenterResourceDetails.LimitsEntry + nil, // 161: api.v1.KarpenterCapacity.OtherEntry + nil, // 162: api.v1.PodDisruptionBudgetDetails.SelectorLabelsEntry + nil, // 163: api.v1.ResourceQuotaDetails.HardLimitsEntry + nil, // 164: api.v1.ResourceQuotaDetails.UsedEntry + nil, // 165: api.v1.ResourceQuotaDetails.ScopeSelectorEntry + (*timestamppb.Timestamp)(nil), // 166: google.protobuf.Timestamp + (*money.Money)(nil), // 167: google.type.Money } var file_api_v1_common_proto_depIdxs = []int32{ 0, // 0: api.v1.AuditLogEntry.workload_type:type_name -> api.v1.K8sObjectKind - 162, // 1: api.v1.AuditLogEntry.created_at:type_name -> google.protobuf.Timestamp - 162, // 2: api.v1.AuditLogEntry.updated_at:type_name -> google.protobuf.Timestamp + 166, // 1: api.v1.AuditLogEntry.created_at:type_name -> google.protobuf.Timestamp + 166, // 2: api.v1.AuditLogEntry.updated_at:type_name -> google.protobuf.Timestamp 1, // 3: api.v1.Pagination.order_by:type_name -> api.v1.OrderByEnum - 163, // 4: api.v1.CostInfo.node_recommendation_saved_cost_last_month:type_name -> google.type.Money - 163, // 5: api.v1.CostInfo.money_cpu_cost_per_hour:type_name -> google.type.Money - 163, // 6: api.v1.CostInfo.money_memory_cost_per_hour:type_name -> google.type.Money - 163, // 7: api.v1.CostInfo.money_total_cost_per_hour:type_name -> google.type.Money - 163, // 8: api.v1.CostInfo.money_total_cost_per_month:type_name -> google.type.Money - 163, // 9: api.v1.CostInfo.money_total_cost_per_year:type_name -> google.type.Money - 163, // 10: api.v1.CostInfo.money_optimized_cpu_cost_per_hour:type_name -> google.type.Money - 163, // 11: api.v1.CostInfo.money_optimized_memory_cost_per_hour:type_name -> google.type.Money - 163, // 12: api.v1.CostInfo.money_optimized_total_cost_per_hour:type_name -> google.type.Money - 163, // 13: api.v1.CostInfo.money_optimized_total_cost_per_month:type_name -> google.type.Money - 163, // 14: api.v1.CostInfo.money_optimized_total_cost_per_year:type_name -> google.type.Money - 163, // 15: api.v1.CostInfo.money_cpu_cost_for_time_period:type_name -> google.type.Money - 163, // 16: api.v1.CostInfo.money_memory_cost_for_time_period:type_name -> google.type.Money - 163, // 17: api.v1.CostInfo.money_total_cost_for_time_period:type_name -> google.type.Money - 163, // 18: api.v1.CostInfo.money_optimized_cpu_cost_for_time_period:type_name -> google.type.Money - 163, // 19: api.v1.CostInfo.money_optimized_memory_cost_for_time_period:type_name -> google.type.Money - 163, // 20: api.v1.CostInfo.money_optimized_total_cost_for_time_period:type_name -> google.type.Money - 163, // 21: api.v1.CostInfo.money_optimized_gpu_cost_for_time_period:type_name -> google.type.Money - 163, // 22: api.v1.CostInfo.money_gpu_cost_for_time_period:type_name -> google.type.Money - 163, // 23: api.v1.CostInfo.money_gpu_cost_per_hour:type_name -> google.type.Money - 163, // 24: api.v1.CostInfo.money_optimized_gpu_cost_per_hour:type_name -> google.type.Money - 163, // 25: api.v1.CostInfo.money_cpu_cost_per_vcpu_per_hour:type_name -> google.type.Money - 163, // 26: api.v1.CostInfo.money_memory_cost_per_gib_per_hour:type_name -> google.type.Money - 162, // 27: api.v1.ForecastResourceMetrics.timestamp:type_name -> google.protobuf.Timestamp + 167, // 4: api.v1.CostInfo.node_recommendation_saved_cost_last_month:type_name -> google.type.Money + 167, // 5: api.v1.CostInfo.money_cpu_cost_per_hour:type_name -> google.type.Money + 167, // 6: api.v1.CostInfo.money_memory_cost_per_hour:type_name -> google.type.Money + 167, // 7: api.v1.CostInfo.money_total_cost_per_hour:type_name -> google.type.Money + 167, // 8: api.v1.CostInfo.money_total_cost_per_month:type_name -> google.type.Money + 167, // 9: api.v1.CostInfo.money_total_cost_per_year:type_name -> google.type.Money + 167, // 10: api.v1.CostInfo.money_optimized_cpu_cost_per_hour:type_name -> google.type.Money + 167, // 11: api.v1.CostInfo.money_optimized_memory_cost_per_hour:type_name -> google.type.Money + 167, // 12: api.v1.CostInfo.money_optimized_total_cost_per_hour:type_name -> google.type.Money + 167, // 13: api.v1.CostInfo.money_optimized_total_cost_per_month:type_name -> google.type.Money + 167, // 14: api.v1.CostInfo.money_optimized_total_cost_per_year:type_name -> google.type.Money + 167, // 15: api.v1.CostInfo.money_cpu_cost_for_time_period:type_name -> google.type.Money + 167, // 16: api.v1.CostInfo.money_memory_cost_for_time_period:type_name -> google.type.Money + 167, // 17: api.v1.CostInfo.money_total_cost_for_time_period:type_name -> google.type.Money + 167, // 18: api.v1.CostInfo.money_optimized_cpu_cost_for_time_period:type_name -> google.type.Money + 167, // 19: api.v1.CostInfo.money_optimized_memory_cost_for_time_period:type_name -> google.type.Money + 167, // 20: api.v1.CostInfo.money_optimized_total_cost_for_time_period:type_name -> google.type.Money + 167, // 21: api.v1.CostInfo.money_optimized_gpu_cost_for_time_period:type_name -> google.type.Money + 167, // 22: api.v1.CostInfo.money_gpu_cost_for_time_period:type_name -> google.type.Money + 167, // 23: api.v1.CostInfo.money_gpu_cost_per_hour:type_name -> google.type.Money + 167, // 24: api.v1.CostInfo.money_optimized_gpu_cost_per_hour:type_name -> google.type.Money + 167, // 25: api.v1.CostInfo.money_cpu_cost_per_vcpu_per_hour:type_name -> google.type.Money + 167, // 26: api.v1.CostInfo.money_memory_cost_per_gib_per_hour:type_name -> google.type.Money + 166, // 27: api.v1.ForecastResourceMetrics.timestamp:type_name -> google.protobuf.Timestamp 10, // 28: api.v1.WorkloadItem.children:type_name -> api.v1.WorkloadItem - 125, // 29: api.v1.WorkloadItem.labels:type_name -> api.v1.WorkloadItem.LabelsEntry - 126, // 30: api.v1.WorkloadItem.annotations:type_name -> api.v1.WorkloadItem.AnnotationsEntry + 129, // 29: api.v1.WorkloadItem.labels:type_name -> api.v1.WorkloadItem.LabelsEntry + 130, // 30: api.v1.WorkloadItem.annotations:type_name -> api.v1.WorkloadItem.AnnotationsEntry 7, // 31: api.v1.WorkloadItem.resource_metrics:type_name -> api.v1.ResourceMetrics 6, // 32: api.v1.WorkloadItem.cost_info:type_name -> api.v1.CostInfo 17, // 33: api.v1.WorkloadItem.cost_data_points:type_name -> api.v1.CostDataPoint 18, // 34: api.v1.WorkloadItem.resource_data_points:type_name -> api.v1.ResourceDataPoint - 162, // 35: api.v1.WorkloadItem.created_at:type_name -> google.protobuf.Timestamp - 162, // 36: api.v1.WorkloadItem.deleted_at:type_name -> google.protobuf.Timestamp + 166, // 35: api.v1.WorkloadItem.created_at:type_name -> google.protobuf.Timestamp + 166, // 36: api.v1.WorkloadItem.deleted_at:type_name -> google.protobuf.Timestamp 26, // 37: api.v1.WorkloadItem.resource_details:type_name -> api.v1.ResourceDetails 7, // 38: api.v1.Node.resource_metrics:type_name -> api.v1.ResourceMetrics 6, // 39: api.v1.Node.cost_info:type_name -> api.v1.CostInfo 11, // 40: api.v1.Node.container_runtime:type_name -> api.v1.ContainerRuntimeInfo 26, // 41: api.v1.Node.resource_details:type_name -> api.v1.ResourceDetails 10, // 42: api.v1.Node.children:type_name -> api.v1.WorkloadItem - 127, // 43: api.v1.Node.labels:type_name -> api.v1.Node.LabelsEntry - 128, // 44: api.v1.Node.annotations:type_name -> api.v1.Node.AnnotationsEntry - 163, // 45: api.v1.Node.money_price_per_hour:type_name -> google.type.Money - 163, // 46: api.v1.Node.money_eff_period_total_cost:type_name -> google.type.Money - 163, // 47: api.v1.Node.money_price_per_vcpu:type_name -> google.type.Money - 163, // 48: api.v1.Node.money_price_per_gib:type_name -> google.type.Money - 163, // 49: api.v1.Node.money_price_per_gpu:type_name -> google.type.Money - 163, // 50: api.v1.Node.money_cpu_price:type_name -> google.type.Money - 163, // 51: api.v1.Node.money_memory_price:type_name -> google.type.Money - 163, // 52: api.v1.Node.money_gpu_price:type_name -> google.type.Money + 131, // 43: api.v1.Node.labels:type_name -> api.v1.Node.LabelsEntry + 132, // 44: api.v1.Node.annotations:type_name -> api.v1.Node.AnnotationsEntry + 167, // 45: api.v1.Node.money_price_per_hour:type_name -> google.type.Money + 167, // 46: api.v1.Node.money_eff_period_total_cost:type_name -> google.type.Money + 167, // 47: api.v1.Node.money_price_per_vcpu:type_name -> google.type.Money + 167, // 48: api.v1.Node.money_price_per_gib:type_name -> google.type.Money + 167, // 49: api.v1.Node.money_price_per_gpu:type_name -> google.type.Money + 167, // 50: api.v1.Node.money_cpu_price:type_name -> google.type.Money + 167, // 51: api.v1.Node.money_memory_price:type_name -> google.type.Money + 167, // 52: api.v1.Node.money_gpu_price:type_name -> google.type.Money 15, // 53: api.v1.Node.volumes_attached:type_name -> api.v1.AttachedVolume - 162, // 54: api.v1.Node.last_seen:type_name -> google.protobuf.Timestamp - 162, // 55: api.v1.Node.collected_at:type_name -> google.protobuf.Timestamp - 162, // 56: api.v1.Node.deletion_timestamp:type_name -> google.protobuf.Timestamp + 166, // 54: api.v1.Node.last_seen:type_name -> google.protobuf.Timestamp + 166, // 55: api.v1.Node.collected_at:type_name -> google.protobuf.Timestamp + 166, // 56: api.v1.Node.deletion_timestamp:type_name -> google.protobuf.Timestamp 14, // 57: api.v1.NodeGroup.nodes:type_name -> api.v1.Node 7, // 58: api.v1.NodeGroup.resource_metrics:type_name -> api.v1.ResourceMetrics 6, // 59: api.v1.NodeGroup.cost_info:type_name -> api.v1.CostInfo @@ -15726,7 +16302,7 @@ var file_api_v1_common_proto_depIdxs = []int32{ 20, // 67: api.v1.SavingsTimeSeries.savings_datapoints:type_name -> api.v1.SavingsDataPoint 2, // 68: api.v1.LabelSelectorRequirement.operator:type_name -> api.v1.LabelSelectorOperator 23, // 69: api.v1.LabelSelector.labels:type_name -> api.v1.Label - 129, // 70: api.v1.LabelSelector.match_labels:type_name -> api.v1.LabelSelector.MatchLabelsEntry + 133, // 70: api.v1.LabelSelector.match_labels:type_name -> api.v1.LabelSelector.MatchLabelsEntry 22, // 71: api.v1.LabelSelector.match_expressions:type_name -> api.v1.LabelSelectorRequirement 27, // 72: api.v1.ResourceDetails.pod_details:type_name -> api.v1.PodDetails 29, // 73: api.v1.ResourceDetails.deployment_details:type_name -> api.v1.DeploymentDetails @@ -15753,148 +16329,153 @@ var file_api_v1_common_proto_depIdxs = []int32{ 115, // 94: api.v1.ResourceDetails.pod_disruption_budget_details:type_name -> api.v1.PodDisruptionBudgetDetails 117, // 95: api.v1.ResourceDetails.resource_quota_details:type_name -> api.v1.ResourceQuotaDetails 119, // 96: api.v1.ResourceDetails.volcano_job_details:type_name -> api.v1.VolcanoJobDetails - 42, // 97: api.v1.ResourceDetails.service_ports:type_name -> api.v1.ServicePort - 130, // 98: api.v1.ResourceDetails.service_selector:type_name -> api.v1.ResourceDetails.ServiceSelectorEntry - 131, // 99: api.v1.ResourceDetails.sc_parameters:type_name -> api.v1.ResourceDetails.ScParametersEntry - 62, // 100: api.v1.ResourceDetails.node_taints:type_name -> api.v1.NodeTaint - 28, // 101: api.v1.PodDetails.containers:type_name -> api.v1.ContainerSummary - 30, // 102: api.v1.DeploymentDetails.containers:type_name -> api.v1.ContainerTemplate - 31, // 103: api.v1.DeploymentDetails.conditions:type_name -> api.v1.DeploymentCondition - 30, // 104: api.v1.StatefulSetDetails.containers:type_name -> api.v1.ContainerTemplate - 33, // 105: api.v1.StatefulSetDetails.volume_claim_templates:type_name -> api.v1.VolumeClaimTemplate - 30, // 106: api.v1.DaemonSetDetails.containers:type_name -> api.v1.ContainerTemplate - 69, // 107: api.v1.DaemonSetDetails.tolerations:type_name -> api.v1.TolerationInfo - 70, // 108: api.v1.DaemonSetDetails.node_selector:type_name -> api.v1.NodeSelector - 30, // 109: api.v1.ReplicaSetDetails.containers:type_name -> api.v1.ContainerTemplate - 24, // 110: api.v1.ReplicaSetDetails.selector:type_name -> api.v1.LabelSelector - 30, // 111: api.v1.JobDetails.containers:type_name -> api.v1.ContainerTemplate - 37, // 112: api.v1.JobDetails.conditions:type_name -> api.v1.JobCondition - 24, // 113: api.v1.JobDetails.selector:type_name -> api.v1.LabelSelector - 30, // 114: api.v1.CronJobDetails.containers:type_name -> api.v1.ContainerTemplate - 39, // 115: api.v1.CronJobDetails.active_jobs:type_name -> api.v1.ActiveJobReference - 40, // 116: api.v1.CronJobDetails.job_template:type_name -> api.v1.JobTemplate - 30, // 117: api.v1.JobTemplate.containers:type_name -> api.v1.ContainerTemplate - 42, // 118: api.v1.ServiceDetails.ports:type_name -> api.v1.ServicePort - 132, // 119: api.v1.ServiceDetails.selector:type_name -> api.v1.ServiceDetails.SelectorEntry - 43, // 120: api.v1.ServiceDetails.load_balancer_ingress:type_name -> api.v1.LoadBalancerIngress - 45, // 121: api.v1.IngressDetails.rules:type_name -> api.v1.IngressRule - 48, // 122: api.v1.IngressDetails.tls:type_name -> api.v1.IngressTLS - 47, // 123: api.v1.IngressDetails.default_backend:type_name -> api.v1.IngressBackend - 43, // 124: api.v1.IngressDetails.load_balancer_ingress:type_name -> api.v1.LoadBalancerIngress - 46, // 125: api.v1.IngressRule.paths:type_name -> api.v1.IngressPath - 47, // 126: api.v1.IngressPath.backend:type_name -> api.v1.IngressBackend - 50, // 127: api.v1.PersistentVolumeClaimDetails.resource_requirements:type_name -> api.v1.ResourceRequirements - 24, // 128: api.v1.PersistentVolumeClaimDetails.selector:type_name -> api.v1.LabelSelector - 51, // 129: api.v1.PersistentVolumeClaimDetails.volume_node_affinity:type_name -> api.v1.VolumeNodeAffinity - 52, // 130: api.v1.PersistentVolumeClaimDetails.conditions:type_name -> api.v1.PVCCondition - 133, // 131: api.v1.ResourceRequirements.requests:type_name -> api.v1.ResourceRequirements.RequestsEntry - 134, // 132: api.v1.ResourceRequirements.limits:type_name -> api.v1.ResourceRequirements.LimitsEntry - 72, // 133: api.v1.VolumeNodeAffinity.required:type_name -> api.v1.NodeSelectorRequirement - 72, // 134: api.v1.VolumeNodeAffinity.preferred:type_name -> api.v1.NodeSelectorRequirement - 135, // 135: api.v1.PersistentVolumeDetails.capacity:type_name -> api.v1.PersistentVolumeDetails.CapacityEntry - 54, // 136: api.v1.PersistentVolumeDetails.claim_ref:type_name -> api.v1.PVClaimReference - 55, // 137: api.v1.PersistentVolumeDetails.volume_source:type_name -> api.v1.PVVolumeSource - 70, // 138: api.v1.PersistentVolumeDetails.node_affinity:type_name -> api.v1.NodeSelector - 56, // 139: api.v1.PVVolumeSource.csi:type_name -> api.v1.CSIVolumeSource - 57, // 140: api.v1.PVVolumeSource.host_path:type_name -> api.v1.HostPathVolumeSource - 58, // 141: api.v1.PVVolumeSource.nfs:type_name -> api.v1.NFSVolumeSource - 136, // 142: api.v1.PVVolumeSource.volume_attributes:type_name -> api.v1.PVVolumeSource.VolumeAttributesEntry - 137, // 143: api.v1.CSIVolumeSource.volume_attributes:type_name -> api.v1.CSIVolumeSource.VolumeAttributesEntry - 138, // 144: api.v1.StorageClassDetails.parameters:type_name -> api.v1.StorageClassDetails.ParametersEntry - 67, // 145: api.v1.StorageClassDetails.allowed_topologies:type_name -> api.v1.TopologySelector - 139, // 146: api.v1.NamespaceDetails.conditions:type_name -> api.v1.NamespaceDetails.ConditionsEntry - 63, // 147: api.v1.NodeDetails.addresses:type_name -> api.v1.NodeAddress - 64, // 148: api.v1.NodeDetails.conditions:type_name -> api.v1.NodeCondition - 65, // 149: api.v1.NodeDetails.system_info:type_name -> api.v1.NodeSystemInfo - 140, // 150: api.v1.NodeDetails.capacity:type_name -> api.v1.NodeDetails.CapacityEntry - 141, // 151: api.v1.NodeDetails.allocatable:type_name -> api.v1.NodeDetails.AllocatableEntry - 66, // 152: api.v1.NodeDetails.images:type_name -> api.v1.NodeImage - 68, // 153: api.v1.TopologySelector.match_label_expressions:type_name -> api.v1.TopologySelectorTerm - 142, // 154: api.v1.TopologySelectorTerm.match_labels:type_name -> api.v1.TopologySelectorTerm.MatchLabelsEntry - 71, // 155: api.v1.NodeSelector.terms:type_name -> api.v1.NodeSelectorTerm - 72, // 156: api.v1.NodeSelectorTerm.match_expressions:type_name -> api.v1.NodeSelectorRequirement - 72, // 157: api.v1.NodeSelectorTerm.match_fields:type_name -> api.v1.NodeSelectorRequirement - 74, // 158: api.v1.HPADetails.scale_target_ref:type_name -> api.v1.ScaleTargetRef - 75, // 159: api.v1.HPADetails.metrics:type_name -> api.v1.HPAMetric - 87, // 160: api.v1.HPADetails.conditions:type_name -> api.v1.HPACondition - 88, // 161: api.v1.HPADetails.behavior:type_name -> api.v1.HPABehavior - 82, // 162: api.v1.HPADetails.current_metrics:type_name -> api.v1.HPACurrentMetric - 76, // 163: api.v1.HPAMetric.resource:type_name -> api.v1.HPAResourceMetric - 77, // 164: api.v1.HPAMetric.pods:type_name -> api.v1.HPAPodsMetric - 78, // 165: api.v1.HPAMetric.object:type_name -> api.v1.HPAObjectMetric - 79, // 166: api.v1.HPAMetric.external:type_name -> api.v1.HPAExternalMetric - 80, // 167: api.v1.HPAPodsMetric.metric:type_name -> api.v1.HPAMetricSelector - 81, // 168: api.v1.HPAObjectMetric.described_object:type_name -> api.v1.HPAObjectReference - 80, // 169: api.v1.HPAObjectMetric.metric:type_name -> api.v1.HPAMetricSelector - 80, // 170: api.v1.HPAExternalMetric.metric:type_name -> api.v1.HPAMetricSelector - 143, // 171: api.v1.HPAMetricSelector.selector:type_name -> api.v1.HPAMetricSelector.SelectorEntry - 83, // 172: api.v1.HPACurrentMetric.resource:type_name -> api.v1.HPACurrentResourceMetric - 84, // 173: api.v1.HPACurrentMetric.pods:type_name -> api.v1.HPACurrentPodsMetric - 85, // 174: api.v1.HPACurrentMetric.object:type_name -> api.v1.HPACurrentObjectMetric - 86, // 175: api.v1.HPACurrentMetric.external:type_name -> api.v1.HPACurrentExternalMetric - 80, // 176: api.v1.HPACurrentPodsMetric.metric:type_name -> api.v1.HPAMetricSelector - 81, // 177: api.v1.HPACurrentObjectMetric.described_object:type_name -> api.v1.HPAObjectReference - 80, // 178: api.v1.HPACurrentObjectMetric.metric:type_name -> api.v1.HPAMetricSelector - 80, // 179: api.v1.HPACurrentExternalMetric.metric:type_name -> api.v1.HPAMetricSelector - 89, // 180: api.v1.HPABehavior.scale_up:type_name -> api.v1.HPAScalingRules - 89, // 181: api.v1.HPABehavior.scale_down:type_name -> api.v1.HPAScalingRules - 90, // 182: api.v1.HPAScalingRules.policies:type_name -> api.v1.HPAScalingPolicy - 92, // 183: api.v1.VPADetails.target_ref:type_name -> api.v1.VPATargetRef - 93, // 184: api.v1.VPADetails.update_policy:type_name -> api.v1.VPAUpdatePolicy - 94, // 185: api.v1.VPADetails.resource_policy:type_name -> api.v1.VPAResourcePolicy - 96, // 186: api.v1.VPADetails.recommendation:type_name -> api.v1.VPARecommendation - 98, // 187: api.v1.VPADetails.conditions:type_name -> api.v1.VPACondition - 95, // 188: api.v1.VPAResourcePolicy.container_policies:type_name -> api.v1.VPAContainerResourcePolicy - 144, // 189: api.v1.VPAContainerResourcePolicy.min_allowed:type_name -> api.v1.VPAContainerResourcePolicy.MinAllowedEntry - 145, // 190: api.v1.VPAContainerResourcePolicy.max_allowed:type_name -> api.v1.VPAContainerResourcePolicy.MaxAllowedEntry - 97, // 191: api.v1.VPARecommendation.container_recommendations:type_name -> api.v1.VPAContainerRecommendation - 146, // 192: api.v1.VPAContainerRecommendation.target:type_name -> api.v1.VPAContainerRecommendation.TargetEntry - 147, // 193: api.v1.VPAContainerRecommendation.lower_bound:type_name -> api.v1.VPAContainerRecommendation.LowerBoundEntry - 148, // 194: api.v1.VPAContainerRecommendation.upper_bound:type_name -> api.v1.VPAContainerRecommendation.UpperBoundEntry - 149, // 195: api.v1.VPAContainerRecommendation.uncapped_target:type_name -> api.v1.VPAContainerRecommendation.UncappedTargetEntry - 100, // 196: api.v1.LimitRangeDetails.limits:type_name -> api.v1.LimitRangeItem - 150, // 197: api.v1.LimitRangeItem.default_limits:type_name -> api.v1.LimitRangeItem.DefaultLimitsEntry - 151, // 198: api.v1.LimitRangeItem.default_request:type_name -> api.v1.LimitRangeItem.DefaultRequestEntry - 152, // 199: api.v1.LimitRangeItem.max:type_name -> api.v1.LimitRangeItem.MaxEntry - 153, // 200: api.v1.LimitRangeItem.min:type_name -> api.v1.LimitRangeItem.MinEntry - 154, // 201: api.v1.LimitRangeItem.max_limit_request_ratio:type_name -> api.v1.LimitRangeItem.MaxLimitRequestRatioEntry - 103, // 202: api.v1.RoleDetails.rules:type_name -> api.v1.RoleRule - 105, // 203: api.v1.RoleBindingDetails.subjects:type_name -> api.v1.RoleBindingSubject - 106, // 204: api.v1.RoleBindingDetails.role_ref:type_name -> api.v1.RoleReference - 108, // 205: api.v1.KedaScaledObjectDetails.triggers:type_name -> api.v1.KedaScaledObjectTrigger - 109, // 206: api.v1.KedaScaledObjectDetails.conditions:type_name -> api.v1.KedaScaledObjectCondition - 155, // 207: api.v1.KedaScaledObjectTrigger.metadata:type_name -> api.v1.KedaScaledObjectTrigger.MetadataEntry - 111, // 208: api.v1.KarpenterResourceDetails.conditions:type_name -> api.v1.KarpenterResourceCondition - 112, // 209: api.v1.KarpenterResourceDetails.capacity:type_name -> api.v1.KarpenterCapacity - 113, // 210: api.v1.KarpenterResourceDetails.requirements:type_name -> api.v1.KarpenterRequirement - 156, // 211: api.v1.KarpenterResourceDetails.limits:type_name -> api.v1.KarpenterResourceDetails.LimitsEntry - 157, // 212: api.v1.KarpenterCapacity.other:type_name -> api.v1.KarpenterCapacity.OtherEntry - 24, // 213: api.v1.WorkloadFilters.namespace_selector:type_name -> api.v1.LabelSelector - 24, // 214: api.v1.WorkloadFilters.workload_selector:type_name -> api.v1.LabelSelector - 0, // 215: api.v1.WorkloadFilters.kind_filter:type_name -> api.v1.K8sObjectKind - 25, // 216: api.v1.WorkloadFilters.name_pattern:type_name -> api.v1.RegexPattern - 24, // 217: api.v1.WorkloadFilters.annotation_selector:type_name -> api.v1.LabelSelector - 3, // 218: api.v1.WorkloadFilters.status:type_name -> api.v1.WorkloadStatusFilter - 158, // 219: api.v1.PodDisruptionBudgetDetails.selector_labels:type_name -> api.v1.PodDisruptionBudgetDetails.SelectorLabelsEntry - 116, // 220: api.v1.PodDisruptionBudgetDetails.conditions:type_name -> api.v1.PodDisruptionBudgetCondition - 159, // 221: api.v1.ResourceQuotaDetails.hard_limits:type_name -> api.v1.ResourceQuotaDetails.HardLimitsEntry - 160, // 222: api.v1.ResourceQuotaDetails.used:type_name -> api.v1.ResourceQuotaDetails.UsedEntry - 161, // 223: api.v1.ResourceQuotaDetails.scope_selector:type_name -> api.v1.ResourceQuotaDetails.ScopeSelectorEntry - 118, // 224: api.v1.ResourceQuotaDetails.conditions:type_name -> api.v1.ResourceQuotaCondition - 30, // 225: api.v1.VolcanoJobDetails.containers:type_name -> api.v1.ContainerTemplate - 120, // 226: api.v1.VolcanoJobDetails.conditions:type_name -> api.v1.VolcanoJobCondition - 121, // 227: api.v1.VolcanoJobDetails.tasks:type_name -> api.v1.VolcanoTask - 30, // 228: api.v1.VolcanoTask.containers:type_name -> api.v1.ContainerTemplate - 162, // 229: api.v1.Event.created_at:type_name -> google.protobuf.Timestamp - 162, // 230: api.v1.Event.updated_at:type_name -> google.protobuf.Timestamp - 162, // 231: api.v1.Event.last_seen:type_name -> google.protobuf.Timestamp - 162, // 232: api.v1.Event.deleted_at:type_name -> google.protobuf.Timestamp - 123, // 233: api.v1.EventDatapoint.events:type_name -> api.v1.EventDatapointInfo - 234, // [234:234] is the sub-list for method output_type - 234, // [234:234] is the sub-list for method input_type - 234, // [234:234] is the sub-list for extension type_name - 234, // [234:234] is the sub-list for extension extendee - 0, // [0:234] is the sub-list for field type_name + 122, // 97: api.v1.ResourceDetails.spark_application_details:type_name -> api.v1.SparkApplicationDetails + 42, // 98: api.v1.ResourceDetails.service_ports:type_name -> api.v1.ServicePort + 134, // 99: api.v1.ResourceDetails.service_selector:type_name -> api.v1.ResourceDetails.ServiceSelectorEntry + 135, // 100: api.v1.ResourceDetails.sc_parameters:type_name -> api.v1.ResourceDetails.ScParametersEntry + 62, // 101: api.v1.ResourceDetails.node_taints:type_name -> api.v1.NodeTaint + 28, // 102: api.v1.PodDetails.containers:type_name -> api.v1.ContainerSummary + 30, // 103: api.v1.DeploymentDetails.containers:type_name -> api.v1.ContainerTemplate + 31, // 104: api.v1.DeploymentDetails.conditions:type_name -> api.v1.DeploymentCondition + 30, // 105: api.v1.StatefulSetDetails.containers:type_name -> api.v1.ContainerTemplate + 33, // 106: api.v1.StatefulSetDetails.volume_claim_templates:type_name -> api.v1.VolumeClaimTemplate + 30, // 107: api.v1.DaemonSetDetails.containers:type_name -> api.v1.ContainerTemplate + 69, // 108: api.v1.DaemonSetDetails.tolerations:type_name -> api.v1.TolerationInfo + 70, // 109: api.v1.DaemonSetDetails.node_selector:type_name -> api.v1.NodeSelector + 30, // 110: api.v1.ReplicaSetDetails.containers:type_name -> api.v1.ContainerTemplate + 24, // 111: api.v1.ReplicaSetDetails.selector:type_name -> api.v1.LabelSelector + 30, // 112: api.v1.JobDetails.containers:type_name -> api.v1.ContainerTemplate + 37, // 113: api.v1.JobDetails.conditions:type_name -> api.v1.JobCondition + 24, // 114: api.v1.JobDetails.selector:type_name -> api.v1.LabelSelector + 30, // 115: api.v1.CronJobDetails.containers:type_name -> api.v1.ContainerTemplate + 39, // 116: api.v1.CronJobDetails.active_jobs:type_name -> api.v1.ActiveJobReference + 40, // 117: api.v1.CronJobDetails.job_template:type_name -> api.v1.JobTemplate + 30, // 118: api.v1.JobTemplate.containers:type_name -> api.v1.ContainerTemplate + 42, // 119: api.v1.ServiceDetails.ports:type_name -> api.v1.ServicePort + 136, // 120: api.v1.ServiceDetails.selector:type_name -> api.v1.ServiceDetails.SelectorEntry + 43, // 121: api.v1.ServiceDetails.load_balancer_ingress:type_name -> api.v1.LoadBalancerIngress + 45, // 122: api.v1.IngressDetails.rules:type_name -> api.v1.IngressRule + 48, // 123: api.v1.IngressDetails.tls:type_name -> api.v1.IngressTLS + 47, // 124: api.v1.IngressDetails.default_backend:type_name -> api.v1.IngressBackend + 43, // 125: api.v1.IngressDetails.load_balancer_ingress:type_name -> api.v1.LoadBalancerIngress + 46, // 126: api.v1.IngressRule.paths:type_name -> api.v1.IngressPath + 47, // 127: api.v1.IngressPath.backend:type_name -> api.v1.IngressBackend + 50, // 128: api.v1.PersistentVolumeClaimDetails.resource_requirements:type_name -> api.v1.ResourceRequirements + 24, // 129: api.v1.PersistentVolumeClaimDetails.selector:type_name -> api.v1.LabelSelector + 51, // 130: api.v1.PersistentVolumeClaimDetails.volume_node_affinity:type_name -> api.v1.VolumeNodeAffinity + 52, // 131: api.v1.PersistentVolumeClaimDetails.conditions:type_name -> api.v1.PVCCondition + 137, // 132: api.v1.ResourceRequirements.requests:type_name -> api.v1.ResourceRequirements.RequestsEntry + 138, // 133: api.v1.ResourceRequirements.limits:type_name -> api.v1.ResourceRequirements.LimitsEntry + 72, // 134: api.v1.VolumeNodeAffinity.required:type_name -> api.v1.NodeSelectorRequirement + 72, // 135: api.v1.VolumeNodeAffinity.preferred:type_name -> api.v1.NodeSelectorRequirement + 139, // 136: api.v1.PersistentVolumeDetails.capacity:type_name -> api.v1.PersistentVolumeDetails.CapacityEntry + 54, // 137: api.v1.PersistentVolumeDetails.claim_ref:type_name -> api.v1.PVClaimReference + 55, // 138: api.v1.PersistentVolumeDetails.volume_source:type_name -> api.v1.PVVolumeSource + 70, // 139: api.v1.PersistentVolumeDetails.node_affinity:type_name -> api.v1.NodeSelector + 56, // 140: api.v1.PVVolumeSource.csi:type_name -> api.v1.CSIVolumeSource + 57, // 141: api.v1.PVVolumeSource.host_path:type_name -> api.v1.HostPathVolumeSource + 58, // 142: api.v1.PVVolumeSource.nfs:type_name -> api.v1.NFSVolumeSource + 140, // 143: api.v1.PVVolumeSource.volume_attributes:type_name -> api.v1.PVVolumeSource.VolumeAttributesEntry + 141, // 144: api.v1.CSIVolumeSource.volume_attributes:type_name -> api.v1.CSIVolumeSource.VolumeAttributesEntry + 142, // 145: api.v1.StorageClassDetails.parameters:type_name -> api.v1.StorageClassDetails.ParametersEntry + 67, // 146: api.v1.StorageClassDetails.allowed_topologies:type_name -> api.v1.TopologySelector + 143, // 147: api.v1.NamespaceDetails.conditions:type_name -> api.v1.NamespaceDetails.ConditionsEntry + 63, // 148: api.v1.NodeDetails.addresses:type_name -> api.v1.NodeAddress + 64, // 149: api.v1.NodeDetails.conditions:type_name -> api.v1.NodeCondition + 65, // 150: api.v1.NodeDetails.system_info:type_name -> api.v1.NodeSystemInfo + 144, // 151: api.v1.NodeDetails.capacity:type_name -> api.v1.NodeDetails.CapacityEntry + 145, // 152: api.v1.NodeDetails.allocatable:type_name -> api.v1.NodeDetails.AllocatableEntry + 66, // 153: api.v1.NodeDetails.images:type_name -> api.v1.NodeImage + 68, // 154: api.v1.TopologySelector.match_label_expressions:type_name -> api.v1.TopologySelectorTerm + 146, // 155: api.v1.TopologySelectorTerm.match_labels:type_name -> api.v1.TopologySelectorTerm.MatchLabelsEntry + 71, // 156: api.v1.NodeSelector.terms:type_name -> api.v1.NodeSelectorTerm + 72, // 157: api.v1.NodeSelectorTerm.match_expressions:type_name -> api.v1.NodeSelectorRequirement + 72, // 158: api.v1.NodeSelectorTerm.match_fields:type_name -> api.v1.NodeSelectorRequirement + 74, // 159: api.v1.HPADetails.scale_target_ref:type_name -> api.v1.ScaleTargetRef + 75, // 160: api.v1.HPADetails.metrics:type_name -> api.v1.HPAMetric + 87, // 161: api.v1.HPADetails.conditions:type_name -> api.v1.HPACondition + 88, // 162: api.v1.HPADetails.behavior:type_name -> api.v1.HPABehavior + 82, // 163: api.v1.HPADetails.current_metrics:type_name -> api.v1.HPACurrentMetric + 76, // 164: api.v1.HPAMetric.resource:type_name -> api.v1.HPAResourceMetric + 77, // 165: api.v1.HPAMetric.pods:type_name -> api.v1.HPAPodsMetric + 78, // 166: api.v1.HPAMetric.object:type_name -> api.v1.HPAObjectMetric + 79, // 167: api.v1.HPAMetric.external:type_name -> api.v1.HPAExternalMetric + 80, // 168: api.v1.HPAPodsMetric.metric:type_name -> api.v1.HPAMetricSelector + 81, // 169: api.v1.HPAObjectMetric.described_object:type_name -> api.v1.HPAObjectReference + 80, // 170: api.v1.HPAObjectMetric.metric:type_name -> api.v1.HPAMetricSelector + 80, // 171: api.v1.HPAExternalMetric.metric:type_name -> api.v1.HPAMetricSelector + 147, // 172: api.v1.HPAMetricSelector.selector:type_name -> api.v1.HPAMetricSelector.SelectorEntry + 83, // 173: api.v1.HPACurrentMetric.resource:type_name -> api.v1.HPACurrentResourceMetric + 84, // 174: api.v1.HPACurrentMetric.pods:type_name -> api.v1.HPACurrentPodsMetric + 85, // 175: api.v1.HPACurrentMetric.object:type_name -> api.v1.HPACurrentObjectMetric + 86, // 176: api.v1.HPACurrentMetric.external:type_name -> api.v1.HPACurrentExternalMetric + 80, // 177: api.v1.HPACurrentPodsMetric.metric:type_name -> api.v1.HPAMetricSelector + 81, // 178: api.v1.HPACurrentObjectMetric.described_object:type_name -> api.v1.HPAObjectReference + 80, // 179: api.v1.HPACurrentObjectMetric.metric:type_name -> api.v1.HPAMetricSelector + 80, // 180: api.v1.HPACurrentExternalMetric.metric:type_name -> api.v1.HPAMetricSelector + 89, // 181: api.v1.HPABehavior.scale_up:type_name -> api.v1.HPAScalingRules + 89, // 182: api.v1.HPABehavior.scale_down:type_name -> api.v1.HPAScalingRules + 90, // 183: api.v1.HPAScalingRules.policies:type_name -> api.v1.HPAScalingPolicy + 92, // 184: api.v1.VPADetails.target_ref:type_name -> api.v1.VPATargetRef + 93, // 185: api.v1.VPADetails.update_policy:type_name -> api.v1.VPAUpdatePolicy + 94, // 186: api.v1.VPADetails.resource_policy:type_name -> api.v1.VPAResourcePolicy + 96, // 187: api.v1.VPADetails.recommendation:type_name -> api.v1.VPARecommendation + 98, // 188: api.v1.VPADetails.conditions:type_name -> api.v1.VPACondition + 95, // 189: api.v1.VPAResourcePolicy.container_policies:type_name -> api.v1.VPAContainerResourcePolicy + 148, // 190: api.v1.VPAContainerResourcePolicy.min_allowed:type_name -> api.v1.VPAContainerResourcePolicy.MinAllowedEntry + 149, // 191: api.v1.VPAContainerResourcePolicy.max_allowed:type_name -> api.v1.VPAContainerResourcePolicy.MaxAllowedEntry + 97, // 192: api.v1.VPARecommendation.container_recommendations:type_name -> api.v1.VPAContainerRecommendation + 150, // 193: api.v1.VPAContainerRecommendation.target:type_name -> api.v1.VPAContainerRecommendation.TargetEntry + 151, // 194: api.v1.VPAContainerRecommendation.lower_bound:type_name -> api.v1.VPAContainerRecommendation.LowerBoundEntry + 152, // 195: api.v1.VPAContainerRecommendation.upper_bound:type_name -> api.v1.VPAContainerRecommendation.UpperBoundEntry + 153, // 196: api.v1.VPAContainerRecommendation.uncapped_target:type_name -> api.v1.VPAContainerRecommendation.UncappedTargetEntry + 100, // 197: api.v1.LimitRangeDetails.limits:type_name -> api.v1.LimitRangeItem + 154, // 198: api.v1.LimitRangeItem.default_limits:type_name -> api.v1.LimitRangeItem.DefaultLimitsEntry + 155, // 199: api.v1.LimitRangeItem.default_request:type_name -> api.v1.LimitRangeItem.DefaultRequestEntry + 156, // 200: api.v1.LimitRangeItem.max:type_name -> api.v1.LimitRangeItem.MaxEntry + 157, // 201: api.v1.LimitRangeItem.min:type_name -> api.v1.LimitRangeItem.MinEntry + 158, // 202: api.v1.LimitRangeItem.max_limit_request_ratio:type_name -> api.v1.LimitRangeItem.MaxLimitRequestRatioEntry + 103, // 203: api.v1.RoleDetails.rules:type_name -> api.v1.RoleRule + 105, // 204: api.v1.RoleBindingDetails.subjects:type_name -> api.v1.RoleBindingSubject + 106, // 205: api.v1.RoleBindingDetails.role_ref:type_name -> api.v1.RoleReference + 108, // 206: api.v1.KedaScaledObjectDetails.triggers:type_name -> api.v1.KedaScaledObjectTrigger + 109, // 207: api.v1.KedaScaledObjectDetails.conditions:type_name -> api.v1.KedaScaledObjectCondition + 159, // 208: api.v1.KedaScaledObjectTrigger.metadata:type_name -> api.v1.KedaScaledObjectTrigger.MetadataEntry + 111, // 209: api.v1.KarpenterResourceDetails.conditions:type_name -> api.v1.KarpenterResourceCondition + 112, // 210: api.v1.KarpenterResourceDetails.capacity:type_name -> api.v1.KarpenterCapacity + 113, // 211: api.v1.KarpenterResourceDetails.requirements:type_name -> api.v1.KarpenterRequirement + 160, // 212: api.v1.KarpenterResourceDetails.limits:type_name -> api.v1.KarpenterResourceDetails.LimitsEntry + 161, // 213: api.v1.KarpenterCapacity.other:type_name -> api.v1.KarpenterCapacity.OtherEntry + 24, // 214: api.v1.WorkloadFilters.namespace_selector:type_name -> api.v1.LabelSelector + 24, // 215: api.v1.WorkloadFilters.workload_selector:type_name -> api.v1.LabelSelector + 0, // 216: api.v1.WorkloadFilters.kind_filter:type_name -> api.v1.K8sObjectKind + 25, // 217: api.v1.WorkloadFilters.name_pattern:type_name -> api.v1.RegexPattern + 24, // 218: api.v1.WorkloadFilters.annotation_selector:type_name -> api.v1.LabelSelector + 3, // 219: api.v1.WorkloadFilters.status:type_name -> api.v1.WorkloadStatusFilter + 162, // 220: api.v1.PodDisruptionBudgetDetails.selector_labels:type_name -> api.v1.PodDisruptionBudgetDetails.SelectorLabelsEntry + 116, // 221: api.v1.PodDisruptionBudgetDetails.conditions:type_name -> api.v1.PodDisruptionBudgetCondition + 163, // 222: api.v1.ResourceQuotaDetails.hard_limits:type_name -> api.v1.ResourceQuotaDetails.HardLimitsEntry + 164, // 223: api.v1.ResourceQuotaDetails.used:type_name -> api.v1.ResourceQuotaDetails.UsedEntry + 165, // 224: api.v1.ResourceQuotaDetails.scope_selector:type_name -> api.v1.ResourceQuotaDetails.ScopeSelectorEntry + 118, // 225: api.v1.ResourceQuotaDetails.conditions:type_name -> api.v1.ResourceQuotaCondition + 30, // 226: api.v1.VolcanoJobDetails.containers:type_name -> api.v1.ContainerTemplate + 120, // 227: api.v1.VolcanoJobDetails.conditions:type_name -> api.v1.VolcanoJobCondition + 121, // 228: api.v1.VolcanoJobDetails.tasks:type_name -> api.v1.VolcanoTask + 30, // 229: api.v1.VolcanoTask.containers:type_name -> api.v1.ContainerTemplate + 30, // 230: api.v1.SparkApplicationDetails.containers:type_name -> api.v1.ContainerTemplate + 123, // 231: api.v1.SparkApplicationDetails.spark_driver_info:type_name -> api.v1.SparkDriverInfo + 124, // 232: api.v1.SparkApplicationDetails.restart_policy:type_name -> api.v1.SparkRestartPolicyInfo + 125, // 233: api.v1.SparkApplicationDetails.dynamic_allocation:type_name -> api.v1.SparkDynamicAllocationInfo + 166, // 234: api.v1.Event.created_at:type_name -> google.protobuf.Timestamp + 166, // 235: api.v1.Event.updated_at:type_name -> google.protobuf.Timestamp + 166, // 236: api.v1.Event.last_seen:type_name -> google.protobuf.Timestamp + 166, // 237: api.v1.Event.deleted_at:type_name -> google.protobuf.Timestamp + 127, // 238: api.v1.EventDatapoint.events:type_name -> api.v1.EventDatapointInfo + 239, // [239:239] is the sub-list for method output_type + 239, // [239:239] is the sub-list for method input_type + 239, // [239:239] is the sub-list for extension type_name + 239, // [239:239] is the sub-list for extension extendee + 0, // [0:239] is the sub-list for field type_name } func init() { file_api_v1_common_proto_init() } @@ -17320,7 +17901,7 @@ func file_api_v1_common_proto_init() { } } file_api_v1_common_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Event); i { + switch v := v.(*SparkApplicationDetails); i { case 0: return &v.state case 1: @@ -17332,7 +17913,7 @@ func file_api_v1_common_proto_init() { } } file_api_v1_common_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventDatapointInfo); i { + switch v := v.(*SparkDriverInfo); i { case 0: return &v.state case 1: @@ -17344,6 +17925,54 @@ func file_api_v1_common_proto_init() { } } file_api_v1_common_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SparkRestartPolicyInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v1_common_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SparkDynamicAllocationInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v1_common_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Event); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v1_common_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventDatapointInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v1_common_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EventDatapoint); i { case 0: return &v.state @@ -17385,6 +18014,7 @@ func file_api_v1_common_proto_init() { (*ResourceDetails_PodDisruptionBudgetDetails)(nil), (*ResourceDetails_ResourceQuotaDetails)(nil), (*ResourceDetails_VolcanoJobDetails)(nil), + (*ResourceDetails_SparkApplicationDetails)(nil), } file_api_v1_common_proto_msgTypes[110].OneofWrappers = []interface{}{} type x struct{} @@ -17393,7 +18023,7 @@ func file_api_v1_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_v1_common_proto_rawDesc, NumEnums: 4, - NumMessages: 158, + NumMessages: 162, NumExtensions: 0, NumServices: 0, }, diff --git a/gen/api/v1/metrics_collector.pb.go b/gen/api/v1/metrics_collector.pb.go index 197ba698..c264823d 100644 --- a/gen/api/v1/metrics_collector.pb.go +++ b/gen/api/v1/metrics_collector.pb.go @@ -1516,6 +1516,9 @@ type Namespace struct { KedaScaledObjects map[string]*ResourceIdentifier `protobuf:"bytes,25,rep,name=keda_scaled_objects,json=kedaScaledObjects,proto3" json:"keda_scaled_objects,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Hash string `protobuf:"bytes,26,opt,name=hash,proto3" json:"hash,omitempty"` CsiStorageCapacities map[string]*ResourceIdentifier `protobuf:"bytes,27,rep,name=csi_storage_capacities,json=csiStorageCapacities,proto3" json:"csi_storage_capacities,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + KubeflowNotebooks map[string]*ResourceIdentifier `protobuf:"bytes,28,rep,name=kubeflow_notebooks,json=kubeflowNotebooks,proto3" json:"kubeflow_notebooks,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolcanoJobs map[string]*ResourceIdentifier `protobuf:"bytes,29,rep,name=volcano_jobs,json=volcanoJobs,proto3" json:"volcano_jobs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SparkApplications map[string]*ResourceIdentifier `protobuf:"bytes,30,rep,name=spark_applications,json=sparkApplications,proto3" json:"spark_applications,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Namespace) Reset() { @@ -1741,6 +1744,27 @@ func (x *Namespace) GetCsiStorageCapacities() map[string]*ResourceIdentifier { return nil } +func (x *Namespace) GetKubeflowNotebooks() map[string]*ResourceIdentifier { + if x != nil { + return x.KubeflowNotebooks + } + return nil +} + +func (x *Namespace) GetVolcanoJobs() map[string]*ResourceIdentifier { + if x != nil { + return x.VolcanoJobs + } + return nil +} + +func (x *Namespace) GetSparkApplications() map[string]*ResourceIdentifier { + if x != nil { + return x.SparkApplications + } + return nil +} + // ClusterScopedSnapshot contains minimal cluster-scoped resource data type ClusterScopedSnapshot struct { state protoimpl.MessageState @@ -2889,7 +2913,7 @@ var file_api_v1_metrics_collector_proto_rawDesc = []byte{ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x88, 0x21, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x01, 0x22, 0xa1, 0x25, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, @@ -3009,619 +3033,653 @@ var file_api_v1_metrics_collector_proto_rawDesc = []byte{ 0x2e, 0x43, 0x73, 0x69, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x63, 0x73, 0x69, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x1a, 0x5a, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x11, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x12, 0x57, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x6f, 0x74, + 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, + 0x4b, 0x75, 0x62, 0x65, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x66, 0x6c, 0x6f, 0x77, + 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x76, 0x6f, 0x6c, + 0x63, 0x61, 0x6e, 0x6f, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x2e, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x73, + 0x12, 0x57, 0x0a, 0x12, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, + 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x5a, 0x0a, 0x10, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 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, + 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, + 0x6c, 0x53, 0x65, 0x74, 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, 0x30, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x59, 0x0a, 0x0f, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, + 0x10, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x59, 0x0a, 0x0f, 0x44, 0x61, 0x65, - 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x0d, 0x53, 0x65, 0x72, + 0x76, 0x69, 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, 0x30, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x59, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x56, 0x0a, + 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 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, + 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x53, 0x0a, 0x09, 0x50, 0x76, 0x63, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x53, 0x0a, 0x09, 0x4a, 0x6f, + 0x62, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x57, 0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x0e, 0x49, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 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, 0x30, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x5e, 0x0a, 0x14, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 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, 0x30, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x5e, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 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, 0x30, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0a, 0x52, 0x6f, 0x6c, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 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, + 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x19, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, + 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x0e, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, - 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, + 0x67, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x57, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x59, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 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, 0x30, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x56, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x53, 0x0a, 0x09, - 0x50, 0x76, 0x63, 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, 0x30, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x53, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, - 0x62, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x1a, 0x5d, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, + 0x61, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x58, 0x0a, 0x0e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5e, 0x0a, 0x14, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5e, 0x0a, 0x14, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0a, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x5e, 0x0a, 0x14, 0x55, 0x6e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x50, 0x6f, + 0x64, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x5b, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x19, - 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, - 0x67, 0x65, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, 0x10, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5e, 0x0a, 0x14, 0x55, 0x6e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x64, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x67, 0x0a, 0x1d, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, - 0x6e, 0x74, 0x61, 0x6c, 0x50, 0x6f, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x67, 0x0a, 0x1d, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x50, 0x6f, 0x64, + 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, + 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x55, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x13, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, - 0x61, 0x6c, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x5d, 0x0a, 0x13, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4a, 0x6f, 0x62, + 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x60, + 0x0a, 0x16, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x63, 0x0a, 0x19, 0x43, 0x73, 0x69, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x61, + 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x60, 0x0a, 0x16, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, - 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x60, 0x0a, 0x16, 0x4b, 0x75, 0x62, 0x65, 0x66, 0x6c, 0x6f, + 0x77, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x19, 0x43, 0x73, 0x69, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe8, 0x0d, 0x0a, - 0x15, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x63, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0f, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x6a, 0x0a, - 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, - 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, - 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x7c, 0x0a, 0x1b, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5a, 0x0a, 0x0f, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0e, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x63, 0x73, 0x69, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, 0x73, 0x69, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x73, 0x69, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, - 0x68, 0x12, 0x4e, 0x0a, 0x0b, 0x63, 0x73, 0x69, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, - 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, 0x73, 0x69, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x73, 0x69, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, - 0x73, 0x12, 0x63, 0x0a, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, 0x10, 0x56, 0x6f, 0x6c, 0x63, 0x61, + 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 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, 0x30, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x60, 0x0a, 0x16, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, + 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe8, 0x0d, 0x0a, 0x15, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, + 0x63, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, + 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x11, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x60, 0x0a, 0x16, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x6f, 0x6c, 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, 0x30, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x62, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, - 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x68, 0x0a, 0x1e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 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, 0x30, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x13, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, + 0x12, 0x54, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, + 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x7c, 0x0a, 0x1b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x5a, 0x0a, 0x0f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, + 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x69, 0x6e, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, + 0x63, 0x73, 0x69, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, + 0x73, 0x69, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x73, + 0x69, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x4e, 0x0a, 0x0b, 0x63, 0x73, + 0x69, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x43, + 0x73, 0x69, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x63, 0x73, 0x69, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x63, 0x0a, 0x12, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, + 0x60, 0x0a, 0x16, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 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, 0x30, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x5d, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x5b, 0x0a, 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x62, 0x0a, + 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x57, 0x0a, 0x0d, 0x43, 0x73, 0x69, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x01, 0x1a, 0x68, 0x0a, 0x1e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x13, 0x49, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x59, 0x0a, 0x0f, 0x43, 0x73, - 0x69, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 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, - 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x60, 0x0a, 0x16, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x66, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, - 0x8b, 0x04, 0x0a, 0x0f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, - 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x38, 0x0a, 0x05, 0x6e, - 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, - 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x44, - 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1f, - 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x1a, - 0x4a, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 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, - 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x50, 0x0a, 0x0f, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, - 0x18, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4c, 0x6f, - 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, - 0x64, 0x12, 0x24, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0xf5, 0x02, 0x0a, 0x12, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x15, - 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x72, 0x63, 0x49, 0x70, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x12, 0x20, 0x0a, 0x0c, - 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x0d, 0x43, 0x73, + 0x69, 0x4e, 0x6f, 0x64, 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, 0x30, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x59, 0x0a, 0x0f, 0x43, 0x73, 0x69, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, + 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x60, + 0x0a, 0x16, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x66, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e, + 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0x8b, 0x04, 0x0a, 0x0f, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x36, 0x0a, 0x0c, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x38, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x47, + 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0d, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x12, 0x38, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x1a, 0x4a, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 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, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x50, 0x0a, 0x0f, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, 0x18, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x6c, 0x6f, + 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, + 0x22, 0xf5, 0x02, 0x0a, 0x12, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x12, 0x15, + 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x64, 0x73, 0x74, 0x49, 0x70, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x64, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, + 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x72, 0x63, 0x5f, 0x70, + 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, + 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x64, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x78, + 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x78, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, + 0x1d, 0x0a, 0x0a, 0x72, 0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x38, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xef, 0x01, 0x0a, 0x0d, 0x44, 0x6e, 0x73, + 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, + 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x69, 0x70, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x49, + 0x70, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x20, 0x0a, 0x0c, + 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x72, 0x63, 0x50, 0x6f, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, 0x73, 0x74, 0x50, 0x6f, 0x72, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, - 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x78, 0x5f, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x78, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x78, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x78, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x72, 0x63, 0x50, 0x6f, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xfd, 0x03, 0x0a, 0x20, 0x53, + 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x64, 0x6e, 0x73, 0x5f, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x0a, 0x64, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x55, + 0x0a, 0x09, 0x69, 0x70, 0x32, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x70, 0x32, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x69, 0x70, 0x32, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x49, 0x70, 0x32, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 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, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x22, 0x4c, 0x0a, 0x21, 0x53, 0x65, + 0x6e, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa5, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, - 0xef, 0x01, 0x0a, 0x0d, 0x44, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x16, - 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x65, 0x64, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x49, 0x70, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, 0x50, 0x6f, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x64, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x22, 0xfd, 0x03, 0x0a, 0x20, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x36, 0x0a, - 0x0b, 0x64, 0x6e, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x64, 0x6e, 0x73, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x55, 0x0a, 0x09, 0x69, 0x70, 0x32, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, - 0x66, 0x66, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x49, 0x70, 0x32, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x09, 0x69, 0x70, 0x32, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x10, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x49, 0x70, - 0x32, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 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, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x22, 0x4c, 0x0a, 0x21, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0xa5, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x26, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x39, 0x0a, 0x0b, - 0x46, 0x69, 0x65, 0x6c, 0x64, 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, 0x44, 0x0a, 0x19, 0x53, 0x65, 0x6e, 0x64, 0x54, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, - 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4d, 0x0a, - 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xb3, 0x01, 0x0a, - 0x14, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x6f, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x6f, - 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x54, - 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x1a, 0x4b, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x4d, - 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x2a, 0xa3, 0x02, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x01, - 0x12, 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x17, - 0x0a, 0x13, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, - 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x05, 0x12, - 0x20, 0x0a, 0x1c, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, - 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, - 0x44, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x08, 0x12, 0x1f, 0x0a, 0x1b, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4e, - 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x09, 0x2a, 0xc5, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x01, - 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x53, 0x4f, 0x55, - 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, - 0x43, 0x45, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x1b, 0x0a, - 0x17, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, - 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x1d, 0x0a, - 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, - 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0x08, 0x12, 0x1c, - 0x0a, 0x18, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x46, 0x55, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x0a, 0x12, 0x1c, 0x0a, 0x18, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, - 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, - 0x49, 0x43, 0x41, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x0c, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, - 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, - 0x52, 0x10, 0x0d, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x0e, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, - 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x0f, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, - 0x4e, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x10, - 0x10, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x4f, - 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x11, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, - 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, - 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, - 0x10, 0x13, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x14, 0x12, 0x1f, 0x0a, - 0x1b, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, - 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x15, 0x12, 0x20, - 0x0a, 0x1c, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x16, - 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x17, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, - 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x18, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, - 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x19, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, - 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x1a, - 0x12, 0x2b, 0x0a, 0x27, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x44, - 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x52, 0x10, 0x1b, 0x12, 0x29, 0x0a, - 0x25, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, - 0x45, 0x52, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, - 0x53, 0x43, 0x41, 0x4c, 0x45, 0x52, 0x10, 0x1c, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x44, 0x49, - 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x55, 0x44, 0x47, 0x45, 0x54, 0x10, - 0x1d, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, - 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x1e, 0x12, 0x2c, 0x0a, 0x28, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, - 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x49, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1f, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x21, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x53, 0x4f, 0x55, - 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x10, - 0x22, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x23, 0x12, 0x1f, - 0x0a, 0x1b, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x24, 0x12, - 0x24, 0x0a, 0x20, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, - 0x52, 0x43, 0x45, 0x10, 0x25, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x26, - 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x43, 0x53, 0x49, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x27, 0x12, 0x1b, 0x0a, 0x17, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x41, - 0x52, 0x50, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x28, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x44, - 0x4f, 0x47, 0x10, 0x29, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x47, 0x4f, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, - 0x55, 0x54, 0x53, 0x10, 0x2a, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x45, 0x44, 0x41, 0x10, 0x2b, 0x12, 0x24, 0x0a, - 0x20, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, - 0x45, 0x44, 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x44, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x10, 0x2c, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x45, 0x44, 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x44, - 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x2d, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x53, 0x49, 0x5f, 0x44, 0x52, 0x49, 0x56, - 0x45, 0x52, 0x10, 0x2e, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x53, 0x49, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, - 0x45, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, 0x10, 0x2f, 0x12, 0x23, 0x0a, 0x1f, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, - 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x4d, 0x45, 0x4e, 0x54, 0x10, - 0x30, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x54, 0x45, - 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x43, 0x41, 0x4e, 0x4f, 0x5f, - 0x4a, 0x4f, 0x42, 0x10, 0x32, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x50, 0x41, 0x52, 0x4b, 0x5f, 0x41, 0x50, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x33, 0x12, 0x2d, 0x0a, 0x29, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x43, 0x48, 0x45, - 0x44, 0x55, 0x4c, 0x45, 0x44, 0x5f, 0x53, 0x50, 0x41, 0x52, 0x4b, 0x5f, 0x41, 0x50, 0x50, 0x4c, - 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x34, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x5f, - 0x56, 0x4f, 0x4c, 0x43, 0x41, 0x4e, 0x4f, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x35, 0x12, 0x1d, 0x0a, - 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, - 0x56, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x36, 0x12, 0x22, 0x0a, 0x1e, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, - 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x4d, - 0x2a, 0x8c, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, - 0x15, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, - 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, - 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, - 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, - 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, - 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, - 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x05, 0x32, - 0xa0, 0x05, 0x0a, 0x17, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x53, - 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x61, 0x0a, 0x14, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, - 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, - 0x65, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x19, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x29, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x58, 0x0a, 0x11, 0x53, - 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x73, - 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, - 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x26, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x34, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 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, 0x44, 0x0a, 0x19, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, + 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4d, 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, + 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xb3, 0x01, 0x0a, 0x14, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, + 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x42, 0x8e, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x42, 0x15, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, - 0x6e, 0x63, 0x2f, 0x7a, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, - 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, - 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x1a, 0x4b, + 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0xa3, 0x02, 0x0a, 0x09, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, + 0x12, 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, + 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x04, + 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, + 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, + 0x45, 0x52, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, + 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x08, + 0x12, 0x1f, 0x0a, 0x1b, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, + 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, + 0x09, 0x2a, 0xc5, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x10, 0x02, + 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x03, 0x12, 0x17, 0x0a, + 0x13, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, + 0x53, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x43, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, + 0x45, 0x4e, 0x54, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x46, 0x55, 0x4c, 0x5f, + 0x53, 0x45, 0x54, 0x10, 0x0a, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x53, 0x45, + 0x54, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x5f, 0x53, 0x45, 0x54, + 0x10, 0x0c, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x52, 0x10, 0x0d, 0x12, 0x15, 0x0a, 0x11, + 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4a, 0x4f, + 0x42, 0x10, 0x0e, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x0f, 0x12, + 0x29, 0x0a, 0x25, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, + 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x10, 0x10, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x53, + 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x11, 0x12, + 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x12, + 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x13, 0x12, 0x19, 0x0a, 0x15, 0x52, + 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x10, 0x14, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, + 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x15, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, + 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x16, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, + 0x17, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, + 0x18, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, + 0x19, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x1a, 0x12, 0x2b, 0x0a, 0x27, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x52, 0x49, 0x5a, + 0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x43, + 0x41, 0x4c, 0x45, 0x52, 0x10, 0x1b, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x54, 0x49, 0x43, 0x41, 0x4c, + 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x52, 0x10, + 0x1c, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x42, 0x55, 0x44, 0x47, 0x45, 0x54, 0x10, 0x1d, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x5f, + 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, + 0x1e, 0x12, 0x2c, 0x0a, 0x28, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1f, 0x12, + 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x21, + 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x10, 0x22, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x23, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x24, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, + 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x25, 0x12, 0x19, + 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x26, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x53, 0x49, 0x5f, 0x4e, + 0x4f, 0x44, 0x45, 0x10, 0x27, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x41, 0x52, 0x50, 0x45, 0x4e, 0x54, 0x45, 0x52, + 0x10, 0x28, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x44, 0x4f, 0x47, 0x10, 0x29, 0x12, 0x1f, 0x0a, + 0x1b, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, + 0x52, 0x47, 0x4f, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x53, 0x10, 0x2a, 0x12, 0x16, + 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x4b, 0x45, 0x44, 0x41, 0x10, 0x2b, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x45, 0x44, 0x41, 0x5f, 0x53, 0x43, 0x41, + 0x4c, 0x45, 0x44, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x2c, 0x12, 0x21, 0x0a, 0x1d, + 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x45, + 0x44, 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x44, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x2d, 0x12, + 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x43, 0x53, 0x49, 0x5f, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x10, 0x2e, 0x12, 0x26, 0x0a, + 0x22, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, + 0x53, 0x49, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x43, + 0x49, 0x54, 0x59, 0x10, 0x2f, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x41, 0x43, 0x48, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x30, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x55, 0x42, 0x45, + 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x54, 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x31, 0x12, + 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x56, 0x4f, 0x4c, 0x43, 0x41, 0x4e, 0x4f, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x32, 0x12, 0x23, + 0x0a, 0x1f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x50, 0x41, 0x52, 0x4b, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x33, 0x12, 0x2d, 0x0a, 0x29, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x5f, 0x53, + 0x50, 0x41, 0x52, 0x4b, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x34, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x5f, 0x56, 0x4f, 0x4c, 0x43, 0x41, 0x4e, 0x4f, + 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x35, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x56, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x52, + 0x49, 0x43, 0x53, 0x10, 0x36, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, + 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x4d, 0x2a, 0x8c, 0x01, 0x0a, 0x08, 0x4c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, + 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, + 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, + 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, + 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, 0x13, + 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, + 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x05, 0x32, 0xa0, 0x05, 0x0a, 0x17, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x58, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x53, 0x65, 0x6e, + 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x19, + 0x53, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x28, 0x01, 0x12, 0x58, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, + 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, + 0x0a, 0x19, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x49, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x8e, 0x01, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x15, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x7a, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, + 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, + 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, + 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3637,7 +3695,7 @@ func file_api_v1_metrics_collector_proto_rawDescGZIP() []byte { } var file_api_v1_metrics_collector_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_api_v1_metrics_collector_proto_msgTypes = make([]protoimpl.MessageInfo, 67) +var file_api_v1_metrics_collector_proto_msgTypes = make([]protoimpl.MessageInfo, 70) var file_api_v1_metrics_collector_proto_goTypes = []interface{}{ (EventType)(0), // 0: api.v1.EventType (ResourceType)(0), // 1: api.v1.ResourceType @@ -3695,45 +3753,48 @@ var file_api_v1_metrics_collector_proto_goTypes = []interface{}{ nil, // 53: api.v1.Namespace.KedaScaledJobsEntry nil, // 54: api.v1.Namespace.KedaScaledObjectsEntry nil, // 55: api.v1.Namespace.CsiStorageCapacitiesEntry - nil, // 56: api.v1.ClusterScopedSnapshot.PersistentVolumesEntry - nil, // 57: api.v1.ClusterScopedSnapshot.StorageClassesEntry - nil, // 58: api.v1.ClusterScopedSnapshot.ClusterRolesEntry - nil, // 59: api.v1.ClusterScopedSnapshot.ClusterRoleBindingsEntry - nil, // 60: api.v1.ClusterScopedSnapshot.CustomResourceDefinitionsEntry - nil, // 61: api.v1.ClusterScopedSnapshot.IngressClassesEntry - nil, // 62: api.v1.ClusterScopedSnapshot.CsiNodesEntry - nil, // 63: api.v1.ClusterScopedSnapshot.CsiDriversEntry - nil, // 64: api.v1.ClusterScopedSnapshot.VolumeAttachmentsEntry - nil, // 65: api.v1.ClusterSnapshot.NodesEntry - nil, // 66: api.v1.ClusterSnapshot.NamespacesEntry - nil, // 67: api.v1.SendNetworkTrafficMetricsRequest.Ip2domainEntry - nil, // 68: api.v1.LogEntry.FieldsEntry - nil, // 69: api.v1.NodeMetadataResponse.NodeToMetaEntry - (*timestamppb.Timestamp)(nil), // 70: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 71: google.protobuf.Struct - (*_go.MetricFamily)(nil), // 72: io.prometheus.client.MetricFamily - (*Node)(nil), // 73: api.v1.Node + nil, // 56: api.v1.Namespace.KubeflowNotebooksEntry + nil, // 57: api.v1.Namespace.VolcanoJobsEntry + nil, // 58: api.v1.Namespace.SparkApplicationsEntry + nil, // 59: api.v1.ClusterScopedSnapshot.PersistentVolumesEntry + nil, // 60: api.v1.ClusterScopedSnapshot.StorageClassesEntry + nil, // 61: api.v1.ClusterScopedSnapshot.ClusterRolesEntry + nil, // 62: api.v1.ClusterScopedSnapshot.ClusterRoleBindingsEntry + nil, // 63: api.v1.ClusterScopedSnapshot.CustomResourceDefinitionsEntry + nil, // 64: api.v1.ClusterScopedSnapshot.IngressClassesEntry + nil, // 65: api.v1.ClusterScopedSnapshot.CsiNodesEntry + nil, // 66: api.v1.ClusterScopedSnapshot.CsiDriversEntry + nil, // 67: api.v1.ClusterScopedSnapshot.VolumeAttachmentsEntry + nil, // 68: api.v1.ClusterSnapshot.NodesEntry + nil, // 69: api.v1.ClusterSnapshot.NamespacesEntry + nil, // 70: api.v1.SendNetworkTrafficMetricsRequest.Ip2domainEntry + nil, // 71: api.v1.LogEntry.FieldsEntry + nil, // 72: api.v1.NodeMetadataResponse.NodeToMetaEntry + (*timestamppb.Timestamp)(nil), // 73: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 74: google.protobuf.Struct + (*_go.MetricFamily)(nil), // 75: io.prometheus.client.MetricFamily + (*Node)(nil), // 76: api.v1.Node } var file_api_v1_metrics_collector_proto_depIdxs = []int32{ - 70, // 0: api.v1.ResourceItem.timestamp:type_name -> google.protobuf.Timestamp + 73, // 0: api.v1.ResourceItem.timestamp:type_name -> google.protobuf.Timestamp 0, // 1: api.v1.ResourceItem.event_type:type_name -> api.v1.EventType - 71, // 2: api.v1.ResourceItem.data:type_name -> google.protobuf.Struct + 74, // 2: api.v1.ResourceItem.data:type_name -> google.protobuf.Struct 1, // 3: api.v1.ResourceItem.resource_type:type_name -> api.v1.ResourceType 1, // 4: api.v1.SendResourceRequest.resource_type:type_name -> api.v1.ResourceType - 70, // 5: api.v1.SendResourceRequest.timestamp:type_name -> google.protobuf.Timestamp + 73, // 5: api.v1.SendResourceRequest.timestamp:type_name -> google.protobuf.Timestamp 0, // 6: api.v1.SendResourceRequest.event_type:type_name -> api.v1.EventType - 71, // 7: api.v1.SendResourceRequest.data:type_name -> google.protobuf.Struct + 74, // 7: api.v1.SendResourceRequest.data:type_name -> google.protobuf.Struct 3, // 8: api.v1.SendResourceBatchRequest.resources:type_name -> api.v1.ResourceItem - 70, // 9: api.v1.GetForecastMetricsRequest.start_time:type_name -> google.protobuf.Timestamp - 70, // 10: api.v1.GetForecastMetricsRequest.end_time:type_name -> google.protobuf.Timestamp + 73, // 9: api.v1.GetForecastMetricsRequest.start_time:type_name -> google.protobuf.Timestamp + 73, // 10: api.v1.GetForecastMetricsRequest.end_time:type_name -> google.protobuf.Timestamp 8, // 11: api.v1.GetForecastMetricsResponse.metrics:type_name -> api.v1.ContainerForecastMetric - 70, // 12: api.v1.ContainerForecastMetric.timestamp:type_name -> google.protobuf.Timestamp - 70, // 13: api.v1.ContainerForecastMetric.created_at:type_name -> google.protobuf.Timestamp - 70, // 14: api.v1.ContainerForecastMetric.updated_at:type_name -> google.protobuf.Timestamp + 73, // 12: api.v1.ContainerForecastMetric.timestamp:type_name -> google.protobuf.Timestamp + 73, // 13: api.v1.ContainerForecastMetric.created_at:type_name -> google.protobuf.Timestamp + 73, // 14: api.v1.ContainerForecastMetric.updated_at:type_name -> google.protobuf.Timestamp 1, // 15: api.v1.SendResourceResponse.resource_type:type_name -> api.v1.ResourceType 1, // 16: api.v1.SendResourceBatchResponse.resource_type:type_name -> api.v1.ResourceType - 72, // 17: api.v1.SendTelemetryMetricsRequest.metric_families:type_name -> io.prometheus.client.MetricFamily - 70, // 18: api.v1.ClusterSnapshotChunk.timestamp:type_name -> google.protobuf.Timestamp + 75, // 17: api.v1.SendTelemetryMetricsRequest.metric_families:type_name -> io.prometheus.client.MetricFamily + 73, // 18: api.v1.ClusterSnapshotChunk.timestamp:type_name -> google.protobuf.Timestamp 20, // 19: api.v1.SendClusterSnapshotStreamResponse.missing_resources:type_name -> api.v1.ClusterSnapshot 15, // 20: api.v1.NodeData.node:type_name -> api.v1.ResourceIdentifier 30, // 21: api.v1.NodeData.pods:type_name -> api.v1.NodeData.PodsEntry @@ -3763,87 +3824,93 @@ var file_api_v1_metrics_collector_proto_depIdxs = []int32{ 53, // 45: api.v1.Namespace.keda_scaled_jobs:type_name -> api.v1.Namespace.KedaScaledJobsEntry 54, // 46: api.v1.Namespace.keda_scaled_objects:type_name -> api.v1.Namespace.KedaScaledObjectsEntry 55, // 47: api.v1.Namespace.csi_storage_capacities:type_name -> api.v1.Namespace.CsiStorageCapacitiesEntry - 56, // 48: api.v1.ClusterScopedSnapshot.persistent_volumes:type_name -> api.v1.ClusterScopedSnapshot.PersistentVolumesEntry - 57, // 49: api.v1.ClusterScopedSnapshot.storage_classes:type_name -> api.v1.ClusterScopedSnapshot.StorageClassesEntry - 58, // 50: api.v1.ClusterScopedSnapshot.cluster_roles:type_name -> api.v1.ClusterScopedSnapshot.ClusterRolesEntry - 59, // 51: api.v1.ClusterScopedSnapshot.cluster_role_bindings:type_name -> api.v1.ClusterScopedSnapshot.ClusterRoleBindingsEntry - 60, // 52: api.v1.ClusterScopedSnapshot.custom_resource_definitions:type_name -> api.v1.ClusterScopedSnapshot.CustomResourceDefinitionsEntry - 61, // 53: api.v1.ClusterScopedSnapshot.ingress_classes:type_name -> api.v1.ClusterScopedSnapshot.IngressClassesEntry - 62, // 54: api.v1.ClusterScopedSnapshot.csi_nodes:type_name -> api.v1.ClusterScopedSnapshot.CsiNodesEntry - 63, // 55: api.v1.ClusterScopedSnapshot.csi_drivers:type_name -> api.v1.ClusterScopedSnapshot.CsiDriversEntry - 64, // 56: api.v1.ClusterScopedSnapshot.volume_attachments:type_name -> api.v1.ClusterScopedSnapshot.VolumeAttachmentsEntry - 19, // 57: api.v1.ClusterSnapshot.cluster_info:type_name -> api.v1.ClusterInfo - 65, // 58: api.v1.ClusterSnapshot.nodes:type_name -> api.v1.ClusterSnapshot.NodesEntry - 66, // 59: api.v1.ClusterSnapshot.namespaces:type_name -> api.v1.ClusterSnapshot.NamespacesEntry - 18, // 60: api.v1.ClusterSnapshot.cluster_scoped:type_name -> api.v1.ClusterScopedSnapshot - 70, // 61: api.v1.ClusterSnapshot.timestamp:type_name -> google.protobuf.Timestamp - 26, // 62: api.v1.SendTelemetryLogsRequest.logs:type_name -> api.v1.LogEntry - 70, // 63: api.v1.NetworkTrafficItem.timestamp:type_name -> google.protobuf.Timestamp - 70, // 64: api.v1.DnsLookupItem.timestamp:type_name -> google.protobuf.Timestamp - 22, // 65: api.v1.SendNetworkTrafficMetricsRequest.items:type_name -> api.v1.NetworkTrafficItem - 23, // 66: api.v1.SendNetworkTrafficMetricsRequest.dns_lookups:type_name -> api.v1.DnsLookupItem - 67, // 67: api.v1.SendNetworkTrafficMetricsRequest.ip2domain:type_name -> api.v1.SendNetworkTrafficMetricsRequest.Ip2domainEntry - 70, // 68: api.v1.LogEntry.timestamp:type_name -> google.protobuf.Timestamp - 2, // 69: api.v1.LogEntry.level:type_name -> api.v1.LogLevel - 68, // 70: api.v1.LogEntry.fields:type_name -> api.v1.LogEntry.FieldsEntry - 69, // 71: api.v1.NodeMetadataResponse.node_to_meta:type_name -> api.v1.NodeMetadataResponse.NodeToMetaEntry - 15, // 72: api.v1.NodeData.PodsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 73: api.v1.Namespace.DeploymentsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 74: api.v1.Namespace.StatefulSetsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 75: api.v1.Namespace.DaemonSetsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 76: api.v1.Namespace.ReplicaSetsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 77: api.v1.Namespace.ServicesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 78: api.v1.Namespace.ConfigMapsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 79: api.v1.Namespace.SecretsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 80: api.v1.Namespace.PvcsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 81: api.v1.Namespace.JobsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 82: api.v1.Namespace.CronJobsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 83: api.v1.Namespace.IngressesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 84: api.v1.Namespace.NetworkPoliciesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 85: api.v1.Namespace.ServiceAccountsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 86: api.v1.Namespace.RolesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 87: api.v1.Namespace.RoleBindingsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 88: api.v1.Namespace.PodDisruptionBudgetsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 89: api.v1.Namespace.EndpointsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 90: api.v1.Namespace.LimitRangesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 91: api.v1.Namespace.ResourceQuotasEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 92: api.v1.Namespace.UnscheduledPodsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 93: api.v1.Namespace.HorizontalPodAutoscalersEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 94: api.v1.Namespace.EventsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 95: api.v1.Namespace.KedaScaledJobsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 96: api.v1.Namespace.KedaScaledObjectsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 97: api.v1.Namespace.CsiStorageCapacitiesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 98: api.v1.ClusterScopedSnapshot.PersistentVolumesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 99: api.v1.ClusterScopedSnapshot.StorageClassesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 100: api.v1.ClusterScopedSnapshot.ClusterRolesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 101: api.v1.ClusterScopedSnapshot.ClusterRoleBindingsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 102: api.v1.ClusterScopedSnapshot.CustomResourceDefinitionsEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 103: api.v1.ClusterScopedSnapshot.IngressClassesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 104: api.v1.ClusterScopedSnapshot.CsiNodesEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 105: api.v1.ClusterScopedSnapshot.CsiDriversEntry.value:type_name -> api.v1.ResourceIdentifier - 15, // 106: api.v1.ClusterScopedSnapshot.VolumeAttachmentsEntry.value:type_name -> api.v1.ResourceIdentifier - 16, // 107: api.v1.ClusterSnapshot.NodesEntry.value:type_name -> api.v1.NodeData - 17, // 108: api.v1.ClusterSnapshot.NamespacesEntry.value:type_name -> api.v1.Namespace - 73, // 109: api.v1.NodeMetadataResponse.NodeToMetaEntry.value:type_name -> api.v1.Node - 4, // 110: api.v1.MetricsCollectorService.SendResource:input_type -> api.v1.SendResourceRequest - 5, // 111: api.v1.MetricsCollectorService.SendResourceBatch:input_type -> api.v1.SendResourceBatchRequest - 11, // 112: api.v1.MetricsCollectorService.SendTelemetryMetrics:input_type -> api.v1.SendTelemetryMetricsRequest - 13, // 113: api.v1.MetricsCollectorService.SendClusterSnapshotStream:input_type -> api.v1.ClusterSnapshotChunk - 21, // 114: api.v1.MetricsCollectorService.SendTelemetryLogs:input_type -> api.v1.SendTelemetryLogsRequest - 24, // 115: api.v1.MetricsCollectorService.SendNetworkTrafficMetrics:input_type -> api.v1.SendNetworkTrafficMetricsRequest - 28, // 116: api.v1.MetricsCollectorService.NodeMetadata:input_type -> api.v1.NodeMetadataRequest - 9, // 117: api.v1.MetricsCollectorService.SendResource:output_type -> api.v1.SendResourceResponse - 10, // 118: api.v1.MetricsCollectorService.SendResourceBatch:output_type -> api.v1.SendResourceBatchResponse - 12, // 119: api.v1.MetricsCollectorService.SendTelemetryMetrics:output_type -> api.v1.SendTelemetryMetricsResponse - 14, // 120: api.v1.MetricsCollectorService.SendClusterSnapshotStream:output_type -> api.v1.SendClusterSnapshotStreamResponse - 27, // 121: api.v1.MetricsCollectorService.SendTelemetryLogs:output_type -> api.v1.SendTelemetryLogsResponse - 25, // 122: api.v1.MetricsCollectorService.SendNetworkTrafficMetrics:output_type -> api.v1.SendNetworkTrafficMetricsResponse - 29, // 123: api.v1.MetricsCollectorService.NodeMetadata:output_type -> api.v1.NodeMetadataResponse - 117, // [117:124] is the sub-list for method output_type - 110, // [110:117] is the sub-list for method input_type - 110, // [110:110] is the sub-list for extension type_name - 110, // [110:110] is the sub-list for extension extendee - 0, // [0:110] is the sub-list for field type_name + 56, // 48: api.v1.Namespace.kubeflow_notebooks:type_name -> api.v1.Namespace.KubeflowNotebooksEntry + 57, // 49: api.v1.Namespace.volcano_jobs:type_name -> api.v1.Namespace.VolcanoJobsEntry + 58, // 50: api.v1.Namespace.spark_applications:type_name -> api.v1.Namespace.SparkApplicationsEntry + 59, // 51: api.v1.ClusterScopedSnapshot.persistent_volumes:type_name -> api.v1.ClusterScopedSnapshot.PersistentVolumesEntry + 60, // 52: api.v1.ClusterScopedSnapshot.storage_classes:type_name -> api.v1.ClusterScopedSnapshot.StorageClassesEntry + 61, // 53: api.v1.ClusterScopedSnapshot.cluster_roles:type_name -> api.v1.ClusterScopedSnapshot.ClusterRolesEntry + 62, // 54: api.v1.ClusterScopedSnapshot.cluster_role_bindings:type_name -> api.v1.ClusterScopedSnapshot.ClusterRoleBindingsEntry + 63, // 55: api.v1.ClusterScopedSnapshot.custom_resource_definitions:type_name -> api.v1.ClusterScopedSnapshot.CustomResourceDefinitionsEntry + 64, // 56: api.v1.ClusterScopedSnapshot.ingress_classes:type_name -> api.v1.ClusterScopedSnapshot.IngressClassesEntry + 65, // 57: api.v1.ClusterScopedSnapshot.csi_nodes:type_name -> api.v1.ClusterScopedSnapshot.CsiNodesEntry + 66, // 58: api.v1.ClusterScopedSnapshot.csi_drivers:type_name -> api.v1.ClusterScopedSnapshot.CsiDriversEntry + 67, // 59: api.v1.ClusterScopedSnapshot.volume_attachments:type_name -> api.v1.ClusterScopedSnapshot.VolumeAttachmentsEntry + 19, // 60: api.v1.ClusterSnapshot.cluster_info:type_name -> api.v1.ClusterInfo + 68, // 61: api.v1.ClusterSnapshot.nodes:type_name -> api.v1.ClusterSnapshot.NodesEntry + 69, // 62: api.v1.ClusterSnapshot.namespaces:type_name -> api.v1.ClusterSnapshot.NamespacesEntry + 18, // 63: api.v1.ClusterSnapshot.cluster_scoped:type_name -> api.v1.ClusterScopedSnapshot + 73, // 64: api.v1.ClusterSnapshot.timestamp:type_name -> google.protobuf.Timestamp + 26, // 65: api.v1.SendTelemetryLogsRequest.logs:type_name -> api.v1.LogEntry + 73, // 66: api.v1.NetworkTrafficItem.timestamp:type_name -> google.protobuf.Timestamp + 73, // 67: api.v1.DnsLookupItem.timestamp:type_name -> google.protobuf.Timestamp + 22, // 68: api.v1.SendNetworkTrafficMetricsRequest.items:type_name -> api.v1.NetworkTrafficItem + 23, // 69: api.v1.SendNetworkTrafficMetricsRequest.dns_lookups:type_name -> api.v1.DnsLookupItem + 70, // 70: api.v1.SendNetworkTrafficMetricsRequest.ip2domain:type_name -> api.v1.SendNetworkTrafficMetricsRequest.Ip2domainEntry + 73, // 71: api.v1.LogEntry.timestamp:type_name -> google.protobuf.Timestamp + 2, // 72: api.v1.LogEntry.level:type_name -> api.v1.LogLevel + 71, // 73: api.v1.LogEntry.fields:type_name -> api.v1.LogEntry.FieldsEntry + 72, // 74: api.v1.NodeMetadataResponse.node_to_meta:type_name -> api.v1.NodeMetadataResponse.NodeToMetaEntry + 15, // 75: api.v1.NodeData.PodsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 76: api.v1.Namespace.DeploymentsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 77: api.v1.Namespace.StatefulSetsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 78: api.v1.Namespace.DaemonSetsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 79: api.v1.Namespace.ReplicaSetsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 80: api.v1.Namespace.ServicesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 81: api.v1.Namespace.ConfigMapsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 82: api.v1.Namespace.SecretsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 83: api.v1.Namespace.PvcsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 84: api.v1.Namespace.JobsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 85: api.v1.Namespace.CronJobsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 86: api.v1.Namespace.IngressesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 87: api.v1.Namespace.NetworkPoliciesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 88: api.v1.Namespace.ServiceAccountsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 89: api.v1.Namespace.RolesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 90: api.v1.Namespace.RoleBindingsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 91: api.v1.Namespace.PodDisruptionBudgetsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 92: api.v1.Namespace.EndpointsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 93: api.v1.Namespace.LimitRangesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 94: api.v1.Namespace.ResourceQuotasEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 95: api.v1.Namespace.UnscheduledPodsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 96: api.v1.Namespace.HorizontalPodAutoscalersEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 97: api.v1.Namespace.EventsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 98: api.v1.Namespace.KedaScaledJobsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 99: api.v1.Namespace.KedaScaledObjectsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 100: api.v1.Namespace.CsiStorageCapacitiesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 101: api.v1.Namespace.KubeflowNotebooksEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 102: api.v1.Namespace.VolcanoJobsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 103: api.v1.Namespace.SparkApplicationsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 104: api.v1.ClusterScopedSnapshot.PersistentVolumesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 105: api.v1.ClusterScopedSnapshot.StorageClassesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 106: api.v1.ClusterScopedSnapshot.ClusterRolesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 107: api.v1.ClusterScopedSnapshot.ClusterRoleBindingsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 108: api.v1.ClusterScopedSnapshot.CustomResourceDefinitionsEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 109: api.v1.ClusterScopedSnapshot.IngressClassesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 110: api.v1.ClusterScopedSnapshot.CsiNodesEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 111: api.v1.ClusterScopedSnapshot.CsiDriversEntry.value:type_name -> api.v1.ResourceIdentifier + 15, // 112: api.v1.ClusterScopedSnapshot.VolumeAttachmentsEntry.value:type_name -> api.v1.ResourceIdentifier + 16, // 113: api.v1.ClusterSnapshot.NodesEntry.value:type_name -> api.v1.NodeData + 17, // 114: api.v1.ClusterSnapshot.NamespacesEntry.value:type_name -> api.v1.Namespace + 76, // 115: api.v1.NodeMetadataResponse.NodeToMetaEntry.value:type_name -> api.v1.Node + 4, // 116: api.v1.MetricsCollectorService.SendResource:input_type -> api.v1.SendResourceRequest + 5, // 117: api.v1.MetricsCollectorService.SendResourceBatch:input_type -> api.v1.SendResourceBatchRequest + 11, // 118: api.v1.MetricsCollectorService.SendTelemetryMetrics:input_type -> api.v1.SendTelemetryMetricsRequest + 13, // 119: api.v1.MetricsCollectorService.SendClusterSnapshotStream:input_type -> api.v1.ClusterSnapshotChunk + 21, // 120: api.v1.MetricsCollectorService.SendTelemetryLogs:input_type -> api.v1.SendTelemetryLogsRequest + 24, // 121: api.v1.MetricsCollectorService.SendNetworkTrafficMetrics:input_type -> api.v1.SendNetworkTrafficMetricsRequest + 28, // 122: api.v1.MetricsCollectorService.NodeMetadata:input_type -> api.v1.NodeMetadataRequest + 9, // 123: api.v1.MetricsCollectorService.SendResource:output_type -> api.v1.SendResourceResponse + 10, // 124: api.v1.MetricsCollectorService.SendResourceBatch:output_type -> api.v1.SendResourceBatchResponse + 12, // 125: api.v1.MetricsCollectorService.SendTelemetryMetrics:output_type -> api.v1.SendTelemetryMetricsResponse + 14, // 126: api.v1.MetricsCollectorService.SendClusterSnapshotStream:output_type -> api.v1.SendClusterSnapshotStreamResponse + 27, // 127: api.v1.MetricsCollectorService.SendTelemetryLogs:output_type -> api.v1.SendTelemetryLogsResponse + 25, // 128: api.v1.MetricsCollectorService.SendNetworkTrafficMetrics:output_type -> api.v1.SendNetworkTrafficMetricsResponse + 29, // 129: api.v1.MetricsCollectorService.NodeMetadata:output_type -> api.v1.NodeMetadataResponse + 123, // [123:130] is the sub-list for method output_type + 116, // [116:123] is the sub-list for method input_type + 116, // [116:116] is the sub-list for extension type_name + 116, // [116:116] is the sub-list for extension extendee + 0, // [0:116] is the sub-list for field type_name } func init() { file_api_v1_metrics_collector_proto_init() } @@ -4185,7 +4252,7 @@ func file_api_v1_metrics_collector_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_v1_metrics_collector_proto_rawDesc, NumEnums: 3, - NumMessages: 67, + NumMessages: 70, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/dakr_proto_descriptor.bin b/proto/dakr_proto_descriptor.bin index 45de81bb02df579d40747d071450ca6b2f9ac92d..42cd63513bdcbe072b3f155c38a1faec75fe4e62 100644 GIT binary patch delta 66035 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%0DBI0HdF3z^rlsl}$p`jXR2U(*;> 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 TD-%G(U7g;)omsQPKm7j#xIhhn delta 59523 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

ChT)mkb>M}c<;f&l-dPcD-&u>J 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

9mOktq#BxHXbcG5HB88^$;Q{h>! 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 IQvTHc54ijdi~s-t