From 697e964398369961150953aa360e8f2205b40045 Mon Sep 17 00:00:00 2001 From: Brandon Shrewsbury Date: Thu, 27 Aug 2026 09:49:27 -0600 Subject: [PATCH 1/3] common: add Cylinder to the Geometry oneof spatialmath.Cylinder exists in the RDK as a collision primitive but has no representation here, so it cannot cross the wire at all. Cylinder.ToProtobuf() in the RDK is currently: panic("Cylinder.ToProtobuf: unimplemented -- no Cylinder message in commonpb") Any component returning a cylinder from Geometries() panics its own GetGeometries handler, and a cylinder in a kinematics model is unrenderable by consumers. In practice that means round hardware has to be squared off to a box or approximated by a capsule, neither of which is the shape. A capsule is not a substitute: its length is tip-to-tip with hemispherical caps, so it always under-approximates a flat-ended cylinder, and it cannot be flatter than length = 2*radius. This message has flat caps and no aspect constraint. Additive change: new field number 8 in the oneof, no existing field touched. buf lint and buf breaking both clean. Co-Authored-By: Claude Opus 5 (1M context) --- common/v1/common.pb.go | 880 ++++++++++++++++-------------- proto/viam/common/v1/common.proto | 10 + 2 files changed, 491 insertions(+), 399 deletions(-) diff --git a/common/v1/common.pb.go b/common/v1/common.pb.go index 5804ae0032..2c23b31fde 100644 --- a/common/v1/common.pb.go +++ b/common/v1/common.pb.go @@ -638,6 +638,63 @@ func (x *Capsule) GetLengthMm() float64 { return 0 } +// Cylinder is a finite right circular cylinder. Its central axis is the local +// frame's Z axis and its pose is at its center. Unlike a capsule, a cylinder has +// flat end caps and may be arbitrarily flat (no length >= 2*radius constraint). +type Cylinder struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RadiusMm float64 `protobuf:"fixed64,1,opt,name=radius_mm,json=radiusMm,proto3" json:"radius_mm,omitempty"` + // Total height, cap to cap. + HeightMm float64 `protobuf:"fixed64,2,opt,name=height_mm,json=heightMm,proto3" json:"height_mm,omitempty"` +} + +func (x *Cylinder) Reset() { + *x = Cylinder{} + mi := &file_common_v1_common_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Cylinder) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cylinder) ProtoMessage() {} + +func (x *Cylinder) ProtoReflect() protoreflect.Message { + mi := &file_common_v1_common_proto_msgTypes[8] + 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 Cylinder.ProtoReflect.Descriptor instead. +func (*Cylinder) Descriptor() ([]byte, []int) { + return file_common_v1_common_proto_rawDescGZIP(), []int{8} +} + +func (x *Cylinder) GetRadiusMm() float64 { + if x != nil { + return x.RadiusMm + } + return 0 +} + +func (x *Cylinder) GetHeightMm() float64 { + if x != nil { + return x.HeightMm + } + return 0 +} + // RectangularPrism contains a Vector3 field corresponding to the X, Y, Z dimensions of the prism in mms // These dimensions are with respect to the referenceframe in which the RectangularPrism is defined type RectangularPrism struct { @@ -650,7 +707,7 @@ type RectangularPrism struct { func (x *RectangularPrism) Reset() { *x = RectangularPrism{} - mi := &file_common_v1_common_proto_msgTypes[8] + mi := &file_common_v1_common_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -662,7 +719,7 @@ func (x *RectangularPrism) String() string { func (*RectangularPrism) ProtoMessage() {} func (x *RectangularPrism) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[8] + mi := &file_common_v1_common_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -675,7 +732,7 @@ func (x *RectangularPrism) ProtoReflect() protoreflect.Message { // Deprecated: Use RectangularPrism.ProtoReflect.Descriptor instead. func (*RectangularPrism) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{8} + return file_common_v1_common_proto_rawDescGZIP(), []int{9} } func (x *RectangularPrism) GetDimsMm() *Vector3 { @@ -698,7 +755,7 @@ type Mesh struct { func (x *Mesh) Reset() { *x = Mesh{} - mi := &file_common_v1_common_proto_msgTypes[9] + mi := &file_common_v1_common_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -710,7 +767,7 @@ func (x *Mesh) String() string { func (*Mesh) ProtoMessage() {} func (x *Mesh) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[9] + mi := &file_common_v1_common_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -723,7 +780,7 @@ func (x *Mesh) ProtoReflect() protoreflect.Message { // Deprecated: Use Mesh.ProtoReflect.Descriptor instead. func (*Mesh) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{9} + return file_common_v1_common_proto_rawDescGZIP(), []int{10} } func (x *Mesh) GetContentType() string { @@ -750,7 +807,7 @@ type PointCloud struct { func (x *PointCloud) Reset() { *x = PointCloud{} - mi := &file_common_v1_common_proto_msgTypes[10] + mi := &file_common_v1_common_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -762,7 +819,7 @@ func (x *PointCloud) String() string { func (*PointCloud) ProtoMessage() {} func (x *PointCloud) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[10] + mi := &file_common_v1_common_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -775,7 +832,7 @@ func (x *PointCloud) ProtoReflect() protoreflect.Message { // Deprecated: Use PointCloud.ProtoReflect.Descriptor instead. func (*PointCloud) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{10} + return file_common_v1_common_proto_rawDescGZIP(), []int{11} } func (x *PointCloud) GetPointCloud() []byte { @@ -802,6 +859,7 @@ type Geometry struct { // *Geometry_Capsule // *Geometry_Mesh // *Geometry_Pointcloud + // *Geometry_Cylinder GeometryType isGeometry_GeometryType `protobuf_oneof:"geometry_type"` // Label of the geometry. If none supplied, will be an empty string. Label string `protobuf:"bytes,4,opt,name=label,proto3" json:"label,omitempty"` @@ -809,7 +867,7 @@ type Geometry struct { func (x *Geometry) Reset() { *x = Geometry{} - mi := &file_common_v1_common_proto_msgTypes[11] + mi := &file_common_v1_common_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -821,7 +879,7 @@ func (x *Geometry) String() string { func (*Geometry) ProtoMessage() {} func (x *Geometry) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[11] + mi := &file_common_v1_common_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -834,7 +892,7 @@ func (x *Geometry) ProtoReflect() protoreflect.Message { // Deprecated: Use Geometry.ProtoReflect.Descriptor instead. func (*Geometry) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{11} + return file_common_v1_common_proto_rawDescGZIP(), []int{12} } func (x *Geometry) GetCenter() *Pose { @@ -886,6 +944,13 @@ func (x *Geometry) GetPointcloud() *PointCloud { return nil } +func (x *Geometry) GetCylinder() *Cylinder { + if x, ok := x.GetGeometryType().(*Geometry_Cylinder); ok { + return x.Cylinder + } + return nil +} + func (x *Geometry) GetLabel() string { if x != nil { return x.Label @@ -917,6 +982,10 @@ type Geometry_Pointcloud struct { Pointcloud *PointCloud `protobuf:"bytes,7,opt,name=pointcloud,proto3,oneof"` } +type Geometry_Cylinder struct { + Cylinder *Cylinder `protobuf:"bytes,8,opt,name=cylinder,proto3,oneof"` +} + func (*Geometry_Sphere) isGeometry_GeometryType() {} func (*Geometry_Box) isGeometry_GeometryType() {} @@ -927,6 +996,8 @@ func (*Geometry_Mesh) isGeometry_GeometryType() {} func (*Geometry_Pointcloud) isGeometry_GeometryType() {} +func (*Geometry_Cylinder) isGeometry_GeometryType() {} + // GeometriesinFrame contains the dimensions of a given geometry, pose of its center point, and the reference frame by which it was // observed. type GeometriesInFrame struct { @@ -942,7 +1013,7 @@ type GeometriesInFrame struct { func (x *GeometriesInFrame) Reset() { *x = GeometriesInFrame{} - mi := &file_common_v1_common_proto_msgTypes[12] + mi := &file_common_v1_common_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -954,7 +1025,7 @@ func (x *GeometriesInFrame) String() string { func (*GeometriesInFrame) ProtoMessage() {} func (x *GeometriesInFrame) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[12] + mi := &file_common_v1_common_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -967,7 +1038,7 @@ func (x *GeometriesInFrame) ProtoReflect() protoreflect.Message { // Deprecated: Use GeometriesInFrame.ProtoReflect.Descriptor instead. func (*GeometriesInFrame) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{12} + return file_common_v1_common_proto_rawDescGZIP(), []int{13} } func (x *GeometriesInFrame) GetReferenceFrame() string { @@ -999,7 +1070,7 @@ type PointCloudObject struct { func (x *PointCloudObject) Reset() { *x = PointCloudObject{} - mi := &file_common_v1_common_proto_msgTypes[13] + mi := &file_common_v1_common_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1011,7 +1082,7 @@ func (x *PointCloudObject) String() string { func (*PointCloudObject) ProtoMessage() {} func (x *PointCloudObject) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[13] + mi := &file_common_v1_common_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1024,7 +1095,7 @@ func (x *PointCloudObject) ProtoReflect() protoreflect.Message { // Deprecated: Use PointCloudObject.ProtoReflect.Descriptor instead. func (*PointCloudObject) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{13} + return file_common_v1_common_proto_rawDescGZIP(), []int{14} } func (x *PointCloudObject) GetPointCloud() []byte { @@ -1052,7 +1123,7 @@ type GeoPoint struct { func (x *GeoPoint) Reset() { *x = GeoPoint{} - mi := &file_common_v1_common_proto_msgTypes[14] + mi := &file_common_v1_common_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1064,7 +1135,7 @@ func (x *GeoPoint) String() string { func (*GeoPoint) ProtoMessage() {} func (x *GeoPoint) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[14] + mi := &file_common_v1_common_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1077,7 +1148,7 @@ func (x *GeoPoint) ProtoReflect() protoreflect.Message { // Deprecated: Use GeoPoint.ProtoReflect.Descriptor instead. func (*GeoPoint) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{14} + return file_common_v1_common_proto_rawDescGZIP(), []int{15} } func (x *GeoPoint) GetLatitude() float64 { @@ -1108,7 +1179,7 @@ type GeoGeometry struct { func (x *GeoGeometry) Reset() { *x = GeoGeometry{} - mi := &file_common_v1_common_proto_msgTypes[15] + mi := &file_common_v1_common_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1120,7 +1191,7 @@ func (x *GeoGeometry) String() string { func (*GeoGeometry) ProtoMessage() {} func (x *GeoGeometry) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[15] + mi := &file_common_v1_common_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1133,7 +1204,7 @@ func (x *GeoGeometry) ProtoReflect() protoreflect.Message { // Deprecated: Use GeoGeometry.ProtoReflect.Descriptor instead. func (*GeoGeometry) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{15} + return file_common_v1_common_proto_rawDescGZIP(), []int{16} } func (x *GeoGeometry) GetLocation() *GeoPoint { @@ -1171,7 +1242,7 @@ type Transform struct { func (x *Transform) Reset() { *x = Transform{} - mi := &file_common_v1_common_proto_msgTypes[16] + mi := &file_common_v1_common_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1183,7 +1254,7 @@ func (x *Transform) String() string { func (*Transform) ProtoMessage() {} func (x *Transform) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[16] + mi := &file_common_v1_common_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1196,7 +1267,7 @@ func (x *Transform) ProtoReflect() protoreflect.Message { // Deprecated: Use Transform.ProtoReflect.Descriptor instead. func (*Transform) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{16} + return file_common_v1_common_proto_rawDescGZIP(), []int{17} } func (x *Transform) GetReferenceFrame() string { @@ -1251,7 +1322,7 @@ type WorldState struct { func (x *WorldState) Reset() { *x = WorldState{} - mi := &file_common_v1_common_proto_msgTypes[17] + mi := &file_common_v1_common_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1263,7 +1334,7 @@ func (x *WorldState) String() string { func (*WorldState) ProtoMessage() {} func (x *WorldState) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[17] + mi := &file_common_v1_common_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1276,7 +1347,7 @@ func (x *WorldState) ProtoReflect() protoreflect.Message { // Deprecated: Use WorldState.ProtoReflect.Descriptor instead. func (*WorldState) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{17} + return file_common_v1_common_proto_rawDescGZIP(), []int{18} } func (x *WorldState) GetObstacles() []*GeometriesInFrame { @@ -1304,7 +1375,7 @@ type ActuatorStatus struct { func (x *ActuatorStatus) Reset() { *x = ActuatorStatus{} - mi := &file_common_v1_common_proto_msgTypes[18] + mi := &file_common_v1_common_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1316,7 +1387,7 @@ func (x *ActuatorStatus) String() string { func (*ActuatorStatus) ProtoMessage() {} func (x *ActuatorStatus) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[18] + mi := &file_common_v1_common_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1329,7 +1400,7 @@ func (x *ActuatorStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ActuatorStatus.ProtoReflect.Descriptor instead. func (*ActuatorStatus) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{18} + return file_common_v1_common_proto_rawDescGZIP(), []int{19} } func (x *ActuatorStatus) GetIsMoving() bool { @@ -1353,7 +1424,7 @@ type ResponseMetadata struct { func (x *ResponseMetadata) Reset() { *x = ResponseMetadata{} - mi := &file_common_v1_common_proto_msgTypes[19] + mi := &file_common_v1_common_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1365,7 +1436,7 @@ func (x *ResponseMetadata) String() string { func (*ResponseMetadata) ProtoMessage() {} func (x *ResponseMetadata) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[19] + mi := &file_common_v1_common_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1378,7 +1449,7 @@ func (x *ResponseMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseMetadata.ProtoReflect.Descriptor instead. func (*ResponseMetadata) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{19} + return file_common_v1_common_proto_rawDescGZIP(), []int{20} } func (x *ResponseMetadata) GetCapturedAt() *timestamppb.Timestamp { @@ -1400,7 +1471,7 @@ type DoCommandRequest struct { func (x *DoCommandRequest) Reset() { *x = DoCommandRequest{} - mi := &file_common_v1_common_proto_msgTypes[20] + mi := &file_common_v1_common_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1412,7 +1483,7 @@ func (x *DoCommandRequest) String() string { func (*DoCommandRequest) ProtoMessage() {} func (x *DoCommandRequest) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[20] + mi := &file_common_v1_common_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1425,7 +1496,7 @@ func (x *DoCommandRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DoCommandRequest.ProtoReflect.Descriptor instead. func (*DoCommandRequest) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{20} + return file_common_v1_common_proto_rawDescGZIP(), []int{21} } func (x *DoCommandRequest) GetName() string { @@ -1453,7 +1524,7 @@ type DoCommandResponse struct { func (x *DoCommandResponse) Reset() { *x = DoCommandResponse{} - mi := &file_common_v1_common_proto_msgTypes[21] + mi := &file_common_v1_common_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1465,7 +1536,7 @@ func (x *DoCommandResponse) String() string { func (*DoCommandResponse) ProtoMessage() {} func (x *DoCommandResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[21] + mi := &file_common_v1_common_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1478,7 +1549,7 @@ func (x *DoCommandResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DoCommandResponse.ProtoReflect.Descriptor instead. func (*DoCommandResponse) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{21} + return file_common_v1_common_proto_rawDescGZIP(), []int{22} } func (x *DoCommandResponse) GetResult() *structpb.Struct { @@ -1499,7 +1570,7 @@ type GetStatusRequest struct { func (x *GetStatusRequest) Reset() { *x = GetStatusRequest{} - mi := &file_common_v1_common_proto_msgTypes[22] + mi := &file_common_v1_common_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1511,7 +1582,7 @@ func (x *GetStatusRequest) String() string { func (*GetStatusRequest) ProtoMessage() {} func (x *GetStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[22] + mi := &file_common_v1_common_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1524,7 +1595,7 @@ func (x *GetStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStatusRequest.ProtoReflect.Descriptor instead. func (*GetStatusRequest) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{22} + return file_common_v1_common_proto_rawDescGZIP(), []int{23} } func (x *GetStatusRequest) GetName() string { @@ -1545,7 +1616,7 @@ type GetStatusResponse struct { func (x *GetStatusResponse) Reset() { *x = GetStatusResponse{} - mi := &file_common_v1_common_proto_msgTypes[23] + mi := &file_common_v1_common_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1557,7 +1628,7 @@ func (x *GetStatusResponse) String() string { func (*GetStatusResponse) ProtoMessage() {} func (x *GetStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[23] + mi := &file_common_v1_common_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1570,7 +1641,7 @@ func (x *GetStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStatusResponse.ProtoReflect.Descriptor instead. func (*GetStatusResponse) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{23} + return file_common_v1_common_proto_rawDescGZIP(), []int{24} } func (x *GetStatusResponse) GetResult() *structpb.Struct { @@ -1593,7 +1664,7 @@ type GetKinematicsRequest struct { func (x *GetKinematicsRequest) Reset() { *x = GetKinematicsRequest{} - mi := &file_common_v1_common_proto_msgTypes[24] + mi := &file_common_v1_common_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1605,7 +1676,7 @@ func (x *GetKinematicsRequest) String() string { func (*GetKinematicsRequest) ProtoMessage() {} func (x *GetKinematicsRequest) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[24] + mi := &file_common_v1_common_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1618,7 +1689,7 @@ func (x *GetKinematicsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetKinematicsRequest.ProtoReflect.Descriptor instead. func (*GetKinematicsRequest) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{24} + return file_common_v1_common_proto_rawDescGZIP(), []int{25} } func (x *GetKinematicsRequest) GetName() string { @@ -1651,7 +1722,7 @@ type GetKinematicsResponse struct { func (x *GetKinematicsResponse) Reset() { *x = GetKinematicsResponse{} - mi := &file_common_v1_common_proto_msgTypes[25] + mi := &file_common_v1_common_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1663,7 +1734,7 @@ func (x *GetKinematicsResponse) String() string { func (*GetKinematicsResponse) ProtoMessage() {} func (x *GetKinematicsResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[25] + mi := &file_common_v1_common_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1676,7 +1747,7 @@ func (x *GetKinematicsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetKinematicsResponse.ProtoReflect.Descriptor instead. func (*GetKinematicsResponse) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{25} + return file_common_v1_common_proto_rawDescGZIP(), []int{26} } func (x *GetKinematicsResponse) GetFormat() KinematicsFileFormat { @@ -1713,7 +1784,7 @@ type GetGeometriesRequest struct { func (x *GetGeometriesRequest) Reset() { *x = GetGeometriesRequest{} - mi := &file_common_v1_common_proto_msgTypes[26] + mi := &file_common_v1_common_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1725,7 +1796,7 @@ func (x *GetGeometriesRequest) String() string { func (*GetGeometriesRequest) ProtoMessage() {} func (x *GetGeometriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[26] + mi := &file_common_v1_common_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1738,7 +1809,7 @@ func (x *GetGeometriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGeometriesRequest.ProtoReflect.Descriptor instead. func (*GetGeometriesRequest) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{26} + return file_common_v1_common_proto_rawDescGZIP(), []int{27} } func (x *GetGeometriesRequest) GetName() string { @@ -1766,7 +1837,7 @@ type GetGeometriesResponse struct { func (x *GetGeometriesResponse) Reset() { *x = GetGeometriesResponse{} - mi := &file_common_v1_common_proto_msgTypes[27] + mi := &file_common_v1_common_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1778,7 +1849,7 @@ func (x *GetGeometriesResponse) String() string { func (*GetGeometriesResponse) ProtoMessage() {} func (x *GetGeometriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[27] + mi := &file_common_v1_common_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1791,7 +1862,7 @@ func (x *GetGeometriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGeometriesResponse.ProtoReflect.Descriptor instead. func (*GetGeometriesResponse) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{27} + return file_common_v1_common_proto_rawDescGZIP(), []int{28} } func (x *GetGeometriesResponse) GetGeometries() []*Geometry { @@ -1814,7 +1885,7 @@ type Get3DModelsRequest struct { func (x *Get3DModelsRequest) Reset() { *x = Get3DModelsRequest{} - mi := &file_common_v1_common_proto_msgTypes[28] + mi := &file_common_v1_common_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1826,7 +1897,7 @@ func (x *Get3DModelsRequest) String() string { func (*Get3DModelsRequest) ProtoMessage() {} func (x *Get3DModelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[28] + mi := &file_common_v1_common_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1839,7 +1910,7 @@ func (x *Get3DModelsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use Get3DModelsRequest.ProtoReflect.Descriptor instead. func (*Get3DModelsRequest) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{28} + return file_common_v1_common_proto_rawDescGZIP(), []int{29} } func (x *Get3DModelsRequest) GetName() string { @@ -1867,7 +1938,7 @@ type Get3DModelsResponse struct { func (x *Get3DModelsResponse) Reset() { *x = Get3DModelsResponse{} - mi := &file_common_v1_common_proto_msgTypes[29] + mi := &file_common_v1_common_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1879,7 +1950,7 @@ func (x *Get3DModelsResponse) String() string { func (*Get3DModelsResponse) ProtoMessage() {} func (x *Get3DModelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[29] + mi := &file_common_v1_common_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1892,7 +1963,7 @@ func (x *Get3DModelsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use Get3DModelsResponse.ProtoReflect.Descriptor instead. func (*Get3DModelsResponse) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{29} + return file_common_v1_common_proto_rawDescGZIP(), []int{30} } func (x *Get3DModelsResponse) GetModels() map[string]*Mesh { @@ -1915,7 +1986,7 @@ type GetReadingsRequest struct { func (x *GetReadingsRequest) Reset() { *x = GetReadingsRequest{} - mi := &file_common_v1_common_proto_msgTypes[30] + mi := &file_common_v1_common_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1927,7 +1998,7 @@ func (x *GetReadingsRequest) String() string { func (*GetReadingsRequest) ProtoMessage() {} func (x *GetReadingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[30] + mi := &file_common_v1_common_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1940,7 +2011,7 @@ func (x *GetReadingsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReadingsRequest.ProtoReflect.Descriptor instead. func (*GetReadingsRequest) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{30} + return file_common_v1_common_proto_rawDescGZIP(), []int{31} } func (x *GetReadingsRequest) GetName() string { @@ -1967,7 +2038,7 @@ type GetReadingsResponse struct { func (x *GetReadingsResponse) Reset() { *x = GetReadingsResponse{} - mi := &file_common_v1_common_proto_msgTypes[31] + mi := &file_common_v1_common_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1979,7 +2050,7 @@ func (x *GetReadingsResponse) String() string { func (*GetReadingsResponse) ProtoMessage() {} func (x *GetReadingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[31] + mi := &file_common_v1_common_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1992,7 +2063,7 @@ func (x *GetReadingsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReadingsResponse.ProtoReflect.Descriptor instead. func (*GetReadingsResponse) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{31} + return file_common_v1_common_proto_rawDescGZIP(), []int{32} } func (x *GetReadingsResponse) GetReadings() map[string]*structpb.Value { @@ -2019,7 +2090,7 @@ type LogEntry struct { func (x *LogEntry) Reset() { *x = LogEntry{} - mi := &file_common_v1_common_proto_msgTypes[32] + mi := &file_common_v1_common_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2031,7 +2102,7 @@ func (x *LogEntry) String() string { func (*LogEntry) ProtoMessage() {} func (x *LogEntry) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[32] + mi := &file_common_v1_common_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2044,7 +2115,7 @@ func (x *LogEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use LogEntry.ProtoReflect.Descriptor instead. func (*LogEntry) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{32} + return file_common_v1_common_proto_rawDescGZIP(), []int{33} } func (x *LogEntry) GetHost() string { @@ -2119,7 +2190,7 @@ type AudioInfo struct { func (x *AudioInfo) Reset() { *x = AudioInfo{} - mi := &file_common_v1_common_proto_msgTypes[33] + mi := &file_common_v1_common_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2131,7 +2202,7 @@ func (x *AudioInfo) String() string { func (*AudioInfo) ProtoMessage() {} func (x *AudioInfo) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[33] + mi := &file_common_v1_common_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2144,7 +2215,7 @@ func (x *AudioInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use AudioInfo.ProtoReflect.Descriptor instead. func (*AudioInfo) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{33} + return file_common_v1_common_proto_rawDescGZIP(), []int{34} } func (x *AudioInfo) GetCodec() string { @@ -2180,7 +2251,7 @@ type GetPropertiesRequest struct { func (x *GetPropertiesRequest) Reset() { *x = GetPropertiesRequest{} - mi := &file_common_v1_common_proto_msgTypes[34] + mi := &file_common_v1_common_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2192,7 +2263,7 @@ func (x *GetPropertiesRequest) String() string { func (*GetPropertiesRequest) ProtoMessage() {} func (x *GetPropertiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[34] + mi := &file_common_v1_common_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2205,7 +2276,7 @@ func (x *GetPropertiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPropertiesRequest.ProtoReflect.Descriptor instead. func (*GetPropertiesRequest) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{34} + return file_common_v1_common_proto_rawDescGZIP(), []int{35} } func (x *GetPropertiesRequest) GetName() string { @@ -2237,7 +2308,7 @@ type GetPropertiesResponse struct { func (x *GetPropertiesResponse) Reset() { *x = GetPropertiesResponse{} - mi := &file_common_v1_common_proto_msgTypes[35] + mi := &file_common_v1_common_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2249,7 +2320,7 @@ func (x *GetPropertiesResponse) String() string { func (*GetPropertiesResponse) ProtoMessage() {} func (x *GetPropertiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_v1_common_proto_msgTypes[35] + mi := &file_common_v1_common_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2262,7 +2333,7 @@ func (x *GetPropertiesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPropertiesResponse.ProtoReflect.Descriptor instead. func (*GetPropertiesResponse) Descriptor() ([]byte, []int) { - return file_common_v1_common_proto_rawDescGZIP(), []int{35} + return file_common_v1_common_proto_rawDescGZIP(), []int{36} } func (x *GetPropertiesResponse) GetSupportedCodecs() []string { @@ -2368,251 +2439,259 @@ var file_common_v1_common_proto_rawDesc = []byte{ 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x4d, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6d, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x6d, 0x22, 0x44, - 0x0a, 0x10, 0x52, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x50, 0x72, 0x69, - 0x73, 0x6d, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x69, 0x6d, 0x73, 0x5f, 0x6d, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x33, 0x52, 0x06, 0x64, 0x69, - 0x6d, 0x73, 0x4d, 0x6d, 0x22, 0x3d, 0x0a, 0x04, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6d, - 0x65, 0x73, 0x68, 0x22, 0x2d, 0x0a, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x22, 0xe6, 0x02, 0x0a, 0x08, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, - 0x2c, 0x0a, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6f, 0x73, 0x65, 0x52, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, - 0x06, 0x73, 0x70, 0x68, 0x65, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x70, 0x68, 0x65, 0x72, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x70, 0x68, 0x65, 0x72, 0x65, 0x12, - 0x34, 0x0a, 0x03, 0x62, 0x6f, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x63, 0x74, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x50, 0x72, 0x69, 0x73, 0x6d, 0x48, 0x00, - 0x52, 0x03, 0x62, 0x6f, 0x78, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x65, 0x48, - 0x00, 0x52, 0x07, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x6d, 0x65, - 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x48, 0x00, - 0x52, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x67, 0x65, - 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x47, - 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, - 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x22, 0x76, 0x0a, 0x10, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x0a, 0x08, 0x43, 0x79, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x61, + 0x64, 0x69, 0x75, 0x73, 0x5f, 0x6d, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x72, + 0x61, 0x64, 0x69, 0x75, 0x73, 0x4d, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x5f, 0x6d, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x4d, 0x6d, 0x22, 0x44, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x67, 0x75, + 0x6c, 0x61, 0x72, 0x50, 0x72, 0x69, 0x73, 0x6d, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x69, 0x6d, 0x73, + 0x5f, 0x6d, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x33, 0x52, 0x06, 0x64, 0x69, 0x6d, 0x73, 0x4d, 0x6d, 0x22, 0x3d, 0x0a, 0x04, 0x4d, 0x65, + 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x22, 0x2d, 0x0a, 0x0a, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, - 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x08, 0x47, - 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, - 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, - 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, - 0x65, 0x22, 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x6f, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, - 0x12, 0x34, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, - 0x65, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xbd, 0x02, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, + 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x22, 0x9e, 0x03, 0x0a, 0x08, 0x47, 0x65, 0x6f, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x65, 0x52, 0x06, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x70, 0x68, 0x65, 0x72, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x68, 0x65, 0x72, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, + 0x70, 0x68, 0x65, 0x72, 0x65, 0x12, 0x34, 0x0a, 0x03, 0x62, 0x6f, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x50, + 0x72, 0x69, 0x73, 0x6d, 0x48, 0x00, 0x52, 0x03, 0x62, 0x6f, 0x78, 0x12, 0x33, 0x0a, 0x07, 0x63, + 0x61, 0x70, 0x73, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, + 0x70, 0x73, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x07, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x65, + 0x12, 0x2a, 0x0a, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x73, 0x68, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x0a, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x48, 0x00, 0x52, 0x0a, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x63, 0x79, + 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x79, + 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x63, 0x79, 0x6c, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x67, 0x65, 0x6f, 0x6d, + 0x65, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x47, 0x65, 0x6f, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x16, 0x70, 0x6f, 0x73, 0x65, 0x5f, - 0x69, 0x6e, 0x5f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x65, 0x49, 0x6e, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x52, 0x13, 0x70, 0x6f, 0x73, 0x65, 0x49, 0x6e, 0x4f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x70, 0x68, 0x79, - 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, - 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x22, 0x76, 0x0a, 0x10, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x67, + 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x08, 0x47, 0x65, 0x6f, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x22, + 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x6f, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x34, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0xbd, + 0x02, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x0f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x16, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x69, 0x6e, + 0x5f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x65, 0x49, 0x6e, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x52, 0x13, 0x70, 0x6f, 0x73, 0x65, 0x49, 0x6e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x70, 0x68, 0x79, 0x73, 0x69, + 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x68, + 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x05, 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, 0x48, 0x01, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x88, + 0x01, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, + 0x09, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x39, + 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x0a, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x22, 0x2d, 0x0a, 0x0e, 0x41, 0x63, 0x74, + 0x75, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, + 0x73, 0x5f, 0x6d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x69, 0x73, 0x4d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, + 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x48, 0x00, 0x52, + 0x0a, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x59, + 0x0a, 0x10, 0x44, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x18, 0x02, 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, - 0x48, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x22, 0x88, 0x01, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x3f, 0x0a, 0x09, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, - 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x63, 0x6c, 0x65, 0x73, - 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, - 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x22, 0x2d, 0x0a, 0x0e, 0x41, - 0x63, 0x74, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, - 0x09, 0x69, 0x73, 0x5f, 0x6d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x69, 0x73, 0x4d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, - 0x0a, 0x0b, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x48, - 0x00, 0x52, 0x0a, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x22, 0x59, 0x0a, 0x10, 0x44, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x18, 0x02, 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, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x44, 0x0a, 0x11, 0x44, - 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 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, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x26, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, + 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x44, 0x0a, 0x11, 0x44, 0x6f, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 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, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x59, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xd5, 0x02, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, - 0x46, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6b, 0x69, 0x6e, - 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x76, 0x0a, 0x17, 0x6d, - 0x65, 0x73, 0x68, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x72, 0x64, 0x66, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, 0x66, - 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x6d, - 0x65, 0x73, 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x70, - 0x61, 0x74, 0x68, 0x1a, 0x5d, 0x0a, 0x19, 0x4d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, - 0x72, 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 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, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x59, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, - 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x51, 0x0a, - 0x15, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, - 0x65, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0x57, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x33, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x33, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x47, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x33, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x1a, 0x4f, 0x0a, 0x0b, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 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, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x68, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, - 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, 0x05, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x08, - 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, - 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x52, - 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x97, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, - 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x67, 0x65, - 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, - 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x26, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 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, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x59, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xd5, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, + 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6b, 0x69, 0x6e, 0x65, 0x6d, + 0x61, 0x74, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x76, 0x0a, 0x17, 0x6d, 0x65, 0x73, + 0x68, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x72, 0x64, 0x66, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b, + 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, 0x66, 0x46, 0x69, + 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x6d, 0x65, 0x73, + 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, + 0x68, 0x1a, 0x5d, 0x0a, 0x19, 0x4d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, + 0x66, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 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, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x59, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, + 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x51, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x57, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x33, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x33, + 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x47, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x33, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x1a, 0x4f, 0x0a, 0x0b, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 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, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x06, 0x63, 0x61, 0x6c, - 0x6c, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2f, 0x0a, 0x06, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 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, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x6a, 0x0a, 0x09, 0x41, 0x75, - 0x64, 0x69, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x24, 0x0a, - 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x7a, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, - 0x65, 0x48, 0x7a, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x22, 0x59, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x22, 0x8b, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x43, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x7a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x48, 0x7a, 0x12, 0x21, 0x0a, 0x0c, - 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2a, - 0x7f, 0x0a, 0x14, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, - 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x49, 0x4e, 0x45, 0x4d, - 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, - 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1e, 0x0a, 0x1a, 0x4b, 0x49, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, - 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x53, 0x56, 0x41, 0x10, 0x01, 0x12, - 0x1f, 0x0a, 0x1b, 0x4b, 0x49, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, - 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x52, 0x44, 0x46, 0x10, 0x02, - 0x3a, 0x61, 0x0a, 0x1a, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, - 0x62, 0x65, 0x61, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x1e, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, - 0x92, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x48, 0x65, - 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, - 0x88, 0x01, 0x01, 0x42, 0x2f, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x5a, 0x19, 0x67, 0x6f, 0x2e, 0x76, 0x69, - 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x72, 0x65, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x08, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x52, 0x65, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x97, + 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, + 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x67, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x06, 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, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, + 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2f, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x73, 0x18, 0x08, 0x20, 0x03, 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, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x6a, 0x0a, 0x09, 0x41, 0x75, 0x64, 0x69, + 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0e, 0x73, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x7a, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x48, + 0x7a, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x22, 0x59, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, + 0x8b, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, + 0x64, 0x65, 0x63, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x5f, 0x68, 0x7a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x48, 0x7a, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, + 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2a, 0x7f, 0x0a, + 0x14, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x49, 0x4e, 0x45, 0x4d, 0x41, 0x54, + 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, + 0x1a, 0x4b, 0x49, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x45, + 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x53, 0x56, 0x41, 0x10, 0x01, 0x12, 0x1f, 0x0a, + 0x1b, 0x4b, 0x49, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x45, + 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x52, 0x44, 0x46, 0x10, 0x02, 0x3a, 0x61, + 0x0a, 0x1a, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, + 0x61, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x1e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x92, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x48, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x2f, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x5a, 0x19, 0x67, 0x6f, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2628,7 +2707,7 @@ func file_common_v1_common_proto_rawDescGZIP() []byte { } var file_common_v1_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_common_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 39) +var file_common_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 40) var file_common_v1_common_proto_goTypes = []any{ (KinematicsFileFormat)(0), // 0: viam.common.v1.KinematicsFileFormat (*ResourceName)(nil), // 1: viam.common.v1.ResourceName @@ -2639,41 +2718,42 @@ var file_common_v1_common_proto_goTypes = []any{ (*Vector3)(nil), // 6: viam.common.v1.Vector3 (*Sphere)(nil), // 7: viam.common.v1.Sphere (*Capsule)(nil), // 8: viam.common.v1.Capsule - (*RectangularPrism)(nil), // 9: viam.common.v1.RectangularPrism - (*Mesh)(nil), // 10: viam.common.v1.Mesh - (*PointCloud)(nil), // 11: viam.common.v1.PointCloud - (*Geometry)(nil), // 12: viam.common.v1.Geometry - (*GeometriesInFrame)(nil), // 13: viam.common.v1.GeometriesInFrame - (*PointCloudObject)(nil), // 14: viam.common.v1.PointCloudObject - (*GeoPoint)(nil), // 15: viam.common.v1.GeoPoint - (*GeoGeometry)(nil), // 16: viam.common.v1.GeoGeometry - (*Transform)(nil), // 17: viam.common.v1.Transform - (*WorldState)(nil), // 18: viam.common.v1.WorldState - (*ActuatorStatus)(nil), // 19: viam.common.v1.ActuatorStatus - (*ResponseMetadata)(nil), // 20: viam.common.v1.ResponseMetadata - (*DoCommandRequest)(nil), // 21: viam.common.v1.DoCommandRequest - (*DoCommandResponse)(nil), // 22: viam.common.v1.DoCommandResponse - (*GetStatusRequest)(nil), // 23: viam.common.v1.GetStatusRequest - (*GetStatusResponse)(nil), // 24: viam.common.v1.GetStatusResponse - (*GetKinematicsRequest)(nil), // 25: viam.common.v1.GetKinematicsRequest - (*GetKinematicsResponse)(nil), // 26: viam.common.v1.GetKinematicsResponse - (*GetGeometriesRequest)(nil), // 27: viam.common.v1.GetGeometriesRequest - (*GetGeometriesResponse)(nil), // 28: viam.common.v1.GetGeometriesResponse - (*Get3DModelsRequest)(nil), // 29: viam.common.v1.Get3DModelsRequest - (*Get3DModelsResponse)(nil), // 30: viam.common.v1.Get3DModelsResponse - (*GetReadingsRequest)(nil), // 31: viam.common.v1.GetReadingsRequest - (*GetReadingsResponse)(nil), // 32: viam.common.v1.GetReadingsResponse - (*LogEntry)(nil), // 33: viam.common.v1.LogEntry - (*AudioInfo)(nil), // 34: viam.common.v1.AudioInfo - (*GetPropertiesRequest)(nil), // 35: viam.common.v1.GetPropertiesRequest - (*GetPropertiesResponse)(nil), // 36: viam.common.v1.GetPropertiesResponse - nil, // 37: viam.common.v1.GetKinematicsResponse.MeshesByUrdfFilepathEntry - nil, // 38: viam.common.v1.Get3DModelsResponse.ModelsEntry - nil, // 39: viam.common.v1.GetReadingsResponse.ReadingsEntry - (*structpb.Struct)(nil), // 40: google.protobuf.Struct - (*timestamppb.Timestamp)(nil), // 41: google.protobuf.Timestamp - (*structpb.Value)(nil), // 42: google.protobuf.Value - (*descriptorpb.MethodOptions)(nil), // 43: google.protobuf.MethodOptions + (*Cylinder)(nil), // 9: viam.common.v1.Cylinder + (*RectangularPrism)(nil), // 10: viam.common.v1.RectangularPrism + (*Mesh)(nil), // 11: viam.common.v1.Mesh + (*PointCloud)(nil), // 12: viam.common.v1.PointCloud + (*Geometry)(nil), // 13: viam.common.v1.Geometry + (*GeometriesInFrame)(nil), // 14: viam.common.v1.GeometriesInFrame + (*PointCloudObject)(nil), // 15: viam.common.v1.PointCloudObject + (*GeoPoint)(nil), // 16: viam.common.v1.GeoPoint + (*GeoGeometry)(nil), // 17: viam.common.v1.GeoGeometry + (*Transform)(nil), // 18: viam.common.v1.Transform + (*WorldState)(nil), // 19: viam.common.v1.WorldState + (*ActuatorStatus)(nil), // 20: viam.common.v1.ActuatorStatus + (*ResponseMetadata)(nil), // 21: viam.common.v1.ResponseMetadata + (*DoCommandRequest)(nil), // 22: viam.common.v1.DoCommandRequest + (*DoCommandResponse)(nil), // 23: viam.common.v1.DoCommandResponse + (*GetStatusRequest)(nil), // 24: viam.common.v1.GetStatusRequest + (*GetStatusResponse)(nil), // 25: viam.common.v1.GetStatusResponse + (*GetKinematicsRequest)(nil), // 26: viam.common.v1.GetKinematicsRequest + (*GetKinematicsResponse)(nil), // 27: viam.common.v1.GetKinematicsResponse + (*GetGeometriesRequest)(nil), // 28: viam.common.v1.GetGeometriesRequest + (*GetGeometriesResponse)(nil), // 29: viam.common.v1.GetGeometriesResponse + (*Get3DModelsRequest)(nil), // 30: viam.common.v1.Get3DModelsRequest + (*Get3DModelsResponse)(nil), // 31: viam.common.v1.Get3DModelsResponse + (*GetReadingsRequest)(nil), // 32: viam.common.v1.GetReadingsRequest + (*GetReadingsResponse)(nil), // 33: viam.common.v1.GetReadingsResponse + (*LogEntry)(nil), // 34: viam.common.v1.LogEntry + (*AudioInfo)(nil), // 35: viam.common.v1.AudioInfo + (*GetPropertiesRequest)(nil), // 36: viam.common.v1.GetPropertiesRequest + (*GetPropertiesResponse)(nil), // 37: viam.common.v1.GetPropertiesResponse + nil, // 38: viam.common.v1.GetKinematicsResponse.MeshesByUrdfFilepathEntry + nil, // 39: viam.common.v1.Get3DModelsResponse.ModelsEntry + nil, // 40: viam.common.v1.GetReadingsResponse.ReadingsEntry + (*structpb.Struct)(nil), // 41: google.protobuf.Struct + (*timestamppb.Timestamp)(nil), // 42: google.protobuf.Timestamp + (*structpb.Value)(nil), // 43: google.protobuf.Value + (*descriptorpb.MethodOptions)(nil), // 44: google.protobuf.MethodOptions } var file_common_v1_common_proto_depIdxs = []int32{ 2, // 0: viam.common.v1.PoseInFrame.pose:type_name -> viam.common.v1.Pose @@ -2681,45 +2761,46 @@ var file_common_v1_common_proto_depIdxs = []int32{ 6, // 2: viam.common.v1.RectangularPrism.dims_mm:type_name -> viam.common.v1.Vector3 2, // 3: viam.common.v1.Geometry.center:type_name -> viam.common.v1.Pose 7, // 4: viam.common.v1.Geometry.sphere:type_name -> viam.common.v1.Sphere - 9, // 5: viam.common.v1.Geometry.box:type_name -> viam.common.v1.RectangularPrism + 10, // 5: viam.common.v1.Geometry.box:type_name -> viam.common.v1.RectangularPrism 8, // 6: viam.common.v1.Geometry.capsule:type_name -> viam.common.v1.Capsule - 10, // 7: viam.common.v1.Geometry.mesh:type_name -> viam.common.v1.Mesh - 11, // 8: viam.common.v1.Geometry.pointcloud:type_name -> viam.common.v1.PointCloud - 12, // 9: viam.common.v1.GeometriesInFrame.geometries:type_name -> viam.common.v1.Geometry - 13, // 10: viam.common.v1.PointCloudObject.geometries:type_name -> viam.common.v1.GeometriesInFrame - 15, // 11: viam.common.v1.GeoGeometry.location:type_name -> viam.common.v1.GeoPoint - 12, // 12: viam.common.v1.GeoGeometry.geometries:type_name -> viam.common.v1.Geometry - 5, // 13: viam.common.v1.Transform.pose_in_observer_frame:type_name -> viam.common.v1.PoseInFrame - 12, // 14: viam.common.v1.Transform.physical_object:type_name -> viam.common.v1.Geometry - 40, // 15: viam.common.v1.Transform.metadata:type_name -> google.protobuf.Struct - 13, // 16: viam.common.v1.WorldState.obstacles:type_name -> viam.common.v1.GeometriesInFrame - 17, // 17: viam.common.v1.WorldState.transforms:type_name -> viam.common.v1.Transform - 41, // 18: viam.common.v1.ResponseMetadata.captured_at:type_name -> google.protobuf.Timestamp - 40, // 19: viam.common.v1.DoCommandRequest.command:type_name -> google.protobuf.Struct - 40, // 20: viam.common.v1.DoCommandResponse.result:type_name -> google.protobuf.Struct - 40, // 21: viam.common.v1.GetStatusResponse.result:type_name -> google.protobuf.Struct - 40, // 22: viam.common.v1.GetKinematicsRequest.extra:type_name -> google.protobuf.Struct - 0, // 23: viam.common.v1.GetKinematicsResponse.format:type_name -> viam.common.v1.KinematicsFileFormat - 37, // 24: viam.common.v1.GetKinematicsResponse.meshes_by_urdf_filepath:type_name -> viam.common.v1.GetKinematicsResponse.MeshesByUrdfFilepathEntry - 40, // 25: viam.common.v1.GetGeometriesRequest.extra:type_name -> google.protobuf.Struct - 12, // 26: viam.common.v1.GetGeometriesResponse.geometries:type_name -> viam.common.v1.Geometry - 40, // 27: viam.common.v1.Get3DModelsRequest.extra:type_name -> google.protobuf.Struct - 38, // 28: viam.common.v1.Get3DModelsResponse.models:type_name -> viam.common.v1.Get3DModelsResponse.ModelsEntry - 40, // 29: viam.common.v1.GetReadingsRequest.extra:type_name -> google.protobuf.Struct - 39, // 30: viam.common.v1.GetReadingsResponse.readings:type_name -> viam.common.v1.GetReadingsResponse.ReadingsEntry - 41, // 31: viam.common.v1.LogEntry.time:type_name -> google.protobuf.Timestamp - 40, // 32: viam.common.v1.LogEntry.caller:type_name -> google.protobuf.Struct - 40, // 33: viam.common.v1.LogEntry.fields:type_name -> google.protobuf.Struct - 40, // 34: viam.common.v1.GetPropertiesRequest.extra:type_name -> google.protobuf.Struct - 10, // 35: viam.common.v1.GetKinematicsResponse.MeshesByUrdfFilepathEntry.value:type_name -> viam.common.v1.Mesh - 10, // 36: viam.common.v1.Get3DModelsResponse.ModelsEntry.value:type_name -> viam.common.v1.Mesh - 42, // 37: viam.common.v1.GetReadingsResponse.ReadingsEntry.value:type_name -> google.protobuf.Value - 43, // 38: viam.common.v1.safety_heartbeat_monitored:extendee -> google.protobuf.MethodOptions - 39, // [39:39] is the sub-list for method output_type - 39, // [39:39] is the sub-list for method input_type - 39, // [39:39] is the sub-list for extension type_name - 38, // [38:39] is the sub-list for extension extendee - 0, // [0:38] is the sub-list for field type_name + 11, // 7: viam.common.v1.Geometry.mesh:type_name -> viam.common.v1.Mesh + 12, // 8: viam.common.v1.Geometry.pointcloud:type_name -> viam.common.v1.PointCloud + 9, // 9: viam.common.v1.Geometry.cylinder:type_name -> viam.common.v1.Cylinder + 13, // 10: viam.common.v1.GeometriesInFrame.geometries:type_name -> viam.common.v1.Geometry + 14, // 11: viam.common.v1.PointCloudObject.geometries:type_name -> viam.common.v1.GeometriesInFrame + 16, // 12: viam.common.v1.GeoGeometry.location:type_name -> viam.common.v1.GeoPoint + 13, // 13: viam.common.v1.GeoGeometry.geometries:type_name -> viam.common.v1.Geometry + 5, // 14: viam.common.v1.Transform.pose_in_observer_frame:type_name -> viam.common.v1.PoseInFrame + 13, // 15: viam.common.v1.Transform.physical_object:type_name -> viam.common.v1.Geometry + 41, // 16: viam.common.v1.Transform.metadata:type_name -> google.protobuf.Struct + 14, // 17: viam.common.v1.WorldState.obstacles:type_name -> viam.common.v1.GeometriesInFrame + 18, // 18: viam.common.v1.WorldState.transforms:type_name -> viam.common.v1.Transform + 42, // 19: viam.common.v1.ResponseMetadata.captured_at:type_name -> google.protobuf.Timestamp + 41, // 20: viam.common.v1.DoCommandRequest.command:type_name -> google.protobuf.Struct + 41, // 21: viam.common.v1.DoCommandResponse.result:type_name -> google.protobuf.Struct + 41, // 22: viam.common.v1.GetStatusResponse.result:type_name -> google.protobuf.Struct + 41, // 23: viam.common.v1.GetKinematicsRequest.extra:type_name -> google.protobuf.Struct + 0, // 24: viam.common.v1.GetKinematicsResponse.format:type_name -> viam.common.v1.KinematicsFileFormat + 38, // 25: viam.common.v1.GetKinematicsResponse.meshes_by_urdf_filepath:type_name -> viam.common.v1.GetKinematicsResponse.MeshesByUrdfFilepathEntry + 41, // 26: viam.common.v1.GetGeometriesRequest.extra:type_name -> google.protobuf.Struct + 13, // 27: viam.common.v1.GetGeometriesResponse.geometries:type_name -> viam.common.v1.Geometry + 41, // 28: viam.common.v1.Get3DModelsRequest.extra:type_name -> google.protobuf.Struct + 39, // 29: viam.common.v1.Get3DModelsResponse.models:type_name -> viam.common.v1.Get3DModelsResponse.ModelsEntry + 41, // 30: viam.common.v1.GetReadingsRequest.extra:type_name -> google.protobuf.Struct + 40, // 31: viam.common.v1.GetReadingsResponse.readings:type_name -> viam.common.v1.GetReadingsResponse.ReadingsEntry + 42, // 32: viam.common.v1.LogEntry.time:type_name -> google.protobuf.Timestamp + 41, // 33: viam.common.v1.LogEntry.caller:type_name -> google.protobuf.Struct + 41, // 34: viam.common.v1.LogEntry.fields:type_name -> google.protobuf.Struct + 41, // 35: viam.common.v1.GetPropertiesRequest.extra:type_name -> google.protobuf.Struct + 11, // 36: viam.common.v1.GetKinematicsResponse.MeshesByUrdfFilepathEntry.value:type_name -> viam.common.v1.Mesh + 11, // 37: viam.common.v1.Get3DModelsResponse.ModelsEntry.value:type_name -> viam.common.v1.Mesh + 43, // 38: viam.common.v1.GetReadingsResponse.ReadingsEntry.value:type_name -> google.protobuf.Value + 44, // 39: viam.common.v1.safety_heartbeat_monitored:extendee -> google.protobuf.MethodOptions + 40, // [40:40] is the sub-list for method output_type + 40, // [40:40] is the sub-list for method input_type + 40, // [40:40] is the sub-list for extension type_name + 39, // [39:40] is the sub-list for extension extendee + 0, // [0:39] is the sub-list for field type_name } func init() { file_common_v1_common_proto_init() } @@ -2728,22 +2809,23 @@ func file_common_v1_common_proto_init() { return } file_common_v1_common_proto_msgTypes[4].OneofWrappers = []any{} - file_common_v1_common_proto_msgTypes[11].OneofWrappers = []any{ + file_common_v1_common_proto_msgTypes[12].OneofWrappers = []any{ (*Geometry_Sphere)(nil), (*Geometry_Box)(nil), (*Geometry_Capsule)(nil), (*Geometry_Mesh)(nil), (*Geometry_Pointcloud)(nil), + (*Geometry_Cylinder)(nil), } - file_common_v1_common_proto_msgTypes[16].OneofWrappers = []any{} - file_common_v1_common_proto_msgTypes[19].OneofWrappers = []any{} + file_common_v1_common_proto_msgTypes[17].OneofWrappers = []any{} + file_common_v1_common_proto_msgTypes[20].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_v1_common_proto_rawDesc, NumEnums: 1, - NumMessages: 39, + NumMessages: 40, NumExtensions: 1, NumServices: 0, }, diff --git a/proto/viam/common/v1/common.proto b/proto/viam/common/v1/common.proto index 9a6b380201..df549a9d1c 100644 --- a/proto/viam/common/v1/common.proto +++ b/proto/viam/common/v1/common.proto @@ -85,6 +85,15 @@ message Capsule { double length_mm = 2; } +// Cylinder is a finite right circular cylinder. Its central axis is the local +// frame's Z axis and its pose is at its center. Unlike a capsule, a cylinder has +// flat end caps and may be arbitrarily flat (no length >= 2*radius constraint). +message Cylinder { + double radius_mm = 1; + // Total height, cap to cap. + double height_mm = 2; +} + // RectangularPrism contains a Vector3 field corresponding to the X, Y, Z dimensions of the prism in mms // These dimensions are with respect to the referenceframe in which the RectangularPrism is defined message RectangularPrism { @@ -113,6 +122,7 @@ message Geometry { Capsule capsule = 5; Mesh mesh = 6; PointCloud pointcloud = 7; + Cylinder cylinder = 8; } // Label of the geometry. If none supplied, will be an empty string. string label = 4; From a66788d2323f1bb7ac997a164881182aff98f747 Mon Sep 17 00:00:00 2001 From: Brandon Shrewsbury Date: Thu, 27 Aug 2026 09:51:08 -0600 Subject: [PATCH 2/3] common: carry the cylinder's open/closed state RDK's Cylinder has a `capped` flag: when false the end caps are omitted, producing an open tube -- a cylindrical surface with no interior volume, which collides only when something crosses its wall. It models open containers a robot must reach into. Without a field for it, that state is lost on the wire and every open tube silently decodes as a solid. Phrased as `uncapped` rather than `capped` so the proto3 default (false) is the solid cylinder. That is both the common case and the conservative one: treating an open tube as solid over-approximates, while treating a solid as open would let a caller plan a path straight through it. A consumer that ignores the field entirely still gets the safe interpretation. Co-Authored-By: Claude Opus 5 (1M context) --- common/v1/common.pb.go | 502 ++++++++++++++++-------------- proto/viam/common/v1/common.proto | 9 + 2 files changed, 269 insertions(+), 242 deletions(-) diff --git a/common/v1/common.pb.go b/common/v1/common.pb.go index 2c23b31fde..376c82be68 100644 --- a/common/v1/common.pb.go +++ b/common/v1/common.pb.go @@ -649,6 +649,15 @@ type Cylinder struct { RadiusMm float64 `protobuf:"fixed64,1,opt,name=radius_mm,json=radiusMm,proto3" json:"radius_mm,omitempty"` // Total height, cap to cap. HeightMm float64 `protobuf:"fixed64,2,opt,name=height_mm,json=heightMm,proto3" json:"height_mm,omitempty"` + // When true the flat end caps are omitted, producing an open tube: a + // cylindrical surface with no interior volume, which collides only when + // something crosses its wall. Models open containers a robot reaches into. + // + // Phrased negatively so the proto3 default (false) is the solid cylinder. + // That is the common case, and it is the conservative one: treating an open + // tube as solid over-approximates, whereas treating a solid as open would let + // a caller plan a path straight through it. + Uncapped bool `protobuf:"varint,3,opt,name=uncapped,proto3" json:"uncapped,omitempty"` } func (x *Cylinder) Reset() { @@ -695,6 +704,13 @@ func (x *Cylinder) GetHeightMm() float64 { return 0 } +func (x *Cylinder) GetUncapped() bool { + if x != nil { + return x.Uncapped + } + return false +} + // RectangularPrism contains a Vector3 field corresponding to the X, Y, Z dimensions of the prism in mms // These dimensions are with respect to the referenceframe in which the RectangularPrism is defined type RectangularPrism struct { @@ -2438,260 +2454,262 @@ var file_common_v1_common_proto_rawDesc = []byte{ 0x73, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x5f, 0x6d, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x4d, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6d, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x6d, 0x22, 0x44, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x6d, 0x22, 0x60, 0x0a, 0x08, 0x43, 0x79, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x5f, 0x6d, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x4d, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6d, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x4d, 0x6d, 0x22, 0x44, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x67, 0x75, - 0x6c, 0x61, 0x72, 0x50, 0x72, 0x69, 0x73, 0x6d, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x69, 0x6d, 0x73, - 0x5f, 0x6d, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x33, 0x52, 0x06, 0x64, 0x69, 0x6d, 0x73, 0x4d, 0x6d, 0x22, 0x3d, 0x0a, 0x04, 0x4d, 0x65, - 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x22, 0x2d, 0x0a, 0x0a, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x22, 0x9e, 0x03, 0x0a, 0x08, 0x47, 0x65, 0x6f, - 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x65, 0x52, 0x06, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x70, 0x68, 0x65, 0x72, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x68, 0x65, 0x72, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, - 0x70, 0x68, 0x65, 0x72, 0x65, 0x12, 0x34, 0x0a, 0x03, 0x62, 0x6f, 0x78, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x50, - 0x72, 0x69, 0x73, 0x6d, 0x48, 0x00, 0x52, 0x03, 0x62, 0x6f, 0x78, 0x12, 0x33, 0x0a, 0x07, 0x63, - 0x61, 0x70, 0x73, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, - 0x70, 0x73, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x07, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x65, - 0x12, 0x2a, 0x0a, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x68, 0x74, 0x4d, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x63, 0x61, 0x70, 0x70, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x75, 0x6e, 0x63, 0x61, 0x70, 0x70, 0x65, 0x64, + 0x22, 0x44, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x50, + 0x72, 0x69, 0x73, 0x6d, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x69, 0x6d, 0x73, 0x5f, 0x6d, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x33, 0x52, 0x06, + 0x64, 0x69, 0x6d, 0x73, 0x4d, 0x6d, 0x22, 0x3d, 0x0a, 0x04, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x04, 0x6d, 0x65, 0x73, 0x68, 0x22, 0x2d, 0x0a, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x22, 0x9e, 0x03, 0x0a, 0x08, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x65, 0x52, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x30, 0x0a, 0x06, 0x73, 0x70, 0x68, 0x65, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x70, 0x68, 0x65, 0x72, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x70, 0x68, 0x65, 0x72, + 0x65, 0x12, 0x34, 0x0a, 0x03, 0x62, 0x6f, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x65, 0x73, 0x68, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x0a, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x48, 0x00, 0x52, 0x0a, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x63, 0x79, - 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x79, - 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x63, 0x79, 0x6c, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x67, 0x65, 0x6f, 0x6d, - 0x65, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x47, 0x65, 0x6f, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x27, - 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, - 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, - 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x22, 0x76, 0x0a, 0x10, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x67, - 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x08, 0x47, 0x65, 0x6f, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x22, - 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x6f, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x34, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0xbd, - 0x02, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x0f, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x16, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x69, 0x6e, - 0x5f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x65, 0x49, 0x6e, 0x46, 0x72, 0x61, - 0x6d, 0x65, 0x52, 0x13, 0x70, 0x6f, 0x73, 0x65, 0x49, 0x6e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x70, 0x68, 0x79, 0x73, 0x69, - 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x68, - 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x05, 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, 0x48, 0x01, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x88, - 0x01, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, - 0x09, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, - 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x39, - 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x0a, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x22, 0x2d, 0x0a, 0x0e, 0x41, 0x63, 0x74, - 0x75, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, - 0x73, 0x5f, 0x6d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x69, 0x73, 0x4d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, - 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x48, 0x00, 0x52, - 0x0a, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x59, - 0x0a, 0x10, 0x44, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x52, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x50, 0x72, 0x69, 0x73, 0x6d, + 0x48, 0x00, 0x52, 0x03, 0x62, 0x6f, 0x78, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x73, 0x75, + 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x73, 0x75, 0x6c, + 0x65, 0x48, 0x00, 0x52, 0x07, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x04, + 0x6d, 0x65, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x68, + 0x48, 0x00, 0x52, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x63, 0x79, 0x6c, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x79, 0x6c, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x63, 0x79, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x76, 0x0a, + 0x10, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x08, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x22, 0x7d, 0x0a, 0x0b, 0x47, + 0x65, 0x6f, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0xbd, 0x02, 0x0a, 0x09, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x12, 0x50, 0x0a, 0x16, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x6f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x65, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x13, + 0x70, 0x6f, 0x73, 0x65, 0x49, 0x6e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, + 0x61, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, + 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 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, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x68, + 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x88, 0x01, 0x0a, 0x0a, 0x57, + 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x6f, 0x62, 0x73, + 0x74, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, + 0x09, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x22, 0x2d, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x75, 0x61, 0x74, 0x6f, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6d, 0x6f, + 0x76, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4d, 0x6f, + 0x76, 0x69, 0x6e, 0x67, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x61, 0x70, 0x74, + 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x61, 0x70, + 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, + 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x59, 0x0a, 0x10, 0x44, 0x6f, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 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, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x44, 0x0a, 0x11, 0x44, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 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, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x26, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 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, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x59, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, + 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, 0x05, 0x65, + 0x78, 0x74, 0x72, 0x61, 0x22, 0xd5, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x65, + 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, + 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, + 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, + 0x6b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, + 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x76, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x5f, + 0x62, 0x79, 0x5f, 0x75, 0x72, 0x64, 0x66, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x65, 0x6d, + 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, + 0x73, 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, + 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x6d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x42, + 0x79, 0x55, 0x72, 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x5d, 0x0a, + 0x19, 0x4d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, 0x66, 0x46, 0x69, 0x6c, + 0x65, 0x70, 0x61, 0x74, 0x68, 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, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, + 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x59, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x18, 0x63, 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, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x44, 0x0a, 0x11, 0x44, 0x6f, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, - 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x51, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x47, 0x65, + 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x57, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x33, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x33, 0x44, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x33, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x73, 0x1a, 0x4f, 0x0a, 0x0b, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 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, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x26, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xb9, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x72, 0x65, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x97, 0x02, 0x0a, 0x08, 0x4c, + 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x06, + 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x06, 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, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x59, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xd5, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, - 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, - 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6b, 0x69, 0x6e, 0x65, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x76, 0x0a, 0x17, 0x6d, 0x65, 0x73, - 0x68, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x72, 0x64, 0x66, 0x5f, 0x66, 0x69, 0x6c, 0x65, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b, - 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, 0x66, 0x46, 0x69, - 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x6d, 0x65, 0x73, - 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, - 0x68, 0x1a, 0x5d, 0x0a, 0x19, 0x4d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x42, 0x79, 0x55, 0x72, 0x64, - 0x66, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 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, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x59, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x12, 0x2f, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x08, 0x20, + 0x03, 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, 0x06, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x22, 0x6a, 0x0a, 0x09, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x7a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x48, 0x7a, 0x12, 0x21, 0x0a, + 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x22, 0x59, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x51, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x57, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x33, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x33, - 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x47, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x33, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x1a, 0x4f, 0x0a, 0x0b, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 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, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x12, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x72, 0x65, - 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x76, - 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x08, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x52, 0x65, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x97, - 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, - 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x67, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x06, 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, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2f, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x18, 0x08, 0x20, 0x03, 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, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x6a, 0x0a, 0x09, 0x41, 0x75, 0x64, 0x69, - 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0e, 0x73, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x7a, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x48, - 0x7a, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x73, 0x22, 0x59, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x63, 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, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, - 0x8b, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, - 0x64, 0x65, 0x63, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, - 0x61, 0x74, 0x65, 0x5f, 0x68, 0x7a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x48, 0x7a, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, - 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2a, 0x7f, 0x0a, - 0x14, 0x4b, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x49, 0x4e, 0x45, 0x4d, 0x41, 0x54, - 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, - 0x1a, 0x4b, 0x49, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x45, - 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x53, 0x56, 0x41, 0x10, 0x01, 0x12, 0x1f, 0x0a, - 0x1b, 0x4b, 0x49, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x45, - 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x52, 0x44, 0x46, 0x10, 0x02, 0x3a, 0x61, - 0x0a, 0x1a, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x1e, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x92, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x48, 0x65, 0x61, 0x72, - 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x88, 0x01, - 0x01, 0x42, 0x2f, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x5a, 0x19, 0x67, 0x6f, 0x2e, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, - 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x8b, 0x01, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x73, + 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, + 0x68, 0x7a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x52, 0x61, 0x74, 0x65, 0x48, 0x7a, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, + 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2a, 0x7f, 0x0a, 0x14, 0x4b, 0x69, 0x6e, + 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x49, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, + 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x49, 0x4e, + 0x45, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, + 0x4d, 0x41, 0x54, 0x5f, 0x53, 0x56, 0x41, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x49, 0x4e, + 0x45, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, + 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x52, 0x44, 0x46, 0x10, 0x02, 0x3a, 0x61, 0x0a, 0x1a, 0x73, 0x61, + 0x66, 0x65, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x92, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x18, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x2f, 0x0a, + 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x5a, 0x19, 0x67, 0x6f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/viam/common/v1/common.proto b/proto/viam/common/v1/common.proto index df549a9d1c..33992b75f7 100644 --- a/proto/viam/common/v1/common.proto +++ b/proto/viam/common/v1/common.proto @@ -92,6 +92,15 @@ message Cylinder { double radius_mm = 1; // Total height, cap to cap. double height_mm = 2; + // When true the flat end caps are omitted, producing an open tube: a + // cylindrical surface with no interior volume, which collides only when + // something crosses its wall. Models open containers a robot reaches into. + // + // Phrased negatively so the proto3 default (false) is the solid cylinder. + // That is the common case, and it is the conservative one: treating an open + // tube as solid over-approximates, whereas treating a solid as open would let + // a caller plan a path straight through it. + bool uncapped = 3; } // RectangularPrism contains a Vector3 field corresponding to the X, Y, Z dimensions of the prism in mms From 734cfda49d3c53fbe138260512ec5da7f2acda2d Mon Sep 17 00:00:00 2001 From: Brandon Shrewsbury Date: Thu, 27 Aug 2026 10:15:25 -0600 Subject: [PATCH 3/3] common: drop the safety claim from the uncapped comment The comment argued the solid default was the conservative reading: an open tube read as solid over-approximates, a solid read as open would let a caller plan straight through it. Adversarial review checked that against RDK and it does not hold. Cylinder collision there goes through the tessellated mesh, which is a surface. A point fully inside a "solid" cylinder does not register a collision, where the same point inside a box, sphere or capsule does -- verified directly. So capping adds two zero-thickness cap discs rather than filling the interior, and the interior is equally invisible either way. There is also a path where over-approximating is the dangerous direction: motionplan whitelists pairs found in collision at the start pose for the whole plan, so a phantom cap can whitelist a real obstacle. The default itself is still right -- it is the common case, what NewCylinder builds, and what a cylinder means in URDF and SDF. Only the justification was wrong, and proto field comments are permanent, so it should not ship claiming a guarantee it cannot back. Co-Authored-By: Claude Opus 5 (1M context) --- common/v1/common.pb.go | 16 ++++++++++------ proto/viam/common/v1/common.proto | 16 ++++++++++------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/common/v1/common.pb.go b/common/v1/common.pb.go index 50cd910c97..2cc8346698 100644 --- a/common/v1/common.pb.go +++ b/common/v1/common.pb.go @@ -650,13 +650,17 @@ type Cylinder struct { // Total height, cap to cap. HeightMm float64 `protobuf:"fixed64,2,opt,name=height_mm,json=heightMm,proto3" json:"height_mm,omitempty"` // When true the flat end caps are omitted, producing an open tube: a - // cylindrical surface with no interior volume, which collides only when - // something crosses its wall. Models open containers a robot reaches into. + // cylindrical surface, which models open containers a robot reaches into. // - // Phrased negatively so the proto3 default (false) is the solid cylinder. - // That is the common case, and it is the conservative one: treating an open - // tube as solid over-approximates, whereas treating a solid as open would let - // a caller plan a path straight through it. + // Phrased negatively so the proto3 default (false) is the solid cylinder, + // which is the overwhelmingly common case and matches what a cylinder means + // in URDF and SDF. A consumer that ignores this field reads every cylinder as + // solid. + // + // This is a defaulting convention, not a safety guarantee: whether solid or + // open is the conservative reading depends on the consumer's collision + // semantics, so producers should set the field rather than rely on the + // default carrying meaning. Uncapped bool `protobuf:"varint,3,opt,name=uncapped,proto3" json:"uncapped,omitempty"` } diff --git a/proto/viam/common/v1/common.proto b/proto/viam/common/v1/common.proto index dd5b8f6646..a82a817991 100644 --- a/proto/viam/common/v1/common.proto +++ b/proto/viam/common/v1/common.proto @@ -93,13 +93,17 @@ message Cylinder { // Total height, cap to cap. double height_mm = 2; // When true the flat end caps are omitted, producing an open tube: a - // cylindrical surface with no interior volume, which collides only when - // something crosses its wall. Models open containers a robot reaches into. + // cylindrical surface, which models open containers a robot reaches into. // - // Phrased negatively so the proto3 default (false) is the solid cylinder. - // That is the common case, and it is the conservative one: treating an open - // tube as solid over-approximates, whereas treating a solid as open would let - // a caller plan a path straight through it. + // Phrased negatively so the proto3 default (false) is the solid cylinder, + // which is the overwhelmingly common case and matches what a cylinder means + // in URDF and SDF. A consumer that ignores this field reads every cylinder as + // solid. + // + // This is a defaulting convention, not a safety guarantee: whether solid or + // open is the conservative reading depends on the consumer's collision + // semantics, so producers should set the field rather than rely on the + // default carrying meaning. bool uncapped = 3; }