diff --git a/app/data/v1/data.pb.go b/app/data/v1/data.pb.go index 9ca54ef84..19cbb9d64 100644 --- a/app/data/v1/data.pb.go +++ b/app/data/v1/data.pb.go @@ -603,6 +603,8 @@ func (x *CaptureInterval) GetEnd() *timestamppb.Timestamp { } // TabularDataByFilterRequest requests tabular data based on filter values. +// +// Deprecated: Marked as deprecated in app/data/v1/data.proto. type TabularDataByFilterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -665,6 +667,8 @@ func (x *TabularDataByFilterRequest) GetIncludeInternalData() bool { } // TabularDataByFilterResponse provides the data and metadata of tabular data. +// +// Deprecated: Marked as deprecated in app/data/v1/data.proto. type TabularDataByFilterResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -743,6 +747,8 @@ func (x *TabularDataByFilterResponse) GetTotalSizeBytes() uint64 { } // TabularData contains data and metadata associated with tabular data. +// +// Deprecated: Marked as deprecated in app/data/v1/data.proto. type TabularData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1018,6 +1024,226 @@ func (x *TabularDataByMQLResponse) GetRawData() [][]byte { return nil } +// ExportTabularDataRequest requests tabular data from the specified data source. +type ExportTabularDataRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PartId string `protobuf:"bytes,1,opt,name=part_id,json=partId,proto3" json:"part_id,omitempty"` + ResourceName string `protobuf:"bytes,2,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + ResourceSubtype string `protobuf:"bytes,3,opt,name=resource_subtype,json=resourceSubtype,proto3" json:"resource_subtype,omitempty"` + MethodName string `protobuf:"bytes,4,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"` + Interval *CaptureInterval `protobuf:"bytes,5,opt,name=interval,proto3" json:"interval,omitempty"` +} + +func (x *ExportTabularDataRequest) Reset() { + *x = ExportTabularDataRequest{} + mi := &file_app_data_v1_data_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExportTabularDataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExportTabularDataRequest) ProtoMessage() {} + +func (x *ExportTabularDataRequest) ProtoReflect() protoreflect.Message { + mi := &file_app_data_v1_data_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExportTabularDataRequest.ProtoReflect.Descriptor instead. +func (*ExportTabularDataRequest) Descriptor() ([]byte, []int) { + return file_app_data_v1_data_proto_rawDescGZIP(), []int{12} +} + +func (x *ExportTabularDataRequest) GetPartId() string { + if x != nil { + return x.PartId + } + return "" +} + +func (x *ExportTabularDataRequest) GetResourceName() string { + if x != nil { + return x.ResourceName + } + return "" +} + +func (x *ExportTabularDataRequest) GetResourceSubtype() string { + if x != nil { + return x.ResourceSubtype + } + return "" +} + +func (x *ExportTabularDataRequest) GetMethodName() string { + if x != nil { + return x.MethodName + } + return "" +} + +func (x *ExportTabularDataRequest) GetInterval() *CaptureInterval { + if x != nil { + return x.Interval + } + return nil +} + +// ExportTabularDataResponse provides unified tabular data and metadata for a single data point from the specified data source. +type ExportTabularDataResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PartId string `protobuf:"bytes,1,opt,name=part_id,json=partId,proto3" json:"part_id,omitempty"` + ComponentName string `protobuf:"bytes,2,opt,name=component_name,json=componentName,proto3" json:"component_name,omitempty"` + ComponentType string `protobuf:"bytes,3,opt,name=component_type,json=componentType,proto3" json:"component_type,omitempty"` + MethodName string `protobuf:"bytes,4,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"` + TimeCaptured *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=time_captured,json=timeCaptured,proto3" json:"time_captured,omitempty"` + OrganizationId string `protobuf:"bytes,6,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + LocationId string `protobuf:"bytes,7,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + RobotName string `protobuf:"bytes,8,opt,name=robot_name,json=robotName,proto3" json:"robot_name,omitempty"` + RobotId string `protobuf:"bytes,9,opt,name=robot_id,json=robotId,proto3" json:"robot_id,omitempty"` + PartName string `protobuf:"bytes,10,opt,name=part_name,json=partName,proto3" json:"part_name,omitempty"` + MethodParameters map[string]*anypb.Any `protobuf:"bytes,11,rep,name=method_parameters,json=methodParameters,proto3" json:"method_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Tags []string `protobuf:"bytes,12,rep,name=tags,proto3" json:"tags,omitempty"` + Payload *structpb.Struct `protobuf:"bytes,13,opt,name=payload,proto3" json:"payload,omitempty"` +} + +func (x *ExportTabularDataResponse) Reset() { + *x = ExportTabularDataResponse{} + mi := &file_app_data_v1_data_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExportTabularDataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExportTabularDataResponse) ProtoMessage() {} + +func (x *ExportTabularDataResponse) ProtoReflect() protoreflect.Message { + mi := &file_app_data_v1_data_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExportTabularDataResponse.ProtoReflect.Descriptor instead. +func (*ExportTabularDataResponse) Descriptor() ([]byte, []int) { + return file_app_data_v1_data_proto_rawDescGZIP(), []int{13} +} + +func (x *ExportTabularDataResponse) GetPartId() string { + if x != nil { + return x.PartId + } + return "" +} + +func (x *ExportTabularDataResponse) GetComponentName() string { + if x != nil { + return x.ComponentName + } + return "" +} + +func (x *ExportTabularDataResponse) GetComponentType() string { + if x != nil { + return x.ComponentType + } + return "" +} + +func (x *ExportTabularDataResponse) GetMethodName() string { + if x != nil { + return x.MethodName + } + return "" +} + +func (x *ExportTabularDataResponse) GetTimeCaptured() *timestamppb.Timestamp { + if x != nil { + return x.TimeCaptured + } + return nil +} + +func (x *ExportTabularDataResponse) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *ExportTabularDataResponse) GetLocationId() string { + if x != nil { + return x.LocationId + } + return "" +} + +func (x *ExportTabularDataResponse) GetRobotName() string { + if x != nil { + return x.RobotName + } + return "" +} + +func (x *ExportTabularDataResponse) GetRobotId() string { + if x != nil { + return x.RobotId + } + return "" +} + +func (x *ExportTabularDataResponse) GetPartName() string { + if x != nil { + return x.PartName + } + return "" +} + +func (x *ExportTabularDataResponse) GetMethodParameters() map[string]*anypb.Any { + if x != nil { + return x.MethodParameters + } + return nil +} + +func (x *ExportTabularDataResponse) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *ExportTabularDataResponse) GetPayload() *structpb.Struct { + if x != nil { + return x.Payload + } + return nil +} + // GetLatestTabularDataRequest requests the most recent tabular data captured from the specified data source. type GetLatestTabularDataRequest struct { state protoimpl.MessageState @@ -1032,7 +1258,7 @@ type GetLatestTabularDataRequest struct { func (x *GetLatestTabularDataRequest) Reset() { *x = GetLatestTabularDataRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[12] + mi := &file_app_data_v1_data_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1044,7 +1270,7 @@ func (x *GetLatestTabularDataRequest) String() string { func (*GetLatestTabularDataRequest) ProtoMessage() {} func (x *GetLatestTabularDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[12] + mi := &file_app_data_v1_data_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1057,7 +1283,7 @@ func (x *GetLatestTabularDataRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestTabularDataRequest.ProtoReflect.Descriptor instead. func (*GetLatestTabularDataRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{12} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{14} } func (x *GetLatestTabularDataRequest) GetPartId() string { @@ -1102,7 +1328,7 @@ type GetLatestTabularDataResponse struct { func (x *GetLatestTabularDataResponse) Reset() { *x = GetLatestTabularDataResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[13] + mi := &file_app_data_v1_data_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1114,7 +1340,7 @@ func (x *GetLatestTabularDataResponse) String() string { func (*GetLatestTabularDataResponse) ProtoMessage() {} func (x *GetLatestTabularDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[13] + mi := &file_app_data_v1_data_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1127,7 +1353,7 @@ func (x *GetLatestTabularDataResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestTabularDataResponse.ProtoReflect.Descriptor instead. func (*GetLatestTabularDataResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{13} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{15} } func (x *GetLatestTabularDataResponse) GetTimeCaptured() *timestamppb.Timestamp { @@ -1163,7 +1389,7 @@ type BinaryData struct { func (x *BinaryData) Reset() { *x = BinaryData{} - mi := &file_app_data_v1_data_proto_msgTypes[14] + mi := &file_app_data_v1_data_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1175,7 +1401,7 @@ func (x *BinaryData) String() string { func (*BinaryData) ProtoMessage() {} func (x *BinaryData) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[14] + mi := &file_app_data_v1_data_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1188,7 +1414,7 @@ func (x *BinaryData) ProtoReflect() protoreflect.Message { // Deprecated: Use BinaryData.ProtoReflect.Descriptor instead. func (*BinaryData) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{14} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{16} } func (x *BinaryData) GetBinary() []byte { @@ -1219,7 +1445,7 @@ type BinaryDataByFilterRequest struct { func (x *BinaryDataByFilterRequest) Reset() { *x = BinaryDataByFilterRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[15] + mi := &file_app_data_v1_data_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1231,7 +1457,7 @@ func (x *BinaryDataByFilterRequest) String() string { func (*BinaryDataByFilterRequest) ProtoMessage() {} func (x *BinaryDataByFilterRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[15] + mi := &file_app_data_v1_data_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1244,7 +1470,7 @@ func (x *BinaryDataByFilterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BinaryDataByFilterRequest.ProtoReflect.Descriptor instead. func (*BinaryDataByFilterRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{15} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{17} } func (x *BinaryDataByFilterRequest) GetDataRequest() *DataRequest { @@ -1289,7 +1515,7 @@ type BinaryDataByFilterResponse struct { func (x *BinaryDataByFilterResponse) Reset() { *x = BinaryDataByFilterResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[16] + mi := &file_app_data_v1_data_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1301,7 +1527,7 @@ func (x *BinaryDataByFilterResponse) String() string { func (*BinaryDataByFilterResponse) ProtoMessage() {} func (x *BinaryDataByFilterResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[16] + mi := &file_app_data_v1_data_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1314,7 +1540,7 @@ func (x *BinaryDataByFilterResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BinaryDataByFilterResponse.ProtoReflect.Descriptor instead. func (*BinaryDataByFilterResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{16} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{18} } func (x *BinaryDataByFilterResponse) GetData() []*BinaryData { @@ -1358,7 +1584,7 @@ type BinaryID struct { func (x *BinaryID) Reset() { *x = BinaryID{} - mi := &file_app_data_v1_data_proto_msgTypes[17] + mi := &file_app_data_v1_data_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1370,7 +1596,7 @@ func (x *BinaryID) String() string { func (*BinaryID) ProtoMessage() {} func (x *BinaryID) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[17] + mi := &file_app_data_v1_data_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1383,7 +1609,7 @@ func (x *BinaryID) ProtoReflect() protoreflect.Message { // Deprecated: Use BinaryID.ProtoReflect.Descriptor instead. func (*BinaryID) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{17} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{19} } func (x *BinaryID) GetFileId() string { @@ -1419,7 +1645,7 @@ type BinaryDataByIDsRequest struct { func (x *BinaryDataByIDsRequest) Reset() { *x = BinaryDataByIDsRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[18] + mi := &file_app_data_v1_data_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1657,7 @@ func (x *BinaryDataByIDsRequest) String() string { func (*BinaryDataByIDsRequest) ProtoMessage() {} func (x *BinaryDataByIDsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[18] + mi := &file_app_data_v1_data_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1670,7 @@ func (x *BinaryDataByIDsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BinaryDataByIDsRequest.ProtoReflect.Descriptor instead. func (*BinaryDataByIDsRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{18} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{20} } func (x *BinaryDataByIDsRequest) GetIncludeBinary() bool { @@ -1473,7 +1699,7 @@ type BinaryDataByIDsResponse struct { func (x *BinaryDataByIDsResponse) Reset() { *x = BinaryDataByIDsResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[19] + mi := &file_app_data_v1_data_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1485,7 +1711,7 @@ func (x *BinaryDataByIDsResponse) String() string { func (*BinaryDataByIDsResponse) ProtoMessage() {} func (x *BinaryDataByIDsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[19] + mi := &file_app_data_v1_data_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1498,7 +1724,7 @@ func (x *BinaryDataByIDsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BinaryDataByIDsResponse.ProtoReflect.Descriptor instead. func (*BinaryDataByIDsResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{19} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{21} } func (x *BinaryDataByIDsResponse) GetData() []*BinaryData { @@ -1534,7 +1760,7 @@ type BoundingBox struct { func (x *BoundingBox) Reset() { *x = BoundingBox{} - mi := &file_app_data_v1_data_proto_msgTypes[20] + mi := &file_app_data_v1_data_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1546,7 +1772,7 @@ func (x *BoundingBox) String() string { func (*BoundingBox) ProtoMessage() {} func (x *BoundingBox) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[20] + mi := &file_app_data_v1_data_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1559,7 +1785,7 @@ func (x *BoundingBox) ProtoReflect() protoreflect.Message { // Deprecated: Use BoundingBox.ProtoReflect.Descriptor instead. func (*BoundingBox) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{20} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{22} } func (x *BoundingBox) GetId() string { @@ -1624,7 +1850,7 @@ type Classification struct { func (x *Classification) Reset() { *x = Classification{} - mi := &file_app_data_v1_data_proto_msgTypes[21] + mi := &file_app_data_v1_data_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1636,7 +1862,7 @@ func (x *Classification) String() string { func (*Classification) ProtoMessage() {} func (x *Classification) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[21] + mi := &file_app_data_v1_data_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1649,7 +1875,7 @@ func (x *Classification) ProtoReflect() protoreflect.Message { // Deprecated: Use Classification.ProtoReflect.Descriptor instead. func (*Classification) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{21} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{23} } func (x *Classification) GetLabel() string { @@ -1678,7 +1904,7 @@ type Annotations struct { func (x *Annotations) Reset() { *x = Annotations{} - mi := &file_app_data_v1_data_proto_msgTypes[22] + mi := &file_app_data_v1_data_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1690,7 +1916,7 @@ func (x *Annotations) String() string { func (*Annotations) ProtoMessage() {} func (x *Annotations) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[22] + mi := &file_app_data_v1_data_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1703,7 +1929,7 @@ func (x *Annotations) ProtoReflect() protoreflect.Message { // Deprecated: Use Annotations.ProtoReflect.Descriptor instead. func (*Annotations) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{22} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{24} } func (x *Annotations) GetBboxes() []*BoundingBox { @@ -1739,7 +1965,7 @@ type BinaryMetadata struct { func (x *BinaryMetadata) Reset() { *x = BinaryMetadata{} - mi := &file_app_data_v1_data_proto_msgTypes[23] + mi := &file_app_data_v1_data_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1751,7 +1977,7 @@ func (x *BinaryMetadata) String() string { func (*BinaryMetadata) ProtoMessage() {} func (x *BinaryMetadata) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[23] + mi := &file_app_data_v1_data_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1764,7 +1990,7 @@ func (x *BinaryMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use BinaryMetadata.ProtoReflect.Descriptor instead. func (*BinaryMetadata) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{23} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{25} } func (x *BinaryMetadata) GetId() string { @@ -1847,7 +2073,7 @@ type DeleteTabularDataRequest struct { func (x *DeleteTabularDataRequest) Reset() { *x = DeleteTabularDataRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[24] + mi := &file_app_data_v1_data_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1859,7 +2085,7 @@ func (x *DeleteTabularDataRequest) String() string { func (*DeleteTabularDataRequest) ProtoMessage() {} func (x *DeleteTabularDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[24] + mi := &file_app_data_v1_data_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1872,7 +2098,7 @@ func (x *DeleteTabularDataRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTabularDataRequest.ProtoReflect.Descriptor instead. func (*DeleteTabularDataRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{24} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{26} } func (x *DeleteTabularDataRequest) GetOrganizationId() string { @@ -1900,7 +2126,7 @@ type DeleteTabularDataResponse struct { func (x *DeleteTabularDataResponse) Reset() { *x = DeleteTabularDataResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[25] + mi := &file_app_data_v1_data_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1912,7 +2138,7 @@ func (x *DeleteTabularDataResponse) String() string { func (*DeleteTabularDataResponse) ProtoMessage() {} func (x *DeleteTabularDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[25] + mi := &file_app_data_v1_data_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1925,7 +2151,7 @@ func (x *DeleteTabularDataResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTabularDataResponse.ProtoReflect.Descriptor instead. func (*DeleteTabularDataResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{25} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{27} } func (x *DeleteTabularDataResponse) GetDeletedCount() uint64 { @@ -1947,7 +2173,7 @@ type DeleteBinaryDataByFilterRequest struct { func (x *DeleteBinaryDataByFilterRequest) Reset() { *x = DeleteBinaryDataByFilterRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[26] + mi := &file_app_data_v1_data_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1959,7 +2185,7 @@ func (x *DeleteBinaryDataByFilterRequest) String() string { func (*DeleteBinaryDataByFilterRequest) ProtoMessage() {} func (x *DeleteBinaryDataByFilterRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[26] + mi := &file_app_data_v1_data_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1972,7 +2198,7 @@ func (x *DeleteBinaryDataByFilterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBinaryDataByFilterRequest.ProtoReflect.Descriptor instead. func (*DeleteBinaryDataByFilterRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{26} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{28} } func (x *DeleteBinaryDataByFilterRequest) GetFilter() *Filter { @@ -2000,7 +2226,7 @@ type DeleteBinaryDataByFilterResponse struct { func (x *DeleteBinaryDataByFilterResponse) Reset() { *x = DeleteBinaryDataByFilterResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[27] + mi := &file_app_data_v1_data_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2012,7 +2238,7 @@ func (x *DeleteBinaryDataByFilterResponse) String() string { func (*DeleteBinaryDataByFilterResponse) ProtoMessage() {} func (x *DeleteBinaryDataByFilterResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[27] + mi := &file_app_data_v1_data_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2025,7 +2251,7 @@ func (x *DeleteBinaryDataByFilterResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBinaryDataByFilterResponse.ProtoReflect.Descriptor instead. func (*DeleteBinaryDataByFilterResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{27} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{29} } func (x *DeleteBinaryDataByFilterResponse) GetDeletedCount() uint64 { @@ -2046,7 +2272,7 @@ type DeleteBinaryDataByIDsRequest struct { func (x *DeleteBinaryDataByIDsRequest) Reset() { *x = DeleteBinaryDataByIDsRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[28] + mi := &file_app_data_v1_data_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2058,7 +2284,7 @@ func (x *DeleteBinaryDataByIDsRequest) String() string { func (*DeleteBinaryDataByIDsRequest) ProtoMessage() {} func (x *DeleteBinaryDataByIDsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[28] + mi := &file_app_data_v1_data_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2071,7 +2297,7 @@ func (x *DeleteBinaryDataByIDsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBinaryDataByIDsRequest.ProtoReflect.Descriptor instead. func (*DeleteBinaryDataByIDsRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{28} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{30} } func (x *DeleteBinaryDataByIDsRequest) GetBinaryIds() []*BinaryID { @@ -2092,7 +2318,7 @@ type DeleteBinaryDataByIDsResponse struct { func (x *DeleteBinaryDataByIDsResponse) Reset() { *x = DeleteBinaryDataByIDsResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[29] + mi := &file_app_data_v1_data_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2104,7 +2330,7 @@ func (x *DeleteBinaryDataByIDsResponse) String() string { func (*DeleteBinaryDataByIDsResponse) ProtoMessage() {} func (x *DeleteBinaryDataByIDsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[29] + mi := &file_app_data_v1_data_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2117,7 +2343,7 @@ func (x *DeleteBinaryDataByIDsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBinaryDataByIDsResponse.ProtoReflect.Descriptor instead. func (*DeleteBinaryDataByIDsResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{29} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{31} } func (x *DeleteBinaryDataByIDsResponse) GetDeletedCount() uint64 { @@ -2139,7 +2365,7 @@ type AddTagsToBinaryDataByIDsRequest struct { func (x *AddTagsToBinaryDataByIDsRequest) Reset() { *x = AddTagsToBinaryDataByIDsRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[30] + mi := &file_app_data_v1_data_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2151,7 +2377,7 @@ func (x *AddTagsToBinaryDataByIDsRequest) String() string { func (*AddTagsToBinaryDataByIDsRequest) ProtoMessage() {} func (x *AddTagsToBinaryDataByIDsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[30] + mi := &file_app_data_v1_data_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2164,7 +2390,7 @@ func (x *AddTagsToBinaryDataByIDsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTagsToBinaryDataByIDsRequest.ProtoReflect.Descriptor instead. func (*AddTagsToBinaryDataByIDsRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{30} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{32} } func (x *AddTagsToBinaryDataByIDsRequest) GetBinaryIds() []*BinaryID { @@ -2189,7 +2415,7 @@ type AddTagsToBinaryDataByIDsResponse struct { func (x *AddTagsToBinaryDataByIDsResponse) Reset() { *x = AddTagsToBinaryDataByIDsResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[31] + mi := &file_app_data_v1_data_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2201,7 +2427,7 @@ func (x *AddTagsToBinaryDataByIDsResponse) String() string { func (*AddTagsToBinaryDataByIDsResponse) ProtoMessage() {} func (x *AddTagsToBinaryDataByIDsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[31] + mi := &file_app_data_v1_data_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2214,7 +2440,7 @@ func (x *AddTagsToBinaryDataByIDsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTagsToBinaryDataByIDsResponse.ProtoReflect.Descriptor instead. func (*AddTagsToBinaryDataByIDsResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{31} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{33} } // AddTagsToBinaryDataByFilterRequest requests adding all specified tags to each of the files when a filter is provided. @@ -2229,7 +2455,7 @@ type AddTagsToBinaryDataByFilterRequest struct { func (x *AddTagsToBinaryDataByFilterRequest) Reset() { *x = AddTagsToBinaryDataByFilterRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[32] + mi := &file_app_data_v1_data_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2241,7 +2467,7 @@ func (x *AddTagsToBinaryDataByFilterRequest) String() string { func (*AddTagsToBinaryDataByFilterRequest) ProtoMessage() {} func (x *AddTagsToBinaryDataByFilterRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[32] + mi := &file_app_data_v1_data_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2254,7 +2480,7 @@ func (x *AddTagsToBinaryDataByFilterRequest) ProtoReflect() protoreflect.Message // Deprecated: Use AddTagsToBinaryDataByFilterRequest.ProtoReflect.Descriptor instead. func (*AddTagsToBinaryDataByFilterRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{32} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{34} } func (x *AddTagsToBinaryDataByFilterRequest) GetFilter() *Filter { @@ -2279,7 +2505,7 @@ type AddTagsToBinaryDataByFilterResponse struct { func (x *AddTagsToBinaryDataByFilterResponse) Reset() { *x = AddTagsToBinaryDataByFilterResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[33] + mi := &file_app_data_v1_data_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2291,7 +2517,7 @@ func (x *AddTagsToBinaryDataByFilterResponse) String() string { func (*AddTagsToBinaryDataByFilterResponse) ProtoMessage() {} func (x *AddTagsToBinaryDataByFilterResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[33] + mi := &file_app_data_v1_data_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2304,7 +2530,7 @@ func (x *AddTagsToBinaryDataByFilterResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use AddTagsToBinaryDataByFilterResponse.ProtoReflect.Descriptor instead. func (*AddTagsToBinaryDataByFilterResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{33} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{35} } // RemoveTagsFromBinaryDataByIDsRequest requests removing the given tags value from each file when binary ids are provided. @@ -2319,7 +2545,7 @@ type RemoveTagsFromBinaryDataByIDsRequest struct { func (x *RemoveTagsFromBinaryDataByIDsRequest) Reset() { *x = RemoveTagsFromBinaryDataByIDsRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[34] + mi := &file_app_data_v1_data_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2331,7 +2557,7 @@ func (x *RemoveTagsFromBinaryDataByIDsRequest) String() string { func (*RemoveTagsFromBinaryDataByIDsRequest) ProtoMessage() {} func (x *RemoveTagsFromBinaryDataByIDsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[34] + mi := &file_app_data_v1_data_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2344,7 +2570,7 @@ func (x *RemoveTagsFromBinaryDataByIDsRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use RemoveTagsFromBinaryDataByIDsRequest.ProtoReflect.Descriptor instead. func (*RemoveTagsFromBinaryDataByIDsRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{34} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{36} } func (x *RemoveTagsFromBinaryDataByIDsRequest) GetBinaryIds() []*BinaryID { @@ -2372,7 +2598,7 @@ type RemoveTagsFromBinaryDataByIDsResponse struct { func (x *RemoveTagsFromBinaryDataByIDsResponse) Reset() { *x = RemoveTagsFromBinaryDataByIDsResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[35] + mi := &file_app_data_v1_data_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2384,7 +2610,7 @@ func (x *RemoveTagsFromBinaryDataByIDsResponse) String() string { func (*RemoveTagsFromBinaryDataByIDsResponse) ProtoMessage() {} func (x *RemoveTagsFromBinaryDataByIDsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[35] + mi := &file_app_data_v1_data_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2397,7 +2623,7 @@ func (x *RemoveTagsFromBinaryDataByIDsResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use RemoveTagsFromBinaryDataByIDsResponse.ProtoReflect.Descriptor instead. func (*RemoveTagsFromBinaryDataByIDsResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{35} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{37} } func (x *RemoveTagsFromBinaryDataByIDsResponse) GetDeletedCount() uint64 { @@ -2419,7 +2645,7 @@ type RemoveTagsFromBinaryDataByFilterRequest struct { func (x *RemoveTagsFromBinaryDataByFilterRequest) Reset() { *x = RemoveTagsFromBinaryDataByFilterRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[36] + mi := &file_app_data_v1_data_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2431,7 +2657,7 @@ func (x *RemoveTagsFromBinaryDataByFilterRequest) String() string { func (*RemoveTagsFromBinaryDataByFilterRequest) ProtoMessage() {} func (x *RemoveTagsFromBinaryDataByFilterRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[36] + mi := &file_app_data_v1_data_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2444,7 +2670,7 @@ func (x *RemoveTagsFromBinaryDataByFilterRequest) ProtoReflect() protoreflect.Me // Deprecated: Use RemoveTagsFromBinaryDataByFilterRequest.ProtoReflect.Descriptor instead. func (*RemoveTagsFromBinaryDataByFilterRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{36} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{38} } func (x *RemoveTagsFromBinaryDataByFilterRequest) GetFilter() *Filter { @@ -2472,7 +2698,7 @@ type RemoveTagsFromBinaryDataByFilterResponse struct { func (x *RemoveTagsFromBinaryDataByFilterResponse) Reset() { *x = RemoveTagsFromBinaryDataByFilterResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[37] + mi := &file_app_data_v1_data_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2484,7 +2710,7 @@ func (x *RemoveTagsFromBinaryDataByFilterResponse) String() string { func (*RemoveTagsFromBinaryDataByFilterResponse) ProtoMessage() {} func (x *RemoveTagsFromBinaryDataByFilterResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[37] + mi := &file_app_data_v1_data_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2497,7 +2723,7 @@ func (x *RemoveTagsFromBinaryDataByFilterResponse) ProtoReflect() protoreflect.M // Deprecated: Use RemoveTagsFromBinaryDataByFilterResponse.ProtoReflect.Descriptor instead. func (*RemoveTagsFromBinaryDataByFilterResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{37} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{39} } func (x *RemoveTagsFromBinaryDataByFilterResponse) GetDeletedCount() uint64 { @@ -2518,7 +2744,7 @@ type TagsByFilterRequest struct { func (x *TagsByFilterRequest) Reset() { *x = TagsByFilterRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[38] + mi := &file_app_data_v1_data_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2530,7 +2756,7 @@ func (x *TagsByFilterRequest) String() string { func (*TagsByFilterRequest) ProtoMessage() {} func (x *TagsByFilterRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[38] + mi := &file_app_data_v1_data_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2543,7 +2769,7 @@ func (x *TagsByFilterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TagsByFilterRequest.ProtoReflect.Descriptor instead. func (*TagsByFilterRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{38} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{40} } func (x *TagsByFilterRequest) GetFilter() *Filter { @@ -2564,7 +2790,7 @@ type TagsByFilterResponse struct { func (x *TagsByFilterResponse) Reset() { *x = TagsByFilterResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[39] + mi := &file_app_data_v1_data_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2576,7 +2802,7 @@ func (x *TagsByFilterResponse) String() string { func (*TagsByFilterResponse) ProtoMessage() {} func (x *TagsByFilterResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[39] + mi := &file_app_data_v1_data_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2589,7 +2815,7 @@ func (x *TagsByFilterResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TagsByFilterResponse.ProtoReflect.Descriptor instead. func (*TagsByFilterResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{39} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{41} } func (x *TagsByFilterResponse) GetTags() []string { @@ -2616,7 +2842,7 @@ type AddBoundingBoxToImageByIDRequest struct { func (x *AddBoundingBoxToImageByIDRequest) Reset() { *x = AddBoundingBoxToImageByIDRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[40] + mi := &file_app_data_v1_data_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2628,7 +2854,7 @@ func (x *AddBoundingBoxToImageByIDRequest) String() string { func (*AddBoundingBoxToImageByIDRequest) ProtoMessage() {} func (x *AddBoundingBoxToImageByIDRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[40] + mi := &file_app_data_v1_data_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2641,7 +2867,7 @@ func (x *AddBoundingBoxToImageByIDRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddBoundingBoxToImageByIDRequest.ProtoReflect.Descriptor instead. func (*AddBoundingBoxToImageByIDRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{40} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{42} } func (x *AddBoundingBoxToImageByIDRequest) GetBinaryId() *BinaryID { @@ -2697,7 +2923,7 @@ type AddBoundingBoxToImageByIDResponse struct { func (x *AddBoundingBoxToImageByIDResponse) Reset() { *x = AddBoundingBoxToImageByIDResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[41] + mi := &file_app_data_v1_data_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2709,7 +2935,7 @@ func (x *AddBoundingBoxToImageByIDResponse) String() string { func (*AddBoundingBoxToImageByIDResponse) ProtoMessage() {} func (x *AddBoundingBoxToImageByIDResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[41] + mi := &file_app_data_v1_data_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2722,7 +2948,7 @@ func (x *AddBoundingBoxToImageByIDResponse) ProtoReflect() protoreflect.Message // Deprecated: Use AddBoundingBoxToImageByIDResponse.ProtoReflect.Descriptor instead. func (*AddBoundingBoxToImageByIDResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{41} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{43} } func (x *AddBoundingBoxToImageByIDResponse) GetBboxId() string { @@ -2744,7 +2970,7 @@ type RemoveBoundingBoxFromImageByIDRequest struct { func (x *RemoveBoundingBoxFromImageByIDRequest) Reset() { *x = RemoveBoundingBoxFromImageByIDRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[42] + mi := &file_app_data_v1_data_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2756,7 +2982,7 @@ func (x *RemoveBoundingBoxFromImageByIDRequest) String() string { func (*RemoveBoundingBoxFromImageByIDRequest) ProtoMessage() {} func (x *RemoveBoundingBoxFromImageByIDRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[42] + mi := &file_app_data_v1_data_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2769,7 +2995,7 @@ func (x *RemoveBoundingBoxFromImageByIDRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use RemoveBoundingBoxFromImageByIDRequest.ProtoReflect.Descriptor instead. func (*RemoveBoundingBoxFromImageByIDRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{42} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{44} } func (x *RemoveBoundingBoxFromImageByIDRequest) GetBinaryId() *BinaryID { @@ -2794,7 +3020,7 @@ type RemoveBoundingBoxFromImageByIDResponse struct { func (x *RemoveBoundingBoxFromImageByIDResponse) Reset() { *x = RemoveBoundingBoxFromImageByIDResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[43] + mi := &file_app_data_v1_data_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2806,7 +3032,7 @@ func (x *RemoveBoundingBoxFromImageByIDResponse) String() string { func (*RemoveBoundingBoxFromImageByIDResponse) ProtoMessage() {} func (x *RemoveBoundingBoxFromImageByIDResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[43] + mi := &file_app_data_v1_data_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2819,7 +3045,7 @@ func (x *RemoveBoundingBoxFromImageByIDResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use RemoveBoundingBoxFromImageByIDResponse.ProtoReflect.Descriptor instead. func (*RemoveBoundingBoxFromImageByIDResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{43} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{45} } // UpdateBoundingBoxRequest updates the bounding box with specified bounding box ID for the file represented by the binary ID. @@ -2839,7 +3065,7 @@ type UpdateBoundingBoxRequest struct { func (x *UpdateBoundingBoxRequest) Reset() { *x = UpdateBoundingBoxRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[44] + mi := &file_app_data_v1_data_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2851,7 +3077,7 @@ func (x *UpdateBoundingBoxRequest) String() string { func (*UpdateBoundingBoxRequest) ProtoMessage() {} func (x *UpdateBoundingBoxRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[44] + mi := &file_app_data_v1_data_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2864,7 +3090,7 @@ func (x *UpdateBoundingBoxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateBoundingBoxRequest.ProtoReflect.Descriptor instead. func (*UpdateBoundingBoxRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{44} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{46} } func (x *UpdateBoundingBoxRequest) GetBinaryId() *BinaryID { @@ -2924,7 +3150,7 @@ type UpdateBoundingBoxResponse struct { func (x *UpdateBoundingBoxResponse) Reset() { *x = UpdateBoundingBoxResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[45] + mi := &file_app_data_v1_data_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2936,7 +3162,7 @@ func (x *UpdateBoundingBoxResponse) String() string { func (*UpdateBoundingBoxResponse) ProtoMessage() {} func (x *UpdateBoundingBoxResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[45] + mi := &file_app_data_v1_data_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2949,7 +3175,7 @@ func (x *UpdateBoundingBoxResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateBoundingBoxResponse.ProtoReflect.Descriptor instead. func (*UpdateBoundingBoxResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{45} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{47} } // BoundingBoxLabelsByFilterRequest requests all the labels of the bounding boxes from files from a given filter. @@ -2963,7 +3189,7 @@ type BoundingBoxLabelsByFilterRequest struct { func (x *BoundingBoxLabelsByFilterRequest) Reset() { *x = BoundingBoxLabelsByFilterRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[46] + mi := &file_app_data_v1_data_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2975,7 +3201,7 @@ func (x *BoundingBoxLabelsByFilterRequest) String() string { func (*BoundingBoxLabelsByFilterRequest) ProtoMessage() {} func (x *BoundingBoxLabelsByFilterRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[46] + mi := &file_app_data_v1_data_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2988,7 +3214,7 @@ func (x *BoundingBoxLabelsByFilterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BoundingBoxLabelsByFilterRequest.ProtoReflect.Descriptor instead. func (*BoundingBoxLabelsByFilterRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{46} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{48} } func (x *BoundingBoxLabelsByFilterRequest) GetFilter() *Filter { @@ -3009,7 +3235,7 @@ type BoundingBoxLabelsByFilterResponse struct { func (x *BoundingBoxLabelsByFilterResponse) Reset() { *x = BoundingBoxLabelsByFilterResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[47] + mi := &file_app_data_v1_data_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3021,7 +3247,7 @@ func (x *BoundingBoxLabelsByFilterResponse) String() string { func (*BoundingBoxLabelsByFilterResponse) ProtoMessage() {} func (x *BoundingBoxLabelsByFilterResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[47] + mi := &file_app_data_v1_data_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3034,7 +3260,7 @@ func (x *BoundingBoxLabelsByFilterResponse) ProtoReflect() protoreflect.Message // Deprecated: Use BoundingBoxLabelsByFilterResponse.ProtoReflect.Descriptor instead. func (*BoundingBoxLabelsByFilterResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{47} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{49} } func (x *BoundingBoxLabelsByFilterResponse) GetLabels() []string { @@ -3058,7 +3284,7 @@ type ConfigureDatabaseUserRequest struct { func (x *ConfigureDatabaseUserRequest) Reset() { *x = ConfigureDatabaseUserRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[48] + mi := &file_app_data_v1_data_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3070,7 +3296,7 @@ func (x *ConfigureDatabaseUserRequest) String() string { func (*ConfigureDatabaseUserRequest) ProtoMessage() {} func (x *ConfigureDatabaseUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[48] + mi := &file_app_data_v1_data_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3083,7 +3309,7 @@ func (x *ConfigureDatabaseUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureDatabaseUserRequest.ProtoReflect.Descriptor instead. func (*ConfigureDatabaseUserRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{48} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{50} } func (x *ConfigureDatabaseUserRequest) GetOrganizationId() string { @@ -3108,7 +3334,7 @@ type ConfigureDatabaseUserResponse struct { func (x *ConfigureDatabaseUserResponse) Reset() { *x = ConfigureDatabaseUserResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[49] + mi := &file_app_data_v1_data_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3120,7 +3346,7 @@ func (x *ConfigureDatabaseUserResponse) String() string { func (*ConfigureDatabaseUserResponse) ProtoMessage() {} func (x *ConfigureDatabaseUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[49] + mi := &file_app_data_v1_data_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3133,7 +3359,7 @@ func (x *ConfigureDatabaseUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureDatabaseUserResponse.ProtoReflect.Descriptor instead. func (*ConfigureDatabaseUserResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{49} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{51} } // GetDatabaseConnectionRequest requests the database connection hostname. @@ -3147,7 +3373,7 @@ type GetDatabaseConnectionRequest struct { func (x *GetDatabaseConnectionRequest) Reset() { *x = GetDatabaseConnectionRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[50] + mi := &file_app_data_v1_data_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3159,7 +3385,7 @@ func (x *GetDatabaseConnectionRequest) String() string { func (*GetDatabaseConnectionRequest) ProtoMessage() {} func (x *GetDatabaseConnectionRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[50] + mi := &file_app_data_v1_data_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3172,7 +3398,7 @@ func (x *GetDatabaseConnectionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDatabaseConnectionRequest.ProtoReflect.Descriptor instead. func (*GetDatabaseConnectionRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{50} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{52} } func (x *GetDatabaseConnectionRequest) GetOrganizationId() string { @@ -3197,7 +3423,7 @@ type GetDatabaseConnectionResponse struct { func (x *GetDatabaseConnectionResponse) Reset() { *x = GetDatabaseConnectionResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[51] + mi := &file_app_data_v1_data_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3209,7 +3435,7 @@ func (x *GetDatabaseConnectionResponse) String() string { func (*GetDatabaseConnectionResponse) ProtoMessage() {} func (x *GetDatabaseConnectionResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[51] + mi := &file_app_data_v1_data_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3222,7 +3448,7 @@ func (x *GetDatabaseConnectionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDatabaseConnectionResponse.ProtoReflect.Descriptor instead. func (*GetDatabaseConnectionResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{51} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{53} } func (x *GetDatabaseConnectionResponse) GetHostname() string { @@ -3258,7 +3484,7 @@ type AddBinaryDataToDatasetByIDsRequest struct { func (x *AddBinaryDataToDatasetByIDsRequest) Reset() { *x = AddBinaryDataToDatasetByIDsRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[52] + mi := &file_app_data_v1_data_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3270,7 +3496,7 @@ func (x *AddBinaryDataToDatasetByIDsRequest) String() string { func (*AddBinaryDataToDatasetByIDsRequest) ProtoMessage() {} func (x *AddBinaryDataToDatasetByIDsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[52] + mi := &file_app_data_v1_data_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3283,7 +3509,7 @@ func (x *AddBinaryDataToDatasetByIDsRequest) ProtoReflect() protoreflect.Message // Deprecated: Use AddBinaryDataToDatasetByIDsRequest.ProtoReflect.Descriptor instead. func (*AddBinaryDataToDatasetByIDsRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{52} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{54} } func (x *AddBinaryDataToDatasetByIDsRequest) GetBinaryIds() []*BinaryID { @@ -3308,7 +3534,7 @@ type AddBinaryDataToDatasetByIDsResponse struct { func (x *AddBinaryDataToDatasetByIDsResponse) Reset() { *x = AddBinaryDataToDatasetByIDsResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[53] + mi := &file_app_data_v1_data_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3320,7 +3546,7 @@ func (x *AddBinaryDataToDatasetByIDsResponse) String() string { func (*AddBinaryDataToDatasetByIDsResponse) ProtoMessage() {} func (x *AddBinaryDataToDatasetByIDsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[53] + mi := &file_app_data_v1_data_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3333,7 +3559,7 @@ func (x *AddBinaryDataToDatasetByIDsResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use AddBinaryDataToDatasetByIDsResponse.ProtoReflect.Descriptor instead. func (*AddBinaryDataToDatasetByIDsResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{53} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{55} } // RemoveBinaryDataFromDatasetByIDsRequest removes the specified binary IDs from a dataset with dataset_id. @@ -3348,7 +3574,7 @@ type RemoveBinaryDataFromDatasetByIDsRequest struct { func (x *RemoveBinaryDataFromDatasetByIDsRequest) Reset() { *x = RemoveBinaryDataFromDatasetByIDsRequest{} - mi := &file_app_data_v1_data_proto_msgTypes[54] + mi := &file_app_data_v1_data_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3360,7 +3586,7 @@ func (x *RemoveBinaryDataFromDatasetByIDsRequest) String() string { func (*RemoveBinaryDataFromDatasetByIDsRequest) ProtoMessage() {} func (x *RemoveBinaryDataFromDatasetByIDsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[54] + mi := &file_app_data_v1_data_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3373,7 +3599,7 @@ func (x *RemoveBinaryDataFromDatasetByIDsRequest) ProtoReflect() protoreflect.Me // Deprecated: Use RemoveBinaryDataFromDatasetByIDsRequest.ProtoReflect.Descriptor instead. func (*RemoveBinaryDataFromDatasetByIDsRequest) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{54} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{56} } func (x *RemoveBinaryDataFromDatasetByIDsRequest) GetBinaryIds() []*BinaryID { @@ -3398,7 +3624,7 @@ type RemoveBinaryDataFromDatasetByIDsResponse struct { func (x *RemoveBinaryDataFromDatasetByIDsResponse) Reset() { *x = RemoveBinaryDataFromDatasetByIDsResponse{} - mi := &file_app_data_v1_data_proto_msgTypes[55] + mi := &file_app_data_v1_data_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3410,7 +3636,7 @@ func (x *RemoveBinaryDataFromDatasetByIDsResponse) String() string { func (*RemoveBinaryDataFromDatasetByIDsResponse) ProtoMessage() {} func (x *RemoveBinaryDataFromDatasetByIDsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_data_v1_data_proto_msgTypes[55] + mi := &file_app_data_v1_data_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3423,7 +3649,7 @@ func (x *RemoveBinaryDataFromDatasetByIDsResponse) ProtoReflect() protoreflect.M // Deprecated: Use RemoveBinaryDataFromDatasetByIDsResponse.ProtoReflect.Descriptor instead. func (*RemoveBinaryDataFromDatasetByIDsResponse) Descriptor() ([]byte, []int) { - return file_app_data_v1_data_proto_rawDescGZIP(), []int{55} + return file_app_data_v1_data_proto_rawDescGZIP(), []int{57} } var File_app_data_v1_data_proto protoreflect.FileDescriptor @@ -3531,7 +3757,7 @@ var file_app_data_v1_data_proto_rawDesc = []byte{ 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x1a, 0x54, 0x61, 0x62, 0x75, 0x6c, + 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xb5, 0x01, 0x0a, 0x1a, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x69, @@ -3542,587 +3768,651 @@ var file_app_data_v1_data_proto_rawDesc = []byte{ 0x6e, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0xe3, 0x01, 0x0a, 0x1b, 0x54, - 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x75, 0x6c, - 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x22, 0xe5, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, - 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x41, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 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, 0x0c, 0x74, 0x69, 0x6d, 0x65, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x22, 0x5f, 0x0a, 0x17, 0x54, 0x61, 0x62, 0x75, - 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x41, 0x0a, 0x18, 0x54, 0x61, 0x62, - 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x61, 0x77, 0x44, 0x61, 0x74, 0x61, - 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x72, 0x0a, 0x17, - 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4d, 0x51, 0x4c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x71, 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x71, 0x6c, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4a, - 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x09, 0x6d, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x22, 0x41, 0x0a, 0x18, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x79, 0x4d, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x72, 0x61, 0x77, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x07, - 0x72, 0x61, 0x77, 0x44, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xa7, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, - 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x22, 0xcf, 0x01, - 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, - 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 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, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x12, - 0x3b, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x18, 0x02, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xe7, + 0x01, 0x0a, 0x1b, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xe9, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x62, + 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x41, 0x0a, 0x0e, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x07, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, - 0x62, 0x0a, 0x0a, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, - 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xd7, 0x01, 0x0a, 0x19, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x62, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0xa2, 0x01, - 0x0a, 0x1a, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, - 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x22, 0x6d, 0x0a, 0x08, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x12, 0x17, - 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, - 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x69, 0x6e, - 0x61, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x49, 0x44, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x4a, 0x04, - 0x08, 0x01, 0x10, 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x22, 0x61, - 0x0a, 0x17, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x8f, 0x02, 0x0a, 0x0b, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, - 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x78, 0x5f, 0x6d, 0x69, 0x6e, - 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x0e, 0x78, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x64, 0x12, 0x28, 0x0a, 0x10, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x79, 0x4d, 0x69, - 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x78, - 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x78, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x0e, 0x79, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, - 0x23, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, - 0x6e, 0x63, 0x65, 0x22, 0x5a, 0x0a, 0x0e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0a, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, - 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, - 0x90, 0x01, 0x0a, 0x0b, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x35, 0x0a, 0x06, 0x62, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x06, - 0x62, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x9e, 0x03, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x10, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x0f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 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, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x52, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, - 0x69, 0x12, 0x3f, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x49, 0x64, 0x73, 0x22, 0x78, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x62, - 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, + 0x3f, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 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, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 0x3a, 0x02, 0x18, 0x01, 0x22, 0x5f, 0x0a, 0x17, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x42, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x5f, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x5f, 0x64, 0x61, - 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4f, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x22, 0x40, 0x0a, - 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x87, 0x01, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, - 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x71, 0x6c, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x41, 0x0a, 0x18, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x61, 0x77, 0x44, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, + 0x10, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x72, 0x0a, 0x17, 0x54, 0x61, 0x62, 0x75, + 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4d, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x71, 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, + 0x52, 0x09, 0x6d, 0x71, 0x6c, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4a, 0x04, 0x08, 0x02, 0x10, + 0x03, 0x52, 0x09, 0x6d, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x41, 0x0a, 0x18, + 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4d, 0x51, 0x4c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x61, 0x77, 0x44, + 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0xe3, 0x01, 0x0a, 0x18, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, + 0x70, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, + 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x74, + 0x75, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x97, 0x05, 0x0a, 0x19, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 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, 0x0c, + 0x74, 0x69, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x62, 0x6f, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6e, 0x0a, + 0x11, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x12, 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x59, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 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, + 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xa7, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x61, 0x62, + 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, + 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x1c, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 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, 0x0c, 0x74, + 0x69, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x74, 0x69, + 0x6d, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x62, 0x0a, 0x0a, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, + 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, + 0xd7, 0x01, 0x0a, 0x19, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, + 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x61, 0x72, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x20, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, - 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x22, 0x69, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, - 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, - 0x52, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, - 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x22, 0x52, 0x0a, 0x1d, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x80, 0x01, 0x0a, 0x1f, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, - 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x49, 0x44, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x73, 0x22, 0x22, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, - 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x22, 0x25, 0x0a, 0x23, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x24, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0xa2, 0x01, 0x0a, 0x1a, 0x42, 0x69, + 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, - 0x49, 0x44, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, - 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x73, 0x22, 0x4c, 0x0a, 0x25, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, - 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, - 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x6f, 0x0a, 0x27, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, - 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x22, 0x4f, 0x0a, 0x28, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, - 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x47, 0x0a, 0x13, 0x54, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6c, 0x61, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x6d, + 0x0a, 0x08, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x8a, 0x01, + 0x0a, 0x16, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, + 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, + 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, + 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x22, 0x61, 0x0a, 0x17, 0x42, 0x69, + 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8f, 0x02, + 0x0a, 0x0b, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x78, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x78, + 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, + 0x10, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x79, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x78, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x0e, 0x78, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x64, 0x12, 0x28, 0x0a, 0x10, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x79, 0x4d, 0x61, + 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0a, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x48, + 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, + 0x5a, 0x0a, 0x0e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x0b, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x62, + 0x62, 0x6f, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x06, 0x62, 0x62, 0x6f, 0x78, + 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9e, + 0x03, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x4c, 0x0a, 0x10, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, + 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x41, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 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, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3f, 0x0a, + 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, + 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, + 0x78, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6f, + 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6c, 0x64, 0x65, + 0x72, 0x54, 0x68, 0x61, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x22, 0x40, 0x0a, 0x19, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x87, 0x01, 0x0a, 0x1f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x69, 0x0a, 0x1c, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, 0x09, 0x62, 0x69, + 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x08, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x22, 0x52, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x1f, + 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, + 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, + 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x4a, 0x04, + 0x08, 0x01, 0x10, 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x22, 0x22, + 0x0a, 0x20, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, + 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x6a, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x2a, 0x0a, 0x14, 0x54, 0x61, - 0x67, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0xa8, 0x02, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x62, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x78, 0x5f, - 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x78, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, - 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, - 0x79, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, - 0x0a, 0x10, 0x78, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x78, 0x4d, 0x61, 0x78, 0x4e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x79, 0x5f, 0x6d, 0x61, + 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x25, + 0x0a, 0x23, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, + 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x24, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, + 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, + 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, 0x09, + 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x4a, 0x04, 0x08, + 0x01, 0x10, 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x22, 0x4c, 0x0a, + 0x25, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x6f, 0x0a, 0x27, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, + 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x4f, 0x0a, 0x28, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, + 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x47, 0x0a, + 0x13, 0x54, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x2a, 0x0a, 0x14, 0x54, 0x61, 0x67, 0x73, 0x42, 0x79, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x22, 0xa8, 0x02, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, + 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x78, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, + 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x0e, 0x78, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x12, 0x28, 0x0a, 0x10, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x79, 0x4d, 0x69, 0x6e, + 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x78, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x78, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, + 0x79, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4a, 0x04, + 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x3c, 0x0a, + 0x21, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x54, + 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x62, 0x6f, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x25, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, + 0x78, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x49, 0x44, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x62, 0x62, 0x6f, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x62, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x26, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x46, 0x72, 0x6f, 0x6d, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xa1, 0x03, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, + 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, 0x08, 0x62, 0x69, + 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x62, 0x6f, 0x78, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x12, + 0x19, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x78, 0x5f, + 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x78, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x79, 0x5f, 0x6d, + 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0e, 0x79, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x78, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x0e, 0x79, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x22, 0x3c, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x42, 0x6f, 0x78, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x62, 0x6f, 0x78, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x22, - 0x88, 0x01, 0x0a, 0x25, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, - 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x62, 0x69, 0x6e, - 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, - 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x62, 0x6f, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, - 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x26, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x46, - 0x72, 0x6f, 0x6d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa1, 0x03, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x37, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, - 0x52, 0x08, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x62, - 0x6f, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x62, 0x6f, - 0x78, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2d, - 0x0a, 0x10, 0x78, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x78, 0x4d, 0x69, 0x6e, - 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, - 0x10, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0e, 0x79, 0x4d, 0x69, 0x6e, 0x4e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, - 0x78, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x0e, 0x78, 0x4d, 0x61, 0x78, 0x4e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x79, - 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x01, 0x48, 0x04, 0x52, 0x0e, 0x79, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x72, - 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x78, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x79, 0x5f, - 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x78, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x20, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x42, 0x6f, 0x78, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x3b, 0x0a, 0x21, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x63, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x1f, 0x0a, - 0x1d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, - 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, - 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, - 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x6e, 0x67, - 0x6f, 0x64, 0x62, 0x55, 0x72, 0x69, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x22, 0x7e, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x54, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, - 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x49, 0x64, 0x22, 0x25, 0x0a, 0x23, 0x41, 0x64, 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x54, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x27, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, - 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, - 0x61, 0x72, 0x79, 0x49, 0x44, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, - 0x2a, 0x0a, 0x28, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, - 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x49, 0x0a, 0x05, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, - 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, - 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x41, 0x53, 0x43, 0x45, 0x4e, - 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x2a, 0x90, 0x01, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x73, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x47, - 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x54, - 0x41, 0x47, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x42, 0x59, 0x5f, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, - 0x17, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, - 0x47, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x03, 0x32, 0xe1, 0x15, 0x0a, 0x0b, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x72, 0x0a, 0x13, 0x54, 0x61, 0x62, - 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x2c, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, - 0x10, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x53, 0x51, - 0x4c, 0x12, 0x29, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x42, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x76, + 0x28, 0x01, 0x48, 0x03, 0x52, 0x0e, 0x78, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x79, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x01, 0x48, 0x04, 0x52, 0x0e, 0x79, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x78, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, + 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x78, + 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, + 0x13, 0x0a, 0x11, 0x5f, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x54, 0x0a, 0x20, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x3b, 0x0a, 0x21, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x42, 0x79, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x22, 0x63, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x1c, 0x47, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x75, 0x72, 0x69, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x55, + 0x72, 0x69, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, + 0x61, 0x73, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x22, 0x7e, + 0x0a, 0x22, 0x41, 0x64, 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x54, + 0x6f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x49, 0x44, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, + 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x25, + 0x0a, 0x23, 0x41, 0x64, 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x54, + 0x6f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x27, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, + 0x44, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x28, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x46, + 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x49, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x52, 0x44, 0x45, 0x52, + 0x5f, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x13, 0x0a, + 0x0f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x41, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, + 0x10, 0x02, 0x2a, 0x90, 0x01, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x46, 0x49, + 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x47, 0x53, 0x5f, + 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, + 0x48, 0x5f, 0x42, 0x59, 0x5f, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x47, + 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, + 0x47, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x46, + 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x54, 0x41, 0x47, + 0x47, 0x45, 0x44, 0x10, 0x03, 0x32, 0xd6, 0x16, 0x0a, 0x0b, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x77, 0x0a, 0x13, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x53, 0x51, 0x4c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x10, 0x54, 0x61, 0x62, 0x75, - 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4d, 0x51, 0x4c, 0x12, 0x29, 0x2e, 0x76, + 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, + 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x69, + 0x0a, 0x10, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x53, + 0x51, 0x4c, 0x12, 0x29, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x53, 0x51, + 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x10, 0x54, 0x61, 0x62, + 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4d, 0x51, 0x4c, 0x12, 0x29, 0x2e, + 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4d, 0x51, + 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x75, + 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4d, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x61, + 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, + 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x75, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4d, 0x51, 0x4c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x75, 0x6c, - 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4d, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x76, 0x69, + 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x12, 0x42, 0x69, - 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x2b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, - 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0f, 0x42, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x28, - 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x62, - 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x31, - 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x32, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x2e, - 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x12, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x2b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x81, 0x01, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, - 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x31, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, + 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0f, + 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, + 0x28, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, + 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, + 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, + 0x31, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, + 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, + 0x2e, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x32, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, + 0x2f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, + 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x81, 0x01, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, + 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x31, 0x2e, + 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, + 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x34, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x34, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, - 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, - 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, - 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x90, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, - 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, - 0x44, 0x73, 0x12, 0x36, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, + 0x64, 0x54, 0x61, 0x67, 0x73, 0x54, 0x6f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x90, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, - 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x99, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, - 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, - 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x39, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, - 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, + 0x49, 0x44, 0x73, 0x12, 0x36, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x99, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, + 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x39, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, + 0x79, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, + 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5d, 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x25, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, + 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x5d, 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x25, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x42, 0x79, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, - 0x01, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, - 0x78, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x12, 0x32, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x64, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x54, 0x6f, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, - 0x6f, 0x78, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x46, 0x72, 0x6f, 0x6d, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x12, 0x37, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x46, 0x72, 0x6f, - 0x6d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x38, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, - 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x19, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x32, 0x2e, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x42, 0x79, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, + 0x84, 0x01, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, + 0x6f, 0x78, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x12, 0x32, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, 0x2a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x78, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x15, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x42, 0x69, 0x6e, 0x61, + 0x2e, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x54, + 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x33, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x42, 0x6f, 0x78, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x46, 0x72, 0x6f, 0x6d, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x12, 0x37, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x46, 0x72, + 0x6f, 0x6d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, + 0x19, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x32, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x42, + 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, + 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, 0x2a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x78, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x15, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x54, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, + 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x34, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x54, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, - 0x79, 0x49, 0x44, 0x73, 0x12, 0x34, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x44, 0x61, 0x74, 0x61, 0x54, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, - 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, - 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x54, 0x6f, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x99, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x69, 0x6e, 0x61, + 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x64, 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x54, 0x6f, 0x44, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x99, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x39, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, + 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, - 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x39, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, - 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1d, 0x5a, - 0x1b, 0x67, 0x6f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1d, + 0x5a, 0x1b, 0x67, 0x6f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4138,7 +4428,7 @@ func file_app_data_v1_data_proto_rawDescGZIP() []byte { } var file_app_data_v1_data_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_app_data_v1_data_proto_msgTypes = make([]protoimpl.MessageInfo, 57) +var file_app_data_v1_data_proto_msgTypes = make([]protoimpl.MessageInfo, 60) var file_app_data_v1_data_proto_goTypes = []any{ (Order)(0), // 0: viam.app.data.v1.Order (TagsFilterType)(0), // 1: viam.app.data.v1.TagsFilterType @@ -4154,54 +4444,57 @@ var file_app_data_v1_data_proto_goTypes = []any{ (*TabularDataBySQLResponse)(nil), // 11: viam.app.data.v1.TabularDataBySQLResponse (*TabularDataByMQLRequest)(nil), // 12: viam.app.data.v1.TabularDataByMQLRequest (*TabularDataByMQLResponse)(nil), // 13: viam.app.data.v1.TabularDataByMQLResponse - (*GetLatestTabularDataRequest)(nil), // 14: viam.app.data.v1.GetLatestTabularDataRequest - (*GetLatestTabularDataResponse)(nil), // 15: viam.app.data.v1.GetLatestTabularDataResponse - (*BinaryData)(nil), // 16: viam.app.data.v1.BinaryData - (*BinaryDataByFilterRequest)(nil), // 17: viam.app.data.v1.BinaryDataByFilterRequest - (*BinaryDataByFilterResponse)(nil), // 18: viam.app.data.v1.BinaryDataByFilterResponse - (*BinaryID)(nil), // 19: viam.app.data.v1.BinaryID - (*BinaryDataByIDsRequest)(nil), // 20: viam.app.data.v1.BinaryDataByIDsRequest - (*BinaryDataByIDsResponse)(nil), // 21: viam.app.data.v1.BinaryDataByIDsResponse - (*BoundingBox)(nil), // 22: viam.app.data.v1.BoundingBox - (*Classification)(nil), // 23: viam.app.data.v1.Classification - (*Annotations)(nil), // 24: viam.app.data.v1.Annotations - (*BinaryMetadata)(nil), // 25: viam.app.data.v1.BinaryMetadata - (*DeleteTabularDataRequest)(nil), // 26: viam.app.data.v1.DeleteTabularDataRequest - (*DeleteTabularDataResponse)(nil), // 27: viam.app.data.v1.DeleteTabularDataResponse - (*DeleteBinaryDataByFilterRequest)(nil), // 28: viam.app.data.v1.DeleteBinaryDataByFilterRequest - (*DeleteBinaryDataByFilterResponse)(nil), // 29: viam.app.data.v1.DeleteBinaryDataByFilterResponse - (*DeleteBinaryDataByIDsRequest)(nil), // 30: viam.app.data.v1.DeleteBinaryDataByIDsRequest - (*DeleteBinaryDataByIDsResponse)(nil), // 31: viam.app.data.v1.DeleteBinaryDataByIDsResponse - (*AddTagsToBinaryDataByIDsRequest)(nil), // 32: viam.app.data.v1.AddTagsToBinaryDataByIDsRequest - (*AddTagsToBinaryDataByIDsResponse)(nil), // 33: viam.app.data.v1.AddTagsToBinaryDataByIDsResponse - (*AddTagsToBinaryDataByFilterRequest)(nil), // 34: viam.app.data.v1.AddTagsToBinaryDataByFilterRequest - (*AddTagsToBinaryDataByFilterResponse)(nil), // 35: viam.app.data.v1.AddTagsToBinaryDataByFilterResponse - (*RemoveTagsFromBinaryDataByIDsRequest)(nil), // 36: viam.app.data.v1.RemoveTagsFromBinaryDataByIDsRequest - (*RemoveTagsFromBinaryDataByIDsResponse)(nil), // 37: viam.app.data.v1.RemoveTagsFromBinaryDataByIDsResponse - (*RemoveTagsFromBinaryDataByFilterRequest)(nil), // 38: viam.app.data.v1.RemoveTagsFromBinaryDataByFilterRequest - (*RemoveTagsFromBinaryDataByFilterResponse)(nil), // 39: viam.app.data.v1.RemoveTagsFromBinaryDataByFilterResponse - (*TagsByFilterRequest)(nil), // 40: viam.app.data.v1.TagsByFilterRequest - (*TagsByFilterResponse)(nil), // 41: viam.app.data.v1.TagsByFilterResponse - (*AddBoundingBoxToImageByIDRequest)(nil), // 42: viam.app.data.v1.AddBoundingBoxToImageByIDRequest - (*AddBoundingBoxToImageByIDResponse)(nil), // 43: viam.app.data.v1.AddBoundingBoxToImageByIDResponse - (*RemoveBoundingBoxFromImageByIDRequest)(nil), // 44: viam.app.data.v1.RemoveBoundingBoxFromImageByIDRequest - (*RemoveBoundingBoxFromImageByIDResponse)(nil), // 45: viam.app.data.v1.RemoveBoundingBoxFromImageByIDResponse - (*UpdateBoundingBoxRequest)(nil), // 46: viam.app.data.v1.UpdateBoundingBoxRequest - (*UpdateBoundingBoxResponse)(nil), // 47: viam.app.data.v1.UpdateBoundingBoxResponse - (*BoundingBoxLabelsByFilterRequest)(nil), // 48: viam.app.data.v1.BoundingBoxLabelsByFilterRequest - (*BoundingBoxLabelsByFilterResponse)(nil), // 49: viam.app.data.v1.BoundingBoxLabelsByFilterResponse - (*ConfigureDatabaseUserRequest)(nil), // 50: viam.app.data.v1.ConfigureDatabaseUserRequest - (*ConfigureDatabaseUserResponse)(nil), // 51: viam.app.data.v1.ConfigureDatabaseUserResponse - (*GetDatabaseConnectionRequest)(nil), // 52: viam.app.data.v1.GetDatabaseConnectionRequest - (*GetDatabaseConnectionResponse)(nil), // 53: viam.app.data.v1.GetDatabaseConnectionResponse - (*AddBinaryDataToDatasetByIDsRequest)(nil), // 54: viam.app.data.v1.AddBinaryDataToDatasetByIDsRequest - (*AddBinaryDataToDatasetByIDsResponse)(nil), // 55: viam.app.data.v1.AddBinaryDataToDatasetByIDsResponse - (*RemoveBinaryDataFromDatasetByIDsRequest)(nil), // 56: viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsRequest - (*RemoveBinaryDataFromDatasetByIDsResponse)(nil), // 57: viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsResponse - nil, // 58: viam.app.data.v1.CaptureMetadata.MethodParametersEntry - (*timestamppb.Timestamp)(nil), // 59: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 60: google.protobuf.Struct - (*anypb.Any)(nil), // 61: google.protobuf.Any + (*ExportTabularDataRequest)(nil), // 14: viam.app.data.v1.ExportTabularDataRequest + (*ExportTabularDataResponse)(nil), // 15: viam.app.data.v1.ExportTabularDataResponse + (*GetLatestTabularDataRequest)(nil), // 16: viam.app.data.v1.GetLatestTabularDataRequest + (*GetLatestTabularDataResponse)(nil), // 17: viam.app.data.v1.GetLatestTabularDataResponse + (*BinaryData)(nil), // 18: viam.app.data.v1.BinaryData + (*BinaryDataByFilterRequest)(nil), // 19: viam.app.data.v1.BinaryDataByFilterRequest + (*BinaryDataByFilterResponse)(nil), // 20: viam.app.data.v1.BinaryDataByFilterResponse + (*BinaryID)(nil), // 21: viam.app.data.v1.BinaryID + (*BinaryDataByIDsRequest)(nil), // 22: viam.app.data.v1.BinaryDataByIDsRequest + (*BinaryDataByIDsResponse)(nil), // 23: viam.app.data.v1.BinaryDataByIDsResponse + (*BoundingBox)(nil), // 24: viam.app.data.v1.BoundingBox + (*Classification)(nil), // 25: viam.app.data.v1.Classification + (*Annotations)(nil), // 26: viam.app.data.v1.Annotations + (*BinaryMetadata)(nil), // 27: viam.app.data.v1.BinaryMetadata + (*DeleteTabularDataRequest)(nil), // 28: viam.app.data.v1.DeleteTabularDataRequest + (*DeleteTabularDataResponse)(nil), // 29: viam.app.data.v1.DeleteTabularDataResponse + (*DeleteBinaryDataByFilterRequest)(nil), // 30: viam.app.data.v1.DeleteBinaryDataByFilterRequest + (*DeleteBinaryDataByFilterResponse)(nil), // 31: viam.app.data.v1.DeleteBinaryDataByFilterResponse + (*DeleteBinaryDataByIDsRequest)(nil), // 32: viam.app.data.v1.DeleteBinaryDataByIDsRequest + (*DeleteBinaryDataByIDsResponse)(nil), // 33: viam.app.data.v1.DeleteBinaryDataByIDsResponse + (*AddTagsToBinaryDataByIDsRequest)(nil), // 34: viam.app.data.v1.AddTagsToBinaryDataByIDsRequest + (*AddTagsToBinaryDataByIDsResponse)(nil), // 35: viam.app.data.v1.AddTagsToBinaryDataByIDsResponse + (*AddTagsToBinaryDataByFilterRequest)(nil), // 36: viam.app.data.v1.AddTagsToBinaryDataByFilterRequest + (*AddTagsToBinaryDataByFilterResponse)(nil), // 37: viam.app.data.v1.AddTagsToBinaryDataByFilterResponse + (*RemoveTagsFromBinaryDataByIDsRequest)(nil), // 38: viam.app.data.v1.RemoveTagsFromBinaryDataByIDsRequest + (*RemoveTagsFromBinaryDataByIDsResponse)(nil), // 39: viam.app.data.v1.RemoveTagsFromBinaryDataByIDsResponse + (*RemoveTagsFromBinaryDataByFilterRequest)(nil), // 40: viam.app.data.v1.RemoveTagsFromBinaryDataByFilterRequest + (*RemoveTagsFromBinaryDataByFilterResponse)(nil), // 41: viam.app.data.v1.RemoveTagsFromBinaryDataByFilterResponse + (*TagsByFilterRequest)(nil), // 42: viam.app.data.v1.TagsByFilterRequest + (*TagsByFilterResponse)(nil), // 43: viam.app.data.v1.TagsByFilterResponse + (*AddBoundingBoxToImageByIDRequest)(nil), // 44: viam.app.data.v1.AddBoundingBoxToImageByIDRequest + (*AddBoundingBoxToImageByIDResponse)(nil), // 45: viam.app.data.v1.AddBoundingBoxToImageByIDResponse + (*RemoveBoundingBoxFromImageByIDRequest)(nil), // 46: viam.app.data.v1.RemoveBoundingBoxFromImageByIDRequest + (*RemoveBoundingBoxFromImageByIDResponse)(nil), // 47: viam.app.data.v1.RemoveBoundingBoxFromImageByIDResponse + (*UpdateBoundingBoxRequest)(nil), // 48: viam.app.data.v1.UpdateBoundingBoxRequest + (*UpdateBoundingBoxResponse)(nil), // 49: viam.app.data.v1.UpdateBoundingBoxResponse + (*BoundingBoxLabelsByFilterRequest)(nil), // 50: viam.app.data.v1.BoundingBoxLabelsByFilterRequest + (*BoundingBoxLabelsByFilterResponse)(nil), // 51: viam.app.data.v1.BoundingBoxLabelsByFilterResponse + (*ConfigureDatabaseUserRequest)(nil), // 52: viam.app.data.v1.ConfigureDatabaseUserRequest + (*ConfigureDatabaseUserResponse)(nil), // 53: viam.app.data.v1.ConfigureDatabaseUserResponse + (*GetDatabaseConnectionRequest)(nil), // 54: viam.app.data.v1.GetDatabaseConnectionRequest + (*GetDatabaseConnectionResponse)(nil), // 55: viam.app.data.v1.GetDatabaseConnectionResponse + (*AddBinaryDataToDatasetByIDsRequest)(nil), // 56: viam.app.data.v1.AddBinaryDataToDatasetByIDsRequest + (*AddBinaryDataToDatasetByIDsResponse)(nil), // 57: viam.app.data.v1.AddBinaryDataToDatasetByIDsResponse + (*RemoveBinaryDataFromDatasetByIDsRequest)(nil), // 58: viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsRequest + (*RemoveBinaryDataFromDatasetByIDsResponse)(nil), // 59: viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsResponse + nil, // 60: viam.app.data.v1.CaptureMetadata.MethodParametersEntry + nil, // 61: viam.app.data.v1.ExportTabularDataResponse.MethodParametersEntry + (*timestamppb.Timestamp)(nil), // 62: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 63: google.protobuf.Struct + (*anypb.Any)(nil), // 64: google.protobuf.Any } var file_app_data_v1_data_proto_depIdxs = []int32{ 3, // 0: viam.app.data.v1.DataRequest.filter:type_name -> viam.app.data.v1.Filter @@ -4209,92 +4502,99 @@ var file_app_data_v1_data_proto_depIdxs = []int32{ 6, // 2: viam.app.data.v1.Filter.interval:type_name -> viam.app.data.v1.CaptureInterval 4, // 3: viam.app.data.v1.Filter.tags_filter:type_name -> viam.app.data.v1.TagsFilter 1, // 4: viam.app.data.v1.TagsFilter.type:type_name -> viam.app.data.v1.TagsFilterType - 58, // 5: viam.app.data.v1.CaptureMetadata.method_parameters:type_name -> viam.app.data.v1.CaptureMetadata.MethodParametersEntry - 59, // 6: viam.app.data.v1.CaptureInterval.start:type_name -> google.protobuf.Timestamp - 59, // 7: viam.app.data.v1.CaptureInterval.end:type_name -> google.protobuf.Timestamp + 60, // 5: viam.app.data.v1.CaptureMetadata.method_parameters:type_name -> viam.app.data.v1.CaptureMetadata.MethodParametersEntry + 62, // 6: viam.app.data.v1.CaptureInterval.start:type_name -> google.protobuf.Timestamp + 62, // 7: viam.app.data.v1.CaptureInterval.end:type_name -> google.protobuf.Timestamp 2, // 8: viam.app.data.v1.TabularDataByFilterRequest.data_request:type_name -> viam.app.data.v1.DataRequest 5, // 9: viam.app.data.v1.TabularDataByFilterResponse.metadata:type_name -> viam.app.data.v1.CaptureMetadata 9, // 10: viam.app.data.v1.TabularDataByFilterResponse.data:type_name -> viam.app.data.v1.TabularData - 60, // 11: viam.app.data.v1.TabularData.data:type_name -> google.protobuf.Struct - 59, // 12: viam.app.data.v1.TabularData.time_requested:type_name -> google.protobuf.Timestamp - 59, // 13: viam.app.data.v1.TabularData.time_received:type_name -> google.protobuf.Timestamp - 59, // 14: viam.app.data.v1.GetLatestTabularDataResponse.time_captured:type_name -> google.protobuf.Timestamp - 59, // 15: viam.app.data.v1.GetLatestTabularDataResponse.time_synced:type_name -> google.protobuf.Timestamp - 60, // 16: viam.app.data.v1.GetLatestTabularDataResponse.payload:type_name -> google.protobuf.Struct - 25, // 17: viam.app.data.v1.BinaryData.metadata:type_name -> viam.app.data.v1.BinaryMetadata - 2, // 18: viam.app.data.v1.BinaryDataByFilterRequest.data_request:type_name -> viam.app.data.v1.DataRequest - 16, // 19: viam.app.data.v1.BinaryDataByFilterResponse.data:type_name -> viam.app.data.v1.BinaryData - 19, // 20: viam.app.data.v1.BinaryDataByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID - 16, // 21: viam.app.data.v1.BinaryDataByIDsResponse.data:type_name -> viam.app.data.v1.BinaryData - 22, // 22: viam.app.data.v1.Annotations.bboxes:type_name -> viam.app.data.v1.BoundingBox - 23, // 23: viam.app.data.v1.Annotations.classifications:type_name -> viam.app.data.v1.Classification - 5, // 24: viam.app.data.v1.BinaryMetadata.capture_metadata:type_name -> viam.app.data.v1.CaptureMetadata - 59, // 25: viam.app.data.v1.BinaryMetadata.time_requested:type_name -> google.protobuf.Timestamp - 59, // 26: viam.app.data.v1.BinaryMetadata.time_received:type_name -> google.protobuf.Timestamp - 24, // 27: viam.app.data.v1.BinaryMetadata.annotations:type_name -> viam.app.data.v1.Annotations - 3, // 28: viam.app.data.v1.DeleteBinaryDataByFilterRequest.filter:type_name -> viam.app.data.v1.Filter - 19, // 29: viam.app.data.v1.DeleteBinaryDataByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID - 19, // 30: viam.app.data.v1.AddTagsToBinaryDataByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID - 3, // 31: viam.app.data.v1.AddTagsToBinaryDataByFilterRequest.filter:type_name -> viam.app.data.v1.Filter - 19, // 32: viam.app.data.v1.RemoveTagsFromBinaryDataByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID - 3, // 33: viam.app.data.v1.RemoveTagsFromBinaryDataByFilterRequest.filter:type_name -> viam.app.data.v1.Filter - 3, // 34: viam.app.data.v1.TagsByFilterRequest.filter:type_name -> viam.app.data.v1.Filter - 19, // 35: viam.app.data.v1.AddBoundingBoxToImageByIDRequest.binary_id:type_name -> viam.app.data.v1.BinaryID - 19, // 36: viam.app.data.v1.RemoveBoundingBoxFromImageByIDRequest.binary_id:type_name -> viam.app.data.v1.BinaryID - 19, // 37: viam.app.data.v1.UpdateBoundingBoxRequest.binary_id:type_name -> viam.app.data.v1.BinaryID - 3, // 38: viam.app.data.v1.BoundingBoxLabelsByFilterRequest.filter:type_name -> viam.app.data.v1.Filter - 19, // 39: viam.app.data.v1.AddBinaryDataToDatasetByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID - 19, // 40: viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID - 61, // 41: viam.app.data.v1.CaptureMetadata.MethodParametersEntry.value:type_name -> google.protobuf.Any - 7, // 42: viam.app.data.v1.DataService.TabularDataByFilter:input_type -> viam.app.data.v1.TabularDataByFilterRequest - 10, // 43: viam.app.data.v1.DataService.TabularDataBySQL:input_type -> viam.app.data.v1.TabularDataBySQLRequest - 12, // 44: viam.app.data.v1.DataService.TabularDataByMQL:input_type -> viam.app.data.v1.TabularDataByMQLRequest - 14, // 45: viam.app.data.v1.DataService.GetLatestTabularData:input_type -> viam.app.data.v1.GetLatestTabularDataRequest - 17, // 46: viam.app.data.v1.DataService.BinaryDataByFilter:input_type -> viam.app.data.v1.BinaryDataByFilterRequest - 20, // 47: viam.app.data.v1.DataService.BinaryDataByIDs:input_type -> viam.app.data.v1.BinaryDataByIDsRequest - 26, // 48: viam.app.data.v1.DataService.DeleteTabularData:input_type -> viam.app.data.v1.DeleteTabularDataRequest - 28, // 49: viam.app.data.v1.DataService.DeleteBinaryDataByFilter:input_type -> viam.app.data.v1.DeleteBinaryDataByFilterRequest - 30, // 50: viam.app.data.v1.DataService.DeleteBinaryDataByIDs:input_type -> viam.app.data.v1.DeleteBinaryDataByIDsRequest - 32, // 51: viam.app.data.v1.DataService.AddTagsToBinaryDataByIDs:input_type -> viam.app.data.v1.AddTagsToBinaryDataByIDsRequest - 34, // 52: viam.app.data.v1.DataService.AddTagsToBinaryDataByFilter:input_type -> viam.app.data.v1.AddTagsToBinaryDataByFilterRequest - 36, // 53: viam.app.data.v1.DataService.RemoveTagsFromBinaryDataByIDs:input_type -> viam.app.data.v1.RemoveTagsFromBinaryDataByIDsRequest - 38, // 54: viam.app.data.v1.DataService.RemoveTagsFromBinaryDataByFilter:input_type -> viam.app.data.v1.RemoveTagsFromBinaryDataByFilterRequest - 40, // 55: viam.app.data.v1.DataService.TagsByFilter:input_type -> viam.app.data.v1.TagsByFilterRequest - 42, // 56: viam.app.data.v1.DataService.AddBoundingBoxToImageByID:input_type -> viam.app.data.v1.AddBoundingBoxToImageByIDRequest - 44, // 57: viam.app.data.v1.DataService.RemoveBoundingBoxFromImageByID:input_type -> viam.app.data.v1.RemoveBoundingBoxFromImageByIDRequest - 48, // 58: viam.app.data.v1.DataService.BoundingBoxLabelsByFilter:input_type -> viam.app.data.v1.BoundingBoxLabelsByFilterRequest - 46, // 59: viam.app.data.v1.DataService.UpdateBoundingBox:input_type -> viam.app.data.v1.UpdateBoundingBoxRequest - 52, // 60: viam.app.data.v1.DataService.GetDatabaseConnection:input_type -> viam.app.data.v1.GetDatabaseConnectionRequest - 50, // 61: viam.app.data.v1.DataService.ConfigureDatabaseUser:input_type -> viam.app.data.v1.ConfigureDatabaseUserRequest - 54, // 62: viam.app.data.v1.DataService.AddBinaryDataToDatasetByIDs:input_type -> viam.app.data.v1.AddBinaryDataToDatasetByIDsRequest - 56, // 63: viam.app.data.v1.DataService.RemoveBinaryDataFromDatasetByIDs:input_type -> viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsRequest - 8, // 64: viam.app.data.v1.DataService.TabularDataByFilter:output_type -> viam.app.data.v1.TabularDataByFilterResponse - 11, // 65: viam.app.data.v1.DataService.TabularDataBySQL:output_type -> viam.app.data.v1.TabularDataBySQLResponse - 13, // 66: viam.app.data.v1.DataService.TabularDataByMQL:output_type -> viam.app.data.v1.TabularDataByMQLResponse - 15, // 67: viam.app.data.v1.DataService.GetLatestTabularData:output_type -> viam.app.data.v1.GetLatestTabularDataResponse - 18, // 68: viam.app.data.v1.DataService.BinaryDataByFilter:output_type -> viam.app.data.v1.BinaryDataByFilterResponse - 21, // 69: viam.app.data.v1.DataService.BinaryDataByIDs:output_type -> viam.app.data.v1.BinaryDataByIDsResponse - 27, // 70: viam.app.data.v1.DataService.DeleteTabularData:output_type -> viam.app.data.v1.DeleteTabularDataResponse - 29, // 71: viam.app.data.v1.DataService.DeleteBinaryDataByFilter:output_type -> viam.app.data.v1.DeleteBinaryDataByFilterResponse - 31, // 72: viam.app.data.v1.DataService.DeleteBinaryDataByIDs:output_type -> viam.app.data.v1.DeleteBinaryDataByIDsResponse - 33, // 73: viam.app.data.v1.DataService.AddTagsToBinaryDataByIDs:output_type -> viam.app.data.v1.AddTagsToBinaryDataByIDsResponse - 35, // 74: viam.app.data.v1.DataService.AddTagsToBinaryDataByFilter:output_type -> viam.app.data.v1.AddTagsToBinaryDataByFilterResponse - 37, // 75: viam.app.data.v1.DataService.RemoveTagsFromBinaryDataByIDs:output_type -> viam.app.data.v1.RemoveTagsFromBinaryDataByIDsResponse - 39, // 76: viam.app.data.v1.DataService.RemoveTagsFromBinaryDataByFilter:output_type -> viam.app.data.v1.RemoveTagsFromBinaryDataByFilterResponse - 41, // 77: viam.app.data.v1.DataService.TagsByFilter:output_type -> viam.app.data.v1.TagsByFilterResponse - 43, // 78: viam.app.data.v1.DataService.AddBoundingBoxToImageByID:output_type -> viam.app.data.v1.AddBoundingBoxToImageByIDResponse - 45, // 79: viam.app.data.v1.DataService.RemoveBoundingBoxFromImageByID:output_type -> viam.app.data.v1.RemoveBoundingBoxFromImageByIDResponse - 49, // 80: viam.app.data.v1.DataService.BoundingBoxLabelsByFilter:output_type -> viam.app.data.v1.BoundingBoxLabelsByFilterResponse - 47, // 81: viam.app.data.v1.DataService.UpdateBoundingBox:output_type -> viam.app.data.v1.UpdateBoundingBoxResponse - 53, // 82: viam.app.data.v1.DataService.GetDatabaseConnection:output_type -> viam.app.data.v1.GetDatabaseConnectionResponse - 51, // 83: viam.app.data.v1.DataService.ConfigureDatabaseUser:output_type -> viam.app.data.v1.ConfigureDatabaseUserResponse - 55, // 84: viam.app.data.v1.DataService.AddBinaryDataToDatasetByIDs:output_type -> viam.app.data.v1.AddBinaryDataToDatasetByIDsResponse - 57, // 85: viam.app.data.v1.DataService.RemoveBinaryDataFromDatasetByIDs:output_type -> viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsResponse - 64, // [64:86] is the sub-list for method output_type - 42, // [42:64] is the sub-list for method input_type - 42, // [42:42] is the sub-list for extension type_name - 42, // [42:42] is the sub-list for extension extendee - 0, // [0:42] is the sub-list for field type_name + 63, // 11: viam.app.data.v1.TabularData.data:type_name -> google.protobuf.Struct + 62, // 12: viam.app.data.v1.TabularData.time_requested:type_name -> google.protobuf.Timestamp + 62, // 13: viam.app.data.v1.TabularData.time_received:type_name -> google.protobuf.Timestamp + 6, // 14: viam.app.data.v1.ExportTabularDataRequest.interval:type_name -> viam.app.data.v1.CaptureInterval + 62, // 15: viam.app.data.v1.ExportTabularDataResponse.time_captured:type_name -> google.protobuf.Timestamp + 61, // 16: viam.app.data.v1.ExportTabularDataResponse.method_parameters:type_name -> viam.app.data.v1.ExportTabularDataResponse.MethodParametersEntry + 63, // 17: viam.app.data.v1.ExportTabularDataResponse.payload:type_name -> google.protobuf.Struct + 62, // 18: viam.app.data.v1.GetLatestTabularDataResponse.time_captured:type_name -> google.protobuf.Timestamp + 62, // 19: viam.app.data.v1.GetLatestTabularDataResponse.time_synced:type_name -> google.protobuf.Timestamp + 63, // 20: viam.app.data.v1.GetLatestTabularDataResponse.payload:type_name -> google.protobuf.Struct + 27, // 21: viam.app.data.v1.BinaryData.metadata:type_name -> viam.app.data.v1.BinaryMetadata + 2, // 22: viam.app.data.v1.BinaryDataByFilterRequest.data_request:type_name -> viam.app.data.v1.DataRequest + 18, // 23: viam.app.data.v1.BinaryDataByFilterResponse.data:type_name -> viam.app.data.v1.BinaryData + 21, // 24: viam.app.data.v1.BinaryDataByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID + 18, // 25: viam.app.data.v1.BinaryDataByIDsResponse.data:type_name -> viam.app.data.v1.BinaryData + 24, // 26: viam.app.data.v1.Annotations.bboxes:type_name -> viam.app.data.v1.BoundingBox + 25, // 27: viam.app.data.v1.Annotations.classifications:type_name -> viam.app.data.v1.Classification + 5, // 28: viam.app.data.v1.BinaryMetadata.capture_metadata:type_name -> viam.app.data.v1.CaptureMetadata + 62, // 29: viam.app.data.v1.BinaryMetadata.time_requested:type_name -> google.protobuf.Timestamp + 62, // 30: viam.app.data.v1.BinaryMetadata.time_received:type_name -> google.protobuf.Timestamp + 26, // 31: viam.app.data.v1.BinaryMetadata.annotations:type_name -> viam.app.data.v1.Annotations + 3, // 32: viam.app.data.v1.DeleteBinaryDataByFilterRequest.filter:type_name -> viam.app.data.v1.Filter + 21, // 33: viam.app.data.v1.DeleteBinaryDataByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID + 21, // 34: viam.app.data.v1.AddTagsToBinaryDataByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID + 3, // 35: viam.app.data.v1.AddTagsToBinaryDataByFilterRequest.filter:type_name -> viam.app.data.v1.Filter + 21, // 36: viam.app.data.v1.RemoveTagsFromBinaryDataByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID + 3, // 37: viam.app.data.v1.RemoveTagsFromBinaryDataByFilterRequest.filter:type_name -> viam.app.data.v1.Filter + 3, // 38: viam.app.data.v1.TagsByFilterRequest.filter:type_name -> viam.app.data.v1.Filter + 21, // 39: viam.app.data.v1.AddBoundingBoxToImageByIDRequest.binary_id:type_name -> viam.app.data.v1.BinaryID + 21, // 40: viam.app.data.v1.RemoveBoundingBoxFromImageByIDRequest.binary_id:type_name -> viam.app.data.v1.BinaryID + 21, // 41: viam.app.data.v1.UpdateBoundingBoxRequest.binary_id:type_name -> viam.app.data.v1.BinaryID + 3, // 42: viam.app.data.v1.BoundingBoxLabelsByFilterRequest.filter:type_name -> viam.app.data.v1.Filter + 21, // 43: viam.app.data.v1.AddBinaryDataToDatasetByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID + 21, // 44: viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsRequest.binary_ids:type_name -> viam.app.data.v1.BinaryID + 64, // 45: viam.app.data.v1.CaptureMetadata.MethodParametersEntry.value:type_name -> google.protobuf.Any + 64, // 46: viam.app.data.v1.ExportTabularDataResponse.MethodParametersEntry.value:type_name -> google.protobuf.Any + 7, // 47: viam.app.data.v1.DataService.TabularDataByFilter:input_type -> viam.app.data.v1.TabularDataByFilterRequest + 10, // 48: viam.app.data.v1.DataService.TabularDataBySQL:input_type -> viam.app.data.v1.TabularDataBySQLRequest + 12, // 49: viam.app.data.v1.DataService.TabularDataByMQL:input_type -> viam.app.data.v1.TabularDataByMQLRequest + 14, // 50: viam.app.data.v1.DataService.ExportTabularData:input_type -> viam.app.data.v1.ExportTabularDataRequest + 16, // 51: viam.app.data.v1.DataService.GetLatestTabularData:input_type -> viam.app.data.v1.GetLatestTabularDataRequest + 19, // 52: viam.app.data.v1.DataService.BinaryDataByFilter:input_type -> viam.app.data.v1.BinaryDataByFilterRequest + 22, // 53: viam.app.data.v1.DataService.BinaryDataByIDs:input_type -> viam.app.data.v1.BinaryDataByIDsRequest + 28, // 54: viam.app.data.v1.DataService.DeleteTabularData:input_type -> viam.app.data.v1.DeleteTabularDataRequest + 30, // 55: viam.app.data.v1.DataService.DeleteBinaryDataByFilter:input_type -> viam.app.data.v1.DeleteBinaryDataByFilterRequest + 32, // 56: viam.app.data.v1.DataService.DeleteBinaryDataByIDs:input_type -> viam.app.data.v1.DeleteBinaryDataByIDsRequest + 34, // 57: viam.app.data.v1.DataService.AddTagsToBinaryDataByIDs:input_type -> viam.app.data.v1.AddTagsToBinaryDataByIDsRequest + 36, // 58: viam.app.data.v1.DataService.AddTagsToBinaryDataByFilter:input_type -> viam.app.data.v1.AddTagsToBinaryDataByFilterRequest + 38, // 59: viam.app.data.v1.DataService.RemoveTagsFromBinaryDataByIDs:input_type -> viam.app.data.v1.RemoveTagsFromBinaryDataByIDsRequest + 40, // 60: viam.app.data.v1.DataService.RemoveTagsFromBinaryDataByFilter:input_type -> viam.app.data.v1.RemoveTagsFromBinaryDataByFilterRequest + 42, // 61: viam.app.data.v1.DataService.TagsByFilter:input_type -> viam.app.data.v1.TagsByFilterRequest + 44, // 62: viam.app.data.v1.DataService.AddBoundingBoxToImageByID:input_type -> viam.app.data.v1.AddBoundingBoxToImageByIDRequest + 46, // 63: viam.app.data.v1.DataService.RemoveBoundingBoxFromImageByID:input_type -> viam.app.data.v1.RemoveBoundingBoxFromImageByIDRequest + 50, // 64: viam.app.data.v1.DataService.BoundingBoxLabelsByFilter:input_type -> viam.app.data.v1.BoundingBoxLabelsByFilterRequest + 48, // 65: viam.app.data.v1.DataService.UpdateBoundingBox:input_type -> viam.app.data.v1.UpdateBoundingBoxRequest + 54, // 66: viam.app.data.v1.DataService.GetDatabaseConnection:input_type -> viam.app.data.v1.GetDatabaseConnectionRequest + 52, // 67: viam.app.data.v1.DataService.ConfigureDatabaseUser:input_type -> viam.app.data.v1.ConfigureDatabaseUserRequest + 56, // 68: viam.app.data.v1.DataService.AddBinaryDataToDatasetByIDs:input_type -> viam.app.data.v1.AddBinaryDataToDatasetByIDsRequest + 58, // 69: viam.app.data.v1.DataService.RemoveBinaryDataFromDatasetByIDs:input_type -> viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsRequest + 8, // 70: viam.app.data.v1.DataService.TabularDataByFilter:output_type -> viam.app.data.v1.TabularDataByFilterResponse + 11, // 71: viam.app.data.v1.DataService.TabularDataBySQL:output_type -> viam.app.data.v1.TabularDataBySQLResponse + 13, // 72: viam.app.data.v1.DataService.TabularDataByMQL:output_type -> viam.app.data.v1.TabularDataByMQLResponse + 15, // 73: viam.app.data.v1.DataService.ExportTabularData:output_type -> viam.app.data.v1.ExportTabularDataResponse + 17, // 74: viam.app.data.v1.DataService.GetLatestTabularData:output_type -> viam.app.data.v1.GetLatestTabularDataResponse + 20, // 75: viam.app.data.v1.DataService.BinaryDataByFilter:output_type -> viam.app.data.v1.BinaryDataByFilterResponse + 23, // 76: viam.app.data.v1.DataService.BinaryDataByIDs:output_type -> viam.app.data.v1.BinaryDataByIDsResponse + 29, // 77: viam.app.data.v1.DataService.DeleteTabularData:output_type -> viam.app.data.v1.DeleteTabularDataResponse + 31, // 78: viam.app.data.v1.DataService.DeleteBinaryDataByFilter:output_type -> viam.app.data.v1.DeleteBinaryDataByFilterResponse + 33, // 79: viam.app.data.v1.DataService.DeleteBinaryDataByIDs:output_type -> viam.app.data.v1.DeleteBinaryDataByIDsResponse + 35, // 80: viam.app.data.v1.DataService.AddTagsToBinaryDataByIDs:output_type -> viam.app.data.v1.AddTagsToBinaryDataByIDsResponse + 37, // 81: viam.app.data.v1.DataService.AddTagsToBinaryDataByFilter:output_type -> viam.app.data.v1.AddTagsToBinaryDataByFilterResponse + 39, // 82: viam.app.data.v1.DataService.RemoveTagsFromBinaryDataByIDs:output_type -> viam.app.data.v1.RemoveTagsFromBinaryDataByIDsResponse + 41, // 83: viam.app.data.v1.DataService.RemoveTagsFromBinaryDataByFilter:output_type -> viam.app.data.v1.RemoveTagsFromBinaryDataByFilterResponse + 43, // 84: viam.app.data.v1.DataService.TagsByFilter:output_type -> viam.app.data.v1.TagsByFilterResponse + 45, // 85: viam.app.data.v1.DataService.AddBoundingBoxToImageByID:output_type -> viam.app.data.v1.AddBoundingBoxToImageByIDResponse + 47, // 86: viam.app.data.v1.DataService.RemoveBoundingBoxFromImageByID:output_type -> viam.app.data.v1.RemoveBoundingBoxFromImageByIDResponse + 51, // 87: viam.app.data.v1.DataService.BoundingBoxLabelsByFilter:output_type -> viam.app.data.v1.BoundingBoxLabelsByFilterResponse + 49, // 88: viam.app.data.v1.DataService.UpdateBoundingBox:output_type -> viam.app.data.v1.UpdateBoundingBoxResponse + 55, // 89: viam.app.data.v1.DataService.GetDatabaseConnection:output_type -> viam.app.data.v1.GetDatabaseConnectionResponse + 53, // 90: viam.app.data.v1.DataService.ConfigureDatabaseUser:output_type -> viam.app.data.v1.ConfigureDatabaseUserResponse + 57, // 91: viam.app.data.v1.DataService.AddBinaryDataToDatasetByIDs:output_type -> viam.app.data.v1.AddBinaryDataToDatasetByIDsResponse + 59, // 92: viam.app.data.v1.DataService.RemoveBinaryDataFromDatasetByIDs:output_type -> viam.app.data.v1.RemoveBinaryDataFromDatasetByIDsResponse + 70, // [70:93] is the sub-list for method output_type + 47, // [47:70] is the sub-list for method input_type + 47, // [47:47] is the sub-list for extension type_name + 47, // [47:47] is the sub-list for extension extendee + 0, // [0:47] is the sub-list for field type_name } func init() { file_app_data_v1_data_proto_init() } @@ -4302,16 +4602,16 @@ func file_app_data_v1_data_proto_init() { if File_app_data_v1_data_proto != nil { return } - file_app_data_v1_data_proto_msgTypes[20].OneofWrappers = []any{} - file_app_data_v1_data_proto_msgTypes[21].OneofWrappers = []any{} - file_app_data_v1_data_proto_msgTypes[44].OneofWrappers = []any{} + file_app_data_v1_data_proto_msgTypes[22].OneofWrappers = []any{} + file_app_data_v1_data_proto_msgTypes[23].OneofWrappers = []any{} + file_app_data_v1_data_proto_msgTypes[46].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_app_data_v1_data_proto_rawDesc, NumEnums: 2, - NumMessages: 57, + NumMessages: 60, NumExtensions: 0, NumServices: 1, }, diff --git a/app/data/v1/data.pb.gw.go b/app/data/v1/data.pb.gw.go index ace63834a..ff342a94a 100644 --- a/app/data/v1/data.pb.gw.go +++ b/app/data/v1/data.pb.gw.go @@ -109,6 +109,27 @@ func local_request_DataService_TabularDataByMQL_0(ctx context.Context, marshaler } +func request_DataService_ExportTabularData_0(ctx context.Context, marshaler runtime.Marshaler, client DataServiceClient, req *http.Request, pathParams map[string]string) (DataService_ExportTabularDataClient, runtime.ServerMetadata, error) { + var protoReq ExportTabularDataRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.ExportTabularData(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + func request_DataService_GetLatestTabularData_0(ctx context.Context, marshaler runtime.Marshaler, client DataServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetLatestTabularDataRequest var metadata runtime.ServerMetadata @@ -684,6 +705,13 @@ func RegisterDataServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux }) + mux.Handle("POST", pattern_DataService_ExportTabularData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + mux.Handle("POST", pattern_DataService_GetLatestTabularData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1266,6 +1294,28 @@ func RegisterDataServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux }) + mux.Handle("POST", pattern_DataService_ExportTabularData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/viam.app.data.v1.DataService/ExportTabularData", runtime.WithHTTPPathPattern("/viam.app.data.v1.DataService/ExportTabularData")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_DataService_ExportTabularData_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_DataService_ExportTabularData_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_DataService_GetLatestTabularData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1694,6 +1744,8 @@ var ( pattern_DataService_TabularDataByMQL_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.data.v1.DataService", "TabularDataByMQL"}, "")) + pattern_DataService_ExportTabularData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.data.v1.DataService", "ExportTabularData"}, "")) + pattern_DataService_GetLatestTabularData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.data.v1.DataService", "GetLatestTabularData"}, "")) pattern_DataService_BinaryDataByFilter_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.data.v1.DataService", "BinaryDataByFilter"}, "")) @@ -1740,6 +1792,8 @@ var ( forward_DataService_TabularDataByMQL_0 = runtime.ForwardResponseMessage + forward_DataService_ExportTabularData_0 = runtime.ForwardResponseStream + forward_DataService_GetLatestTabularData_0 = runtime.ForwardResponseMessage forward_DataService_BinaryDataByFilter_0 = runtime.ForwardResponseMessage diff --git a/app/data/v1/data_grpc.pb.go b/app/data/v1/data_grpc.pb.go index 1df45ddca..932e70de0 100644 --- a/app/data/v1/data_grpc.pb.go +++ b/app/data/v1/data_grpc.pb.go @@ -22,12 +22,15 @@ const _ = grpc.SupportPackageIsVersion7 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type DataServiceClient interface { + // Deprecated: Do not use. // TabularDataByFilter queries tabular data and metadata based on given filters. TabularDataByFilter(ctx context.Context, in *TabularDataByFilterRequest, opts ...grpc.CallOption) (*TabularDataByFilterResponse, error) // TabularDataBySQL queries tabular data with a SQL query. TabularDataBySQL(ctx context.Context, in *TabularDataBySQLRequest, opts ...grpc.CallOption) (*TabularDataBySQLResponse, error) // TabularDataByMQL queries tabular data with an MQL (MongoDB Query Language) query. TabularDataByMQL(ctx context.Context, in *TabularDataByMQLRequest, opts ...grpc.CallOption) (*TabularDataByMQLResponse, error) + // ExportTabularData queries tabular data from the specified data source. + ExportTabularData(ctx context.Context, in *ExportTabularDataRequest, opts ...grpc.CallOption) (DataService_ExportTabularDataClient, error) // GetLatestTabularData gets the most recent tabular data captured from the specified data source. GetLatestTabularData(ctx context.Context, in *GetLatestTabularDataRequest, opts ...grpc.CallOption) (*GetLatestTabularDataResponse, error) // BinaryDataByFilter queries binary data and metadata based on given filters. @@ -78,6 +81,7 @@ func NewDataServiceClient(cc grpc.ClientConnInterface) DataServiceClient { return &dataServiceClient{cc} } +// Deprecated: Do not use. func (c *dataServiceClient) TabularDataByFilter(ctx context.Context, in *TabularDataByFilterRequest, opts ...grpc.CallOption) (*TabularDataByFilterResponse, error) { out := new(TabularDataByFilterResponse) err := c.cc.Invoke(ctx, "/viam.app.data.v1.DataService/TabularDataByFilter", in, out, opts...) @@ -105,6 +109,38 @@ func (c *dataServiceClient) TabularDataByMQL(ctx context.Context, in *TabularDat return out, nil } +func (c *dataServiceClient) ExportTabularData(ctx context.Context, in *ExportTabularDataRequest, opts ...grpc.CallOption) (DataService_ExportTabularDataClient, error) { + stream, err := c.cc.NewStream(ctx, &DataService_ServiceDesc.Streams[0], "/viam.app.data.v1.DataService/ExportTabularData", opts...) + if err != nil { + return nil, err + } + x := &dataServiceExportTabularDataClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DataService_ExportTabularDataClient interface { + Recv() (*ExportTabularDataResponse, error) + grpc.ClientStream +} + +type dataServiceExportTabularDataClient struct { + grpc.ClientStream +} + +func (x *dataServiceExportTabularDataClient) Recv() (*ExportTabularDataResponse, error) { + m := new(ExportTabularDataResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *dataServiceClient) GetLatestTabularData(ctx context.Context, in *GetLatestTabularDataRequest, opts ...grpc.CallOption) (*GetLatestTabularDataResponse, error) { out := new(GetLatestTabularDataResponse) err := c.cc.Invoke(ctx, "/viam.app.data.v1.DataService/GetLatestTabularData", in, out, opts...) @@ -280,12 +316,15 @@ func (c *dataServiceClient) RemoveBinaryDataFromDatasetByIDs(ctx context.Context // All implementations must embed UnimplementedDataServiceServer // for forward compatibility type DataServiceServer interface { + // Deprecated: Do not use. // TabularDataByFilter queries tabular data and metadata based on given filters. TabularDataByFilter(context.Context, *TabularDataByFilterRequest) (*TabularDataByFilterResponse, error) // TabularDataBySQL queries tabular data with a SQL query. TabularDataBySQL(context.Context, *TabularDataBySQLRequest) (*TabularDataBySQLResponse, error) // TabularDataByMQL queries tabular data with an MQL (MongoDB Query Language) query. TabularDataByMQL(context.Context, *TabularDataByMQLRequest) (*TabularDataByMQLResponse, error) + // ExportTabularData queries tabular data from the specified data source. + ExportTabularData(*ExportTabularDataRequest, DataService_ExportTabularDataServer) error // GetLatestTabularData gets the most recent tabular data captured from the specified data source. GetLatestTabularData(context.Context, *GetLatestTabularDataRequest) (*GetLatestTabularDataResponse, error) // BinaryDataByFilter queries binary data and metadata based on given filters. @@ -342,6 +381,9 @@ func (UnimplementedDataServiceServer) TabularDataBySQL(context.Context, *Tabular func (UnimplementedDataServiceServer) TabularDataByMQL(context.Context, *TabularDataByMQLRequest) (*TabularDataByMQLResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TabularDataByMQL not implemented") } +func (UnimplementedDataServiceServer) ExportTabularData(*ExportTabularDataRequest, DataService_ExportTabularDataServer) error { + return status.Errorf(codes.Unimplemented, "method ExportTabularData not implemented") +} func (UnimplementedDataServiceServer) GetLatestTabularData(context.Context, *GetLatestTabularDataRequest) (*GetLatestTabularDataResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetLatestTabularData not implemented") } @@ -466,6 +508,27 @@ func _DataService_TabularDataByMQL_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _DataService_ExportTabularData_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ExportTabularDataRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(DataServiceServer).ExportTabularData(m, &dataServiceExportTabularDataServer{stream}) +} + +type DataService_ExportTabularDataServer interface { + Send(*ExportTabularDataResponse) error + grpc.ServerStream +} + +type dataServiceExportTabularDataServer struct { + grpc.ServerStream +} + +func (x *dataServiceExportTabularDataServer) Send(m *ExportTabularDataResponse) error { + return x.ServerStream.SendMsg(m) +} + func _DataService_GetLatestTabularData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetLatestTabularDataRequest) if err := dec(in); err != nil { @@ -904,6 +967,12 @@ var DataService_ServiceDesc = grpc.ServiceDesc{ Handler: _DataService_RemoveBinaryDataFromDatasetByIDs_Handler, }, }, - Streams: []grpc.StreamDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "ExportTabularData", + Handler: _DataService_ExportTabularData_Handler, + ServerStreams: true, + }, + }, Metadata: "app/data/v1/data.proto", } diff --git a/gen/js/app/data/v1/data_grpc_web_pb.js b/gen/js/app/data/v1/data_grpc_web_pb.js index 9e8d37f8b..b999c5fe8 100644 --- a/gen/js/app/data/v1/data_grpc_web_pb.js +++ b/gen/js/app/data/v1/data_grpc_web_pb.js @@ -266,6 +266,62 @@ proto.viam.app.data.v1.DataServicePromiseClient.prototype.tabularDataByMQL = }; +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.viam.app.data.v1.ExportTabularDataRequest, + * !proto.viam.app.data.v1.ExportTabularDataResponse>} + */ +const methodDescriptor_DataService_ExportTabularData = new grpc.web.MethodDescriptor( + '/viam.app.data.v1.DataService/ExportTabularData', + grpc.web.MethodType.SERVER_STREAMING, + proto.viam.app.data.v1.ExportTabularDataRequest, + proto.viam.app.data.v1.ExportTabularDataResponse, + /** + * @param {!proto.viam.app.data.v1.ExportTabularDataRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.viam.app.data.v1.ExportTabularDataResponse.deserializeBinary +); + + +/** + * @param {!proto.viam.app.data.v1.ExportTabularDataRequest} request The request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!grpc.web.ClientReadableStream} + * The XHR Node Readable Stream + */ +proto.viam.app.data.v1.DataServiceClient.prototype.exportTabularData = + function(request, metadata) { + return this.client_.serverStreaming(this.hostname_ + + '/viam.app.data.v1.DataService/ExportTabularData', + request, + metadata || {}, + methodDescriptor_DataService_ExportTabularData); +}; + + +/** + * @param {!proto.viam.app.data.v1.ExportTabularDataRequest} request The request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!grpc.web.ClientReadableStream} + * The XHR Node Readable Stream + */ +proto.viam.app.data.v1.DataServicePromiseClient.prototype.exportTabularData = + function(request, metadata) { + return this.client_.serverStreaming(this.hostname_ + + '/viam.app.data.v1.DataService/ExportTabularData', + request, + metadata || {}, + methodDescriptor_DataService_ExportTabularData); +}; + + /** * @const * @type {!grpc.web.MethodDescriptor< diff --git a/gen/js/app/data/v1/data_pb.d.ts b/gen/js/app/data/v1/data_pb.d.ts index 25290f893..ef35f6275 100644 --- a/gen/js/app/data/v1/data_pb.d.ts +++ b/gen/js/app/data/v1/data_pb.d.ts @@ -451,6 +451,117 @@ export namespace TabularDataByMQLResponse { } } +export class ExportTabularDataRequest extends jspb.Message { + getPartId(): string; + setPartId(value: string): void; + + getResourceName(): string; + setResourceName(value: string): void; + + getResourceSubtype(): string; + setResourceSubtype(value: string): void; + + getMethodName(): string; + setMethodName(value: string): void; + + hasInterval(): boolean; + clearInterval(): void; + getInterval(): CaptureInterval | undefined; + setInterval(value?: CaptureInterval): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ExportTabularDataRequest.AsObject; + static toObject(includeInstance: boolean, msg: ExportTabularDataRequest): ExportTabularDataRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ExportTabularDataRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ExportTabularDataRequest; + static deserializeBinaryFromReader(message: ExportTabularDataRequest, reader: jspb.BinaryReader): ExportTabularDataRequest; +} + +export namespace ExportTabularDataRequest { + export type AsObject = { + partId: string, + resourceName: string, + resourceSubtype: string, + methodName: string, + interval?: CaptureInterval.AsObject, + } +} + +export class ExportTabularDataResponse extends jspb.Message { + getPartId(): string; + setPartId(value: string): void; + + getComponentName(): string; + setComponentName(value: string): void; + + getComponentType(): string; + setComponentType(value: string): void; + + getMethodName(): string; + setMethodName(value: string): void; + + hasTimeCaptured(): boolean; + clearTimeCaptured(): void; + getTimeCaptured(): google_protobuf_timestamp_pb.Timestamp | undefined; + setTimeCaptured(value?: google_protobuf_timestamp_pb.Timestamp): void; + + getOrganizationId(): string; + setOrganizationId(value: string): void; + + getLocationId(): string; + setLocationId(value: string): void; + + getRobotName(): string; + setRobotName(value: string): void; + + getRobotId(): string; + setRobotId(value: string): void; + + getPartName(): string; + setPartName(value: string): void; + + getMethodParametersMap(): jspb.Map; + clearMethodParametersMap(): void; + clearTagsList(): void; + getTagsList(): Array; + setTagsList(value: Array): void; + addTags(value: string, index?: number): string; + + hasPayload(): boolean; + clearPayload(): void; + getPayload(): google_protobuf_struct_pb.Struct | undefined; + setPayload(value?: google_protobuf_struct_pb.Struct): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ExportTabularDataResponse.AsObject; + static toObject(includeInstance: boolean, msg: ExportTabularDataResponse): ExportTabularDataResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ExportTabularDataResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ExportTabularDataResponse; + static deserializeBinaryFromReader(message: ExportTabularDataResponse, reader: jspb.BinaryReader): ExportTabularDataResponse; +} + +export namespace ExportTabularDataResponse { + export type AsObject = { + partId: string, + componentName: string, + componentType: string, + methodName: string, + timeCaptured?: google_protobuf_timestamp_pb.Timestamp.AsObject, + organizationId: string, + locationId: string, + robotName: string, + robotId: string, + partName: string, + methodParametersMap: Array<[string, google_protobuf_any_pb.Any.AsObject]>, + tagsList: Array, + payload?: google_protobuf_struct_pb.Struct.AsObject, + } +} + export class GetLatestTabularDataRequest extends jspb.Message { getPartId(): string; setPartId(value: string): void; diff --git a/gen/js/app/data/v1/data_pb.js b/gen/js/app/data/v1/data_pb.js index 1b0fb1176..14826ac96 100644 --- a/gen/js/app/data/v1/data_pb.js +++ b/gen/js/app/data/v1/data_pb.js @@ -52,6 +52,8 @@ goog.exportSymbol('proto.viam.app.data.v1.DeleteBinaryDataByIDsRequest', null, g goog.exportSymbol('proto.viam.app.data.v1.DeleteBinaryDataByIDsResponse', null, global); goog.exportSymbol('proto.viam.app.data.v1.DeleteTabularDataRequest', null, global); goog.exportSymbol('proto.viam.app.data.v1.DeleteTabularDataResponse', null, global); +goog.exportSymbol('proto.viam.app.data.v1.ExportTabularDataRequest', null, global); +goog.exportSymbol('proto.viam.app.data.v1.ExportTabularDataResponse', null, global); goog.exportSymbol('proto.viam.app.data.v1.Filter', null, global); goog.exportSymbol('proto.viam.app.data.v1.GetDatabaseConnectionRequest', null, global); goog.exportSymbol('proto.viam.app.data.v1.GetDatabaseConnectionResponse', null, global); @@ -331,6 +333,48 @@ if (goog.DEBUG && !COMPILED) { */ proto.viam.app.data.v1.TabularDataByMQLResponse.displayName = 'proto.viam.app.data.v1.TabularDataByMQLResponse'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.viam.app.data.v1.ExportTabularDataRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.viam.app.data.v1.ExportTabularDataRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.viam.app.data.v1.ExportTabularDataRequest.displayName = 'proto.viam.app.data.v1.ExportTabularDataRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.viam.app.data.v1.ExportTabularDataResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.viam.app.data.v1.ExportTabularDataResponse.repeatedFields_, null); +}; +goog.inherits(proto.viam.app.data.v1.ExportTabularDataResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.viam.app.data.v1.ExportTabularDataResponse.displayName = 'proto.viam.app.data.v1.ExportTabularDataResponse'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -4548,6 +4592,838 @@ proto.viam.app.data.v1.TabularDataByMQLResponse.prototype.clearRawDataList = fun +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.toObject = function(opt_includeInstance) { + return proto.viam.app.data.v1.ExportTabularDataRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.viam.app.data.v1.ExportTabularDataRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.data.v1.ExportTabularDataRequest.toObject = function(includeInstance, msg) { + var f, obj = { + partId: jspb.Message.getFieldWithDefault(msg, 1, ""), + resourceName: jspb.Message.getFieldWithDefault(msg, 2, ""), + resourceSubtype: jspb.Message.getFieldWithDefault(msg, 3, ""), + methodName: jspb.Message.getFieldWithDefault(msg, 4, ""), + interval: (f = msg.getInterval()) && proto.viam.app.data.v1.CaptureInterval.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.viam.app.data.v1.ExportTabularDataRequest} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.viam.app.data.v1.ExportTabularDataRequest; + return proto.viam.app.data.v1.ExportTabularDataRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.viam.app.data.v1.ExportTabularDataRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.viam.app.data.v1.ExportTabularDataRequest} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setPartId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setResourceName(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setResourceSubtype(value); + break; + case 4: + var value = /** @type {string} */ (reader.readString()); + msg.setMethodName(value); + break; + case 5: + var value = new proto.viam.app.data.v1.CaptureInterval; + reader.readMessage(value,proto.viam.app.data.v1.CaptureInterval.deserializeBinaryFromReader); + msg.setInterval(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.viam.app.data.v1.ExportTabularDataRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.viam.app.data.v1.ExportTabularDataRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.data.v1.ExportTabularDataRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getPartId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getResourceName(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getResourceSubtype(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getMethodName(); + if (f.length > 0) { + writer.writeString( + 4, + f + ); + } + f = message.getInterval(); + if (f != null) { + writer.writeMessage( + 5, + f, + proto.viam.app.data.v1.CaptureInterval.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string part_id = 1; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.getPartId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataRequest} returns this + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.setPartId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string resource_name = 2; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.getResourceName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataRequest} returns this + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.setResourceName = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string resource_subtype = 3; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.getResourceSubtype = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataRequest} returns this + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.setResourceSubtype = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional string method_name = 4; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.getMethodName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataRequest} returns this + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.setMethodName = function(value) { + return jspb.Message.setProto3StringField(this, 4, value); +}; + + +/** + * optional CaptureInterval interval = 5; + * @return {?proto.viam.app.data.v1.CaptureInterval} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.getInterval = function() { + return /** @type{?proto.viam.app.data.v1.CaptureInterval} */ ( + jspb.Message.getWrapperField(this, proto.viam.app.data.v1.CaptureInterval, 5)); +}; + + +/** + * @param {?proto.viam.app.data.v1.CaptureInterval|undefined} value + * @return {!proto.viam.app.data.v1.ExportTabularDataRequest} returns this +*/ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.setInterval = function(value) { + return jspb.Message.setWrapperField(this, 5, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.viam.app.data.v1.ExportTabularDataRequest} returns this + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.clearInterval = function() { + return this.setInterval(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.viam.app.data.v1.ExportTabularDataRequest.prototype.hasInterval = function() { + return jspb.Message.getField(this, 5) != null; +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.viam.app.data.v1.ExportTabularDataResponse.repeatedFields_ = [12]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.toObject = function(opt_includeInstance) { + return proto.viam.app.data.v1.ExportTabularDataResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.viam.app.data.v1.ExportTabularDataResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.data.v1.ExportTabularDataResponse.toObject = function(includeInstance, msg) { + var f, obj = { + partId: jspb.Message.getFieldWithDefault(msg, 1, ""), + componentName: jspb.Message.getFieldWithDefault(msg, 2, ""), + componentType: jspb.Message.getFieldWithDefault(msg, 3, ""), + methodName: jspb.Message.getFieldWithDefault(msg, 4, ""), + timeCaptured: (f = msg.getTimeCaptured()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f), + organizationId: jspb.Message.getFieldWithDefault(msg, 6, ""), + locationId: jspb.Message.getFieldWithDefault(msg, 7, ""), + robotName: jspb.Message.getFieldWithDefault(msg, 8, ""), + robotId: jspb.Message.getFieldWithDefault(msg, 9, ""), + partName: jspb.Message.getFieldWithDefault(msg, 10, ""), + methodParametersMap: (f = msg.getMethodParametersMap()) ? f.toObject(includeInstance, proto.google.protobuf.Any.toObject) : [], + tagsList: (f = jspb.Message.getRepeatedField(msg, 12)) == null ? undefined : f, + payload: (f = msg.getPayload()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.viam.app.data.v1.ExportTabularDataResponse; + return proto.viam.app.data.v1.ExportTabularDataResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.viam.app.data.v1.ExportTabularDataResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setPartId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setComponentName(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setComponentType(value); + break; + case 4: + var value = /** @type {string} */ (reader.readString()); + msg.setMethodName(value); + break; + case 5: + var value = new google_protobuf_timestamp_pb.Timestamp; + reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader); + msg.setTimeCaptured(value); + break; + case 6: + var value = /** @type {string} */ (reader.readString()); + msg.setOrganizationId(value); + break; + case 7: + var value = /** @type {string} */ (reader.readString()); + msg.setLocationId(value); + break; + case 8: + var value = /** @type {string} */ (reader.readString()); + msg.setRobotName(value); + break; + case 9: + var value = /** @type {string} */ (reader.readString()); + msg.setRobotId(value); + break; + case 10: + var value = /** @type {string} */ (reader.readString()); + msg.setPartName(value); + break; + case 11: + var value = msg.getMethodParametersMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.google.protobuf.Any.deserializeBinaryFromReader, "", new proto.google.protobuf.Any()); + }); + break; + case 12: + var value = /** @type {string} */ (reader.readString()); + msg.addTags(value); + break; + case 13: + var value = new google_protobuf_struct_pb.Struct; + reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader); + msg.setPayload(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.viam.app.data.v1.ExportTabularDataResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.viam.app.data.v1.ExportTabularDataResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.data.v1.ExportTabularDataResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getPartId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getComponentName(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getComponentType(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getMethodName(); + if (f.length > 0) { + writer.writeString( + 4, + f + ); + } + f = message.getTimeCaptured(); + if (f != null) { + writer.writeMessage( + 5, + f, + google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter + ); + } + f = message.getOrganizationId(); + if (f.length > 0) { + writer.writeString( + 6, + f + ); + } + f = message.getLocationId(); + if (f.length > 0) { + writer.writeString( + 7, + f + ); + } + f = message.getRobotName(); + if (f.length > 0) { + writer.writeString( + 8, + f + ); + } + f = message.getRobotId(); + if (f.length > 0) { + writer.writeString( + 9, + f + ); + } + f = message.getPartName(); + if (f.length > 0) { + writer.writeString( + 10, + f + ); + } + f = message.getMethodParametersMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(11, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.google.protobuf.Any.serializeBinaryToWriter); + } + f = message.getTagsList(); + if (f.length > 0) { + writer.writeRepeatedString( + 12, + f + ); + } + f = message.getPayload(); + if (f != null) { + writer.writeMessage( + 13, + f, + google_protobuf_struct_pb.Struct.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string part_id = 1; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getPartId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setPartId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string component_name = 2; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getComponentName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setComponentName = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string component_type = 3; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getComponentType = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setComponentType = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional string method_name = 4; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getMethodName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setMethodName = function(value) { + return jspb.Message.setProto3StringField(this, 4, value); +}; + + +/** + * optional google.protobuf.Timestamp time_captured = 5; + * @return {?proto.google.protobuf.Timestamp} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getTimeCaptured = function() { + return /** @type{?proto.google.protobuf.Timestamp} */ ( + jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 5)); +}; + + +/** + * @param {?proto.google.protobuf.Timestamp|undefined} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this +*/ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setTimeCaptured = function(value) { + return jspb.Message.setWrapperField(this, 5, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.clearTimeCaptured = function() { + return this.setTimeCaptured(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.hasTimeCaptured = function() { + return jspb.Message.getField(this, 5) != null; +}; + + +/** + * optional string organization_id = 6; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getOrganizationId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setOrganizationId = function(value) { + return jspb.Message.setProto3StringField(this, 6, value); +}; + + +/** + * optional string location_id = 7; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getLocationId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setLocationId = function(value) { + return jspb.Message.setProto3StringField(this, 7, value); +}; + + +/** + * optional string robot_name = 8; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getRobotName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setRobotName = function(value) { + return jspb.Message.setProto3StringField(this, 8, value); +}; + + +/** + * optional string robot_id = 9; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getRobotId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setRobotId = function(value) { + return jspb.Message.setProto3StringField(this, 9, value); +}; + + +/** + * optional string part_name = 10; + * @return {string} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getPartName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setPartName = function(value) { + return jspb.Message.setProto3StringField(this, 10, value); +}; + + +/** + * map method_parameters = 11; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getMethodParametersMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 11, opt_noLazyCreate, + proto.google.protobuf.Any)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.clearMethodParametersMap = function() { + this.getMethodParametersMap().clear(); + return this;}; + + +/** + * repeated string tags = 12; + * @return {!Array} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getTagsList = function() { + return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 12)); +}; + + +/** + * @param {!Array} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setTagsList = function(value) { + return jspb.Message.setField(this, 12, value || []); +}; + + +/** + * @param {string} value + * @param {number=} opt_index + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.addTags = function(value, opt_index) { + return jspb.Message.addToRepeatedField(this, 12, value, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.clearTagsList = function() { + return this.setTagsList([]); +}; + + +/** + * optional google.protobuf.Struct payload = 13; + * @return {?proto.google.protobuf.Struct} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.getPayload = function() { + return /** @type{?proto.google.protobuf.Struct} */ ( + jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 13)); +}; + + +/** + * @param {?proto.google.protobuf.Struct|undefined} value + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this +*/ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.setPayload = function(value) { + return jspb.Message.setWrapperField(this, 13, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.viam.app.data.v1.ExportTabularDataResponse} returns this + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.clearPayload = function() { + return this.setPayload(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.viam.app.data.v1.ExportTabularDataResponse.prototype.hasPayload = function() { + return jspb.Message.getField(this, 13) != null; +}; + + + + + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. diff --git a/gen/js/app/data/v1/data_pb_service.d.ts b/gen/js/app/data/v1/data_pb_service.d.ts index 387b10753..96a804218 100644 --- a/gen/js/app/data/v1/data_pb_service.d.ts +++ b/gen/js/app/data/v1/data_pb_service.d.ts @@ -31,6 +31,15 @@ type DataServiceTabularDataByMQL = { readonly responseType: typeof app_data_v1_data_pb.TabularDataByMQLResponse; }; +type DataServiceExportTabularData = { + readonly methodName: string; + readonly service: typeof DataService; + readonly requestStream: false; + readonly responseStream: true; + readonly requestType: typeof app_data_v1_data_pb.ExportTabularDataRequest; + readonly responseType: typeof app_data_v1_data_pb.ExportTabularDataResponse; +}; + type DataServiceGetLatestTabularData = { readonly methodName: string; readonly service: typeof DataService; @@ -207,6 +216,7 @@ export class DataService { static readonly TabularDataByFilter: DataServiceTabularDataByFilter; static readonly TabularDataBySQL: DataServiceTabularDataBySQL; static readonly TabularDataByMQL: DataServiceTabularDataByMQL; + static readonly ExportTabularData: DataServiceExportTabularData; static readonly GetLatestTabularData: DataServiceGetLatestTabularData; static readonly BinaryDataByFilter: DataServiceBinaryDataByFilter; static readonly BinaryDataByIDs: DataServiceBinaryDataByIDs; @@ -287,6 +297,7 @@ export class DataServiceClient { requestMessage: app_data_v1_data_pb.TabularDataByMQLRequest, callback: (error: ServiceError|null, responseMessage: app_data_v1_data_pb.TabularDataByMQLResponse|null) => void ): UnaryResponse; + exportTabularData(requestMessage: app_data_v1_data_pb.ExportTabularDataRequest, metadata?: grpc.Metadata): ResponseStream; getLatestTabularData( requestMessage: app_data_v1_data_pb.GetLatestTabularDataRequest, metadata: grpc.Metadata, diff --git a/gen/js/app/data/v1/data_pb_service.js b/gen/js/app/data/v1/data_pb_service.js index e8c3479df..7242e37af 100644 --- a/gen/js/app/data/v1/data_pb_service.js +++ b/gen/js/app/data/v1/data_pb_service.js @@ -37,6 +37,15 @@ DataService.TabularDataByMQL = { responseType: app_data_v1_data_pb.TabularDataByMQLResponse }; +DataService.ExportTabularData = { + methodName: "ExportTabularData", + service: DataService, + requestStream: false, + responseStream: true, + requestType: app_data_v1_data_pb.ExportTabularDataRequest, + responseType: app_data_v1_data_pb.ExportTabularDataResponse +}; + DataService.GetLatestTabularData = { methodName: "GetLatestTabularData", service: DataService, @@ -308,6 +317,45 @@ DataServiceClient.prototype.tabularDataByMQL = function tabularDataByMQL(request }; }; +DataServiceClient.prototype.exportTabularData = function exportTabularData(requestMessage, metadata) { + var listeners = { + data: [], + end: [], + status: [] + }; + var client = grpc.invoke(DataService.ExportTabularData, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onMessage: function (responseMessage) { + listeners.data.forEach(function (handler) { + handler(responseMessage); + }); + }, + onEnd: function (status, statusMessage, trailers) { + listeners.status.forEach(function (handler) { + handler({ code: status, details: statusMessage, metadata: trailers }); + }); + listeners.end.forEach(function (handler) { + handler({ code: status, details: statusMessage, metadata: trailers }); + }); + listeners = null; + } + }); + return { + on: function (type, handler) { + listeners[type].push(handler); + return this; + }, + cancel: function () { + listeners = null; + client.close(); + } + }; +}; + DataServiceClient.prototype.getLatestTabularData = function getLatestTabularData(requestMessage, metadata, callback) { if (arguments.length === 2) { callback = arguments[1]; diff --git a/proto/viam/app/data/v1/data.proto b/proto/viam/app/data/v1/data.proto index ed4b2ef14..bf7ae6877 100644 --- a/proto/viam/app/data/v1/data.proto +++ b/proto/viam/app/data/v1/data.proto @@ -11,7 +11,9 @@ option go_package = "go.viam.com/api/app/data/v1"; // DataService is used to query robot data. service DataService { // TabularDataByFilter queries tabular data and metadata based on given filters. - rpc TabularDataByFilter(TabularDataByFilterRequest) returns (TabularDataByFilterResponse); + rpc TabularDataByFilter(TabularDataByFilterRequest) returns (TabularDataByFilterResponse) { + option deprecated = true; + } // TabularDataBySQL queries tabular data with a SQL query. rpc TabularDataBySQL(TabularDataBySQLRequest) returns (TabularDataBySQLResponse); @@ -19,6 +21,9 @@ service DataService { // TabularDataByMQL queries tabular data with an MQL (MongoDB Query Language) query. rpc TabularDataByMQL(TabularDataByMQLRequest) returns (TabularDataByMQLResponse); + // ExportTabularData queries tabular data from the specified data source. + rpc ExportTabularData(ExportTabularDataRequest) returns (stream ExportTabularDataResponse); + // GetLatestTabularData gets the most recent tabular data captured from the specified data source. rpc GetLatestTabularData(GetLatestTabularDataRequest) returns (GetLatestTabularDataResponse); @@ -170,6 +175,7 @@ message CaptureInterval { // TabularDataByFilterRequest requests tabular data based on filter values. message TabularDataByFilterRequest { + option deprecated = true; DataRequest data_request = 1; bool count_only = 2; bool include_internal_data = 3; @@ -177,6 +183,7 @@ message TabularDataByFilterRequest { // TabularDataByFilterResponse provides the data and metadata of tabular data. message TabularDataByFilterResponse { + option deprecated = true; repeated CaptureMetadata metadata = 1; repeated TabularData data = 2; uint64 count = 3; @@ -186,6 +193,7 @@ message TabularDataByFilterResponse { // TabularData contains data and metadata associated with tabular data. message TabularData { + option deprecated = true; google.protobuf.Struct data = 1; uint32 metadata_index = 2; google.protobuf.Timestamp time_requested = 3; @@ -229,6 +237,32 @@ message TabularDataByMQLResponse { reserved "data"; } +// ExportTabularDataRequest requests tabular data from the specified data source. +message ExportTabularDataRequest { + string part_id = 1; + string resource_name = 2; + string resource_subtype = 3; + string method_name = 4; + CaptureInterval interval = 5; +} + +// ExportTabularDataResponse provides unified tabular data and metadata for a single data point from the specified data source. +message ExportTabularDataResponse { + string part_id = 1; + string component_name = 2; + string component_type = 3; + string method_name = 4; + google.protobuf.Timestamp time_captured = 5; + string organization_id = 6; + string location_id = 7; + string robot_name = 8; + string robot_id = 9; + string part_name = 10; + map method_parameters = 11; + repeated string tags = 12; + google.protobuf.Struct payload = 13; +} + // GetLatestTabularDataRequest requests the most recent tabular data captured from the specified data source. message GetLatestTabularDataRequest { string part_id = 1;