From a69b281127fef50049771c75284f03f24a1d1fae Mon Sep 17 00:00:00 2001 From: Masaaki Goshima Date: Mon, 20 Jan 2025 14:45:44 +0900 Subject: [PATCH] supports creating enum value as a gRPC Federation's variable (#257) --- .../02_simple/federation/federation.pb.go | 471 ++++--- .../federation_grpc_federation.pb.go | 138 +- _examples/02_simple/main_test.go | 1 + .../proto/federation/federation.proto | 2 + .../grpc/federation/federation.pb.go | 1169 +++++++++------- .../05_async/grpc/federation/federation.pb.go | 1169 +++++++++------- .../06_alias/grpc/federation/federation.pb.go | 1169 +++++++++------- .../grpc/federation/federation.pb.go | 1169 +++++++++------- .../10_oneof/grpc/federation/federation.pb.go | 1169 +++++++++------- .../grpc/federation/federation.pb.go | 1169 +++++++++------- _examples/13_map/federation/federation.pb.go | 282 +++- .../federation_grpc_federation.pb.go | 199 ++- _examples/13_map/main_test.go | 4 + .../13_map/proto/federation/federation.proto | 31 + .../grpc/federation/federation.pb.go | 1169 +++++++++------- .../grpc/federation/federation.pb.go | 1169 +++++++++------- .../grpc/federation/generator.pb.go | 1246 +++++++++-------- docs/references.md | 51 + generator/code_generator.go | 50 +- generator/templates/eval.go.tmpl | 33 + generator/testdata/expected_map.go | 191 ++- .../testdata/expected_simple_aggregation.go | 94 +- grpc/federation/federation.pb.go | 1152 ++++++++------- grpc/federation/generator/decode.go | 29 + grpc/federation/generator/encode.go | 18 + .../generator/plugin/generator.pb.go | 1219 ++++++++-------- internal/testutil/builder.go | 39 + proto/grpc/federation/federation.proto | 16 + proto/grpc/federation/generator.proto | 7 + resolver/def.go | 2 + resolver/enum.go | 18 +- resolver/format.go | 21 + resolver/format_test.go | 7 + resolver/message.go | 11 + resolver/resolver.go | 144 ++ resolver/resolver_test.go | 90 ++ resolver/types.go | 7 + source/clone.go | 12 + source/file.go | 66 +- source/location.go | 8 + source/location_builder.go | 66 + testdata/map.proto | 25 + testdata/simple_aggregation.proto | 2 + .../testdata/invalid_enum_conversion.proto | 62 + validator/validator_test.go | 29 +- 45 files changed, 8924 insertions(+), 6271 deletions(-) create mode 100644 validator/testdata/invalid_enum_conversion.proto diff --git a/_examples/02_simple/federation/federation.pb.go b/_examples/02_simple/federation/federation.pb.go index 21eeb436..f0bb2497 100644 --- a/_examples/02_simple/federation/federation.pb.go +++ b/_examples/02_simple/federation/federation.pb.go @@ -208,6 +208,7 @@ type GetPostResponse struct { StringsJoin string `protobuf:"bytes,32,opt,name=strings_join,json=stringsJoin,proto3" json:"strings_join,omitempty"` ParseFloat float64 `protobuf:"fixed64,33,opt,name=parse_float,json=parseFloat,proto3" json:"parse_float,omitempty"` UrlUserName string `protobuf:"bytes,34,opt,name=url_user_name,json=urlUserName,proto3" json:"url_user_name,omitempty"` + EnumValue Item_ItemType `protobuf:"varint,35,opt,name=enum_value,json=enumValue,proto3,enum=federation.Item_ItemType" json:"enum_value,omitempty"` } func (x *GetPostResponse) Reset() { @@ -480,6 +481,13 @@ func (x *GetPostResponse) GetUrlUserName() string { return "" } +func (x *GetPostResponse) GetEnumValue() Item_ItemType { + if x != nil { + return x.EnumValue + } + return Item_ITEM_TYPE_UNSPECIFIED +} + type A struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1184,7 +1192,7 @@ var file_federation_federation_proto_rawDesc = []byte{ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x20, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xdf, 0x1f, 0x0a, 0x0f, 0x47, 0x65, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe1, 0x20, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x09, 0x9a, @@ -1369,216 +1377,224 @@ var file_federation_federation_proto_rawDesc = []byte{ 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0x9a, 0x4a, 0x1b, 0x12, 0x19, 0x75, 0x72, 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x28, 0x29, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x29, - 0x52, 0x0b, 0x75, 0x72, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, - 0x0d, 0x4d, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x8e, 0x08, 0x9a, 0x4a, 0x8a, - 0x08, 0x0a, 0x1a, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x6a, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x73, - 0x74, 0x12, 0x0a, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x04, 0x24, 0x2e, 0x69, 0x64, 0x0a, 0x3d, 0x0a, - 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5a, 0x2d, 0x67, + 0x52, 0x0b, 0x75, 0x72, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, + 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x19, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0x9a, 0x4a, + 0x03, 0x12, 0x01, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, + 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xce, 0x08, 0x9a, + 0x4a, 0xca, 0x08, 0x0a, 0x1a, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x6a, 0x12, 0x0a, 0x04, 0x50, + 0x6f, 0x73, 0x74, 0x12, 0x0a, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x04, 0x24, 0x2e, 0x69, 0x64, 0x0a, + 0x3d, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5a, + 0x2d, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6a, 0x6f, 0x69, 0x6e, 0x28, 0x5b, 0x27, + 0x31, 0x27, 0x2c, 0x20, 0x27, 0x32, 0x27, 0x5d, 0x2c, 0x20, 0x27, 0x2e, 0x27, 0x29, 0x0a, 0x43, + 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5a, 0x34, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6a, 0x6f, 0x69, 0x6e, 0x28, 0x5b, 0x27, 0x31, 0x27, - 0x2c, 0x20, 0x27, 0x32, 0x27, 0x5d, 0x2c, 0x20, 0x27, 0x2e, 0x27, 0x29, 0x0a, 0x43, 0x0a, 0x0b, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5a, 0x34, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x2c, 0x20, 0x36, 0x34, - 0x29, 0x0a, 0x4f, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x5a, 0x48, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x75, 0x72, 0x6c, 0x2e, 0x70, 0x61, - 0x72, 0x73, 0x65, 0x28, 0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x74, 0x65, 0x73, - 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x40, - 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x61, 0x74, 0x68, - 0x27, 0x29, 0x0a, 0x59, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x5a, 0x51, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x64, 0x61, 0x74, 0x65, 0x28, 0x32, 0x30, 0x32, 0x33, 0x2c, 0x20, 0x31, 0x32, 0x2c, 0x20, - 0x32, 0x35, 0x2c, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x31, 0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, - 0x2c, 0x20, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x55, 0x54, 0x43, 0x28, 0x29, 0x29, 0x0a, 0x3a, 0x0a, - 0x0b, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5a, 0x2b, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x61, - 0x6e, 0x64, 0x2e, 0x6e, 0x65, 0x77, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x28, 0x64, 0x61, 0x74, - 0x65, 0x2e, 0x75, 0x6e, 0x69, 0x78, 0x28, 0x29, 0x29, 0x0a, 0x33, 0x0a, 0x0a, 0x66, 0x69, 0x78, - 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x5a, 0x25, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x61, 0x6e, 0x64, 0x2e, 0x6e, 0x65, - 0x77, 0x28, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x29, 0x0a, 0x3b, - 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x5a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x75, 0x75, 0x69, 0x64, 0x2e, 0x6e, 0x65, - 0x77, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x61, 0x6e, 0x64, 0x28, - 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x29, 0x0a, 0x36, 0x0a, 0x03, 0x6c, - 0x6f, 0x63, 0x5a, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x27, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6b, 0x79, - 0x6f, 0x27, 0x29, 0x0a, 0x45, 0x0a, 0x07, 0x6a, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x3a, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46, 0x6c, 0x6f, 0x61, + 0x74, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x2c, 0x20, + 0x36, 0x34, 0x29, 0x0a, 0x4f, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x5a, 0x48, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x75, 0x72, 0x6c, 0x2e, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x28, 0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x74, + 0x65, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x40, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x61, + 0x74, 0x68, 0x27, 0x29, 0x0a, 0x59, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x5a, 0x51, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x65, 0x28, 0x32, 0x30, 0x32, 0x33, 0x2c, 0x20, 0x31, 0x32, + 0x2c, 0x20, 0x32, 0x35, 0x2c, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x31, 0x30, 0x2c, 0x20, 0x35, 0x2c, + 0x20, 0x30, 0x2c, 0x20, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x55, 0x54, 0x43, 0x28, 0x29, 0x29, 0x0a, + 0x3a, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5a, 0x2b, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x65, 0x28, 0x32, 0x30, 0x32, 0x33, 0x2c, 0x20, - 0x31, 0x32, 0x2c, 0x20, 0x32, 0x35, 0x2c, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x31, 0x30, 0x2c, 0x20, - 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x6c, 0x6f, 0x63, 0x29, 0x0a, 0x38, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x31, 0x5a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, - 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x5b, 0x27, 0x6b, 0x65, 0x79, 0x31, 0x27, - 0x5d, 0x5b, 0x30, 0x5d, 0x0a, 0x08, 0x0a, 0x01, 0x61, 0x6a, 0x03, 0x0a, 0x01, 0x41, 0x0a, 0x2b, - 0x0a, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5a, - 0x1a, 0x5b, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x5d, 0x2e, 0x73, 0x6f, - 0x72, 0x74, 0x41, 0x73, 0x63, 0x28, 0x76, 0x2c, 0x20, 0x76, 0x29, 0x0a, 0x95, 0x01, 0x0a, 0x0c, - 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x5a, 0x84, 0x01, 0x5b, - 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7b, 0x61, 0x64, 0x64, 0x72, 0x31, 0x3a, 0x27, 0x61, 0x27, 0x7d, - 0x7d, 0x2c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x7b, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7b, 0x61, 0x64, 0x64, 0x72, 0x31, 0x3a, 0x27, - 0x62, 0x27, 0x7d, 0x7d, 0x5d, 0x2e, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x28, 0x76, - 0x2c, 0x20, 0x76, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x64, 0x64, - 0x72, 0x31, 0x29, 0x0a, 0x25, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x5a, 0x18, 0x7b, 0x31, 0x3a, 0x20, 0x27, 0x61, 0x27, 0x2c, 0x20, 0x32, 0x3a, 0x20, 0x27, 0x62, - 0x27, 0x2c, 0x20, 0x33, 0x3a, 0x20, 0x27, 0x63, 0x27, 0x7d, 0x0a, 0x12, 0x0a, 0x0a, 0x6e, 0x75, - 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5a, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x0a, 0x4b, - 0x5a, 0x49, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x28, 0x27, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x20, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, - 0x67, 0x27, 0x2c, 0x20, 0x7b, 0x27, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x27, 0x3a, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x7d, 0x29, 0x22, 0xdf, 0x03, 0x0a, 0x01, - 0x41, 0x12, 0x25, 0x0a, 0x01, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x2e, 0x42, 0x42, 0x06, 0x9a, - 0x4a, 0x03, 0x12, 0x01, 0x62, 0x52, 0x01, 0x62, 0x1a, 0xa1, 0x03, 0x0a, 0x01, 0x42, 0x12, 0x2d, - 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x2e, 0x42, 0x2e, 0x43, 0x42, 0x08, - 0x9a, 0x4a, 0x05, 0x12, 0x03, 0x66, 0x6f, 0x6f, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x2d, 0x0a, - 0x03, 0x62, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x2e, 0x42, 0x2e, 0x43, 0x42, 0x08, 0x9a, - 0x4a, 0x05, 0x12, 0x03, 0x62, 0x61, 0x72, 0x52, 0x03, 0x62, 0x61, 0x72, 0x1a, 0x24, 0x0a, 0x01, - 0x43, 0x12, 0x1f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0b, 0x9a, 0x4a, 0x08, 0x12, 0x06, 0x24, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x3a, 0x97, 0x02, 0x9a, 0x4a, 0x93, 0x02, 0x0a, 0x1d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, - 0x6a, 0x16, 0x0a, 0x05, 0x41, 0x2e, 0x42, 0x2e, 0x43, 0x12, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x05, 0x27, 0x66, 0x6f, 0x6f, 0x27, 0x0a, 0x1d, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x6a, - 0x16, 0x0a, 0x05, 0x41, 0x2e, 0x42, 0x2e, 0x43, 0x12, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x05, 0x27, 0x62, 0x61, 0x72, 0x27, 0x0a, 0x89, 0x01, 0x12, 0x11, 0x66, 0x6f, 0x6f, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x66, 0x6f, 0x6f, 0x27, 0x5a, 0x74, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6c, - 0x6f, 0x67, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x28, 0x27, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x67, 0x27, 0x2c, - 0x20, 0x7b, 0x27, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x27, 0x3a, 0x20, 0x5b, 0x66, - 0x6f, 0x6f, 0x2c, 0x20, 0x62, 0x61, 0x72, 0x5d, 0x2c, 0x20, 0x27, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x27, 0x3a, 0x20, 0x7b, 0x27, 0x66, 0x6f, 0x6f, 0x27, 0x3a, - 0x20, 0x66, 0x6f, 0x6f, 0x2c, 0x20, 0x27, 0x62, 0x61, 0x72, 0x27, 0x3a, 0x20, 0x62, 0x61, 0x72, - 0x7d, 0x7d, 0x29, 0x0a, 0x47, 0x5a, 0x45, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x61, 0x64, 0x64, 0x28, 0x7b, - 0x27, 0x66, 0x6f, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x27, 0x3a, 0x20, 0x66, 0x6f, 0x6f, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x27, 0x62, 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x27, - 0x3a, 0x20, 0x62, 0x61, 0x72, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x29, 0x3a, 0x0f, 0x9a, 0x4a, - 0x0c, 0x0a, 0x0a, 0x0a, 0x01, 0x62, 0x6a, 0x05, 0x0a, 0x03, 0x41, 0x2e, 0x42, 0x22, 0xe6, 0x01, - 0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x09, 0x9a, 0x4a, 0x06, 0x12, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x6d, 0x9a, 0x4a, 0x6a, 0x0a, 0x3c, 0x0a, 0x03, - 0x72, 0x65, 0x73, 0x72, 0x35, 0x0a, 0x18, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x12, - 0x0a, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x04, 0x24, 0x2e, 0x69, 0x64, 0x1a, 0x03, 0x31, 0x30, 0x73, - 0x22, 0x08, 0x0a, 0x06, 0x0a, 0x02, 0x32, 0x73, 0x10, 0x03, 0x0a, 0x12, 0x0a, 0x04, 0x70, 0x6f, - 0x73, 0x74, 0x18, 0x01, 0x5a, 0x08, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x0a, 0x16, - 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x6a, 0x0e, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x06, - 0x1a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x22, 0xc8, 0x04, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x61, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x41, 0x48, 0x00, 0x52, 0x05, - 0x61, 0x74, 0x74, 0x72, 0x41, 0x12, 0x26, 0x0a, 0x01, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x42, 0x48, 0x00, 0x52, 0x01, 0x62, 0x1a, 0x50, 0x0a, - 0x0c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x2f, 0x0a, 0x05, 0x41, 0x74, 0x74, 0x72, 0x41, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x3a, 0x14, 0x9a, 0x4a, 0x11, 0x1a, - 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x41, - 0x1a, 0x2f, 0x0a, 0x05, 0x41, 0x74, 0x74, 0x72, 0x42, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x62, 0x61, 0x72, 0x3a, 0x14, 0x9a, 0x4a, 0x11, - 0x1a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, - 0x42, 0x3a, 0xa5, 0x01, 0x9a, 0x4a, 0xa1, 0x01, 0x0a, 0x8a, 0x01, 0x0a, 0x03, 0x72, 0x65, 0x73, - 0x72, 0x82, 0x01, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0f, 0x0a, - 0x02, 0x69, 0x64, 0x12, 0x09, 0x24, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x12, 0x2f, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x28, 0x27, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x27, 0x29, 0x1a, - 0x03, 0x32, 0x30, 0x73, 0x22, 0x1f, 0x12, 0x1d, 0x0a, 0x02, 0x31, 0x73, 0x11, 0x66, 0x66, 0x66, - 0x66, 0x66, 0x66, 0xe6, 0x3f, 0x19, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xfb, 0x3f, 0x22, 0x03, - 0x33, 0x30, 0x73, 0x28, 0x03, 0x0a, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x5a, - 0x08, 0x72, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x22, 0x8d, 0x05, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x72, 0x61, 0x6e, 0x64, 0x2e, 0x6e, 0x65, 0x77, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x28, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x75, 0x6e, 0x69, 0x78, 0x28, 0x29, 0x29, 0x0a, 0x33, 0x0a, 0x0a, 0x66, + 0x69, 0x78, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x5a, 0x25, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x61, 0x6e, 0x64, 0x2e, + 0x6e, 0x65, 0x77, 0x28, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x29, + 0x0a, 0x3b, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x5a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x75, 0x75, 0x69, 0x64, 0x2e, + 0x6e, 0x65, 0x77, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x61, 0x6e, + 0x64, 0x28, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x29, 0x0a, 0x36, 0x0a, + 0x03, 0x6c, 0x6f, 0x63, 0x5a, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x27, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, + 0x6b, 0x79, 0x6f, 0x27, 0x29, 0x0a, 0x45, 0x0a, 0x07, 0x6a, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x5a, 0x3a, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x65, 0x28, 0x32, 0x30, 0x32, 0x33, + 0x2c, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x32, 0x35, 0x2c, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x31, 0x30, + 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x6c, 0x6f, 0x63, 0x29, 0x0a, 0x38, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x5a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x5b, 0x27, 0x6b, 0x65, 0x79, + 0x31, 0x27, 0x5d, 0x5b, 0x30, 0x5d, 0x0a, 0x08, 0x0a, 0x01, 0x61, 0x6a, 0x03, 0x0a, 0x01, 0x41, + 0x0a, 0x2b, 0x0a, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x5a, 0x1a, 0x5b, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x5d, 0x2e, + 0x73, 0x6f, 0x72, 0x74, 0x41, 0x73, 0x63, 0x28, 0x76, 0x2c, 0x20, 0x76, 0x29, 0x0a, 0x95, 0x01, + 0x0a, 0x0c, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x5a, 0x84, + 0x01, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x7b, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7b, 0x61, 0x64, 0x64, 0x72, 0x31, 0x3a, 0x27, 0x61, + 0x27, 0x7d, 0x7d, 0x2c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x7b, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7b, 0x61, 0x64, 0x64, 0x72, 0x31, + 0x3a, 0x27, 0x62, 0x27, 0x7d, 0x7d, 0x5d, 0x2e, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, + 0x28, 0x76, 0x2c, 0x20, 0x76, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, + 0x64, 0x64, 0x72, 0x31, 0x29, 0x0a, 0x25, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x5a, 0x18, 0x7b, 0x31, 0x3a, 0x20, 0x27, 0x61, 0x27, 0x2c, 0x20, 0x32, 0x3a, 0x20, + 0x27, 0x62, 0x27, 0x2c, 0x20, 0x33, 0x3a, 0x20, 0x27, 0x63, 0x27, 0x7d, 0x0a, 0x12, 0x0a, 0x0a, + 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5a, 0x04, 0x6e, 0x75, 0x6c, 0x6c, + 0x0a, 0x4b, 0x5a, 0x49, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x28, 0x27, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6c, 0x6f, 0x67, 0x27, 0x2c, 0x20, 0x7b, 0x27, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x27, 0x3a, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x7d, 0x29, 0x0a, 0x3e, 0x0a, + 0x01, 0x65, 0x82, 0x01, 0x38, 0x0a, 0x0d, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x28, 0x27, + 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x32, 0x27, 0x29, 0x22, 0xdf, 0x03, + 0x0a, 0x01, 0x41, 0x12, 0x25, 0x0a, 0x01, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x2e, 0x42, 0x42, + 0x06, 0x9a, 0x4a, 0x03, 0x12, 0x01, 0x62, 0x52, 0x01, 0x62, 0x1a, 0xa1, 0x03, 0x0a, 0x01, 0x42, + 0x12, 0x2d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x2e, 0x42, 0x2e, 0x43, + 0x42, 0x08, 0x9a, 0x4a, 0x05, 0x12, 0x03, 0x66, 0x6f, 0x6f, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, + 0x2d, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x2e, 0x42, 0x2e, 0x43, 0x42, + 0x08, 0x9a, 0x4a, 0x05, 0x12, 0x03, 0x62, 0x61, 0x72, 0x52, 0x03, 0x62, 0x61, 0x72, 0x1a, 0x24, + 0x0a, 0x01, 0x43, 0x12, 0x1f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0b, 0x9a, 0x4a, 0x08, 0x12, 0x06, 0x24, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x3a, 0x97, 0x02, 0x9a, 0x4a, 0x93, 0x02, 0x0a, 0x1d, 0x0a, 0x03, 0x66, + 0x6f, 0x6f, 0x6a, 0x16, 0x0a, 0x05, 0x41, 0x2e, 0x42, 0x2e, 0x43, 0x12, 0x0d, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x05, 0x27, 0x66, 0x6f, 0x6f, 0x27, 0x0a, 0x1d, 0x0a, 0x03, 0x62, 0x61, + 0x72, 0x6a, 0x16, 0x0a, 0x05, 0x41, 0x2e, 0x42, 0x2e, 0x43, 0x12, 0x0d, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x05, 0x27, 0x62, 0x61, 0x72, 0x27, 0x0a, 0x89, 0x01, 0x12, 0x11, 0x66, 0x6f, + 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x66, 0x6f, 0x6f, 0x27, 0x5a, + 0x74, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x28, 0x27, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x20, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x67, + 0x27, 0x2c, 0x20, 0x7b, 0x27, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x27, 0x3a, 0x20, + 0x5b, 0x66, 0x6f, 0x6f, 0x2c, 0x20, 0x62, 0x61, 0x72, 0x5d, 0x2c, 0x20, 0x27, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x27, 0x3a, 0x20, 0x7b, 0x27, 0x66, 0x6f, 0x6f, + 0x27, 0x3a, 0x20, 0x66, 0x6f, 0x6f, 0x2c, 0x20, 0x27, 0x62, 0x61, 0x72, 0x27, 0x3a, 0x20, 0x62, + 0x61, 0x72, 0x7d, 0x7d, 0x29, 0x0a, 0x47, 0x5a, 0x45, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x61, 0x64, 0x64, + 0x28, 0x7b, 0x27, 0x66, 0x6f, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x27, 0x3a, 0x20, 0x66, 0x6f, + 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x27, 0x62, 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x27, 0x3a, 0x20, 0x62, 0x61, 0x72, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x29, 0x3a, 0x0f, + 0x9a, 0x4a, 0x0c, 0x0a, 0x0a, 0x0a, 0x01, 0x62, 0x6a, 0x05, 0x0a, 0x03, 0x41, 0x2e, 0x42, 0x22, + 0xe6, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x09, 0x9a, 0x4a, 0x06, 0x12, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x6d, 0x9a, 0x4a, 0x6a, 0x0a, 0x3c, + 0x0a, 0x03, 0x72, 0x65, 0x73, 0x72, 0x35, 0x0a, 0x18, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x12, 0x0a, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x04, 0x24, 0x2e, 0x69, 0x64, 0x1a, 0x03, 0x31, + 0x30, 0x73, 0x22, 0x08, 0x0a, 0x06, 0x0a, 0x02, 0x32, 0x73, 0x10, 0x03, 0x0a, 0x12, 0x0a, 0x04, + 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x5a, 0x08, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x6f, 0x73, 0x74, + 0x0a, 0x16, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x6a, 0x0e, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x06, 0x1a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x22, 0xc8, 0x04, 0x0a, 0x04, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x37, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x61, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x41, 0x48, 0x00, + 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x41, 0x12, 0x26, 0x0a, 0x01, 0x62, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x42, 0x48, 0x00, 0x52, 0x01, 0x62, 0x1a, + 0x50, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x2f, 0x0a, 0x05, 0x41, 0x74, 0x74, 0x72, 0x41, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, + 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x3a, 0x14, 0x9a, 0x4a, + 0x11, 0x1a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, + 0x72, 0x41, 0x1a, 0x2f, 0x0a, 0x05, 0x41, 0x74, 0x74, 0x72, 0x42, 0x12, 0x10, 0x0a, 0x03, 0x62, + 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x62, 0x61, 0x72, 0x3a, 0x14, 0x9a, + 0x4a, 0x11, 0x1a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, + 0x74, 0x72, 0x42, 0x3a, 0xa5, 0x01, 0x9a, 0x4a, 0xa1, 0x01, 0x0a, 0x8a, 0x01, 0x0a, 0x03, 0x72, + 0x65, 0x73, 0x72, 0x82, 0x01, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x09, 0x24, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x28, 0x27, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x27, + 0x29, 0x1a, 0x03, 0x32, 0x30, 0x73, 0x22, 0x1f, 0x12, 0x1d, 0x0a, 0x02, 0x31, 0x73, 0x11, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x3f, 0x19, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xfb, 0x3f, + 0x22, 0x03, 0x33, 0x30, 0x73, 0x28, 0x03, 0x0a, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x01, 0x5a, 0x08, 0x72, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x61, + 0x74, 0x74, 0x72, 0x22, 0x8d, 0x05, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xf1, 0x02, 0x0a, + 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, + 0x72, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x31, 0x12, + 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x61, 0x64, 0x64, 0x72, 0x32, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xf1, 0x02, 0x0a, 0x08, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x31, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x31, 0x12, 0x14, 0x0a, - 0x05, 0x61, 0x64, 0x64, 0x72, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, - 0x64, 0x72, 0x32, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x61, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x41, 0x48, 0x00, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x41, 0x12, + 0x2f, 0x0a, 0x01, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x42, 0x48, 0x00, 0x52, 0x01, 0x62, + 0x1a, 0x38, 0x0a, 0x05, 0x41, 0x64, 0x64, 0x72, 0x41, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x3a, 0x1d, 0x9a, 0x4a, 0x1a, + 0x1a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x41, 0x1a, 0x38, 0x0a, 0x05, 0x41, 0x64, + 0x64, 0x72, 0x42, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x62, 0x61, 0x72, 0x3a, 0x1d, 0x9a, 0x4a, 0x1a, 0x1a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x41, 0x48, 0x00, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x41, 0x12, 0x2f, 0x0a, - 0x01, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x42, 0x48, 0x00, 0x52, 0x01, 0x62, 0x1a, 0x38, - 0x0a, 0x05, 0x41, 0x64, 0x64, 0x72, 0x41, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x3a, 0x1d, 0x9a, 0x4a, 0x1a, 0x1a, 0x18, - 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x41, 0x1a, 0x38, 0x0a, 0x05, 0x41, 0x64, 0x64, 0x72, - 0x42, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x62, 0x61, 0x72, 0x3a, 0x1d, 0x9a, 0x4a, 0x1a, 0x1a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, - 0x72, 0x42, 0x22, 0x38, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x10, 0x01, 0x3a, 0x17, 0x9a, 0x4a, - 0x14, 0x1a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x33, 0x22, 0x71, - 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x54, - 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x33, 0x10, 0x03, 0x1a, 0x17, 0x9a, 0x4a, 0x14, 0x0a, 0x12, 0x75, - 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, - 0x65, 0x3a, 0x0e, 0x9a, 0x4a, 0x0b, 0x1a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x32, 0x5e, 0x0a, 0x11, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, - 0x74, 0x12, 0x1a, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x1a, 0x03, 0x9a, 0x4a, - 0x00, 0x42, 0xad, 0x01, 0x9a, 0x4a, 0x22, 0x12, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x2f, 0x70, 0x6f, - 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1d, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x58, - 0x58, 0xaa, 0x02, 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, - 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x16, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x64, 0x72, 0x42, 0x22, 0x38, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x10, 0x01, 0x3a, 0x17, + 0x9a, 0x4a, 0x14, 0x1a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x33, + 0x22, 0x71, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, + 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x54, 0x45, + 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x33, 0x10, 0x03, 0x1a, 0x17, 0x9a, 0x4a, 0x14, 0x0a, + 0x12, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x3a, 0x0e, 0x9a, 0x4a, 0x0b, 0x1a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x32, 0x5e, 0x0a, 0x11, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x1a, 0x03, + 0x9a, 0x4a, 0x00, 0x42, 0xad, 0x01, 0x9a, 0x4a, 0x22, 0x12, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x2f, + 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x75, 0x73, 0x65, 0x72, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1d, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, + 0x46, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0xca, 0x02, 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x16, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1644,26 +1660,27 @@ var file_federation_federation_proto_depIdxs = []int32{ 26, // 15: federation.GetPostResponse.null_timestamp:type_name -> google.protobuf.Timestamp 26, // 16: federation.GetPostResponse.null_timestamp2:type_name -> google.protobuf.Timestamp 26, // 17: federation.GetPostResponse.null_timestamp3:type_name -> google.protobuf.Timestamp - 9, // 18: federation.A.b:type_name -> federation.A.B - 6, // 19: federation.Post.user:type_name -> federation.User - 7, // 20: federation.User.items:type_name -> federation.Item - 11, // 21: federation.User.profile:type_name -> federation.User.ProfileEntry - 12, // 22: federation.User.attr_a:type_name -> federation.User.AttrA - 13, // 23: federation.User.b:type_name -> federation.User.AttrB - 0, // 24: federation.Item.type:type_name -> federation.Item.ItemType - 14, // 25: federation.Item.location:type_name -> federation.Item.Location - 10, // 26: federation.A.B.foo:type_name -> federation.A.B.C - 10, // 27: federation.A.B.bar:type_name -> federation.A.B.C - 27, // 28: federation.User.ProfileEntry.value:type_name -> google.protobuf.Any - 15, // 29: federation.Item.Location.addr_a:type_name -> federation.Item.Location.AddrA - 16, // 30: federation.Item.Location.b:type_name -> federation.Item.Location.AddrB - 2, // 31: federation.FederationService.GetPost:input_type -> federation.GetPostRequest - 3, // 32: federation.FederationService.GetPost:output_type -> federation.GetPostResponse - 32, // [32:33] is the sub-list for method output_type - 31, // [31:32] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 0, // 18: federation.GetPostResponse.enum_value:type_name -> federation.Item.ItemType + 9, // 19: federation.A.b:type_name -> federation.A.B + 6, // 20: federation.Post.user:type_name -> federation.User + 7, // 21: federation.User.items:type_name -> federation.Item + 11, // 22: federation.User.profile:type_name -> federation.User.ProfileEntry + 12, // 23: federation.User.attr_a:type_name -> federation.User.AttrA + 13, // 24: federation.User.b:type_name -> federation.User.AttrB + 0, // 25: federation.Item.type:type_name -> federation.Item.ItemType + 14, // 26: federation.Item.location:type_name -> federation.Item.Location + 10, // 27: federation.A.B.foo:type_name -> federation.A.B.C + 10, // 28: federation.A.B.bar:type_name -> federation.A.B.C + 27, // 29: federation.User.ProfileEntry.value:type_name -> google.protobuf.Any + 15, // 30: federation.Item.Location.addr_a:type_name -> federation.Item.Location.AddrA + 16, // 31: federation.Item.Location.b:type_name -> federation.Item.Location.AddrB + 2, // 32: federation.FederationService.GetPost:input_type -> federation.GetPostRequest + 3, // 33: federation.FederationService.GetPost:output_type -> federation.GetPostResponse + 33, // [33:34] is the sub-list for method output_type + 32, // [32:33] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name } func init() { file_federation_federation_proto_init() } diff --git a/_examples/02_simple/federation/federation_grpc_federation.pb.go b/_examples/02_simple/federation/federation_grpc_federation.pb.go index ef3c8e30..12325d86 100644 --- a/_examples/02_simple/federation/federation_grpc_federation.pb.go +++ b/_examples/02_simple/federation/federation_grpc_federation.pb.go @@ -48,6 +48,7 @@ type FederationService_Federation_A_B_CArgument struct { type FederationService_Federation_GetPostResponseArgument struct { A *A Date *grpcfedcel.Time + E Item_ItemType FixedRand *grpcfedcel.Rand Id string JpTime *grpcfedcel.Time @@ -605,6 +606,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte _def16 bool a *A date *grpcfedcel.Time + e Item_ItemType fixed_rand *grpcfedcel.Rand jp_time *grpcfedcel.Time loc *grpcfedcel.Location @@ -974,11 +976,38 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte }) } + /* + def { + name: "e" + enum { + name: "federation.Item.ItemType" + by: "user.Item.ItemType.value('ITEM_TYPE_2')" + } + } + */ + def_e := func(ctx context.Context) error { + return grpcfed.EvalDef(ctx, value, grpcfed.Def[user.Item_ItemType, *localValueType]{ + Name: `e`, + Type: grpcfed.CELIntType, + Setter: func(value *localValueType, v user.Item_ItemType) error { + dst, err := s.cast_User_Item_ItemType__to__Federation_Item_ItemType(v) + if err != nil { + return err + } + value.vars.e = dst + return nil + }, + By: `user.Item.ItemType.value('ITEM_TYPE_2')`, + ByCacheIndex: 26, + }) + } + // A tree view of message dependencies is shown below. /* post ─┐ _def16 ─┐ a ─┤ + e ─┤ loc ─┐ │ jp_time ─┤ map_value ─┤ @@ -1016,6 +1045,14 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte return nil, nil }) + grpcfed.GoWithRecover(eg, func() (any, error) { + if err := def_e(ctx1); err != nil { + grpcfed.RecordErrorToSpan(ctx1, err) + return nil, err + } + return nil, nil + }) + grpcfed.GoWithRecover(eg, func() (any, error) { if err := def_loc(ctx1); err != nil { grpcfed.RecordErrorToSpan(ctx1, err) @@ -1115,6 +1152,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte // assign named parameters to message arguments to pass to the custom resolver. req.A = value.vars.a req.Date = value.vars.date + req.E = value.vars.e req.FixedRand = value.vars.fixed_rand req.JpTime = value.vars.jp_time req.Loc = value.vars.loc @@ -1138,7 +1176,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*Post]{ Value: value, Expr: `post`, - CacheIndex: 26, + CacheIndex: 27, Setter: func(v *Post) error { ret.Post = v return nil @@ -1151,7 +1189,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `'hello'`, - CacheIndex: 27, + CacheIndex: 28, Setter: func(v string) error { ret.Str = v return nil @@ -1164,7 +1202,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `uuid.string()`, - CacheIndex: 28, + CacheIndex: 29, Setter: func(v string) error { ret.Uuid = v return nil @@ -1177,7 +1215,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `loc.string()`, - CacheIndex: 29, + CacheIndex: 30, Setter: func(v string) error { ret.Loc = v return nil @@ -1190,7 +1228,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `value1`, - CacheIndex: 30, + CacheIndex: 31, Setter: func(v string) error { ret.Value1 = v return nil @@ -1203,7 +1241,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `Item.ItemType.name(Item.ItemType.ITEM_TYPE_1)`, - CacheIndex: 31, + CacheIndex: 32, Setter: func(v string) error { ret.ItemTypeName = v return nil @@ -1216,7 +1254,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `Item.Location.LocationType.name(Item.Location.LocationType.LOCATION_TYPE_1)`, - CacheIndex: 32, + CacheIndex: 33, Setter: func(v string) error { ret.LocationTypeName = v return nil @@ -1229,7 +1267,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `user.Item.ItemType.name(user.Item.ItemType.ITEM_TYPE_2)`, - CacheIndex: 33, + CacheIndex: 34, Setter: func(v string) error { ret.UserItemTypeName = v return nil @@ -1242,7 +1280,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[user.Item_ItemType]{ Value: value, Expr: `user.Item.ItemType.value('ITEM_TYPE_1')`, - CacheIndex: 34, + CacheIndex: 35, Setter: func(v user.Item_ItemType) error { itemTypeValueEnumValue, err := s.cast_User_Item_ItemType__to__Federation_Item_ItemType(v) if err != nil { @@ -1259,7 +1297,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[user.Item_ItemType]{ Value: value, Expr: `user.Item.ItemType.value('ITEM_TYPE_1')`, - CacheIndex: 35, + CacheIndex: 36, Setter: func(v user.Item_ItemType) error { itemTypeValueIntValue, err := s.cast_User_Item_ItemType__to__int32(v) if err != nil { @@ -1276,7 +1314,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[Item_ItemType]{ Value: value, Expr: `1`, - CacheIndex: 36, + CacheIndex: 37, Setter: func(v Item_ItemType) error { ret.ItemTypeValueCast = v return nil @@ -1289,7 +1327,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[Item_Location_LocationType]{ Value: value, Expr: `Item.Location.LocationType.value('LOCATION_TYPE_1')`, - CacheIndex: 37, + CacheIndex: 38, Setter: func(v Item_Location_LocationType) error { locationTypeValueValue, err := s.cast_Federation_Item_Location_LocationType__to__int32(v) if err != nil { @@ -1306,7 +1344,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[user.Item_ItemType]{ Value: value, Expr: `user.Item.ItemType.value('ITEM_TYPE_2')`, - CacheIndex: 38, + CacheIndex: 39, Setter: func(v user.Item_ItemType) error { userItemTypeValueValue, err := s.cast_User_Item_ItemType__to__int32(v) if err != nil { @@ -1323,7 +1361,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*A]{ Value: value, Expr: `a`, - CacheIndex: 39, + CacheIndex: 40, Setter: func(v *A) error { ret.A = v return nil @@ -1336,7 +1374,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]int32]{ Value: value, Expr: `sorted_values`, - CacheIndex: 40, + CacheIndex: 41, Setter: func(v []int32) error { ret.SortedValues = v return nil @@ -1349,7 +1387,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]*user.Item]{ Value: value, Expr: `sorted_items`, - CacheIndex: 41, + CacheIndex: 42, Setter: func(v []*user.Item) error { sortedItemsValue, err := s.cast_repeated_User_Item__to__repeated_Federation_Item(v) if err != nil { @@ -1366,7 +1404,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[map[int64]string]{ Value: value, Expr: `map_value`, - CacheIndex: 42, + CacheIndex: 43, Setter: func(v map[int64]string) error { mapValueValue, err := s.cast_map_int64_string__to__map_int32_string(v) if err != nil { @@ -1383,7 +1421,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*wrapperspb.DoubleValue]{ Value: value, Expr: `google.protobuf.DoubleValue{value: 1.23}`, - CacheIndex: 43, + CacheIndex: 44, Setter: func(v *wrapperspb.DoubleValue) error { doubleWrapperValueValue, err := s.cast_Google_Protobuf_DoubleValue__to__Google_Protobuf_DoubleValue(v) if err != nil { @@ -1400,7 +1438,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*wrapperspb.DoubleValue]{ Value: value, Expr: `google.protobuf.FloatValue{value: 3.45}`, - CacheIndex: 44, + CacheIndex: 45, Setter: func(v *wrapperspb.DoubleValue) error { floatWrapperValueValue, err := s.cast_Google_Protobuf_DoubleValue__to__Google_Protobuf_FloatValue(v) if err != nil { @@ -1417,7 +1455,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*wrapperspb.Int64Value]{ Value: value, Expr: `google.protobuf.Int64Value{value: 1}`, - CacheIndex: 45, + CacheIndex: 46, Setter: func(v *wrapperspb.Int64Value) error { i64WrapperValueValue, err := s.cast_Google_Protobuf_Int64Value__to__Google_Protobuf_Int64Value(v) if err != nil { @@ -1434,7 +1472,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*wrapperspb.UInt64Value]{ Value: value, Expr: `google.protobuf.UInt64Value{value: uint(2)}`, - CacheIndex: 46, + CacheIndex: 47, Setter: func(v *wrapperspb.UInt64Value) error { u64WrapperValueValue, err := s.cast_Google_Protobuf_UInt64Value__to__Google_Protobuf_UInt64Value(v) if err != nil { @@ -1451,7 +1489,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*wrapperspb.Int64Value]{ Value: value, Expr: `google.protobuf.Int32Value{value: 3}`, - CacheIndex: 47, + CacheIndex: 48, Setter: func(v *wrapperspb.Int64Value) error { i32WrapperValueValue, err := s.cast_Google_Protobuf_Int64Value__to__Google_Protobuf_Int32Value(v) if err != nil { @@ -1468,7 +1506,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*wrapperspb.UInt64Value]{ Value: value, Expr: `google.protobuf.UInt32Value{value: uint(4)}`, - CacheIndex: 48, + CacheIndex: 49, Setter: func(v *wrapperspb.UInt64Value) error { u32WrapperValueValue, err := s.cast_Google_Protobuf_UInt64Value__to__Google_Protobuf_UInt32Value(v) if err != nil { @@ -1485,7 +1523,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*wrapperspb.BoolValue]{ Value: value, Expr: `google.protobuf.BoolValue{value: true}`, - CacheIndex: 49, + CacheIndex: 50, Setter: func(v *wrapperspb.BoolValue) error { boolWrapperValueValue, err := s.cast_Google_Protobuf_BoolValue__to__Google_Protobuf_BoolValue(v) if err != nil { @@ -1502,7 +1540,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*wrapperspb.StringValue]{ Value: value, Expr: `google.protobuf.StringValue{value: 'hello'}`, - CacheIndex: 50, + CacheIndex: 51, Setter: func(v *wrapperspb.StringValue) error { stringWrapperValueValue, err := s.cast_Google_Protobuf_StringValue__to__Google_Protobuf_StringValue(v) if err != nil { @@ -1519,7 +1557,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*wrapperspb.BytesValue]{ Value: value, Expr: `google.protobuf.BytesValue{value: bytes('world')}`, - CacheIndex: 51, + CacheIndex: 52, Setter: func(v *wrapperspb.BytesValue) error { bytesWrapperValueValue, err := s.cast_Google_Protobuf_BytesValue__to__Google_Protobuf_BytesValue(v) if err != nil { @@ -1536,7 +1574,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `'hello\nworld'`, - CacheIndex: 52, + CacheIndex: 53, Setter: func(v string) error { ret.Hello = v return nil @@ -1549,7 +1587,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*timestamppb.Timestamp]{ Value: value, Expr: `null`, - CacheIndex: 53, + CacheIndex: 54, Setter: func(v *timestamppb.Timestamp) error { ret.NullTimestamp = v return nil @@ -1562,7 +1600,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*timestamppb.Timestamp]{ Value: value, Expr: `null_value`, - CacheIndex: 54, + CacheIndex: 55, Setter: func(v *timestamppb.Timestamp) error { ret.NullTimestamp2 = v return nil @@ -1575,7 +1613,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*timestamppb.Timestamp]{ Value: value, Expr: `true ? null : google.protobuf.Timestamp{}`, - CacheIndex: 55, + CacheIndex: 56, Setter: func(v *timestamppb.Timestamp) error { ret.NullTimestamp3 = v return nil @@ -1588,7 +1626,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `jp_time.location().string()`, - CacheIndex: 56, + CacheIndex: 57, Setter: func(v string) error { ret.JpLoc = v return nil @@ -1601,7 +1639,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `strings_join`, - CacheIndex: 57, + CacheIndex: 58, Setter: func(v string) error { ret.StringsJoin = v return nil @@ -1614,7 +1652,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[float64]{ Value: value, Expr: `parse_float`, - CacheIndex: 58, + CacheIndex: 59, Setter: func(v float64) error { ret.ParseFloat = v return nil @@ -1627,7 +1665,7 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `url.userinfo().username()`, - CacheIndex: 59, + CacheIndex: 60, Setter: func(v string) error { ret.UrlUserName = v return nil @@ -1636,6 +1674,19 @@ func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Conte grpcfed.RecordErrorToSpan(ctx, err) return nil, err } + // (grpc.federation.field).by = "e" + if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[Item_ItemType]{ + Value: value, + Expr: `e`, + CacheIndex: 61, + Setter: func(v Item_ItemType) error { + ret.EnumValue = v + return nil + }, + }); err != nil { + grpcfed.RecordErrorToSpan(ctx, err) + return nil, err + } grpcfed.Logger(ctx).DebugContext(ctx, "resolved federation.GetPostResponse", slog.Any("federation.GetPostResponse", s.logvalue_Federation_GetPostResponse(ret))) return ret, nil @@ -1680,7 +1731,7 @@ func (s *FederationService) resolve_Federation_Post(ctx context.Context, req *Fe if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `$.id`, - CacheIndex: 60, + CacheIndex: 62, Setter: func(v string) error { args.Id = v return nil @@ -1696,7 +1747,7 @@ func (s *FederationService) resolve_Federation_Post(ctx context.Context, req *Fe return grpcfed.WithRetry(ctx, &grpcfed.RetryParam[post.GetPostResponse]{ Value: value, If: `true`, - CacheIndex: 61, + CacheIndex: 63, BackOff: b, Body: func() (*post.GetPostResponse, error) { return s.client.Post_PostServiceClient.GetPost(ctx, args) @@ -1729,7 +1780,7 @@ func (s *FederationService) resolve_Federation_Post(ctx context.Context, req *Fe return nil }, By: `res.post`, - ByCacheIndex: 62, + ByCacheIndex: 64, }) } @@ -1756,7 +1807,7 @@ func (s *FederationService) resolve_Federation_Post(ctx context.Context, req *Fe if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*post.Post]{ Value: value, Expr: `post`, - CacheIndex: 63, + CacheIndex: 65, Setter: func(v *post.Post) error { args.Id = v.GetId() args.Title = v.GetTitle() @@ -1805,7 +1856,7 @@ func (s *FederationService) resolve_Federation_Post(ctx context.Context, req *Fe if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*User]{ Value: value, Expr: `user`, - CacheIndex: 64, + CacheIndex: 66, Setter: func(v *User) error { ret.User = v return nil @@ -1860,7 +1911,7 @@ func (s *FederationService) resolve_Federation_User(ctx context.Context, req *Fe if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `$.user_id`, - CacheIndex: 65, + CacheIndex: 67, Setter: func(v string) error { args.Id = v return nil @@ -1872,7 +1923,7 @@ func (s *FederationService) resolve_Federation_User(ctx context.Context, req *Fe if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[user.Item_ItemType]{ Value: value, Expr: `user.Item.ItemType.value('ITEM_TYPE_1')`, - CacheIndex: 66, + CacheIndex: 68, Setter: func(v user.Item_ItemType) error { typeValue, err := s.cast_User_Item_ItemType__to__int32(v) if err != nil { @@ -1898,7 +1949,7 @@ func (s *FederationService) resolve_Federation_User(ctx context.Context, req *Fe return grpcfed.WithRetry(ctx, &grpcfed.RetryParam[user.GetUserResponse]{ Value: value, If: `true`, - CacheIndex: 67, + CacheIndex: 69, BackOff: b, Body: func() (*user.GetUserResponse, error) { return s.client.User_UserServiceClient.GetUser(ctx, args) @@ -1931,7 +1982,7 @@ func (s *FederationService) resolve_Federation_User(ctx context.Context, req *Fe return nil }, By: `res.user`, - ByCacheIndex: 68, + ByCacheIndex: 70, }) } @@ -2446,6 +2497,7 @@ func (s *FederationService) logvalue_Federation_GetPostResponse(v *GetPostRespon slog.String("strings_join", v.GetStringsJoin()), slog.Float64("parse_float", v.GetParseFloat()), slog.String("url_user_name", v.GetUrlUserName()), + slog.String("enum_value", s.logvalue_Federation_Item_ItemType(v.GetEnumValue()).String()), ) } diff --git a/_examples/02_simple/main_test.go b/_examples/02_simple/main_test.go index 42a86ed8..a53cf5bb 100644 --- a/_examples/02_simple/main_test.go +++ b/_examples/02_simple/main_test.go @@ -320,6 +320,7 @@ func TestFederation(t *testing.T) { StringsJoin: "1.2", ParseFloat: 1.2, UrlUserName: "test_user", + EnumValue: federation.Item_ITEM_TYPE_2, }, cmpopts.IgnoreUnexported( federation.GetPostResponse{}, federation.Post{}, diff --git a/_examples/02_simple/proto/federation/federation.proto b/_examples/02_simple/proto/federation/federation.proto index 1307666b..6ea71bed 100644 --- a/_examples/02_simple/proto/federation/federation.proto +++ b/_examples/02_simple/proto/federation/federation.proto @@ -47,6 +47,7 @@ message GetPostResponse { def { name: "map_value" by : "{1: 'a', 2: 'b', 3: 'c'}" } def { name: "null_value" by: "null" } def { by: "grpc.federation.log.info('output federation log', {'post_message': post})" } + def { name: "e" enum {name: "Item.ItemType" by: "user.Item.ItemType.value('ITEM_TYPE_2')"}} }; Post post = 1 [(grpc.federation.field).by = "post"]; string str = 2 [(grpc.federation.field).by = "'hello'"]; @@ -82,6 +83,7 @@ message GetPostResponse { string strings_join = 32 [(grpc.federation.field).by = "strings_join"]; double parse_float = 33 [(grpc.federation.field).by = "parse_float"]; string url_user_name = 34 [(grpc.federation.field).by = "url.userinfo().username()"]; + Item.ItemType enum_value = 35 [(grpc.federation.field).by = "e"]; } message A { diff --git a/_examples/04_timeout/grpc/federation/federation.pb.go b/_examples/04_timeout/grpc/federation/federation.pb.go index ecfdd20c..5cb2d17a 100644 --- a/_examples/04_timeout/grpc/federation/federation.pb.go +++ b/_examples/04_timeout/grpc/federation/federation.pb.go @@ -151,7 +151,7 @@ func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use GRPCError_LogLevel.Descriptor instead. func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17, 0} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18, 0} } type FileRule struct { @@ -938,6 +938,7 @@ type VariableDefinition struct { // *VariableDefinition_Message // *VariableDefinition_Call // *VariableDefinition_Validation + // *VariableDefinition_Enum Expr isVariableDefinition_Expr `protobuf_oneof:"expr"` } @@ -1036,6 +1037,13 @@ func (x *VariableDefinition) GetValidation() *ValidationExpr { return nil } +func (x *VariableDefinition) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableDefinition_Enum); ok { + return x.Enum + } + return nil +} + type isVariableDefinition_Expr interface { isVariableDefinition_Expr() } @@ -1065,6 +1073,11 @@ type VariableDefinition_Validation struct { Validation *ValidationExpr `protobuf:"bytes,15,opt,name=validation,proto3,oneof"` } +type VariableDefinition_Enum struct { + // enum gets with cel value. + Enum *EnumExpr `protobuf:"bytes,16,opt,name=enum,proto3,oneof"` +} + func (*VariableDefinition_By) isVariableDefinition_Expr() {} func (*VariableDefinition_Map) isVariableDefinition_Expr() {} @@ -1075,6 +1088,8 @@ func (*VariableDefinition_Call) isVariableDefinition_Expr() {} func (*VariableDefinition_Validation) isVariableDefinition_Expr() {} +func (*VariableDefinition_Enum) isVariableDefinition_Expr() {} + // MapExpr apply map operation for the specified repeated type. type MapExpr struct { state protoimpl.MessageState @@ -1090,6 +1105,7 @@ type MapExpr struct { // // *MapExpr_By // *MapExpr_Message + // *MapExpr_Enum Expr isMapExpr_Expr `protobuf_oneof:"expr"` } @@ -1153,6 +1169,13 @@ func (x *MapExpr) GetMessage() *MessageExpr { return nil } +func (x *MapExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapExpr_Expr interface { isMapExpr_Expr() } @@ -1169,10 +1192,18 @@ type MapExpr_Message struct { Message *MessageExpr `protobuf:"bytes,12,opt,name=message,proto3,oneof"` } +type MapExpr_Enum struct { + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + Enum *EnumExpr `protobuf:"bytes,13,opt,name=enum,proto3,oneof"` +} + func (*MapExpr_By) isMapExpr_Expr() {} func (*MapExpr_Message) isMapExpr_Expr() {} +func (*MapExpr_Enum) isMapExpr_Expr() {} + // Iterator represents iterator variable. type Iterator struct { state protoimpl.MessageState @@ -1291,6 +1322,65 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +// EnumExpr represents dependent enum. +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // `by` evaluates with CEL. + By string `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} +} + +func (x *EnumExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnumExpr) GetBy() string { + if x != nil { + return x.By + } + return "" +} + // CallExpr represents how to call gRPC method. type CallExpr struct { state protoimpl.MessageState @@ -1316,7 +1406,7 @@ type CallExpr struct { func (x *CallExpr) Reset() { *x = CallExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1419,7 @@ func (x *CallExpr) String() string { func (*CallExpr) ProtoMessage() {} func (x *CallExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1432,7 @@ func (x *CallExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use CallExpr.ProtoReflect.Descriptor instead. func (*CallExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} } func (x *CallExpr) GetMethod() string { @@ -1418,7 +1508,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1521,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1534,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} } func (x *GRPCError) GetDef() []*VariableDefinition { @@ -1541,7 +1631,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1554,7 +1644,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1567,7 +1657,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} } func (x *GRPCErrorDetail) GetIf() string { @@ -1685,7 +1775,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1788,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1801,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} } func (x *ValidationExpr) GetName() string { @@ -1748,7 +1838,7 @@ type RetryPolicy struct { func (x *RetryPolicy) Reset() { *x = RetryPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1851,7 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1864,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} } func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy { @@ -1841,7 +1931,7 @@ type RetryPolicyConstant struct { func (x *RetryPolicyConstant) Reset() { *x = RetryPolicyConstant{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1944,7 @@ func (x *RetryPolicyConstant) String() string { func (*RetryPolicyConstant) ProtoMessage() {} func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1957,7 @@ func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyConstant.ProtoReflect.Descriptor instead. func (*RetryPolicyConstant) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} } func (x *RetryPolicyConstant) GetInterval() string { @@ -1905,7 +1995,7 @@ type RetryPolicyExponential struct { func (x *RetryPolicyExponential) Reset() { *x = RetryPolicyExponential{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2008,7 @@ func (x *RetryPolicyExponential) String() string { func (*RetryPolicyExponential) ProtoMessage() {} func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2021,7 @@ func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyExponential.ProtoReflect.Descriptor instead. func (*RetryPolicyExponential) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} } func (x *RetryPolicyExponential) GetInitialInterval() string { @@ -1992,7 +2082,7 @@ type MethodRequest struct { func (x *MethodRequest) Reset() { *x = MethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2005,7 +2095,7 @@ func (x *MethodRequest) String() string { func (*MethodRequest) ProtoMessage() {} func (x *MethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2018,7 +2108,7 @@ func (x *MethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodRequest.ProtoReflect.Descriptor instead. func (*MethodRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} } func (x *MethodRequest) GetField() string { @@ -2062,7 +2152,7 @@ type MethodResponse struct { func (x *MethodResponse) Reset() { *x = MethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2165,7 @@ func (x *MethodResponse) String() string { func (*MethodResponse) ProtoMessage() {} func (x *MethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2178,7 @@ func (x *MethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodResponse.ProtoReflect.Descriptor instead. func (*MethodResponse) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} } func (x *MethodResponse) GetName() string { @@ -2134,7 +2224,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2237,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,7 +2250,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} } func (x *Argument) GetName() string { @@ -2210,7 +2300,7 @@ type FieldRule struct { func (x *FieldRule) Reset() { *x = FieldRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2313,7 @@ func (x *FieldRule) String() string { func (*FieldRule) ProtoMessage() {} func (x *FieldRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2326,7 @@ func (x *FieldRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldRule.ProtoReflect.Descriptor instead. func (*FieldRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} } func (x *FieldRule) GetCustomResolver() bool { @@ -2299,7 +2389,7 @@ type FieldOneof struct { func (x *FieldOneof) Reset() { *x = FieldOneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2402,7 @@ func (x *FieldOneof) String() string { func (*FieldOneof) ProtoMessage() {} func (x *FieldOneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2415,7 @@ func (x *FieldOneof) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldOneof.ProtoReflect.Descriptor instead. func (*FieldOneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} } func (m *FieldOneof) GetCond() isFieldOneof_Cond { @@ -2397,7 +2487,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2500,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2513,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} } func (x *CELPlugin) GetExport() []*CELPluginExport { @@ -2455,7 +2545,7 @@ type CELPluginExport struct { func (x *CELPluginExport) Reset() { *x = CELPluginExport{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2558,7 @@ func (x *CELPluginExport) String() string { func (*CELPluginExport) ProtoMessage() {} func (x *CELPluginExport) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2571,7 @@ func (x *CELPluginExport) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPluginExport.ProtoReflect.Descriptor instead. func (*CELPluginExport) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} } func (x *CELPluginExport) GetName() string { @@ -2539,7 +2629,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2642,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2655,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} } func (x *CELFunction) GetName() string { @@ -2614,7 +2704,7 @@ type CELReceiverType struct { func (x *CELReceiverType) Reset() { *x = CELReceiverType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2717,7 @@ func (x *CELReceiverType) String() string { func (*CELReceiverType) ProtoMessage() {} func (x *CELReceiverType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2730,7 @@ func (x *CELReceiverType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELReceiverType.ProtoReflect.Descriptor instead. func (*CELReceiverType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} } func (x *CELReceiverType) GetName() string { @@ -2682,7 +2772,7 @@ type CELFunctionArgument struct { func (x *CELFunctionArgument) Reset() { *x = CELFunctionArgument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2785,7 @@ func (x *CELFunctionArgument) String() string { func (*CELFunctionArgument) ProtoMessage() {} func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2798,7 @@ func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunctionArgument.ProtoReflect.Descriptor instead. func (*CELFunctionArgument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} } func (x *CELFunctionArgument) GetName() string { @@ -2751,7 +2841,7 @@ type CELType struct { func (x *CELType) Reset() { *x = CELType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2854,7 @@ func (x *CELType) String() string { func (*CELType) ProtoMessage() {} func (x *CELType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2867,7 @@ func (x *CELType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELType.ProtoReflect.Descriptor instead. func (*CELType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} } func (m *CELType) GetType() isCELType_Type { @@ -2876,7 +2966,7 @@ type CELMapType struct { func (x *CELMapType) Reset() { *x = CELMapType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +2979,7 @@ func (x *CELMapType) String() string { func (*CELMapType) ProtoMessage() {} func (x *CELMapType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +2992,7 @@ func (x *CELMapType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELMapType.ProtoReflect.Descriptor instead. func (*CELMapType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} } func (x *CELMapType) GetKey() *CELType { @@ -2937,7 +3027,7 @@ type CELVariable struct { func (x *CELVariable) Reset() { *x = CELVariable{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3040,7 @@ func (x *CELVariable) String() string { func (*CELVariable) ProtoMessage() {} func (x *CELVariable) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3053,7 @@ func (x *CELVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use CELVariable.ProtoReflect.Descriptor instead. func (*CELVariable) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{36} } func (x *CELVariable) GetName() string { @@ -3194,7 +3284,7 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x12, + 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xa7, 0x03, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, @@ -3215,347 +3305,357 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0x50, 0x0a, - 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, + 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, + 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x22, 0x86, 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x22, 0x86, - 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x03, - 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, 0x03, 0x64, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, - 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, - 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, - 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, - 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, - 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, 0x08, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, - 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x69, 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, + 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, + 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, + 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, - 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x38, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, + 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, + 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x12, 0x2f, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x43, 0x45, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, + 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, 0x4c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x1a, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, - 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, 0x4d, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, + 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, + 0x4c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, + 0x1a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, + 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, - 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, - 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x54, - 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x3a, 0x54, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, 0xa3, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x50, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x50, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x3a, 0x61, - 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, - 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, - 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x3a, 0x61, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, + 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, + 0x02, 0x03, 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, + 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -3571,7 +3671,7 @@ func file_grpc_federation_federation_proto_rawDescGZIP() []byte { } var file_grpc_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_grpc_federation_federation_proto_goTypes = []interface{}{ (TypeKind)(0), // 0: grpc.federation.TypeKind (GRPCError_LogLevel)(0), // 1: grpc.federation.GRPCError.LogLevel @@ -3591,48 +3691,49 @@ var file_grpc_federation_federation_proto_goTypes = []interface{}{ (*MapExpr)(nil), // 15: grpc.federation.MapExpr (*Iterator)(nil), // 16: grpc.federation.Iterator (*MessageExpr)(nil), // 17: grpc.federation.MessageExpr - (*CallExpr)(nil), // 18: grpc.federation.CallExpr - (*GRPCError)(nil), // 19: grpc.federation.GRPCError - (*GRPCErrorDetail)(nil), // 20: grpc.federation.GRPCErrorDetail - (*ValidationExpr)(nil), // 21: grpc.federation.ValidationExpr - (*RetryPolicy)(nil), // 22: grpc.federation.RetryPolicy - (*RetryPolicyConstant)(nil), // 23: grpc.federation.RetryPolicyConstant - (*RetryPolicyExponential)(nil), // 24: grpc.federation.RetryPolicyExponential - (*MethodRequest)(nil), // 25: grpc.federation.MethodRequest - (*MethodResponse)(nil), // 26: grpc.federation.MethodResponse - (*Argument)(nil), // 27: grpc.federation.Argument - (*FieldRule)(nil), // 28: grpc.federation.FieldRule - (*FieldOneof)(nil), // 29: grpc.federation.FieldOneof - (*CELPlugin)(nil), // 30: grpc.federation.CELPlugin - (*CELPluginExport)(nil), // 31: grpc.federation.CELPluginExport - (*CELFunction)(nil), // 32: grpc.federation.CELFunction - (*CELReceiverType)(nil), // 33: grpc.federation.CELReceiverType - (*CELFunctionArgument)(nil), // 34: grpc.federation.CELFunctionArgument - (*CELType)(nil), // 35: grpc.federation.CELType - (*CELMapType)(nil), // 36: grpc.federation.CELMapType - (*CELVariable)(nil), // 37: grpc.federation.CELVariable - (code.Code)(0), // 38: google.rpc.Code - (*errdetails.ErrorInfo)(nil), // 39: google.rpc.ErrorInfo - (*errdetails.RetryInfo)(nil), // 40: google.rpc.RetryInfo - (*errdetails.DebugInfo)(nil), // 41: google.rpc.DebugInfo - (*errdetails.QuotaFailure)(nil), // 42: google.rpc.QuotaFailure - (*errdetails.PreconditionFailure)(nil), // 43: google.rpc.PreconditionFailure - (*errdetails.BadRequest)(nil), // 44: google.rpc.BadRequest - (*errdetails.RequestInfo)(nil), // 45: google.rpc.RequestInfo - (*errdetails.ResourceInfo)(nil), // 46: google.rpc.ResourceInfo - (*errdetails.Help)(nil), // 47: google.rpc.Help - (*errdetails.LocalizedMessage)(nil), // 48: google.rpc.LocalizedMessage - (*descriptorpb.FileOptions)(nil), // 49: google.protobuf.FileOptions - (*descriptorpb.ServiceOptions)(nil), // 50: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 51: google.protobuf.MethodOptions - (*descriptorpb.MessageOptions)(nil), // 52: google.protobuf.MessageOptions - (*descriptorpb.FieldOptions)(nil), // 53: google.protobuf.FieldOptions - (*descriptorpb.EnumOptions)(nil), // 54: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 55: google.protobuf.EnumValueOptions - (*descriptorpb.OneofOptions)(nil), // 56: google.protobuf.OneofOptions + (*EnumExpr)(nil), // 18: grpc.federation.EnumExpr + (*CallExpr)(nil), // 19: grpc.federation.CallExpr + (*GRPCError)(nil), // 20: grpc.federation.GRPCError + (*GRPCErrorDetail)(nil), // 21: grpc.federation.GRPCErrorDetail + (*ValidationExpr)(nil), // 22: grpc.federation.ValidationExpr + (*RetryPolicy)(nil), // 23: grpc.federation.RetryPolicy + (*RetryPolicyConstant)(nil), // 24: grpc.federation.RetryPolicyConstant + (*RetryPolicyExponential)(nil), // 25: grpc.federation.RetryPolicyExponential + (*MethodRequest)(nil), // 26: grpc.federation.MethodRequest + (*MethodResponse)(nil), // 27: grpc.federation.MethodResponse + (*Argument)(nil), // 28: grpc.federation.Argument + (*FieldRule)(nil), // 29: grpc.federation.FieldRule + (*FieldOneof)(nil), // 30: grpc.federation.FieldOneof + (*CELPlugin)(nil), // 31: grpc.federation.CELPlugin + (*CELPluginExport)(nil), // 32: grpc.federation.CELPluginExport + (*CELFunction)(nil), // 33: grpc.federation.CELFunction + (*CELReceiverType)(nil), // 34: grpc.federation.CELReceiverType + (*CELFunctionArgument)(nil), // 35: grpc.federation.CELFunctionArgument + (*CELType)(nil), // 36: grpc.federation.CELType + (*CELMapType)(nil), // 37: grpc.federation.CELMapType + (*CELVariable)(nil), // 38: grpc.federation.CELVariable + (code.Code)(0), // 39: google.rpc.Code + (*errdetails.ErrorInfo)(nil), // 40: google.rpc.ErrorInfo + (*errdetails.RetryInfo)(nil), // 41: google.rpc.RetryInfo + (*errdetails.DebugInfo)(nil), // 42: google.rpc.DebugInfo + (*errdetails.QuotaFailure)(nil), // 43: google.rpc.QuotaFailure + (*errdetails.PreconditionFailure)(nil), // 44: google.rpc.PreconditionFailure + (*errdetails.BadRequest)(nil), // 45: google.rpc.BadRequest + (*errdetails.RequestInfo)(nil), // 46: google.rpc.RequestInfo + (*errdetails.ResourceInfo)(nil), // 47: google.rpc.ResourceInfo + (*errdetails.Help)(nil), // 48: google.rpc.Help + (*errdetails.LocalizedMessage)(nil), // 49: google.rpc.LocalizedMessage + (*descriptorpb.FileOptions)(nil), // 50: google.protobuf.FileOptions + (*descriptorpb.ServiceOptions)(nil), // 51: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 52: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 53: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 54: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 55: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 56: google.protobuf.EnumValueOptions + (*descriptorpb.OneofOptions)(nil), // 57: google.protobuf.OneofOptions } var file_grpc_federation_federation_proto_depIdxs = []int32{ - 30, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin + 31, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin 7, // 1: grpc.federation.ServiceRule.env:type_name -> grpc.federation.Env 8, // 2: grpc.federation.Env.var:type_name -> grpc.federation.EnvVar 9, // 3: grpc.federation.EnvVar.type:type_name -> grpc.federation.EnvType @@ -3645,71 +3746,73 @@ var file_grpc_federation_federation_proto_depIdxs = []int32{ 14, // 10: grpc.federation.MessageRule.def:type_name -> grpc.federation.VariableDefinition 15, // 11: grpc.federation.VariableDefinition.map:type_name -> grpc.federation.MapExpr 17, // 12: grpc.federation.VariableDefinition.message:type_name -> grpc.federation.MessageExpr - 18, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr - 21, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr - 16, // 15: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator - 17, // 16: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr - 27, // 17: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument - 25, // 18: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest - 22, // 19: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy - 19, // 20: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError - 14, // 21: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition - 38, // 22: grpc.federation.GRPCError.code:type_name -> google.rpc.Code - 20, // 23: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail - 1, // 24: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel - 14, // 25: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition - 17, // 26: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr - 39, // 27: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo - 40, // 28: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo - 41, // 29: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo - 42, // 30: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure - 43, // 31: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure - 44, // 32: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest - 45, // 33: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo - 46, // 34: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo - 47, // 35: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help - 48, // 36: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage - 19, // 37: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError - 23, // 38: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant - 24, // 39: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential - 29, // 40: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof - 11, // 41: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption - 14, // 42: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition - 31, // 43: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport - 33, // 44: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType - 32, // 45: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction - 37, // 46: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable - 34, // 47: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument - 35, // 48: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType - 32, // 49: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction - 35, // 50: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType - 0, // 51: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind - 35, // 52: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType - 36, // 53: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType - 35, // 54: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType - 35, // 55: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType - 35, // 56: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType - 49, // 57: grpc.federation.file:extendee -> google.protobuf.FileOptions - 50, // 58: grpc.federation.service:extendee -> google.protobuf.ServiceOptions - 51, // 59: grpc.federation.method:extendee -> google.protobuf.MethodOptions - 52, // 60: grpc.federation.message:extendee -> google.protobuf.MessageOptions - 53, // 61: grpc.federation.field:extendee -> google.protobuf.FieldOptions - 54, // 62: grpc.federation.enum:extendee -> google.protobuf.EnumOptions - 55, // 63: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions - 56, // 64: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions - 2, // 65: grpc.federation.file:type_name -> grpc.federation.FileRule - 6, // 66: grpc.federation.service:type_name -> grpc.federation.ServiceRule - 12, // 67: grpc.federation.method:type_name -> grpc.federation.MethodRule - 13, // 68: grpc.federation.message:type_name -> grpc.federation.MessageRule - 28, // 69: grpc.federation.field:type_name -> grpc.federation.FieldRule - 3, // 70: grpc.federation.enum:type_name -> grpc.federation.EnumRule - 4, // 71: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule - 5, // 72: grpc.federation.oneof:type_name -> grpc.federation.OneofRule - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 65, // [65:73] is the sub-list for extension type_name - 57, // [57:65] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 19, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr + 22, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr + 18, // 15: grpc.federation.VariableDefinition.enum:type_name -> grpc.federation.EnumExpr + 16, // 16: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator + 17, // 17: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr + 18, // 18: grpc.federation.MapExpr.enum:type_name -> grpc.federation.EnumExpr + 28, // 19: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument + 26, // 20: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest + 23, // 21: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy + 20, // 22: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError + 14, // 23: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition + 39, // 24: grpc.federation.GRPCError.code:type_name -> google.rpc.Code + 21, // 25: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail + 1, // 26: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel + 14, // 27: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition + 17, // 28: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr + 40, // 29: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo + 41, // 30: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo + 42, // 31: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo + 43, // 32: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure + 44, // 33: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure + 45, // 34: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest + 46, // 35: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo + 47, // 36: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo + 48, // 37: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help + 49, // 38: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage + 20, // 39: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError + 24, // 40: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant + 25, // 41: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential + 30, // 42: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof + 11, // 43: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption + 14, // 44: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition + 32, // 45: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport + 34, // 46: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType + 33, // 47: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction + 38, // 48: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable + 35, // 49: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument + 36, // 50: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType + 33, // 51: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction + 36, // 52: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType + 0, // 53: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind + 36, // 54: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType + 37, // 55: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType + 36, // 56: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType + 36, // 57: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType + 36, // 58: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType + 50, // 59: grpc.federation.file:extendee -> google.protobuf.FileOptions + 51, // 60: grpc.federation.service:extendee -> google.protobuf.ServiceOptions + 52, // 61: grpc.federation.method:extendee -> google.protobuf.MethodOptions + 53, // 62: grpc.federation.message:extendee -> google.protobuf.MessageOptions + 54, // 63: grpc.federation.field:extendee -> google.protobuf.FieldOptions + 55, // 64: grpc.federation.enum:extendee -> google.protobuf.EnumOptions + 56, // 65: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions + 57, // 66: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions + 2, // 67: grpc.federation.file:type_name -> grpc.federation.FileRule + 6, // 68: grpc.federation.service:type_name -> grpc.federation.ServiceRule + 12, // 69: grpc.federation.method:type_name -> grpc.federation.MethodRule + 13, // 70: grpc.federation.message:type_name -> grpc.federation.MessageRule + 29, // 71: grpc.federation.field:type_name -> grpc.federation.FieldRule + 3, // 72: grpc.federation.enum:type_name -> grpc.federation.EnumRule + 4, // 73: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule + 5, // 74: grpc.federation.oneof:type_name -> grpc.federation.OneofRule + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 67, // [67:75] is the sub-list for extension type_name + 59, // [59:67] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_grpc_federation_federation_proto_init() } @@ -3911,7 +4014,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallExpr); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -3923,7 +4026,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*CallExpr); i { case 0: return &v.state case 1: @@ -3935,7 +4038,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -3947,7 +4050,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -3959,7 +4062,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -3971,7 +4074,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyConstant); i { + switch v := v.(*RetryPolicy); i { case 0: return &v.state case 1: @@ -3983,7 +4086,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyExponential); i { + switch v := v.(*RetryPolicyConstant); i { case 0: return &v.state case 1: @@ -3995,7 +4098,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodRequest); i { + switch v := v.(*RetryPolicyExponential); i { case 0: return &v.state case 1: @@ -4007,7 +4110,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodResponse); i { + switch v := v.(*MethodRequest); i { case 0: return &v.state case 1: @@ -4019,7 +4122,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*MethodResponse); i { case 0: return &v.state case 1: @@ -4031,7 +4134,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldRule); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -4043,7 +4146,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOneof); i { + switch v := v.(*FieldRule); i { case 0: return &v.state case 1: @@ -4055,7 +4158,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*FieldOneof); i { case 0: return &v.state case 1: @@ -4067,7 +4170,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPluginExport); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -4079,7 +4182,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPluginExport); i { case 0: return &v.state case 1: @@ -4091,7 +4194,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELReceiverType); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -4103,7 +4206,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunctionArgument); i { + switch v := v.(*CELReceiverType); i { case 0: return &v.state case 1: @@ -4115,7 +4218,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELType); i { + switch v := v.(*CELFunctionArgument); i { case 0: return &v.state case 1: @@ -4127,7 +4230,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELMapType); i { + switch v := v.(*CELType); i { case 0: return &v.state case 1: @@ -4139,6 +4242,18 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CELMapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_federation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CELVariable); i { case 0: return &v.state @@ -4167,29 +4282,31 @@ func file_grpc_federation_federation_proto_init() { (*VariableDefinition_Message)(nil), (*VariableDefinition_Call)(nil), (*VariableDefinition_Validation)(nil), + (*VariableDefinition_Enum)(nil), } file_grpc_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{ (*MapExpr_By)(nil), (*MapExpr_Message)(nil), + (*MapExpr_Enum)(nil), } - file_grpc_federation_federation_proto_msgTypes[16].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[19].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[22].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[23].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[24].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[25].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[28].OneofWrappers = []interface{}{ (*FieldOneof_If)(nil), (*FieldOneof_Default)(nil), } - file_grpc_federation_federation_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[34].OneofWrappers = []interface{}{ (*CELType_Kind)(nil), (*CELType_Repeated)(nil), (*CELType_Map)(nil), @@ -4202,7 +4319,7 @@ func file_grpc_federation_federation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_federation_proto_rawDesc, NumEnums: 2, - NumMessages: 36, + NumMessages: 37, NumExtensions: 8, NumServices: 0, }, diff --git a/_examples/05_async/grpc/federation/federation.pb.go b/_examples/05_async/grpc/federation/federation.pb.go index ecfdd20c..5cb2d17a 100644 --- a/_examples/05_async/grpc/federation/federation.pb.go +++ b/_examples/05_async/grpc/federation/federation.pb.go @@ -151,7 +151,7 @@ func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use GRPCError_LogLevel.Descriptor instead. func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17, 0} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18, 0} } type FileRule struct { @@ -938,6 +938,7 @@ type VariableDefinition struct { // *VariableDefinition_Message // *VariableDefinition_Call // *VariableDefinition_Validation + // *VariableDefinition_Enum Expr isVariableDefinition_Expr `protobuf_oneof:"expr"` } @@ -1036,6 +1037,13 @@ func (x *VariableDefinition) GetValidation() *ValidationExpr { return nil } +func (x *VariableDefinition) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableDefinition_Enum); ok { + return x.Enum + } + return nil +} + type isVariableDefinition_Expr interface { isVariableDefinition_Expr() } @@ -1065,6 +1073,11 @@ type VariableDefinition_Validation struct { Validation *ValidationExpr `protobuf:"bytes,15,opt,name=validation,proto3,oneof"` } +type VariableDefinition_Enum struct { + // enum gets with cel value. + Enum *EnumExpr `protobuf:"bytes,16,opt,name=enum,proto3,oneof"` +} + func (*VariableDefinition_By) isVariableDefinition_Expr() {} func (*VariableDefinition_Map) isVariableDefinition_Expr() {} @@ -1075,6 +1088,8 @@ func (*VariableDefinition_Call) isVariableDefinition_Expr() {} func (*VariableDefinition_Validation) isVariableDefinition_Expr() {} +func (*VariableDefinition_Enum) isVariableDefinition_Expr() {} + // MapExpr apply map operation for the specified repeated type. type MapExpr struct { state protoimpl.MessageState @@ -1090,6 +1105,7 @@ type MapExpr struct { // // *MapExpr_By // *MapExpr_Message + // *MapExpr_Enum Expr isMapExpr_Expr `protobuf_oneof:"expr"` } @@ -1153,6 +1169,13 @@ func (x *MapExpr) GetMessage() *MessageExpr { return nil } +func (x *MapExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapExpr_Expr interface { isMapExpr_Expr() } @@ -1169,10 +1192,18 @@ type MapExpr_Message struct { Message *MessageExpr `protobuf:"bytes,12,opt,name=message,proto3,oneof"` } +type MapExpr_Enum struct { + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + Enum *EnumExpr `protobuf:"bytes,13,opt,name=enum,proto3,oneof"` +} + func (*MapExpr_By) isMapExpr_Expr() {} func (*MapExpr_Message) isMapExpr_Expr() {} +func (*MapExpr_Enum) isMapExpr_Expr() {} + // Iterator represents iterator variable. type Iterator struct { state protoimpl.MessageState @@ -1291,6 +1322,65 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +// EnumExpr represents dependent enum. +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // `by` evaluates with CEL. + By string `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} +} + +func (x *EnumExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnumExpr) GetBy() string { + if x != nil { + return x.By + } + return "" +} + // CallExpr represents how to call gRPC method. type CallExpr struct { state protoimpl.MessageState @@ -1316,7 +1406,7 @@ type CallExpr struct { func (x *CallExpr) Reset() { *x = CallExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1419,7 @@ func (x *CallExpr) String() string { func (*CallExpr) ProtoMessage() {} func (x *CallExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1432,7 @@ func (x *CallExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use CallExpr.ProtoReflect.Descriptor instead. func (*CallExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} } func (x *CallExpr) GetMethod() string { @@ -1418,7 +1508,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1521,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1534,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} } func (x *GRPCError) GetDef() []*VariableDefinition { @@ -1541,7 +1631,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1554,7 +1644,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1567,7 +1657,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} } func (x *GRPCErrorDetail) GetIf() string { @@ -1685,7 +1775,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1788,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1801,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} } func (x *ValidationExpr) GetName() string { @@ -1748,7 +1838,7 @@ type RetryPolicy struct { func (x *RetryPolicy) Reset() { *x = RetryPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1851,7 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1864,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} } func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy { @@ -1841,7 +1931,7 @@ type RetryPolicyConstant struct { func (x *RetryPolicyConstant) Reset() { *x = RetryPolicyConstant{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1944,7 @@ func (x *RetryPolicyConstant) String() string { func (*RetryPolicyConstant) ProtoMessage() {} func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1957,7 @@ func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyConstant.ProtoReflect.Descriptor instead. func (*RetryPolicyConstant) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} } func (x *RetryPolicyConstant) GetInterval() string { @@ -1905,7 +1995,7 @@ type RetryPolicyExponential struct { func (x *RetryPolicyExponential) Reset() { *x = RetryPolicyExponential{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2008,7 @@ func (x *RetryPolicyExponential) String() string { func (*RetryPolicyExponential) ProtoMessage() {} func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2021,7 @@ func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyExponential.ProtoReflect.Descriptor instead. func (*RetryPolicyExponential) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} } func (x *RetryPolicyExponential) GetInitialInterval() string { @@ -1992,7 +2082,7 @@ type MethodRequest struct { func (x *MethodRequest) Reset() { *x = MethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2005,7 +2095,7 @@ func (x *MethodRequest) String() string { func (*MethodRequest) ProtoMessage() {} func (x *MethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2018,7 +2108,7 @@ func (x *MethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodRequest.ProtoReflect.Descriptor instead. func (*MethodRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} } func (x *MethodRequest) GetField() string { @@ -2062,7 +2152,7 @@ type MethodResponse struct { func (x *MethodResponse) Reset() { *x = MethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2165,7 @@ func (x *MethodResponse) String() string { func (*MethodResponse) ProtoMessage() {} func (x *MethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2178,7 @@ func (x *MethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodResponse.ProtoReflect.Descriptor instead. func (*MethodResponse) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} } func (x *MethodResponse) GetName() string { @@ -2134,7 +2224,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2237,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,7 +2250,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} } func (x *Argument) GetName() string { @@ -2210,7 +2300,7 @@ type FieldRule struct { func (x *FieldRule) Reset() { *x = FieldRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2313,7 @@ func (x *FieldRule) String() string { func (*FieldRule) ProtoMessage() {} func (x *FieldRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2326,7 @@ func (x *FieldRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldRule.ProtoReflect.Descriptor instead. func (*FieldRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} } func (x *FieldRule) GetCustomResolver() bool { @@ -2299,7 +2389,7 @@ type FieldOneof struct { func (x *FieldOneof) Reset() { *x = FieldOneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2402,7 @@ func (x *FieldOneof) String() string { func (*FieldOneof) ProtoMessage() {} func (x *FieldOneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2415,7 @@ func (x *FieldOneof) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldOneof.ProtoReflect.Descriptor instead. func (*FieldOneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} } func (m *FieldOneof) GetCond() isFieldOneof_Cond { @@ -2397,7 +2487,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2500,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2513,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} } func (x *CELPlugin) GetExport() []*CELPluginExport { @@ -2455,7 +2545,7 @@ type CELPluginExport struct { func (x *CELPluginExport) Reset() { *x = CELPluginExport{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2558,7 @@ func (x *CELPluginExport) String() string { func (*CELPluginExport) ProtoMessage() {} func (x *CELPluginExport) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2571,7 @@ func (x *CELPluginExport) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPluginExport.ProtoReflect.Descriptor instead. func (*CELPluginExport) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} } func (x *CELPluginExport) GetName() string { @@ -2539,7 +2629,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2642,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2655,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} } func (x *CELFunction) GetName() string { @@ -2614,7 +2704,7 @@ type CELReceiverType struct { func (x *CELReceiverType) Reset() { *x = CELReceiverType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2717,7 @@ func (x *CELReceiverType) String() string { func (*CELReceiverType) ProtoMessage() {} func (x *CELReceiverType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2730,7 @@ func (x *CELReceiverType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELReceiverType.ProtoReflect.Descriptor instead. func (*CELReceiverType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} } func (x *CELReceiverType) GetName() string { @@ -2682,7 +2772,7 @@ type CELFunctionArgument struct { func (x *CELFunctionArgument) Reset() { *x = CELFunctionArgument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2785,7 @@ func (x *CELFunctionArgument) String() string { func (*CELFunctionArgument) ProtoMessage() {} func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2798,7 @@ func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunctionArgument.ProtoReflect.Descriptor instead. func (*CELFunctionArgument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} } func (x *CELFunctionArgument) GetName() string { @@ -2751,7 +2841,7 @@ type CELType struct { func (x *CELType) Reset() { *x = CELType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2854,7 @@ func (x *CELType) String() string { func (*CELType) ProtoMessage() {} func (x *CELType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2867,7 @@ func (x *CELType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELType.ProtoReflect.Descriptor instead. func (*CELType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} } func (m *CELType) GetType() isCELType_Type { @@ -2876,7 +2966,7 @@ type CELMapType struct { func (x *CELMapType) Reset() { *x = CELMapType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +2979,7 @@ func (x *CELMapType) String() string { func (*CELMapType) ProtoMessage() {} func (x *CELMapType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +2992,7 @@ func (x *CELMapType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELMapType.ProtoReflect.Descriptor instead. func (*CELMapType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} } func (x *CELMapType) GetKey() *CELType { @@ -2937,7 +3027,7 @@ type CELVariable struct { func (x *CELVariable) Reset() { *x = CELVariable{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3040,7 @@ func (x *CELVariable) String() string { func (*CELVariable) ProtoMessage() {} func (x *CELVariable) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3053,7 @@ func (x *CELVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use CELVariable.ProtoReflect.Descriptor instead. func (*CELVariable) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{36} } func (x *CELVariable) GetName() string { @@ -3194,7 +3284,7 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x12, + 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xa7, 0x03, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, @@ -3215,347 +3305,357 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0x50, 0x0a, - 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, + 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, + 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x22, 0x86, 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x22, 0x86, - 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x03, - 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, 0x03, 0x64, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, - 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, - 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, - 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, - 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, - 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, 0x08, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, - 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x69, 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, + 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, + 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, + 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, - 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x38, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, + 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, + 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x12, 0x2f, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x43, 0x45, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, + 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, 0x4c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x1a, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, - 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, 0x4d, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, + 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, + 0x4c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, + 0x1a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, + 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, - 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, - 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x54, - 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x3a, 0x54, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, 0xa3, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x50, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x50, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x3a, 0x61, - 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, - 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, - 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x3a, 0x61, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, + 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, + 0x02, 0x03, 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, + 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -3571,7 +3671,7 @@ func file_grpc_federation_federation_proto_rawDescGZIP() []byte { } var file_grpc_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_grpc_federation_federation_proto_goTypes = []interface{}{ (TypeKind)(0), // 0: grpc.federation.TypeKind (GRPCError_LogLevel)(0), // 1: grpc.federation.GRPCError.LogLevel @@ -3591,48 +3691,49 @@ var file_grpc_federation_federation_proto_goTypes = []interface{}{ (*MapExpr)(nil), // 15: grpc.federation.MapExpr (*Iterator)(nil), // 16: grpc.federation.Iterator (*MessageExpr)(nil), // 17: grpc.federation.MessageExpr - (*CallExpr)(nil), // 18: grpc.federation.CallExpr - (*GRPCError)(nil), // 19: grpc.federation.GRPCError - (*GRPCErrorDetail)(nil), // 20: grpc.federation.GRPCErrorDetail - (*ValidationExpr)(nil), // 21: grpc.federation.ValidationExpr - (*RetryPolicy)(nil), // 22: grpc.federation.RetryPolicy - (*RetryPolicyConstant)(nil), // 23: grpc.federation.RetryPolicyConstant - (*RetryPolicyExponential)(nil), // 24: grpc.federation.RetryPolicyExponential - (*MethodRequest)(nil), // 25: grpc.federation.MethodRequest - (*MethodResponse)(nil), // 26: grpc.federation.MethodResponse - (*Argument)(nil), // 27: grpc.federation.Argument - (*FieldRule)(nil), // 28: grpc.federation.FieldRule - (*FieldOneof)(nil), // 29: grpc.federation.FieldOneof - (*CELPlugin)(nil), // 30: grpc.federation.CELPlugin - (*CELPluginExport)(nil), // 31: grpc.federation.CELPluginExport - (*CELFunction)(nil), // 32: grpc.federation.CELFunction - (*CELReceiverType)(nil), // 33: grpc.federation.CELReceiverType - (*CELFunctionArgument)(nil), // 34: grpc.federation.CELFunctionArgument - (*CELType)(nil), // 35: grpc.federation.CELType - (*CELMapType)(nil), // 36: grpc.federation.CELMapType - (*CELVariable)(nil), // 37: grpc.federation.CELVariable - (code.Code)(0), // 38: google.rpc.Code - (*errdetails.ErrorInfo)(nil), // 39: google.rpc.ErrorInfo - (*errdetails.RetryInfo)(nil), // 40: google.rpc.RetryInfo - (*errdetails.DebugInfo)(nil), // 41: google.rpc.DebugInfo - (*errdetails.QuotaFailure)(nil), // 42: google.rpc.QuotaFailure - (*errdetails.PreconditionFailure)(nil), // 43: google.rpc.PreconditionFailure - (*errdetails.BadRequest)(nil), // 44: google.rpc.BadRequest - (*errdetails.RequestInfo)(nil), // 45: google.rpc.RequestInfo - (*errdetails.ResourceInfo)(nil), // 46: google.rpc.ResourceInfo - (*errdetails.Help)(nil), // 47: google.rpc.Help - (*errdetails.LocalizedMessage)(nil), // 48: google.rpc.LocalizedMessage - (*descriptorpb.FileOptions)(nil), // 49: google.protobuf.FileOptions - (*descriptorpb.ServiceOptions)(nil), // 50: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 51: google.protobuf.MethodOptions - (*descriptorpb.MessageOptions)(nil), // 52: google.protobuf.MessageOptions - (*descriptorpb.FieldOptions)(nil), // 53: google.protobuf.FieldOptions - (*descriptorpb.EnumOptions)(nil), // 54: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 55: google.protobuf.EnumValueOptions - (*descriptorpb.OneofOptions)(nil), // 56: google.protobuf.OneofOptions + (*EnumExpr)(nil), // 18: grpc.federation.EnumExpr + (*CallExpr)(nil), // 19: grpc.federation.CallExpr + (*GRPCError)(nil), // 20: grpc.federation.GRPCError + (*GRPCErrorDetail)(nil), // 21: grpc.federation.GRPCErrorDetail + (*ValidationExpr)(nil), // 22: grpc.federation.ValidationExpr + (*RetryPolicy)(nil), // 23: grpc.federation.RetryPolicy + (*RetryPolicyConstant)(nil), // 24: grpc.federation.RetryPolicyConstant + (*RetryPolicyExponential)(nil), // 25: grpc.federation.RetryPolicyExponential + (*MethodRequest)(nil), // 26: grpc.federation.MethodRequest + (*MethodResponse)(nil), // 27: grpc.federation.MethodResponse + (*Argument)(nil), // 28: grpc.federation.Argument + (*FieldRule)(nil), // 29: grpc.federation.FieldRule + (*FieldOneof)(nil), // 30: grpc.federation.FieldOneof + (*CELPlugin)(nil), // 31: grpc.federation.CELPlugin + (*CELPluginExport)(nil), // 32: grpc.federation.CELPluginExport + (*CELFunction)(nil), // 33: grpc.federation.CELFunction + (*CELReceiverType)(nil), // 34: grpc.federation.CELReceiverType + (*CELFunctionArgument)(nil), // 35: grpc.federation.CELFunctionArgument + (*CELType)(nil), // 36: grpc.federation.CELType + (*CELMapType)(nil), // 37: grpc.federation.CELMapType + (*CELVariable)(nil), // 38: grpc.federation.CELVariable + (code.Code)(0), // 39: google.rpc.Code + (*errdetails.ErrorInfo)(nil), // 40: google.rpc.ErrorInfo + (*errdetails.RetryInfo)(nil), // 41: google.rpc.RetryInfo + (*errdetails.DebugInfo)(nil), // 42: google.rpc.DebugInfo + (*errdetails.QuotaFailure)(nil), // 43: google.rpc.QuotaFailure + (*errdetails.PreconditionFailure)(nil), // 44: google.rpc.PreconditionFailure + (*errdetails.BadRequest)(nil), // 45: google.rpc.BadRequest + (*errdetails.RequestInfo)(nil), // 46: google.rpc.RequestInfo + (*errdetails.ResourceInfo)(nil), // 47: google.rpc.ResourceInfo + (*errdetails.Help)(nil), // 48: google.rpc.Help + (*errdetails.LocalizedMessage)(nil), // 49: google.rpc.LocalizedMessage + (*descriptorpb.FileOptions)(nil), // 50: google.protobuf.FileOptions + (*descriptorpb.ServiceOptions)(nil), // 51: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 52: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 53: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 54: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 55: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 56: google.protobuf.EnumValueOptions + (*descriptorpb.OneofOptions)(nil), // 57: google.protobuf.OneofOptions } var file_grpc_federation_federation_proto_depIdxs = []int32{ - 30, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin + 31, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin 7, // 1: grpc.federation.ServiceRule.env:type_name -> grpc.federation.Env 8, // 2: grpc.federation.Env.var:type_name -> grpc.federation.EnvVar 9, // 3: grpc.federation.EnvVar.type:type_name -> grpc.federation.EnvType @@ -3645,71 +3746,73 @@ var file_grpc_federation_federation_proto_depIdxs = []int32{ 14, // 10: grpc.federation.MessageRule.def:type_name -> grpc.federation.VariableDefinition 15, // 11: grpc.federation.VariableDefinition.map:type_name -> grpc.federation.MapExpr 17, // 12: grpc.federation.VariableDefinition.message:type_name -> grpc.federation.MessageExpr - 18, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr - 21, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr - 16, // 15: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator - 17, // 16: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr - 27, // 17: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument - 25, // 18: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest - 22, // 19: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy - 19, // 20: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError - 14, // 21: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition - 38, // 22: grpc.federation.GRPCError.code:type_name -> google.rpc.Code - 20, // 23: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail - 1, // 24: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel - 14, // 25: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition - 17, // 26: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr - 39, // 27: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo - 40, // 28: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo - 41, // 29: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo - 42, // 30: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure - 43, // 31: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure - 44, // 32: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest - 45, // 33: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo - 46, // 34: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo - 47, // 35: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help - 48, // 36: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage - 19, // 37: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError - 23, // 38: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant - 24, // 39: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential - 29, // 40: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof - 11, // 41: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption - 14, // 42: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition - 31, // 43: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport - 33, // 44: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType - 32, // 45: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction - 37, // 46: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable - 34, // 47: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument - 35, // 48: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType - 32, // 49: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction - 35, // 50: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType - 0, // 51: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind - 35, // 52: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType - 36, // 53: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType - 35, // 54: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType - 35, // 55: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType - 35, // 56: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType - 49, // 57: grpc.federation.file:extendee -> google.protobuf.FileOptions - 50, // 58: grpc.federation.service:extendee -> google.protobuf.ServiceOptions - 51, // 59: grpc.federation.method:extendee -> google.protobuf.MethodOptions - 52, // 60: grpc.federation.message:extendee -> google.protobuf.MessageOptions - 53, // 61: grpc.federation.field:extendee -> google.protobuf.FieldOptions - 54, // 62: grpc.federation.enum:extendee -> google.protobuf.EnumOptions - 55, // 63: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions - 56, // 64: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions - 2, // 65: grpc.federation.file:type_name -> grpc.federation.FileRule - 6, // 66: grpc.federation.service:type_name -> grpc.federation.ServiceRule - 12, // 67: grpc.federation.method:type_name -> grpc.federation.MethodRule - 13, // 68: grpc.federation.message:type_name -> grpc.federation.MessageRule - 28, // 69: grpc.federation.field:type_name -> grpc.federation.FieldRule - 3, // 70: grpc.federation.enum:type_name -> grpc.federation.EnumRule - 4, // 71: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule - 5, // 72: grpc.federation.oneof:type_name -> grpc.federation.OneofRule - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 65, // [65:73] is the sub-list for extension type_name - 57, // [57:65] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 19, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr + 22, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr + 18, // 15: grpc.federation.VariableDefinition.enum:type_name -> grpc.federation.EnumExpr + 16, // 16: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator + 17, // 17: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr + 18, // 18: grpc.federation.MapExpr.enum:type_name -> grpc.federation.EnumExpr + 28, // 19: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument + 26, // 20: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest + 23, // 21: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy + 20, // 22: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError + 14, // 23: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition + 39, // 24: grpc.federation.GRPCError.code:type_name -> google.rpc.Code + 21, // 25: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail + 1, // 26: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel + 14, // 27: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition + 17, // 28: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr + 40, // 29: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo + 41, // 30: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo + 42, // 31: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo + 43, // 32: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure + 44, // 33: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure + 45, // 34: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest + 46, // 35: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo + 47, // 36: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo + 48, // 37: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help + 49, // 38: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage + 20, // 39: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError + 24, // 40: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant + 25, // 41: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential + 30, // 42: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof + 11, // 43: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption + 14, // 44: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition + 32, // 45: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport + 34, // 46: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType + 33, // 47: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction + 38, // 48: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable + 35, // 49: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument + 36, // 50: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType + 33, // 51: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction + 36, // 52: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType + 0, // 53: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind + 36, // 54: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType + 37, // 55: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType + 36, // 56: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType + 36, // 57: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType + 36, // 58: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType + 50, // 59: grpc.federation.file:extendee -> google.protobuf.FileOptions + 51, // 60: grpc.federation.service:extendee -> google.protobuf.ServiceOptions + 52, // 61: grpc.federation.method:extendee -> google.protobuf.MethodOptions + 53, // 62: grpc.federation.message:extendee -> google.protobuf.MessageOptions + 54, // 63: grpc.federation.field:extendee -> google.protobuf.FieldOptions + 55, // 64: grpc.federation.enum:extendee -> google.protobuf.EnumOptions + 56, // 65: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions + 57, // 66: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions + 2, // 67: grpc.federation.file:type_name -> grpc.federation.FileRule + 6, // 68: grpc.federation.service:type_name -> grpc.federation.ServiceRule + 12, // 69: grpc.federation.method:type_name -> grpc.federation.MethodRule + 13, // 70: grpc.federation.message:type_name -> grpc.federation.MessageRule + 29, // 71: grpc.federation.field:type_name -> grpc.federation.FieldRule + 3, // 72: grpc.federation.enum:type_name -> grpc.federation.EnumRule + 4, // 73: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule + 5, // 74: grpc.federation.oneof:type_name -> grpc.federation.OneofRule + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 67, // [67:75] is the sub-list for extension type_name + 59, // [59:67] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_grpc_federation_federation_proto_init() } @@ -3911,7 +4014,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallExpr); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -3923,7 +4026,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*CallExpr); i { case 0: return &v.state case 1: @@ -3935,7 +4038,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -3947,7 +4050,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -3959,7 +4062,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -3971,7 +4074,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyConstant); i { + switch v := v.(*RetryPolicy); i { case 0: return &v.state case 1: @@ -3983,7 +4086,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyExponential); i { + switch v := v.(*RetryPolicyConstant); i { case 0: return &v.state case 1: @@ -3995,7 +4098,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodRequest); i { + switch v := v.(*RetryPolicyExponential); i { case 0: return &v.state case 1: @@ -4007,7 +4110,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodResponse); i { + switch v := v.(*MethodRequest); i { case 0: return &v.state case 1: @@ -4019,7 +4122,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*MethodResponse); i { case 0: return &v.state case 1: @@ -4031,7 +4134,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldRule); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -4043,7 +4146,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOneof); i { + switch v := v.(*FieldRule); i { case 0: return &v.state case 1: @@ -4055,7 +4158,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*FieldOneof); i { case 0: return &v.state case 1: @@ -4067,7 +4170,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPluginExport); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -4079,7 +4182,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPluginExport); i { case 0: return &v.state case 1: @@ -4091,7 +4194,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELReceiverType); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -4103,7 +4206,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunctionArgument); i { + switch v := v.(*CELReceiverType); i { case 0: return &v.state case 1: @@ -4115,7 +4218,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELType); i { + switch v := v.(*CELFunctionArgument); i { case 0: return &v.state case 1: @@ -4127,7 +4230,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELMapType); i { + switch v := v.(*CELType); i { case 0: return &v.state case 1: @@ -4139,6 +4242,18 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CELMapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_federation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CELVariable); i { case 0: return &v.state @@ -4167,29 +4282,31 @@ func file_grpc_federation_federation_proto_init() { (*VariableDefinition_Message)(nil), (*VariableDefinition_Call)(nil), (*VariableDefinition_Validation)(nil), + (*VariableDefinition_Enum)(nil), } file_grpc_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{ (*MapExpr_By)(nil), (*MapExpr_Message)(nil), + (*MapExpr_Enum)(nil), } - file_grpc_federation_federation_proto_msgTypes[16].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[19].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[22].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[23].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[24].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[25].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[28].OneofWrappers = []interface{}{ (*FieldOneof_If)(nil), (*FieldOneof_Default)(nil), } - file_grpc_federation_federation_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[34].OneofWrappers = []interface{}{ (*CELType_Kind)(nil), (*CELType_Repeated)(nil), (*CELType_Map)(nil), @@ -4202,7 +4319,7 @@ func file_grpc_federation_federation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_federation_proto_rawDesc, NumEnums: 2, - NumMessages: 36, + NumMessages: 37, NumExtensions: 8, NumServices: 0, }, diff --git a/_examples/06_alias/grpc/federation/federation.pb.go b/_examples/06_alias/grpc/federation/federation.pb.go index ecfdd20c..5cb2d17a 100644 --- a/_examples/06_alias/grpc/federation/federation.pb.go +++ b/_examples/06_alias/grpc/federation/federation.pb.go @@ -151,7 +151,7 @@ func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use GRPCError_LogLevel.Descriptor instead. func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17, 0} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18, 0} } type FileRule struct { @@ -938,6 +938,7 @@ type VariableDefinition struct { // *VariableDefinition_Message // *VariableDefinition_Call // *VariableDefinition_Validation + // *VariableDefinition_Enum Expr isVariableDefinition_Expr `protobuf_oneof:"expr"` } @@ -1036,6 +1037,13 @@ func (x *VariableDefinition) GetValidation() *ValidationExpr { return nil } +func (x *VariableDefinition) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableDefinition_Enum); ok { + return x.Enum + } + return nil +} + type isVariableDefinition_Expr interface { isVariableDefinition_Expr() } @@ -1065,6 +1073,11 @@ type VariableDefinition_Validation struct { Validation *ValidationExpr `protobuf:"bytes,15,opt,name=validation,proto3,oneof"` } +type VariableDefinition_Enum struct { + // enum gets with cel value. + Enum *EnumExpr `protobuf:"bytes,16,opt,name=enum,proto3,oneof"` +} + func (*VariableDefinition_By) isVariableDefinition_Expr() {} func (*VariableDefinition_Map) isVariableDefinition_Expr() {} @@ -1075,6 +1088,8 @@ func (*VariableDefinition_Call) isVariableDefinition_Expr() {} func (*VariableDefinition_Validation) isVariableDefinition_Expr() {} +func (*VariableDefinition_Enum) isVariableDefinition_Expr() {} + // MapExpr apply map operation for the specified repeated type. type MapExpr struct { state protoimpl.MessageState @@ -1090,6 +1105,7 @@ type MapExpr struct { // // *MapExpr_By // *MapExpr_Message + // *MapExpr_Enum Expr isMapExpr_Expr `protobuf_oneof:"expr"` } @@ -1153,6 +1169,13 @@ func (x *MapExpr) GetMessage() *MessageExpr { return nil } +func (x *MapExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapExpr_Expr interface { isMapExpr_Expr() } @@ -1169,10 +1192,18 @@ type MapExpr_Message struct { Message *MessageExpr `protobuf:"bytes,12,opt,name=message,proto3,oneof"` } +type MapExpr_Enum struct { + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + Enum *EnumExpr `protobuf:"bytes,13,opt,name=enum,proto3,oneof"` +} + func (*MapExpr_By) isMapExpr_Expr() {} func (*MapExpr_Message) isMapExpr_Expr() {} +func (*MapExpr_Enum) isMapExpr_Expr() {} + // Iterator represents iterator variable. type Iterator struct { state protoimpl.MessageState @@ -1291,6 +1322,65 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +// EnumExpr represents dependent enum. +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // `by` evaluates with CEL. + By string `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} +} + +func (x *EnumExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnumExpr) GetBy() string { + if x != nil { + return x.By + } + return "" +} + // CallExpr represents how to call gRPC method. type CallExpr struct { state protoimpl.MessageState @@ -1316,7 +1406,7 @@ type CallExpr struct { func (x *CallExpr) Reset() { *x = CallExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1419,7 @@ func (x *CallExpr) String() string { func (*CallExpr) ProtoMessage() {} func (x *CallExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1432,7 @@ func (x *CallExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use CallExpr.ProtoReflect.Descriptor instead. func (*CallExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} } func (x *CallExpr) GetMethod() string { @@ -1418,7 +1508,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1521,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1534,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} } func (x *GRPCError) GetDef() []*VariableDefinition { @@ -1541,7 +1631,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1554,7 +1644,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1567,7 +1657,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} } func (x *GRPCErrorDetail) GetIf() string { @@ -1685,7 +1775,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1788,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1801,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} } func (x *ValidationExpr) GetName() string { @@ -1748,7 +1838,7 @@ type RetryPolicy struct { func (x *RetryPolicy) Reset() { *x = RetryPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1851,7 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1864,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} } func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy { @@ -1841,7 +1931,7 @@ type RetryPolicyConstant struct { func (x *RetryPolicyConstant) Reset() { *x = RetryPolicyConstant{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1944,7 @@ func (x *RetryPolicyConstant) String() string { func (*RetryPolicyConstant) ProtoMessage() {} func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1957,7 @@ func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyConstant.ProtoReflect.Descriptor instead. func (*RetryPolicyConstant) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} } func (x *RetryPolicyConstant) GetInterval() string { @@ -1905,7 +1995,7 @@ type RetryPolicyExponential struct { func (x *RetryPolicyExponential) Reset() { *x = RetryPolicyExponential{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2008,7 @@ func (x *RetryPolicyExponential) String() string { func (*RetryPolicyExponential) ProtoMessage() {} func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2021,7 @@ func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyExponential.ProtoReflect.Descriptor instead. func (*RetryPolicyExponential) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} } func (x *RetryPolicyExponential) GetInitialInterval() string { @@ -1992,7 +2082,7 @@ type MethodRequest struct { func (x *MethodRequest) Reset() { *x = MethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2005,7 +2095,7 @@ func (x *MethodRequest) String() string { func (*MethodRequest) ProtoMessage() {} func (x *MethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2018,7 +2108,7 @@ func (x *MethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodRequest.ProtoReflect.Descriptor instead. func (*MethodRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} } func (x *MethodRequest) GetField() string { @@ -2062,7 +2152,7 @@ type MethodResponse struct { func (x *MethodResponse) Reset() { *x = MethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2165,7 @@ func (x *MethodResponse) String() string { func (*MethodResponse) ProtoMessage() {} func (x *MethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2178,7 @@ func (x *MethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodResponse.ProtoReflect.Descriptor instead. func (*MethodResponse) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} } func (x *MethodResponse) GetName() string { @@ -2134,7 +2224,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2237,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,7 +2250,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} } func (x *Argument) GetName() string { @@ -2210,7 +2300,7 @@ type FieldRule struct { func (x *FieldRule) Reset() { *x = FieldRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2313,7 @@ func (x *FieldRule) String() string { func (*FieldRule) ProtoMessage() {} func (x *FieldRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2326,7 @@ func (x *FieldRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldRule.ProtoReflect.Descriptor instead. func (*FieldRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} } func (x *FieldRule) GetCustomResolver() bool { @@ -2299,7 +2389,7 @@ type FieldOneof struct { func (x *FieldOneof) Reset() { *x = FieldOneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2402,7 @@ func (x *FieldOneof) String() string { func (*FieldOneof) ProtoMessage() {} func (x *FieldOneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2415,7 @@ func (x *FieldOneof) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldOneof.ProtoReflect.Descriptor instead. func (*FieldOneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} } func (m *FieldOneof) GetCond() isFieldOneof_Cond { @@ -2397,7 +2487,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2500,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2513,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} } func (x *CELPlugin) GetExport() []*CELPluginExport { @@ -2455,7 +2545,7 @@ type CELPluginExport struct { func (x *CELPluginExport) Reset() { *x = CELPluginExport{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2558,7 @@ func (x *CELPluginExport) String() string { func (*CELPluginExport) ProtoMessage() {} func (x *CELPluginExport) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2571,7 @@ func (x *CELPluginExport) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPluginExport.ProtoReflect.Descriptor instead. func (*CELPluginExport) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} } func (x *CELPluginExport) GetName() string { @@ -2539,7 +2629,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2642,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2655,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} } func (x *CELFunction) GetName() string { @@ -2614,7 +2704,7 @@ type CELReceiverType struct { func (x *CELReceiverType) Reset() { *x = CELReceiverType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2717,7 @@ func (x *CELReceiverType) String() string { func (*CELReceiverType) ProtoMessage() {} func (x *CELReceiverType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2730,7 @@ func (x *CELReceiverType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELReceiverType.ProtoReflect.Descriptor instead. func (*CELReceiverType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} } func (x *CELReceiverType) GetName() string { @@ -2682,7 +2772,7 @@ type CELFunctionArgument struct { func (x *CELFunctionArgument) Reset() { *x = CELFunctionArgument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2785,7 @@ func (x *CELFunctionArgument) String() string { func (*CELFunctionArgument) ProtoMessage() {} func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2798,7 @@ func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunctionArgument.ProtoReflect.Descriptor instead. func (*CELFunctionArgument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} } func (x *CELFunctionArgument) GetName() string { @@ -2751,7 +2841,7 @@ type CELType struct { func (x *CELType) Reset() { *x = CELType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2854,7 @@ func (x *CELType) String() string { func (*CELType) ProtoMessage() {} func (x *CELType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2867,7 @@ func (x *CELType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELType.ProtoReflect.Descriptor instead. func (*CELType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} } func (m *CELType) GetType() isCELType_Type { @@ -2876,7 +2966,7 @@ type CELMapType struct { func (x *CELMapType) Reset() { *x = CELMapType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +2979,7 @@ func (x *CELMapType) String() string { func (*CELMapType) ProtoMessage() {} func (x *CELMapType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +2992,7 @@ func (x *CELMapType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELMapType.ProtoReflect.Descriptor instead. func (*CELMapType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} } func (x *CELMapType) GetKey() *CELType { @@ -2937,7 +3027,7 @@ type CELVariable struct { func (x *CELVariable) Reset() { *x = CELVariable{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3040,7 @@ func (x *CELVariable) String() string { func (*CELVariable) ProtoMessage() {} func (x *CELVariable) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3053,7 @@ func (x *CELVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use CELVariable.ProtoReflect.Descriptor instead. func (*CELVariable) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{36} } func (x *CELVariable) GetName() string { @@ -3194,7 +3284,7 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x12, + 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xa7, 0x03, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, @@ -3215,347 +3305,357 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0x50, 0x0a, - 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, + 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, + 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x22, 0x86, 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x22, 0x86, - 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x03, - 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, 0x03, 0x64, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, - 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, - 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, - 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, - 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, - 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, 0x08, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, - 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x69, 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, + 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, + 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, + 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, - 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x38, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, + 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, + 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x12, 0x2f, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x43, 0x45, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, + 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, 0x4c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x1a, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, - 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, 0x4d, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, + 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, + 0x4c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, + 0x1a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, + 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, - 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, - 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x54, - 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x3a, 0x54, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, 0xa3, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x50, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x50, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x3a, 0x61, - 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, - 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, - 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x3a, 0x61, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, + 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, + 0x02, 0x03, 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, + 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -3571,7 +3671,7 @@ func file_grpc_federation_federation_proto_rawDescGZIP() []byte { } var file_grpc_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_grpc_federation_federation_proto_goTypes = []interface{}{ (TypeKind)(0), // 0: grpc.federation.TypeKind (GRPCError_LogLevel)(0), // 1: grpc.federation.GRPCError.LogLevel @@ -3591,48 +3691,49 @@ var file_grpc_federation_federation_proto_goTypes = []interface{}{ (*MapExpr)(nil), // 15: grpc.federation.MapExpr (*Iterator)(nil), // 16: grpc.federation.Iterator (*MessageExpr)(nil), // 17: grpc.federation.MessageExpr - (*CallExpr)(nil), // 18: grpc.federation.CallExpr - (*GRPCError)(nil), // 19: grpc.federation.GRPCError - (*GRPCErrorDetail)(nil), // 20: grpc.federation.GRPCErrorDetail - (*ValidationExpr)(nil), // 21: grpc.federation.ValidationExpr - (*RetryPolicy)(nil), // 22: grpc.federation.RetryPolicy - (*RetryPolicyConstant)(nil), // 23: grpc.federation.RetryPolicyConstant - (*RetryPolicyExponential)(nil), // 24: grpc.federation.RetryPolicyExponential - (*MethodRequest)(nil), // 25: grpc.federation.MethodRequest - (*MethodResponse)(nil), // 26: grpc.federation.MethodResponse - (*Argument)(nil), // 27: grpc.federation.Argument - (*FieldRule)(nil), // 28: grpc.federation.FieldRule - (*FieldOneof)(nil), // 29: grpc.federation.FieldOneof - (*CELPlugin)(nil), // 30: grpc.federation.CELPlugin - (*CELPluginExport)(nil), // 31: grpc.federation.CELPluginExport - (*CELFunction)(nil), // 32: grpc.federation.CELFunction - (*CELReceiverType)(nil), // 33: grpc.federation.CELReceiverType - (*CELFunctionArgument)(nil), // 34: grpc.federation.CELFunctionArgument - (*CELType)(nil), // 35: grpc.federation.CELType - (*CELMapType)(nil), // 36: grpc.federation.CELMapType - (*CELVariable)(nil), // 37: grpc.federation.CELVariable - (code.Code)(0), // 38: google.rpc.Code - (*errdetails.ErrorInfo)(nil), // 39: google.rpc.ErrorInfo - (*errdetails.RetryInfo)(nil), // 40: google.rpc.RetryInfo - (*errdetails.DebugInfo)(nil), // 41: google.rpc.DebugInfo - (*errdetails.QuotaFailure)(nil), // 42: google.rpc.QuotaFailure - (*errdetails.PreconditionFailure)(nil), // 43: google.rpc.PreconditionFailure - (*errdetails.BadRequest)(nil), // 44: google.rpc.BadRequest - (*errdetails.RequestInfo)(nil), // 45: google.rpc.RequestInfo - (*errdetails.ResourceInfo)(nil), // 46: google.rpc.ResourceInfo - (*errdetails.Help)(nil), // 47: google.rpc.Help - (*errdetails.LocalizedMessage)(nil), // 48: google.rpc.LocalizedMessage - (*descriptorpb.FileOptions)(nil), // 49: google.protobuf.FileOptions - (*descriptorpb.ServiceOptions)(nil), // 50: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 51: google.protobuf.MethodOptions - (*descriptorpb.MessageOptions)(nil), // 52: google.protobuf.MessageOptions - (*descriptorpb.FieldOptions)(nil), // 53: google.protobuf.FieldOptions - (*descriptorpb.EnumOptions)(nil), // 54: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 55: google.protobuf.EnumValueOptions - (*descriptorpb.OneofOptions)(nil), // 56: google.protobuf.OneofOptions + (*EnumExpr)(nil), // 18: grpc.federation.EnumExpr + (*CallExpr)(nil), // 19: grpc.federation.CallExpr + (*GRPCError)(nil), // 20: grpc.federation.GRPCError + (*GRPCErrorDetail)(nil), // 21: grpc.federation.GRPCErrorDetail + (*ValidationExpr)(nil), // 22: grpc.federation.ValidationExpr + (*RetryPolicy)(nil), // 23: grpc.federation.RetryPolicy + (*RetryPolicyConstant)(nil), // 24: grpc.federation.RetryPolicyConstant + (*RetryPolicyExponential)(nil), // 25: grpc.federation.RetryPolicyExponential + (*MethodRequest)(nil), // 26: grpc.federation.MethodRequest + (*MethodResponse)(nil), // 27: grpc.federation.MethodResponse + (*Argument)(nil), // 28: grpc.federation.Argument + (*FieldRule)(nil), // 29: grpc.federation.FieldRule + (*FieldOneof)(nil), // 30: grpc.federation.FieldOneof + (*CELPlugin)(nil), // 31: grpc.federation.CELPlugin + (*CELPluginExport)(nil), // 32: grpc.federation.CELPluginExport + (*CELFunction)(nil), // 33: grpc.federation.CELFunction + (*CELReceiverType)(nil), // 34: grpc.federation.CELReceiverType + (*CELFunctionArgument)(nil), // 35: grpc.federation.CELFunctionArgument + (*CELType)(nil), // 36: grpc.federation.CELType + (*CELMapType)(nil), // 37: grpc.federation.CELMapType + (*CELVariable)(nil), // 38: grpc.federation.CELVariable + (code.Code)(0), // 39: google.rpc.Code + (*errdetails.ErrorInfo)(nil), // 40: google.rpc.ErrorInfo + (*errdetails.RetryInfo)(nil), // 41: google.rpc.RetryInfo + (*errdetails.DebugInfo)(nil), // 42: google.rpc.DebugInfo + (*errdetails.QuotaFailure)(nil), // 43: google.rpc.QuotaFailure + (*errdetails.PreconditionFailure)(nil), // 44: google.rpc.PreconditionFailure + (*errdetails.BadRequest)(nil), // 45: google.rpc.BadRequest + (*errdetails.RequestInfo)(nil), // 46: google.rpc.RequestInfo + (*errdetails.ResourceInfo)(nil), // 47: google.rpc.ResourceInfo + (*errdetails.Help)(nil), // 48: google.rpc.Help + (*errdetails.LocalizedMessage)(nil), // 49: google.rpc.LocalizedMessage + (*descriptorpb.FileOptions)(nil), // 50: google.protobuf.FileOptions + (*descriptorpb.ServiceOptions)(nil), // 51: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 52: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 53: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 54: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 55: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 56: google.protobuf.EnumValueOptions + (*descriptorpb.OneofOptions)(nil), // 57: google.protobuf.OneofOptions } var file_grpc_federation_federation_proto_depIdxs = []int32{ - 30, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin + 31, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin 7, // 1: grpc.federation.ServiceRule.env:type_name -> grpc.federation.Env 8, // 2: grpc.federation.Env.var:type_name -> grpc.federation.EnvVar 9, // 3: grpc.federation.EnvVar.type:type_name -> grpc.federation.EnvType @@ -3645,71 +3746,73 @@ var file_grpc_federation_federation_proto_depIdxs = []int32{ 14, // 10: grpc.federation.MessageRule.def:type_name -> grpc.federation.VariableDefinition 15, // 11: grpc.federation.VariableDefinition.map:type_name -> grpc.federation.MapExpr 17, // 12: grpc.federation.VariableDefinition.message:type_name -> grpc.federation.MessageExpr - 18, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr - 21, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr - 16, // 15: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator - 17, // 16: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr - 27, // 17: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument - 25, // 18: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest - 22, // 19: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy - 19, // 20: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError - 14, // 21: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition - 38, // 22: grpc.federation.GRPCError.code:type_name -> google.rpc.Code - 20, // 23: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail - 1, // 24: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel - 14, // 25: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition - 17, // 26: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr - 39, // 27: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo - 40, // 28: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo - 41, // 29: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo - 42, // 30: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure - 43, // 31: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure - 44, // 32: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest - 45, // 33: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo - 46, // 34: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo - 47, // 35: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help - 48, // 36: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage - 19, // 37: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError - 23, // 38: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant - 24, // 39: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential - 29, // 40: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof - 11, // 41: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption - 14, // 42: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition - 31, // 43: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport - 33, // 44: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType - 32, // 45: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction - 37, // 46: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable - 34, // 47: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument - 35, // 48: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType - 32, // 49: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction - 35, // 50: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType - 0, // 51: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind - 35, // 52: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType - 36, // 53: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType - 35, // 54: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType - 35, // 55: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType - 35, // 56: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType - 49, // 57: grpc.federation.file:extendee -> google.protobuf.FileOptions - 50, // 58: grpc.federation.service:extendee -> google.protobuf.ServiceOptions - 51, // 59: grpc.federation.method:extendee -> google.protobuf.MethodOptions - 52, // 60: grpc.federation.message:extendee -> google.protobuf.MessageOptions - 53, // 61: grpc.federation.field:extendee -> google.protobuf.FieldOptions - 54, // 62: grpc.federation.enum:extendee -> google.protobuf.EnumOptions - 55, // 63: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions - 56, // 64: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions - 2, // 65: grpc.federation.file:type_name -> grpc.federation.FileRule - 6, // 66: grpc.federation.service:type_name -> grpc.federation.ServiceRule - 12, // 67: grpc.federation.method:type_name -> grpc.federation.MethodRule - 13, // 68: grpc.federation.message:type_name -> grpc.federation.MessageRule - 28, // 69: grpc.federation.field:type_name -> grpc.federation.FieldRule - 3, // 70: grpc.federation.enum:type_name -> grpc.federation.EnumRule - 4, // 71: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule - 5, // 72: grpc.federation.oneof:type_name -> grpc.federation.OneofRule - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 65, // [65:73] is the sub-list for extension type_name - 57, // [57:65] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 19, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr + 22, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr + 18, // 15: grpc.federation.VariableDefinition.enum:type_name -> grpc.federation.EnumExpr + 16, // 16: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator + 17, // 17: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr + 18, // 18: grpc.federation.MapExpr.enum:type_name -> grpc.federation.EnumExpr + 28, // 19: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument + 26, // 20: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest + 23, // 21: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy + 20, // 22: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError + 14, // 23: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition + 39, // 24: grpc.federation.GRPCError.code:type_name -> google.rpc.Code + 21, // 25: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail + 1, // 26: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel + 14, // 27: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition + 17, // 28: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr + 40, // 29: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo + 41, // 30: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo + 42, // 31: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo + 43, // 32: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure + 44, // 33: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure + 45, // 34: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest + 46, // 35: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo + 47, // 36: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo + 48, // 37: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help + 49, // 38: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage + 20, // 39: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError + 24, // 40: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant + 25, // 41: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential + 30, // 42: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof + 11, // 43: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption + 14, // 44: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition + 32, // 45: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport + 34, // 46: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType + 33, // 47: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction + 38, // 48: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable + 35, // 49: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument + 36, // 50: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType + 33, // 51: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction + 36, // 52: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType + 0, // 53: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind + 36, // 54: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType + 37, // 55: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType + 36, // 56: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType + 36, // 57: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType + 36, // 58: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType + 50, // 59: grpc.federation.file:extendee -> google.protobuf.FileOptions + 51, // 60: grpc.federation.service:extendee -> google.protobuf.ServiceOptions + 52, // 61: grpc.federation.method:extendee -> google.protobuf.MethodOptions + 53, // 62: grpc.federation.message:extendee -> google.protobuf.MessageOptions + 54, // 63: grpc.federation.field:extendee -> google.protobuf.FieldOptions + 55, // 64: grpc.federation.enum:extendee -> google.protobuf.EnumOptions + 56, // 65: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions + 57, // 66: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions + 2, // 67: grpc.federation.file:type_name -> grpc.federation.FileRule + 6, // 68: grpc.federation.service:type_name -> grpc.federation.ServiceRule + 12, // 69: grpc.federation.method:type_name -> grpc.federation.MethodRule + 13, // 70: grpc.federation.message:type_name -> grpc.federation.MessageRule + 29, // 71: grpc.federation.field:type_name -> grpc.federation.FieldRule + 3, // 72: grpc.federation.enum:type_name -> grpc.federation.EnumRule + 4, // 73: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule + 5, // 74: grpc.federation.oneof:type_name -> grpc.federation.OneofRule + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 67, // [67:75] is the sub-list for extension type_name + 59, // [59:67] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_grpc_federation_federation_proto_init() } @@ -3911,7 +4014,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallExpr); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -3923,7 +4026,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*CallExpr); i { case 0: return &v.state case 1: @@ -3935,7 +4038,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -3947,7 +4050,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -3959,7 +4062,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -3971,7 +4074,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyConstant); i { + switch v := v.(*RetryPolicy); i { case 0: return &v.state case 1: @@ -3983,7 +4086,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyExponential); i { + switch v := v.(*RetryPolicyConstant); i { case 0: return &v.state case 1: @@ -3995,7 +4098,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodRequest); i { + switch v := v.(*RetryPolicyExponential); i { case 0: return &v.state case 1: @@ -4007,7 +4110,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodResponse); i { + switch v := v.(*MethodRequest); i { case 0: return &v.state case 1: @@ -4019,7 +4122,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*MethodResponse); i { case 0: return &v.state case 1: @@ -4031,7 +4134,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldRule); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -4043,7 +4146,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOneof); i { + switch v := v.(*FieldRule); i { case 0: return &v.state case 1: @@ -4055,7 +4158,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*FieldOneof); i { case 0: return &v.state case 1: @@ -4067,7 +4170,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPluginExport); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -4079,7 +4182,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPluginExport); i { case 0: return &v.state case 1: @@ -4091,7 +4194,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELReceiverType); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -4103,7 +4206,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunctionArgument); i { + switch v := v.(*CELReceiverType); i { case 0: return &v.state case 1: @@ -4115,7 +4218,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELType); i { + switch v := v.(*CELFunctionArgument); i { case 0: return &v.state case 1: @@ -4127,7 +4230,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELMapType); i { + switch v := v.(*CELType); i { case 0: return &v.state case 1: @@ -4139,6 +4242,18 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CELMapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_federation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CELVariable); i { case 0: return &v.state @@ -4167,29 +4282,31 @@ func file_grpc_federation_federation_proto_init() { (*VariableDefinition_Message)(nil), (*VariableDefinition_Call)(nil), (*VariableDefinition_Validation)(nil), + (*VariableDefinition_Enum)(nil), } file_grpc_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{ (*MapExpr_By)(nil), (*MapExpr_Message)(nil), + (*MapExpr_Enum)(nil), } - file_grpc_federation_federation_proto_msgTypes[16].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[19].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[22].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[23].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[24].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[25].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[28].OneofWrappers = []interface{}{ (*FieldOneof_If)(nil), (*FieldOneof_Default)(nil), } - file_grpc_federation_federation_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[34].OneofWrappers = []interface{}{ (*CELType_Kind)(nil), (*CELType_Repeated)(nil), (*CELType_Map)(nil), @@ -4202,7 +4319,7 @@ func file_grpc_federation_federation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_federation_proto_rawDesc, NumEnums: 2, - NumMessages: 36, + NumMessages: 37, NumExtensions: 8, NumServices: 0, }, diff --git a/_examples/09_multi_user/grpc/federation/federation.pb.go b/_examples/09_multi_user/grpc/federation/federation.pb.go index ecfdd20c..5cb2d17a 100644 --- a/_examples/09_multi_user/grpc/federation/federation.pb.go +++ b/_examples/09_multi_user/grpc/federation/federation.pb.go @@ -151,7 +151,7 @@ func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use GRPCError_LogLevel.Descriptor instead. func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17, 0} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18, 0} } type FileRule struct { @@ -938,6 +938,7 @@ type VariableDefinition struct { // *VariableDefinition_Message // *VariableDefinition_Call // *VariableDefinition_Validation + // *VariableDefinition_Enum Expr isVariableDefinition_Expr `protobuf_oneof:"expr"` } @@ -1036,6 +1037,13 @@ func (x *VariableDefinition) GetValidation() *ValidationExpr { return nil } +func (x *VariableDefinition) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableDefinition_Enum); ok { + return x.Enum + } + return nil +} + type isVariableDefinition_Expr interface { isVariableDefinition_Expr() } @@ -1065,6 +1073,11 @@ type VariableDefinition_Validation struct { Validation *ValidationExpr `protobuf:"bytes,15,opt,name=validation,proto3,oneof"` } +type VariableDefinition_Enum struct { + // enum gets with cel value. + Enum *EnumExpr `protobuf:"bytes,16,opt,name=enum,proto3,oneof"` +} + func (*VariableDefinition_By) isVariableDefinition_Expr() {} func (*VariableDefinition_Map) isVariableDefinition_Expr() {} @@ -1075,6 +1088,8 @@ func (*VariableDefinition_Call) isVariableDefinition_Expr() {} func (*VariableDefinition_Validation) isVariableDefinition_Expr() {} +func (*VariableDefinition_Enum) isVariableDefinition_Expr() {} + // MapExpr apply map operation for the specified repeated type. type MapExpr struct { state protoimpl.MessageState @@ -1090,6 +1105,7 @@ type MapExpr struct { // // *MapExpr_By // *MapExpr_Message + // *MapExpr_Enum Expr isMapExpr_Expr `protobuf_oneof:"expr"` } @@ -1153,6 +1169,13 @@ func (x *MapExpr) GetMessage() *MessageExpr { return nil } +func (x *MapExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapExpr_Expr interface { isMapExpr_Expr() } @@ -1169,10 +1192,18 @@ type MapExpr_Message struct { Message *MessageExpr `protobuf:"bytes,12,opt,name=message,proto3,oneof"` } +type MapExpr_Enum struct { + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + Enum *EnumExpr `protobuf:"bytes,13,opt,name=enum,proto3,oneof"` +} + func (*MapExpr_By) isMapExpr_Expr() {} func (*MapExpr_Message) isMapExpr_Expr() {} +func (*MapExpr_Enum) isMapExpr_Expr() {} + // Iterator represents iterator variable. type Iterator struct { state protoimpl.MessageState @@ -1291,6 +1322,65 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +// EnumExpr represents dependent enum. +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // `by` evaluates with CEL. + By string `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} +} + +func (x *EnumExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnumExpr) GetBy() string { + if x != nil { + return x.By + } + return "" +} + // CallExpr represents how to call gRPC method. type CallExpr struct { state protoimpl.MessageState @@ -1316,7 +1406,7 @@ type CallExpr struct { func (x *CallExpr) Reset() { *x = CallExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1419,7 @@ func (x *CallExpr) String() string { func (*CallExpr) ProtoMessage() {} func (x *CallExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1432,7 @@ func (x *CallExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use CallExpr.ProtoReflect.Descriptor instead. func (*CallExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} } func (x *CallExpr) GetMethod() string { @@ -1418,7 +1508,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1521,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1534,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} } func (x *GRPCError) GetDef() []*VariableDefinition { @@ -1541,7 +1631,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1554,7 +1644,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1567,7 +1657,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} } func (x *GRPCErrorDetail) GetIf() string { @@ -1685,7 +1775,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1788,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1801,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} } func (x *ValidationExpr) GetName() string { @@ -1748,7 +1838,7 @@ type RetryPolicy struct { func (x *RetryPolicy) Reset() { *x = RetryPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1851,7 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1864,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} } func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy { @@ -1841,7 +1931,7 @@ type RetryPolicyConstant struct { func (x *RetryPolicyConstant) Reset() { *x = RetryPolicyConstant{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1944,7 @@ func (x *RetryPolicyConstant) String() string { func (*RetryPolicyConstant) ProtoMessage() {} func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1957,7 @@ func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyConstant.ProtoReflect.Descriptor instead. func (*RetryPolicyConstant) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} } func (x *RetryPolicyConstant) GetInterval() string { @@ -1905,7 +1995,7 @@ type RetryPolicyExponential struct { func (x *RetryPolicyExponential) Reset() { *x = RetryPolicyExponential{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2008,7 @@ func (x *RetryPolicyExponential) String() string { func (*RetryPolicyExponential) ProtoMessage() {} func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2021,7 @@ func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyExponential.ProtoReflect.Descriptor instead. func (*RetryPolicyExponential) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} } func (x *RetryPolicyExponential) GetInitialInterval() string { @@ -1992,7 +2082,7 @@ type MethodRequest struct { func (x *MethodRequest) Reset() { *x = MethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2005,7 +2095,7 @@ func (x *MethodRequest) String() string { func (*MethodRequest) ProtoMessage() {} func (x *MethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2018,7 +2108,7 @@ func (x *MethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodRequest.ProtoReflect.Descriptor instead. func (*MethodRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} } func (x *MethodRequest) GetField() string { @@ -2062,7 +2152,7 @@ type MethodResponse struct { func (x *MethodResponse) Reset() { *x = MethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2165,7 @@ func (x *MethodResponse) String() string { func (*MethodResponse) ProtoMessage() {} func (x *MethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2178,7 @@ func (x *MethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodResponse.ProtoReflect.Descriptor instead. func (*MethodResponse) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} } func (x *MethodResponse) GetName() string { @@ -2134,7 +2224,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2237,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,7 +2250,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} } func (x *Argument) GetName() string { @@ -2210,7 +2300,7 @@ type FieldRule struct { func (x *FieldRule) Reset() { *x = FieldRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2313,7 @@ func (x *FieldRule) String() string { func (*FieldRule) ProtoMessage() {} func (x *FieldRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2326,7 @@ func (x *FieldRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldRule.ProtoReflect.Descriptor instead. func (*FieldRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} } func (x *FieldRule) GetCustomResolver() bool { @@ -2299,7 +2389,7 @@ type FieldOneof struct { func (x *FieldOneof) Reset() { *x = FieldOneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2402,7 @@ func (x *FieldOneof) String() string { func (*FieldOneof) ProtoMessage() {} func (x *FieldOneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2415,7 @@ func (x *FieldOneof) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldOneof.ProtoReflect.Descriptor instead. func (*FieldOneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} } func (m *FieldOneof) GetCond() isFieldOneof_Cond { @@ -2397,7 +2487,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2500,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2513,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} } func (x *CELPlugin) GetExport() []*CELPluginExport { @@ -2455,7 +2545,7 @@ type CELPluginExport struct { func (x *CELPluginExport) Reset() { *x = CELPluginExport{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2558,7 @@ func (x *CELPluginExport) String() string { func (*CELPluginExport) ProtoMessage() {} func (x *CELPluginExport) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2571,7 @@ func (x *CELPluginExport) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPluginExport.ProtoReflect.Descriptor instead. func (*CELPluginExport) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} } func (x *CELPluginExport) GetName() string { @@ -2539,7 +2629,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2642,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2655,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} } func (x *CELFunction) GetName() string { @@ -2614,7 +2704,7 @@ type CELReceiverType struct { func (x *CELReceiverType) Reset() { *x = CELReceiverType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2717,7 @@ func (x *CELReceiverType) String() string { func (*CELReceiverType) ProtoMessage() {} func (x *CELReceiverType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2730,7 @@ func (x *CELReceiverType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELReceiverType.ProtoReflect.Descriptor instead. func (*CELReceiverType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} } func (x *CELReceiverType) GetName() string { @@ -2682,7 +2772,7 @@ type CELFunctionArgument struct { func (x *CELFunctionArgument) Reset() { *x = CELFunctionArgument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2785,7 @@ func (x *CELFunctionArgument) String() string { func (*CELFunctionArgument) ProtoMessage() {} func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2798,7 @@ func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunctionArgument.ProtoReflect.Descriptor instead. func (*CELFunctionArgument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} } func (x *CELFunctionArgument) GetName() string { @@ -2751,7 +2841,7 @@ type CELType struct { func (x *CELType) Reset() { *x = CELType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2854,7 @@ func (x *CELType) String() string { func (*CELType) ProtoMessage() {} func (x *CELType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2867,7 @@ func (x *CELType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELType.ProtoReflect.Descriptor instead. func (*CELType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} } func (m *CELType) GetType() isCELType_Type { @@ -2876,7 +2966,7 @@ type CELMapType struct { func (x *CELMapType) Reset() { *x = CELMapType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +2979,7 @@ func (x *CELMapType) String() string { func (*CELMapType) ProtoMessage() {} func (x *CELMapType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +2992,7 @@ func (x *CELMapType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELMapType.ProtoReflect.Descriptor instead. func (*CELMapType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} } func (x *CELMapType) GetKey() *CELType { @@ -2937,7 +3027,7 @@ type CELVariable struct { func (x *CELVariable) Reset() { *x = CELVariable{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3040,7 @@ func (x *CELVariable) String() string { func (*CELVariable) ProtoMessage() {} func (x *CELVariable) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3053,7 @@ func (x *CELVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use CELVariable.ProtoReflect.Descriptor instead. func (*CELVariable) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{36} } func (x *CELVariable) GetName() string { @@ -3194,7 +3284,7 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x12, + 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xa7, 0x03, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, @@ -3215,347 +3305,357 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0x50, 0x0a, - 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, + 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, + 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x22, 0x86, 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x22, 0x86, - 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x03, - 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, 0x03, 0x64, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, - 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, - 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, - 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, - 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, - 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, 0x08, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, - 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x69, 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, + 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, + 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, + 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, - 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x38, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, + 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, + 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x12, 0x2f, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x43, 0x45, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, + 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, 0x4c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x1a, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, - 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, 0x4d, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, + 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, + 0x4c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, + 0x1a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, + 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, - 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, - 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x54, - 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x3a, 0x54, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, 0xa3, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x50, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x50, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x3a, 0x61, - 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, - 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, - 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x3a, 0x61, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, + 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, + 0x02, 0x03, 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, + 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -3571,7 +3671,7 @@ func file_grpc_federation_federation_proto_rawDescGZIP() []byte { } var file_grpc_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_grpc_federation_federation_proto_goTypes = []interface{}{ (TypeKind)(0), // 0: grpc.federation.TypeKind (GRPCError_LogLevel)(0), // 1: grpc.federation.GRPCError.LogLevel @@ -3591,48 +3691,49 @@ var file_grpc_federation_federation_proto_goTypes = []interface{}{ (*MapExpr)(nil), // 15: grpc.federation.MapExpr (*Iterator)(nil), // 16: grpc.federation.Iterator (*MessageExpr)(nil), // 17: grpc.federation.MessageExpr - (*CallExpr)(nil), // 18: grpc.federation.CallExpr - (*GRPCError)(nil), // 19: grpc.federation.GRPCError - (*GRPCErrorDetail)(nil), // 20: grpc.federation.GRPCErrorDetail - (*ValidationExpr)(nil), // 21: grpc.federation.ValidationExpr - (*RetryPolicy)(nil), // 22: grpc.federation.RetryPolicy - (*RetryPolicyConstant)(nil), // 23: grpc.federation.RetryPolicyConstant - (*RetryPolicyExponential)(nil), // 24: grpc.federation.RetryPolicyExponential - (*MethodRequest)(nil), // 25: grpc.federation.MethodRequest - (*MethodResponse)(nil), // 26: grpc.federation.MethodResponse - (*Argument)(nil), // 27: grpc.federation.Argument - (*FieldRule)(nil), // 28: grpc.federation.FieldRule - (*FieldOneof)(nil), // 29: grpc.federation.FieldOneof - (*CELPlugin)(nil), // 30: grpc.federation.CELPlugin - (*CELPluginExport)(nil), // 31: grpc.federation.CELPluginExport - (*CELFunction)(nil), // 32: grpc.federation.CELFunction - (*CELReceiverType)(nil), // 33: grpc.federation.CELReceiverType - (*CELFunctionArgument)(nil), // 34: grpc.federation.CELFunctionArgument - (*CELType)(nil), // 35: grpc.federation.CELType - (*CELMapType)(nil), // 36: grpc.federation.CELMapType - (*CELVariable)(nil), // 37: grpc.federation.CELVariable - (code.Code)(0), // 38: google.rpc.Code - (*errdetails.ErrorInfo)(nil), // 39: google.rpc.ErrorInfo - (*errdetails.RetryInfo)(nil), // 40: google.rpc.RetryInfo - (*errdetails.DebugInfo)(nil), // 41: google.rpc.DebugInfo - (*errdetails.QuotaFailure)(nil), // 42: google.rpc.QuotaFailure - (*errdetails.PreconditionFailure)(nil), // 43: google.rpc.PreconditionFailure - (*errdetails.BadRequest)(nil), // 44: google.rpc.BadRequest - (*errdetails.RequestInfo)(nil), // 45: google.rpc.RequestInfo - (*errdetails.ResourceInfo)(nil), // 46: google.rpc.ResourceInfo - (*errdetails.Help)(nil), // 47: google.rpc.Help - (*errdetails.LocalizedMessage)(nil), // 48: google.rpc.LocalizedMessage - (*descriptorpb.FileOptions)(nil), // 49: google.protobuf.FileOptions - (*descriptorpb.ServiceOptions)(nil), // 50: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 51: google.protobuf.MethodOptions - (*descriptorpb.MessageOptions)(nil), // 52: google.protobuf.MessageOptions - (*descriptorpb.FieldOptions)(nil), // 53: google.protobuf.FieldOptions - (*descriptorpb.EnumOptions)(nil), // 54: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 55: google.protobuf.EnumValueOptions - (*descriptorpb.OneofOptions)(nil), // 56: google.protobuf.OneofOptions + (*EnumExpr)(nil), // 18: grpc.federation.EnumExpr + (*CallExpr)(nil), // 19: grpc.federation.CallExpr + (*GRPCError)(nil), // 20: grpc.federation.GRPCError + (*GRPCErrorDetail)(nil), // 21: grpc.federation.GRPCErrorDetail + (*ValidationExpr)(nil), // 22: grpc.federation.ValidationExpr + (*RetryPolicy)(nil), // 23: grpc.federation.RetryPolicy + (*RetryPolicyConstant)(nil), // 24: grpc.federation.RetryPolicyConstant + (*RetryPolicyExponential)(nil), // 25: grpc.federation.RetryPolicyExponential + (*MethodRequest)(nil), // 26: grpc.federation.MethodRequest + (*MethodResponse)(nil), // 27: grpc.federation.MethodResponse + (*Argument)(nil), // 28: grpc.federation.Argument + (*FieldRule)(nil), // 29: grpc.federation.FieldRule + (*FieldOneof)(nil), // 30: grpc.federation.FieldOneof + (*CELPlugin)(nil), // 31: grpc.federation.CELPlugin + (*CELPluginExport)(nil), // 32: grpc.federation.CELPluginExport + (*CELFunction)(nil), // 33: grpc.federation.CELFunction + (*CELReceiverType)(nil), // 34: grpc.federation.CELReceiverType + (*CELFunctionArgument)(nil), // 35: grpc.federation.CELFunctionArgument + (*CELType)(nil), // 36: grpc.federation.CELType + (*CELMapType)(nil), // 37: grpc.federation.CELMapType + (*CELVariable)(nil), // 38: grpc.federation.CELVariable + (code.Code)(0), // 39: google.rpc.Code + (*errdetails.ErrorInfo)(nil), // 40: google.rpc.ErrorInfo + (*errdetails.RetryInfo)(nil), // 41: google.rpc.RetryInfo + (*errdetails.DebugInfo)(nil), // 42: google.rpc.DebugInfo + (*errdetails.QuotaFailure)(nil), // 43: google.rpc.QuotaFailure + (*errdetails.PreconditionFailure)(nil), // 44: google.rpc.PreconditionFailure + (*errdetails.BadRequest)(nil), // 45: google.rpc.BadRequest + (*errdetails.RequestInfo)(nil), // 46: google.rpc.RequestInfo + (*errdetails.ResourceInfo)(nil), // 47: google.rpc.ResourceInfo + (*errdetails.Help)(nil), // 48: google.rpc.Help + (*errdetails.LocalizedMessage)(nil), // 49: google.rpc.LocalizedMessage + (*descriptorpb.FileOptions)(nil), // 50: google.protobuf.FileOptions + (*descriptorpb.ServiceOptions)(nil), // 51: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 52: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 53: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 54: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 55: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 56: google.protobuf.EnumValueOptions + (*descriptorpb.OneofOptions)(nil), // 57: google.protobuf.OneofOptions } var file_grpc_federation_federation_proto_depIdxs = []int32{ - 30, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin + 31, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin 7, // 1: grpc.federation.ServiceRule.env:type_name -> grpc.federation.Env 8, // 2: grpc.federation.Env.var:type_name -> grpc.federation.EnvVar 9, // 3: grpc.federation.EnvVar.type:type_name -> grpc.federation.EnvType @@ -3645,71 +3746,73 @@ var file_grpc_federation_federation_proto_depIdxs = []int32{ 14, // 10: grpc.federation.MessageRule.def:type_name -> grpc.federation.VariableDefinition 15, // 11: grpc.federation.VariableDefinition.map:type_name -> grpc.federation.MapExpr 17, // 12: grpc.federation.VariableDefinition.message:type_name -> grpc.federation.MessageExpr - 18, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr - 21, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr - 16, // 15: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator - 17, // 16: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr - 27, // 17: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument - 25, // 18: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest - 22, // 19: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy - 19, // 20: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError - 14, // 21: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition - 38, // 22: grpc.federation.GRPCError.code:type_name -> google.rpc.Code - 20, // 23: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail - 1, // 24: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel - 14, // 25: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition - 17, // 26: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr - 39, // 27: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo - 40, // 28: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo - 41, // 29: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo - 42, // 30: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure - 43, // 31: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure - 44, // 32: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest - 45, // 33: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo - 46, // 34: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo - 47, // 35: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help - 48, // 36: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage - 19, // 37: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError - 23, // 38: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant - 24, // 39: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential - 29, // 40: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof - 11, // 41: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption - 14, // 42: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition - 31, // 43: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport - 33, // 44: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType - 32, // 45: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction - 37, // 46: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable - 34, // 47: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument - 35, // 48: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType - 32, // 49: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction - 35, // 50: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType - 0, // 51: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind - 35, // 52: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType - 36, // 53: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType - 35, // 54: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType - 35, // 55: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType - 35, // 56: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType - 49, // 57: grpc.federation.file:extendee -> google.protobuf.FileOptions - 50, // 58: grpc.federation.service:extendee -> google.protobuf.ServiceOptions - 51, // 59: grpc.federation.method:extendee -> google.protobuf.MethodOptions - 52, // 60: grpc.federation.message:extendee -> google.protobuf.MessageOptions - 53, // 61: grpc.federation.field:extendee -> google.protobuf.FieldOptions - 54, // 62: grpc.federation.enum:extendee -> google.protobuf.EnumOptions - 55, // 63: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions - 56, // 64: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions - 2, // 65: grpc.federation.file:type_name -> grpc.federation.FileRule - 6, // 66: grpc.federation.service:type_name -> grpc.federation.ServiceRule - 12, // 67: grpc.federation.method:type_name -> grpc.federation.MethodRule - 13, // 68: grpc.federation.message:type_name -> grpc.federation.MessageRule - 28, // 69: grpc.federation.field:type_name -> grpc.federation.FieldRule - 3, // 70: grpc.federation.enum:type_name -> grpc.federation.EnumRule - 4, // 71: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule - 5, // 72: grpc.federation.oneof:type_name -> grpc.federation.OneofRule - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 65, // [65:73] is the sub-list for extension type_name - 57, // [57:65] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 19, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr + 22, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr + 18, // 15: grpc.federation.VariableDefinition.enum:type_name -> grpc.federation.EnumExpr + 16, // 16: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator + 17, // 17: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr + 18, // 18: grpc.federation.MapExpr.enum:type_name -> grpc.federation.EnumExpr + 28, // 19: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument + 26, // 20: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest + 23, // 21: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy + 20, // 22: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError + 14, // 23: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition + 39, // 24: grpc.federation.GRPCError.code:type_name -> google.rpc.Code + 21, // 25: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail + 1, // 26: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel + 14, // 27: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition + 17, // 28: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr + 40, // 29: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo + 41, // 30: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo + 42, // 31: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo + 43, // 32: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure + 44, // 33: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure + 45, // 34: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest + 46, // 35: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo + 47, // 36: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo + 48, // 37: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help + 49, // 38: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage + 20, // 39: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError + 24, // 40: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant + 25, // 41: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential + 30, // 42: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof + 11, // 43: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption + 14, // 44: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition + 32, // 45: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport + 34, // 46: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType + 33, // 47: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction + 38, // 48: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable + 35, // 49: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument + 36, // 50: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType + 33, // 51: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction + 36, // 52: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType + 0, // 53: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind + 36, // 54: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType + 37, // 55: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType + 36, // 56: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType + 36, // 57: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType + 36, // 58: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType + 50, // 59: grpc.federation.file:extendee -> google.protobuf.FileOptions + 51, // 60: grpc.federation.service:extendee -> google.protobuf.ServiceOptions + 52, // 61: grpc.federation.method:extendee -> google.protobuf.MethodOptions + 53, // 62: grpc.federation.message:extendee -> google.protobuf.MessageOptions + 54, // 63: grpc.federation.field:extendee -> google.protobuf.FieldOptions + 55, // 64: grpc.federation.enum:extendee -> google.protobuf.EnumOptions + 56, // 65: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions + 57, // 66: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions + 2, // 67: grpc.federation.file:type_name -> grpc.federation.FileRule + 6, // 68: grpc.federation.service:type_name -> grpc.federation.ServiceRule + 12, // 69: grpc.federation.method:type_name -> grpc.federation.MethodRule + 13, // 70: grpc.federation.message:type_name -> grpc.federation.MessageRule + 29, // 71: grpc.federation.field:type_name -> grpc.federation.FieldRule + 3, // 72: grpc.federation.enum:type_name -> grpc.federation.EnumRule + 4, // 73: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule + 5, // 74: grpc.federation.oneof:type_name -> grpc.federation.OneofRule + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 67, // [67:75] is the sub-list for extension type_name + 59, // [59:67] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_grpc_federation_federation_proto_init() } @@ -3911,7 +4014,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallExpr); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -3923,7 +4026,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*CallExpr); i { case 0: return &v.state case 1: @@ -3935,7 +4038,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -3947,7 +4050,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -3959,7 +4062,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -3971,7 +4074,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyConstant); i { + switch v := v.(*RetryPolicy); i { case 0: return &v.state case 1: @@ -3983,7 +4086,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyExponential); i { + switch v := v.(*RetryPolicyConstant); i { case 0: return &v.state case 1: @@ -3995,7 +4098,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodRequest); i { + switch v := v.(*RetryPolicyExponential); i { case 0: return &v.state case 1: @@ -4007,7 +4110,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodResponse); i { + switch v := v.(*MethodRequest); i { case 0: return &v.state case 1: @@ -4019,7 +4122,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*MethodResponse); i { case 0: return &v.state case 1: @@ -4031,7 +4134,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldRule); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -4043,7 +4146,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOneof); i { + switch v := v.(*FieldRule); i { case 0: return &v.state case 1: @@ -4055,7 +4158,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*FieldOneof); i { case 0: return &v.state case 1: @@ -4067,7 +4170,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPluginExport); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -4079,7 +4182,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPluginExport); i { case 0: return &v.state case 1: @@ -4091,7 +4194,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELReceiverType); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -4103,7 +4206,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunctionArgument); i { + switch v := v.(*CELReceiverType); i { case 0: return &v.state case 1: @@ -4115,7 +4218,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELType); i { + switch v := v.(*CELFunctionArgument); i { case 0: return &v.state case 1: @@ -4127,7 +4230,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELMapType); i { + switch v := v.(*CELType); i { case 0: return &v.state case 1: @@ -4139,6 +4242,18 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CELMapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_federation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CELVariable); i { case 0: return &v.state @@ -4167,29 +4282,31 @@ func file_grpc_federation_federation_proto_init() { (*VariableDefinition_Message)(nil), (*VariableDefinition_Call)(nil), (*VariableDefinition_Validation)(nil), + (*VariableDefinition_Enum)(nil), } file_grpc_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{ (*MapExpr_By)(nil), (*MapExpr_Message)(nil), + (*MapExpr_Enum)(nil), } - file_grpc_federation_federation_proto_msgTypes[16].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[19].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[22].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[23].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[24].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[25].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[28].OneofWrappers = []interface{}{ (*FieldOneof_If)(nil), (*FieldOneof_Default)(nil), } - file_grpc_federation_federation_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[34].OneofWrappers = []interface{}{ (*CELType_Kind)(nil), (*CELType_Repeated)(nil), (*CELType_Map)(nil), @@ -4202,7 +4319,7 @@ func file_grpc_federation_federation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_federation_proto_rawDesc, NumEnums: 2, - NumMessages: 36, + NumMessages: 37, NumExtensions: 8, NumServices: 0, }, diff --git a/_examples/10_oneof/grpc/federation/federation.pb.go b/_examples/10_oneof/grpc/federation/federation.pb.go index ecfdd20c..5cb2d17a 100644 --- a/_examples/10_oneof/grpc/federation/federation.pb.go +++ b/_examples/10_oneof/grpc/federation/federation.pb.go @@ -151,7 +151,7 @@ func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use GRPCError_LogLevel.Descriptor instead. func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17, 0} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18, 0} } type FileRule struct { @@ -938,6 +938,7 @@ type VariableDefinition struct { // *VariableDefinition_Message // *VariableDefinition_Call // *VariableDefinition_Validation + // *VariableDefinition_Enum Expr isVariableDefinition_Expr `protobuf_oneof:"expr"` } @@ -1036,6 +1037,13 @@ func (x *VariableDefinition) GetValidation() *ValidationExpr { return nil } +func (x *VariableDefinition) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableDefinition_Enum); ok { + return x.Enum + } + return nil +} + type isVariableDefinition_Expr interface { isVariableDefinition_Expr() } @@ -1065,6 +1073,11 @@ type VariableDefinition_Validation struct { Validation *ValidationExpr `protobuf:"bytes,15,opt,name=validation,proto3,oneof"` } +type VariableDefinition_Enum struct { + // enum gets with cel value. + Enum *EnumExpr `protobuf:"bytes,16,opt,name=enum,proto3,oneof"` +} + func (*VariableDefinition_By) isVariableDefinition_Expr() {} func (*VariableDefinition_Map) isVariableDefinition_Expr() {} @@ -1075,6 +1088,8 @@ func (*VariableDefinition_Call) isVariableDefinition_Expr() {} func (*VariableDefinition_Validation) isVariableDefinition_Expr() {} +func (*VariableDefinition_Enum) isVariableDefinition_Expr() {} + // MapExpr apply map operation for the specified repeated type. type MapExpr struct { state protoimpl.MessageState @@ -1090,6 +1105,7 @@ type MapExpr struct { // // *MapExpr_By // *MapExpr_Message + // *MapExpr_Enum Expr isMapExpr_Expr `protobuf_oneof:"expr"` } @@ -1153,6 +1169,13 @@ func (x *MapExpr) GetMessage() *MessageExpr { return nil } +func (x *MapExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapExpr_Expr interface { isMapExpr_Expr() } @@ -1169,10 +1192,18 @@ type MapExpr_Message struct { Message *MessageExpr `protobuf:"bytes,12,opt,name=message,proto3,oneof"` } +type MapExpr_Enum struct { + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + Enum *EnumExpr `protobuf:"bytes,13,opt,name=enum,proto3,oneof"` +} + func (*MapExpr_By) isMapExpr_Expr() {} func (*MapExpr_Message) isMapExpr_Expr() {} +func (*MapExpr_Enum) isMapExpr_Expr() {} + // Iterator represents iterator variable. type Iterator struct { state protoimpl.MessageState @@ -1291,6 +1322,65 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +// EnumExpr represents dependent enum. +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // `by` evaluates with CEL. + By string `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} +} + +func (x *EnumExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnumExpr) GetBy() string { + if x != nil { + return x.By + } + return "" +} + // CallExpr represents how to call gRPC method. type CallExpr struct { state protoimpl.MessageState @@ -1316,7 +1406,7 @@ type CallExpr struct { func (x *CallExpr) Reset() { *x = CallExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1419,7 @@ func (x *CallExpr) String() string { func (*CallExpr) ProtoMessage() {} func (x *CallExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1432,7 @@ func (x *CallExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use CallExpr.ProtoReflect.Descriptor instead. func (*CallExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} } func (x *CallExpr) GetMethod() string { @@ -1418,7 +1508,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1521,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1534,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} } func (x *GRPCError) GetDef() []*VariableDefinition { @@ -1541,7 +1631,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1554,7 +1644,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1567,7 +1657,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} } func (x *GRPCErrorDetail) GetIf() string { @@ -1685,7 +1775,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1788,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1801,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} } func (x *ValidationExpr) GetName() string { @@ -1748,7 +1838,7 @@ type RetryPolicy struct { func (x *RetryPolicy) Reset() { *x = RetryPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1851,7 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1864,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} } func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy { @@ -1841,7 +1931,7 @@ type RetryPolicyConstant struct { func (x *RetryPolicyConstant) Reset() { *x = RetryPolicyConstant{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1944,7 @@ func (x *RetryPolicyConstant) String() string { func (*RetryPolicyConstant) ProtoMessage() {} func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1957,7 @@ func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyConstant.ProtoReflect.Descriptor instead. func (*RetryPolicyConstant) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} } func (x *RetryPolicyConstant) GetInterval() string { @@ -1905,7 +1995,7 @@ type RetryPolicyExponential struct { func (x *RetryPolicyExponential) Reset() { *x = RetryPolicyExponential{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2008,7 @@ func (x *RetryPolicyExponential) String() string { func (*RetryPolicyExponential) ProtoMessage() {} func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2021,7 @@ func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyExponential.ProtoReflect.Descriptor instead. func (*RetryPolicyExponential) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} } func (x *RetryPolicyExponential) GetInitialInterval() string { @@ -1992,7 +2082,7 @@ type MethodRequest struct { func (x *MethodRequest) Reset() { *x = MethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2005,7 +2095,7 @@ func (x *MethodRequest) String() string { func (*MethodRequest) ProtoMessage() {} func (x *MethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2018,7 +2108,7 @@ func (x *MethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodRequest.ProtoReflect.Descriptor instead. func (*MethodRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} } func (x *MethodRequest) GetField() string { @@ -2062,7 +2152,7 @@ type MethodResponse struct { func (x *MethodResponse) Reset() { *x = MethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2165,7 @@ func (x *MethodResponse) String() string { func (*MethodResponse) ProtoMessage() {} func (x *MethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2178,7 @@ func (x *MethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodResponse.ProtoReflect.Descriptor instead. func (*MethodResponse) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} } func (x *MethodResponse) GetName() string { @@ -2134,7 +2224,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2237,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,7 +2250,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} } func (x *Argument) GetName() string { @@ -2210,7 +2300,7 @@ type FieldRule struct { func (x *FieldRule) Reset() { *x = FieldRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2313,7 @@ func (x *FieldRule) String() string { func (*FieldRule) ProtoMessage() {} func (x *FieldRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2326,7 @@ func (x *FieldRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldRule.ProtoReflect.Descriptor instead. func (*FieldRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} } func (x *FieldRule) GetCustomResolver() bool { @@ -2299,7 +2389,7 @@ type FieldOneof struct { func (x *FieldOneof) Reset() { *x = FieldOneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2402,7 @@ func (x *FieldOneof) String() string { func (*FieldOneof) ProtoMessage() {} func (x *FieldOneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2415,7 @@ func (x *FieldOneof) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldOneof.ProtoReflect.Descriptor instead. func (*FieldOneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} } func (m *FieldOneof) GetCond() isFieldOneof_Cond { @@ -2397,7 +2487,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2500,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2513,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} } func (x *CELPlugin) GetExport() []*CELPluginExport { @@ -2455,7 +2545,7 @@ type CELPluginExport struct { func (x *CELPluginExport) Reset() { *x = CELPluginExport{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2558,7 @@ func (x *CELPluginExport) String() string { func (*CELPluginExport) ProtoMessage() {} func (x *CELPluginExport) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2571,7 @@ func (x *CELPluginExport) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPluginExport.ProtoReflect.Descriptor instead. func (*CELPluginExport) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} } func (x *CELPluginExport) GetName() string { @@ -2539,7 +2629,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2642,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2655,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} } func (x *CELFunction) GetName() string { @@ -2614,7 +2704,7 @@ type CELReceiverType struct { func (x *CELReceiverType) Reset() { *x = CELReceiverType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2717,7 @@ func (x *CELReceiverType) String() string { func (*CELReceiverType) ProtoMessage() {} func (x *CELReceiverType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2730,7 @@ func (x *CELReceiverType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELReceiverType.ProtoReflect.Descriptor instead. func (*CELReceiverType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} } func (x *CELReceiverType) GetName() string { @@ -2682,7 +2772,7 @@ type CELFunctionArgument struct { func (x *CELFunctionArgument) Reset() { *x = CELFunctionArgument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2785,7 @@ func (x *CELFunctionArgument) String() string { func (*CELFunctionArgument) ProtoMessage() {} func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2798,7 @@ func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunctionArgument.ProtoReflect.Descriptor instead. func (*CELFunctionArgument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} } func (x *CELFunctionArgument) GetName() string { @@ -2751,7 +2841,7 @@ type CELType struct { func (x *CELType) Reset() { *x = CELType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2854,7 @@ func (x *CELType) String() string { func (*CELType) ProtoMessage() {} func (x *CELType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2867,7 @@ func (x *CELType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELType.ProtoReflect.Descriptor instead. func (*CELType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} } func (m *CELType) GetType() isCELType_Type { @@ -2876,7 +2966,7 @@ type CELMapType struct { func (x *CELMapType) Reset() { *x = CELMapType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +2979,7 @@ func (x *CELMapType) String() string { func (*CELMapType) ProtoMessage() {} func (x *CELMapType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +2992,7 @@ func (x *CELMapType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELMapType.ProtoReflect.Descriptor instead. func (*CELMapType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} } func (x *CELMapType) GetKey() *CELType { @@ -2937,7 +3027,7 @@ type CELVariable struct { func (x *CELVariable) Reset() { *x = CELVariable{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3040,7 @@ func (x *CELVariable) String() string { func (*CELVariable) ProtoMessage() {} func (x *CELVariable) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3053,7 @@ func (x *CELVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use CELVariable.ProtoReflect.Descriptor instead. func (*CELVariable) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{36} } func (x *CELVariable) GetName() string { @@ -3194,7 +3284,7 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x12, + 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xa7, 0x03, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, @@ -3215,347 +3305,357 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0x50, 0x0a, - 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, + 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, + 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x22, 0x86, 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x22, 0x86, - 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x03, - 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, 0x03, 0x64, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, - 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, - 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, - 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, - 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, - 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, 0x08, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, - 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x69, 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, + 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, + 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, + 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, - 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x38, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, + 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, + 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x12, 0x2f, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x43, 0x45, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, + 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, 0x4c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x1a, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, - 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, 0x4d, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, + 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, + 0x4c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, + 0x1a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, + 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, - 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, - 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x54, - 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x3a, 0x54, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, 0xa3, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x50, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x50, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x3a, 0x61, - 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, - 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, - 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x3a, 0x61, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, + 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, + 0x02, 0x03, 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, + 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -3571,7 +3671,7 @@ func file_grpc_federation_federation_proto_rawDescGZIP() []byte { } var file_grpc_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_grpc_federation_federation_proto_goTypes = []interface{}{ (TypeKind)(0), // 0: grpc.federation.TypeKind (GRPCError_LogLevel)(0), // 1: grpc.federation.GRPCError.LogLevel @@ -3591,48 +3691,49 @@ var file_grpc_federation_federation_proto_goTypes = []interface{}{ (*MapExpr)(nil), // 15: grpc.federation.MapExpr (*Iterator)(nil), // 16: grpc.federation.Iterator (*MessageExpr)(nil), // 17: grpc.federation.MessageExpr - (*CallExpr)(nil), // 18: grpc.federation.CallExpr - (*GRPCError)(nil), // 19: grpc.federation.GRPCError - (*GRPCErrorDetail)(nil), // 20: grpc.federation.GRPCErrorDetail - (*ValidationExpr)(nil), // 21: grpc.federation.ValidationExpr - (*RetryPolicy)(nil), // 22: grpc.federation.RetryPolicy - (*RetryPolicyConstant)(nil), // 23: grpc.federation.RetryPolicyConstant - (*RetryPolicyExponential)(nil), // 24: grpc.federation.RetryPolicyExponential - (*MethodRequest)(nil), // 25: grpc.federation.MethodRequest - (*MethodResponse)(nil), // 26: grpc.federation.MethodResponse - (*Argument)(nil), // 27: grpc.federation.Argument - (*FieldRule)(nil), // 28: grpc.federation.FieldRule - (*FieldOneof)(nil), // 29: grpc.federation.FieldOneof - (*CELPlugin)(nil), // 30: grpc.federation.CELPlugin - (*CELPluginExport)(nil), // 31: grpc.federation.CELPluginExport - (*CELFunction)(nil), // 32: grpc.federation.CELFunction - (*CELReceiverType)(nil), // 33: grpc.federation.CELReceiverType - (*CELFunctionArgument)(nil), // 34: grpc.federation.CELFunctionArgument - (*CELType)(nil), // 35: grpc.federation.CELType - (*CELMapType)(nil), // 36: grpc.federation.CELMapType - (*CELVariable)(nil), // 37: grpc.federation.CELVariable - (code.Code)(0), // 38: google.rpc.Code - (*errdetails.ErrorInfo)(nil), // 39: google.rpc.ErrorInfo - (*errdetails.RetryInfo)(nil), // 40: google.rpc.RetryInfo - (*errdetails.DebugInfo)(nil), // 41: google.rpc.DebugInfo - (*errdetails.QuotaFailure)(nil), // 42: google.rpc.QuotaFailure - (*errdetails.PreconditionFailure)(nil), // 43: google.rpc.PreconditionFailure - (*errdetails.BadRequest)(nil), // 44: google.rpc.BadRequest - (*errdetails.RequestInfo)(nil), // 45: google.rpc.RequestInfo - (*errdetails.ResourceInfo)(nil), // 46: google.rpc.ResourceInfo - (*errdetails.Help)(nil), // 47: google.rpc.Help - (*errdetails.LocalizedMessage)(nil), // 48: google.rpc.LocalizedMessage - (*descriptorpb.FileOptions)(nil), // 49: google.protobuf.FileOptions - (*descriptorpb.ServiceOptions)(nil), // 50: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 51: google.protobuf.MethodOptions - (*descriptorpb.MessageOptions)(nil), // 52: google.protobuf.MessageOptions - (*descriptorpb.FieldOptions)(nil), // 53: google.protobuf.FieldOptions - (*descriptorpb.EnumOptions)(nil), // 54: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 55: google.protobuf.EnumValueOptions - (*descriptorpb.OneofOptions)(nil), // 56: google.protobuf.OneofOptions + (*EnumExpr)(nil), // 18: grpc.federation.EnumExpr + (*CallExpr)(nil), // 19: grpc.federation.CallExpr + (*GRPCError)(nil), // 20: grpc.federation.GRPCError + (*GRPCErrorDetail)(nil), // 21: grpc.federation.GRPCErrorDetail + (*ValidationExpr)(nil), // 22: grpc.federation.ValidationExpr + (*RetryPolicy)(nil), // 23: grpc.federation.RetryPolicy + (*RetryPolicyConstant)(nil), // 24: grpc.federation.RetryPolicyConstant + (*RetryPolicyExponential)(nil), // 25: grpc.federation.RetryPolicyExponential + (*MethodRequest)(nil), // 26: grpc.federation.MethodRequest + (*MethodResponse)(nil), // 27: grpc.federation.MethodResponse + (*Argument)(nil), // 28: grpc.federation.Argument + (*FieldRule)(nil), // 29: grpc.federation.FieldRule + (*FieldOneof)(nil), // 30: grpc.federation.FieldOneof + (*CELPlugin)(nil), // 31: grpc.federation.CELPlugin + (*CELPluginExport)(nil), // 32: grpc.federation.CELPluginExport + (*CELFunction)(nil), // 33: grpc.federation.CELFunction + (*CELReceiverType)(nil), // 34: grpc.federation.CELReceiverType + (*CELFunctionArgument)(nil), // 35: grpc.federation.CELFunctionArgument + (*CELType)(nil), // 36: grpc.federation.CELType + (*CELMapType)(nil), // 37: grpc.federation.CELMapType + (*CELVariable)(nil), // 38: grpc.federation.CELVariable + (code.Code)(0), // 39: google.rpc.Code + (*errdetails.ErrorInfo)(nil), // 40: google.rpc.ErrorInfo + (*errdetails.RetryInfo)(nil), // 41: google.rpc.RetryInfo + (*errdetails.DebugInfo)(nil), // 42: google.rpc.DebugInfo + (*errdetails.QuotaFailure)(nil), // 43: google.rpc.QuotaFailure + (*errdetails.PreconditionFailure)(nil), // 44: google.rpc.PreconditionFailure + (*errdetails.BadRequest)(nil), // 45: google.rpc.BadRequest + (*errdetails.RequestInfo)(nil), // 46: google.rpc.RequestInfo + (*errdetails.ResourceInfo)(nil), // 47: google.rpc.ResourceInfo + (*errdetails.Help)(nil), // 48: google.rpc.Help + (*errdetails.LocalizedMessage)(nil), // 49: google.rpc.LocalizedMessage + (*descriptorpb.FileOptions)(nil), // 50: google.protobuf.FileOptions + (*descriptorpb.ServiceOptions)(nil), // 51: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 52: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 53: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 54: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 55: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 56: google.protobuf.EnumValueOptions + (*descriptorpb.OneofOptions)(nil), // 57: google.protobuf.OneofOptions } var file_grpc_federation_federation_proto_depIdxs = []int32{ - 30, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin + 31, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin 7, // 1: grpc.federation.ServiceRule.env:type_name -> grpc.federation.Env 8, // 2: grpc.federation.Env.var:type_name -> grpc.federation.EnvVar 9, // 3: grpc.federation.EnvVar.type:type_name -> grpc.federation.EnvType @@ -3645,71 +3746,73 @@ var file_grpc_federation_federation_proto_depIdxs = []int32{ 14, // 10: grpc.federation.MessageRule.def:type_name -> grpc.federation.VariableDefinition 15, // 11: grpc.federation.VariableDefinition.map:type_name -> grpc.federation.MapExpr 17, // 12: grpc.federation.VariableDefinition.message:type_name -> grpc.federation.MessageExpr - 18, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr - 21, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr - 16, // 15: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator - 17, // 16: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr - 27, // 17: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument - 25, // 18: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest - 22, // 19: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy - 19, // 20: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError - 14, // 21: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition - 38, // 22: grpc.federation.GRPCError.code:type_name -> google.rpc.Code - 20, // 23: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail - 1, // 24: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel - 14, // 25: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition - 17, // 26: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr - 39, // 27: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo - 40, // 28: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo - 41, // 29: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo - 42, // 30: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure - 43, // 31: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure - 44, // 32: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest - 45, // 33: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo - 46, // 34: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo - 47, // 35: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help - 48, // 36: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage - 19, // 37: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError - 23, // 38: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant - 24, // 39: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential - 29, // 40: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof - 11, // 41: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption - 14, // 42: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition - 31, // 43: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport - 33, // 44: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType - 32, // 45: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction - 37, // 46: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable - 34, // 47: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument - 35, // 48: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType - 32, // 49: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction - 35, // 50: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType - 0, // 51: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind - 35, // 52: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType - 36, // 53: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType - 35, // 54: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType - 35, // 55: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType - 35, // 56: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType - 49, // 57: grpc.federation.file:extendee -> google.protobuf.FileOptions - 50, // 58: grpc.federation.service:extendee -> google.protobuf.ServiceOptions - 51, // 59: grpc.federation.method:extendee -> google.protobuf.MethodOptions - 52, // 60: grpc.federation.message:extendee -> google.protobuf.MessageOptions - 53, // 61: grpc.federation.field:extendee -> google.protobuf.FieldOptions - 54, // 62: grpc.federation.enum:extendee -> google.protobuf.EnumOptions - 55, // 63: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions - 56, // 64: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions - 2, // 65: grpc.federation.file:type_name -> grpc.federation.FileRule - 6, // 66: grpc.federation.service:type_name -> grpc.federation.ServiceRule - 12, // 67: grpc.federation.method:type_name -> grpc.federation.MethodRule - 13, // 68: grpc.federation.message:type_name -> grpc.federation.MessageRule - 28, // 69: grpc.federation.field:type_name -> grpc.federation.FieldRule - 3, // 70: grpc.federation.enum:type_name -> grpc.federation.EnumRule - 4, // 71: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule - 5, // 72: grpc.federation.oneof:type_name -> grpc.federation.OneofRule - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 65, // [65:73] is the sub-list for extension type_name - 57, // [57:65] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 19, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr + 22, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr + 18, // 15: grpc.federation.VariableDefinition.enum:type_name -> grpc.federation.EnumExpr + 16, // 16: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator + 17, // 17: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr + 18, // 18: grpc.federation.MapExpr.enum:type_name -> grpc.federation.EnumExpr + 28, // 19: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument + 26, // 20: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest + 23, // 21: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy + 20, // 22: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError + 14, // 23: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition + 39, // 24: grpc.federation.GRPCError.code:type_name -> google.rpc.Code + 21, // 25: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail + 1, // 26: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel + 14, // 27: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition + 17, // 28: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr + 40, // 29: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo + 41, // 30: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo + 42, // 31: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo + 43, // 32: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure + 44, // 33: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure + 45, // 34: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest + 46, // 35: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo + 47, // 36: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo + 48, // 37: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help + 49, // 38: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage + 20, // 39: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError + 24, // 40: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant + 25, // 41: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential + 30, // 42: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof + 11, // 43: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption + 14, // 44: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition + 32, // 45: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport + 34, // 46: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType + 33, // 47: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction + 38, // 48: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable + 35, // 49: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument + 36, // 50: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType + 33, // 51: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction + 36, // 52: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType + 0, // 53: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind + 36, // 54: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType + 37, // 55: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType + 36, // 56: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType + 36, // 57: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType + 36, // 58: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType + 50, // 59: grpc.federation.file:extendee -> google.protobuf.FileOptions + 51, // 60: grpc.federation.service:extendee -> google.protobuf.ServiceOptions + 52, // 61: grpc.federation.method:extendee -> google.protobuf.MethodOptions + 53, // 62: grpc.federation.message:extendee -> google.protobuf.MessageOptions + 54, // 63: grpc.federation.field:extendee -> google.protobuf.FieldOptions + 55, // 64: grpc.federation.enum:extendee -> google.protobuf.EnumOptions + 56, // 65: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions + 57, // 66: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions + 2, // 67: grpc.federation.file:type_name -> grpc.federation.FileRule + 6, // 68: grpc.federation.service:type_name -> grpc.federation.ServiceRule + 12, // 69: grpc.federation.method:type_name -> grpc.federation.MethodRule + 13, // 70: grpc.federation.message:type_name -> grpc.federation.MessageRule + 29, // 71: grpc.federation.field:type_name -> grpc.federation.FieldRule + 3, // 72: grpc.federation.enum:type_name -> grpc.federation.EnumRule + 4, // 73: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule + 5, // 74: grpc.federation.oneof:type_name -> grpc.federation.OneofRule + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 67, // [67:75] is the sub-list for extension type_name + 59, // [59:67] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_grpc_federation_federation_proto_init() } @@ -3911,7 +4014,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallExpr); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -3923,7 +4026,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*CallExpr); i { case 0: return &v.state case 1: @@ -3935,7 +4038,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -3947,7 +4050,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -3959,7 +4062,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -3971,7 +4074,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyConstant); i { + switch v := v.(*RetryPolicy); i { case 0: return &v.state case 1: @@ -3983,7 +4086,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyExponential); i { + switch v := v.(*RetryPolicyConstant); i { case 0: return &v.state case 1: @@ -3995,7 +4098,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodRequest); i { + switch v := v.(*RetryPolicyExponential); i { case 0: return &v.state case 1: @@ -4007,7 +4110,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodResponse); i { + switch v := v.(*MethodRequest); i { case 0: return &v.state case 1: @@ -4019,7 +4122,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*MethodResponse); i { case 0: return &v.state case 1: @@ -4031,7 +4134,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldRule); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -4043,7 +4146,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOneof); i { + switch v := v.(*FieldRule); i { case 0: return &v.state case 1: @@ -4055,7 +4158,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*FieldOneof); i { case 0: return &v.state case 1: @@ -4067,7 +4170,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPluginExport); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -4079,7 +4182,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPluginExport); i { case 0: return &v.state case 1: @@ -4091,7 +4194,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELReceiverType); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -4103,7 +4206,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunctionArgument); i { + switch v := v.(*CELReceiverType); i { case 0: return &v.state case 1: @@ -4115,7 +4218,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELType); i { + switch v := v.(*CELFunctionArgument); i { case 0: return &v.state case 1: @@ -4127,7 +4230,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELMapType); i { + switch v := v.(*CELType); i { case 0: return &v.state case 1: @@ -4139,6 +4242,18 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CELMapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_federation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CELVariable); i { case 0: return &v.state @@ -4167,29 +4282,31 @@ func file_grpc_federation_federation_proto_init() { (*VariableDefinition_Message)(nil), (*VariableDefinition_Call)(nil), (*VariableDefinition_Validation)(nil), + (*VariableDefinition_Enum)(nil), } file_grpc_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{ (*MapExpr_By)(nil), (*MapExpr_Message)(nil), + (*MapExpr_Enum)(nil), } - file_grpc_federation_federation_proto_msgTypes[16].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[19].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[22].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[23].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[24].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[25].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[28].OneofWrappers = []interface{}{ (*FieldOneof_If)(nil), (*FieldOneof_Default)(nil), } - file_grpc_federation_federation_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[34].OneofWrappers = []interface{}{ (*CELType_Kind)(nil), (*CELType_Repeated)(nil), (*CELType_Map)(nil), @@ -4202,7 +4319,7 @@ func file_grpc_federation_federation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_federation_proto_rawDesc, NumEnums: 2, - NumMessages: 36, + NumMessages: 37, NumExtensions: 8, NumServices: 0, }, diff --git a/_examples/11_multi_service/grpc/federation/federation.pb.go b/_examples/11_multi_service/grpc/federation/federation.pb.go index ecfdd20c..5cb2d17a 100644 --- a/_examples/11_multi_service/grpc/federation/federation.pb.go +++ b/_examples/11_multi_service/grpc/federation/federation.pb.go @@ -151,7 +151,7 @@ func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use GRPCError_LogLevel.Descriptor instead. func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17, 0} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18, 0} } type FileRule struct { @@ -938,6 +938,7 @@ type VariableDefinition struct { // *VariableDefinition_Message // *VariableDefinition_Call // *VariableDefinition_Validation + // *VariableDefinition_Enum Expr isVariableDefinition_Expr `protobuf_oneof:"expr"` } @@ -1036,6 +1037,13 @@ func (x *VariableDefinition) GetValidation() *ValidationExpr { return nil } +func (x *VariableDefinition) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableDefinition_Enum); ok { + return x.Enum + } + return nil +} + type isVariableDefinition_Expr interface { isVariableDefinition_Expr() } @@ -1065,6 +1073,11 @@ type VariableDefinition_Validation struct { Validation *ValidationExpr `protobuf:"bytes,15,opt,name=validation,proto3,oneof"` } +type VariableDefinition_Enum struct { + // enum gets with cel value. + Enum *EnumExpr `protobuf:"bytes,16,opt,name=enum,proto3,oneof"` +} + func (*VariableDefinition_By) isVariableDefinition_Expr() {} func (*VariableDefinition_Map) isVariableDefinition_Expr() {} @@ -1075,6 +1088,8 @@ func (*VariableDefinition_Call) isVariableDefinition_Expr() {} func (*VariableDefinition_Validation) isVariableDefinition_Expr() {} +func (*VariableDefinition_Enum) isVariableDefinition_Expr() {} + // MapExpr apply map operation for the specified repeated type. type MapExpr struct { state protoimpl.MessageState @@ -1090,6 +1105,7 @@ type MapExpr struct { // // *MapExpr_By // *MapExpr_Message + // *MapExpr_Enum Expr isMapExpr_Expr `protobuf_oneof:"expr"` } @@ -1153,6 +1169,13 @@ func (x *MapExpr) GetMessage() *MessageExpr { return nil } +func (x *MapExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapExpr_Expr interface { isMapExpr_Expr() } @@ -1169,10 +1192,18 @@ type MapExpr_Message struct { Message *MessageExpr `protobuf:"bytes,12,opt,name=message,proto3,oneof"` } +type MapExpr_Enum struct { + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + Enum *EnumExpr `protobuf:"bytes,13,opt,name=enum,proto3,oneof"` +} + func (*MapExpr_By) isMapExpr_Expr() {} func (*MapExpr_Message) isMapExpr_Expr() {} +func (*MapExpr_Enum) isMapExpr_Expr() {} + // Iterator represents iterator variable. type Iterator struct { state protoimpl.MessageState @@ -1291,6 +1322,65 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +// EnumExpr represents dependent enum. +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // `by` evaluates with CEL. + By string `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} +} + +func (x *EnumExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnumExpr) GetBy() string { + if x != nil { + return x.By + } + return "" +} + // CallExpr represents how to call gRPC method. type CallExpr struct { state protoimpl.MessageState @@ -1316,7 +1406,7 @@ type CallExpr struct { func (x *CallExpr) Reset() { *x = CallExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1419,7 @@ func (x *CallExpr) String() string { func (*CallExpr) ProtoMessage() {} func (x *CallExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1432,7 @@ func (x *CallExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use CallExpr.ProtoReflect.Descriptor instead. func (*CallExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} } func (x *CallExpr) GetMethod() string { @@ -1418,7 +1508,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1521,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1534,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} } func (x *GRPCError) GetDef() []*VariableDefinition { @@ -1541,7 +1631,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1554,7 +1644,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1567,7 +1657,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} } func (x *GRPCErrorDetail) GetIf() string { @@ -1685,7 +1775,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1788,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1801,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} } func (x *ValidationExpr) GetName() string { @@ -1748,7 +1838,7 @@ type RetryPolicy struct { func (x *RetryPolicy) Reset() { *x = RetryPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1851,7 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1864,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} } func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy { @@ -1841,7 +1931,7 @@ type RetryPolicyConstant struct { func (x *RetryPolicyConstant) Reset() { *x = RetryPolicyConstant{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1944,7 @@ func (x *RetryPolicyConstant) String() string { func (*RetryPolicyConstant) ProtoMessage() {} func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1957,7 @@ func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyConstant.ProtoReflect.Descriptor instead. func (*RetryPolicyConstant) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} } func (x *RetryPolicyConstant) GetInterval() string { @@ -1905,7 +1995,7 @@ type RetryPolicyExponential struct { func (x *RetryPolicyExponential) Reset() { *x = RetryPolicyExponential{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2008,7 @@ func (x *RetryPolicyExponential) String() string { func (*RetryPolicyExponential) ProtoMessage() {} func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2021,7 @@ func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyExponential.ProtoReflect.Descriptor instead. func (*RetryPolicyExponential) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} } func (x *RetryPolicyExponential) GetInitialInterval() string { @@ -1992,7 +2082,7 @@ type MethodRequest struct { func (x *MethodRequest) Reset() { *x = MethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2005,7 +2095,7 @@ func (x *MethodRequest) String() string { func (*MethodRequest) ProtoMessage() {} func (x *MethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2018,7 +2108,7 @@ func (x *MethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodRequest.ProtoReflect.Descriptor instead. func (*MethodRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} } func (x *MethodRequest) GetField() string { @@ -2062,7 +2152,7 @@ type MethodResponse struct { func (x *MethodResponse) Reset() { *x = MethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2165,7 @@ func (x *MethodResponse) String() string { func (*MethodResponse) ProtoMessage() {} func (x *MethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2178,7 @@ func (x *MethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodResponse.ProtoReflect.Descriptor instead. func (*MethodResponse) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} } func (x *MethodResponse) GetName() string { @@ -2134,7 +2224,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2237,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,7 +2250,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} } func (x *Argument) GetName() string { @@ -2210,7 +2300,7 @@ type FieldRule struct { func (x *FieldRule) Reset() { *x = FieldRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2313,7 @@ func (x *FieldRule) String() string { func (*FieldRule) ProtoMessage() {} func (x *FieldRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2326,7 @@ func (x *FieldRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldRule.ProtoReflect.Descriptor instead. func (*FieldRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} } func (x *FieldRule) GetCustomResolver() bool { @@ -2299,7 +2389,7 @@ type FieldOneof struct { func (x *FieldOneof) Reset() { *x = FieldOneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2402,7 @@ func (x *FieldOneof) String() string { func (*FieldOneof) ProtoMessage() {} func (x *FieldOneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2415,7 @@ func (x *FieldOneof) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldOneof.ProtoReflect.Descriptor instead. func (*FieldOneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} } func (m *FieldOneof) GetCond() isFieldOneof_Cond { @@ -2397,7 +2487,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2500,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2513,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} } func (x *CELPlugin) GetExport() []*CELPluginExport { @@ -2455,7 +2545,7 @@ type CELPluginExport struct { func (x *CELPluginExport) Reset() { *x = CELPluginExport{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2558,7 @@ func (x *CELPluginExport) String() string { func (*CELPluginExport) ProtoMessage() {} func (x *CELPluginExport) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2571,7 @@ func (x *CELPluginExport) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPluginExport.ProtoReflect.Descriptor instead. func (*CELPluginExport) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} } func (x *CELPluginExport) GetName() string { @@ -2539,7 +2629,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2642,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2655,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} } func (x *CELFunction) GetName() string { @@ -2614,7 +2704,7 @@ type CELReceiverType struct { func (x *CELReceiverType) Reset() { *x = CELReceiverType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2717,7 @@ func (x *CELReceiverType) String() string { func (*CELReceiverType) ProtoMessage() {} func (x *CELReceiverType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2730,7 @@ func (x *CELReceiverType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELReceiverType.ProtoReflect.Descriptor instead. func (*CELReceiverType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} } func (x *CELReceiverType) GetName() string { @@ -2682,7 +2772,7 @@ type CELFunctionArgument struct { func (x *CELFunctionArgument) Reset() { *x = CELFunctionArgument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2785,7 @@ func (x *CELFunctionArgument) String() string { func (*CELFunctionArgument) ProtoMessage() {} func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2798,7 @@ func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunctionArgument.ProtoReflect.Descriptor instead. func (*CELFunctionArgument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} } func (x *CELFunctionArgument) GetName() string { @@ -2751,7 +2841,7 @@ type CELType struct { func (x *CELType) Reset() { *x = CELType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2854,7 @@ func (x *CELType) String() string { func (*CELType) ProtoMessage() {} func (x *CELType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2867,7 @@ func (x *CELType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELType.ProtoReflect.Descriptor instead. func (*CELType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} } func (m *CELType) GetType() isCELType_Type { @@ -2876,7 +2966,7 @@ type CELMapType struct { func (x *CELMapType) Reset() { *x = CELMapType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +2979,7 @@ func (x *CELMapType) String() string { func (*CELMapType) ProtoMessage() {} func (x *CELMapType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +2992,7 @@ func (x *CELMapType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELMapType.ProtoReflect.Descriptor instead. func (*CELMapType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} } func (x *CELMapType) GetKey() *CELType { @@ -2937,7 +3027,7 @@ type CELVariable struct { func (x *CELVariable) Reset() { *x = CELVariable{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3040,7 @@ func (x *CELVariable) String() string { func (*CELVariable) ProtoMessage() {} func (x *CELVariable) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3053,7 @@ func (x *CELVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use CELVariable.ProtoReflect.Descriptor instead. func (*CELVariable) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{36} } func (x *CELVariable) GetName() string { @@ -3194,7 +3284,7 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x12, + 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xa7, 0x03, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, @@ -3215,347 +3305,357 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0x50, 0x0a, - 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, + 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, + 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x22, 0x86, 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x22, 0x86, - 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x03, - 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, 0x03, 0x64, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, - 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, - 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, - 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, - 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, - 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, 0x08, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, - 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x69, 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, + 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, + 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, + 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, - 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x38, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, + 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, + 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x12, 0x2f, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x43, 0x45, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, + 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, 0x4c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x1a, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, - 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, 0x4d, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, + 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, + 0x4c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, + 0x1a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, + 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, - 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, - 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x54, - 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x3a, 0x54, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, 0xa3, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x50, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x50, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x3a, 0x61, - 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, - 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, - 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x3a, 0x61, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, + 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, + 0x02, 0x03, 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, + 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -3571,7 +3671,7 @@ func file_grpc_federation_federation_proto_rawDescGZIP() []byte { } var file_grpc_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_grpc_federation_federation_proto_goTypes = []interface{}{ (TypeKind)(0), // 0: grpc.federation.TypeKind (GRPCError_LogLevel)(0), // 1: grpc.federation.GRPCError.LogLevel @@ -3591,48 +3691,49 @@ var file_grpc_federation_federation_proto_goTypes = []interface{}{ (*MapExpr)(nil), // 15: grpc.federation.MapExpr (*Iterator)(nil), // 16: grpc.federation.Iterator (*MessageExpr)(nil), // 17: grpc.federation.MessageExpr - (*CallExpr)(nil), // 18: grpc.federation.CallExpr - (*GRPCError)(nil), // 19: grpc.federation.GRPCError - (*GRPCErrorDetail)(nil), // 20: grpc.federation.GRPCErrorDetail - (*ValidationExpr)(nil), // 21: grpc.federation.ValidationExpr - (*RetryPolicy)(nil), // 22: grpc.federation.RetryPolicy - (*RetryPolicyConstant)(nil), // 23: grpc.federation.RetryPolicyConstant - (*RetryPolicyExponential)(nil), // 24: grpc.federation.RetryPolicyExponential - (*MethodRequest)(nil), // 25: grpc.federation.MethodRequest - (*MethodResponse)(nil), // 26: grpc.federation.MethodResponse - (*Argument)(nil), // 27: grpc.federation.Argument - (*FieldRule)(nil), // 28: grpc.federation.FieldRule - (*FieldOneof)(nil), // 29: grpc.federation.FieldOneof - (*CELPlugin)(nil), // 30: grpc.federation.CELPlugin - (*CELPluginExport)(nil), // 31: grpc.federation.CELPluginExport - (*CELFunction)(nil), // 32: grpc.federation.CELFunction - (*CELReceiverType)(nil), // 33: grpc.federation.CELReceiverType - (*CELFunctionArgument)(nil), // 34: grpc.federation.CELFunctionArgument - (*CELType)(nil), // 35: grpc.federation.CELType - (*CELMapType)(nil), // 36: grpc.federation.CELMapType - (*CELVariable)(nil), // 37: grpc.federation.CELVariable - (code.Code)(0), // 38: google.rpc.Code - (*errdetails.ErrorInfo)(nil), // 39: google.rpc.ErrorInfo - (*errdetails.RetryInfo)(nil), // 40: google.rpc.RetryInfo - (*errdetails.DebugInfo)(nil), // 41: google.rpc.DebugInfo - (*errdetails.QuotaFailure)(nil), // 42: google.rpc.QuotaFailure - (*errdetails.PreconditionFailure)(nil), // 43: google.rpc.PreconditionFailure - (*errdetails.BadRequest)(nil), // 44: google.rpc.BadRequest - (*errdetails.RequestInfo)(nil), // 45: google.rpc.RequestInfo - (*errdetails.ResourceInfo)(nil), // 46: google.rpc.ResourceInfo - (*errdetails.Help)(nil), // 47: google.rpc.Help - (*errdetails.LocalizedMessage)(nil), // 48: google.rpc.LocalizedMessage - (*descriptorpb.FileOptions)(nil), // 49: google.protobuf.FileOptions - (*descriptorpb.ServiceOptions)(nil), // 50: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 51: google.protobuf.MethodOptions - (*descriptorpb.MessageOptions)(nil), // 52: google.protobuf.MessageOptions - (*descriptorpb.FieldOptions)(nil), // 53: google.protobuf.FieldOptions - (*descriptorpb.EnumOptions)(nil), // 54: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 55: google.protobuf.EnumValueOptions - (*descriptorpb.OneofOptions)(nil), // 56: google.protobuf.OneofOptions + (*EnumExpr)(nil), // 18: grpc.federation.EnumExpr + (*CallExpr)(nil), // 19: grpc.federation.CallExpr + (*GRPCError)(nil), // 20: grpc.federation.GRPCError + (*GRPCErrorDetail)(nil), // 21: grpc.federation.GRPCErrorDetail + (*ValidationExpr)(nil), // 22: grpc.federation.ValidationExpr + (*RetryPolicy)(nil), // 23: grpc.federation.RetryPolicy + (*RetryPolicyConstant)(nil), // 24: grpc.federation.RetryPolicyConstant + (*RetryPolicyExponential)(nil), // 25: grpc.federation.RetryPolicyExponential + (*MethodRequest)(nil), // 26: grpc.federation.MethodRequest + (*MethodResponse)(nil), // 27: grpc.federation.MethodResponse + (*Argument)(nil), // 28: grpc.federation.Argument + (*FieldRule)(nil), // 29: grpc.federation.FieldRule + (*FieldOneof)(nil), // 30: grpc.federation.FieldOneof + (*CELPlugin)(nil), // 31: grpc.federation.CELPlugin + (*CELPluginExport)(nil), // 32: grpc.federation.CELPluginExport + (*CELFunction)(nil), // 33: grpc.federation.CELFunction + (*CELReceiverType)(nil), // 34: grpc.federation.CELReceiverType + (*CELFunctionArgument)(nil), // 35: grpc.federation.CELFunctionArgument + (*CELType)(nil), // 36: grpc.federation.CELType + (*CELMapType)(nil), // 37: grpc.federation.CELMapType + (*CELVariable)(nil), // 38: grpc.federation.CELVariable + (code.Code)(0), // 39: google.rpc.Code + (*errdetails.ErrorInfo)(nil), // 40: google.rpc.ErrorInfo + (*errdetails.RetryInfo)(nil), // 41: google.rpc.RetryInfo + (*errdetails.DebugInfo)(nil), // 42: google.rpc.DebugInfo + (*errdetails.QuotaFailure)(nil), // 43: google.rpc.QuotaFailure + (*errdetails.PreconditionFailure)(nil), // 44: google.rpc.PreconditionFailure + (*errdetails.BadRequest)(nil), // 45: google.rpc.BadRequest + (*errdetails.RequestInfo)(nil), // 46: google.rpc.RequestInfo + (*errdetails.ResourceInfo)(nil), // 47: google.rpc.ResourceInfo + (*errdetails.Help)(nil), // 48: google.rpc.Help + (*errdetails.LocalizedMessage)(nil), // 49: google.rpc.LocalizedMessage + (*descriptorpb.FileOptions)(nil), // 50: google.protobuf.FileOptions + (*descriptorpb.ServiceOptions)(nil), // 51: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 52: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 53: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 54: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 55: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 56: google.protobuf.EnumValueOptions + (*descriptorpb.OneofOptions)(nil), // 57: google.protobuf.OneofOptions } var file_grpc_federation_federation_proto_depIdxs = []int32{ - 30, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin + 31, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin 7, // 1: grpc.federation.ServiceRule.env:type_name -> grpc.federation.Env 8, // 2: grpc.federation.Env.var:type_name -> grpc.federation.EnvVar 9, // 3: grpc.federation.EnvVar.type:type_name -> grpc.federation.EnvType @@ -3645,71 +3746,73 @@ var file_grpc_federation_federation_proto_depIdxs = []int32{ 14, // 10: grpc.federation.MessageRule.def:type_name -> grpc.federation.VariableDefinition 15, // 11: grpc.federation.VariableDefinition.map:type_name -> grpc.federation.MapExpr 17, // 12: grpc.federation.VariableDefinition.message:type_name -> grpc.federation.MessageExpr - 18, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr - 21, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr - 16, // 15: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator - 17, // 16: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr - 27, // 17: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument - 25, // 18: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest - 22, // 19: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy - 19, // 20: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError - 14, // 21: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition - 38, // 22: grpc.federation.GRPCError.code:type_name -> google.rpc.Code - 20, // 23: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail - 1, // 24: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel - 14, // 25: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition - 17, // 26: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr - 39, // 27: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo - 40, // 28: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo - 41, // 29: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo - 42, // 30: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure - 43, // 31: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure - 44, // 32: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest - 45, // 33: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo - 46, // 34: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo - 47, // 35: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help - 48, // 36: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage - 19, // 37: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError - 23, // 38: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant - 24, // 39: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential - 29, // 40: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof - 11, // 41: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption - 14, // 42: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition - 31, // 43: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport - 33, // 44: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType - 32, // 45: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction - 37, // 46: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable - 34, // 47: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument - 35, // 48: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType - 32, // 49: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction - 35, // 50: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType - 0, // 51: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind - 35, // 52: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType - 36, // 53: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType - 35, // 54: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType - 35, // 55: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType - 35, // 56: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType - 49, // 57: grpc.federation.file:extendee -> google.protobuf.FileOptions - 50, // 58: grpc.federation.service:extendee -> google.protobuf.ServiceOptions - 51, // 59: grpc.federation.method:extendee -> google.protobuf.MethodOptions - 52, // 60: grpc.federation.message:extendee -> google.protobuf.MessageOptions - 53, // 61: grpc.federation.field:extendee -> google.protobuf.FieldOptions - 54, // 62: grpc.federation.enum:extendee -> google.protobuf.EnumOptions - 55, // 63: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions - 56, // 64: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions - 2, // 65: grpc.federation.file:type_name -> grpc.federation.FileRule - 6, // 66: grpc.federation.service:type_name -> grpc.federation.ServiceRule - 12, // 67: grpc.federation.method:type_name -> grpc.federation.MethodRule - 13, // 68: grpc.federation.message:type_name -> grpc.federation.MessageRule - 28, // 69: grpc.federation.field:type_name -> grpc.federation.FieldRule - 3, // 70: grpc.federation.enum:type_name -> grpc.federation.EnumRule - 4, // 71: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule - 5, // 72: grpc.federation.oneof:type_name -> grpc.federation.OneofRule - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 65, // [65:73] is the sub-list for extension type_name - 57, // [57:65] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 19, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr + 22, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr + 18, // 15: grpc.federation.VariableDefinition.enum:type_name -> grpc.federation.EnumExpr + 16, // 16: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator + 17, // 17: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr + 18, // 18: grpc.federation.MapExpr.enum:type_name -> grpc.federation.EnumExpr + 28, // 19: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument + 26, // 20: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest + 23, // 21: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy + 20, // 22: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError + 14, // 23: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition + 39, // 24: grpc.federation.GRPCError.code:type_name -> google.rpc.Code + 21, // 25: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail + 1, // 26: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel + 14, // 27: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition + 17, // 28: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr + 40, // 29: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo + 41, // 30: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo + 42, // 31: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo + 43, // 32: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure + 44, // 33: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure + 45, // 34: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest + 46, // 35: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo + 47, // 36: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo + 48, // 37: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help + 49, // 38: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage + 20, // 39: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError + 24, // 40: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant + 25, // 41: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential + 30, // 42: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof + 11, // 43: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption + 14, // 44: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition + 32, // 45: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport + 34, // 46: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType + 33, // 47: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction + 38, // 48: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable + 35, // 49: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument + 36, // 50: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType + 33, // 51: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction + 36, // 52: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType + 0, // 53: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind + 36, // 54: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType + 37, // 55: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType + 36, // 56: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType + 36, // 57: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType + 36, // 58: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType + 50, // 59: grpc.federation.file:extendee -> google.protobuf.FileOptions + 51, // 60: grpc.federation.service:extendee -> google.protobuf.ServiceOptions + 52, // 61: grpc.federation.method:extendee -> google.protobuf.MethodOptions + 53, // 62: grpc.federation.message:extendee -> google.protobuf.MessageOptions + 54, // 63: grpc.federation.field:extendee -> google.protobuf.FieldOptions + 55, // 64: grpc.federation.enum:extendee -> google.protobuf.EnumOptions + 56, // 65: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions + 57, // 66: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions + 2, // 67: grpc.federation.file:type_name -> grpc.federation.FileRule + 6, // 68: grpc.federation.service:type_name -> grpc.federation.ServiceRule + 12, // 69: grpc.federation.method:type_name -> grpc.federation.MethodRule + 13, // 70: grpc.federation.message:type_name -> grpc.federation.MessageRule + 29, // 71: grpc.federation.field:type_name -> grpc.federation.FieldRule + 3, // 72: grpc.federation.enum:type_name -> grpc.federation.EnumRule + 4, // 73: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule + 5, // 74: grpc.federation.oneof:type_name -> grpc.federation.OneofRule + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 67, // [67:75] is the sub-list for extension type_name + 59, // [59:67] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_grpc_federation_federation_proto_init() } @@ -3911,7 +4014,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallExpr); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -3923,7 +4026,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*CallExpr); i { case 0: return &v.state case 1: @@ -3935,7 +4038,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -3947,7 +4050,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -3959,7 +4062,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -3971,7 +4074,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyConstant); i { + switch v := v.(*RetryPolicy); i { case 0: return &v.state case 1: @@ -3983,7 +4086,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyExponential); i { + switch v := v.(*RetryPolicyConstant); i { case 0: return &v.state case 1: @@ -3995,7 +4098,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodRequest); i { + switch v := v.(*RetryPolicyExponential); i { case 0: return &v.state case 1: @@ -4007,7 +4110,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodResponse); i { + switch v := v.(*MethodRequest); i { case 0: return &v.state case 1: @@ -4019,7 +4122,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*MethodResponse); i { case 0: return &v.state case 1: @@ -4031,7 +4134,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldRule); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -4043,7 +4146,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOneof); i { + switch v := v.(*FieldRule); i { case 0: return &v.state case 1: @@ -4055,7 +4158,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*FieldOneof); i { case 0: return &v.state case 1: @@ -4067,7 +4170,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPluginExport); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -4079,7 +4182,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPluginExport); i { case 0: return &v.state case 1: @@ -4091,7 +4194,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELReceiverType); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -4103,7 +4206,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunctionArgument); i { + switch v := v.(*CELReceiverType); i { case 0: return &v.state case 1: @@ -4115,7 +4218,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELType); i { + switch v := v.(*CELFunctionArgument); i { case 0: return &v.state case 1: @@ -4127,7 +4230,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELMapType); i { + switch v := v.(*CELType); i { case 0: return &v.state case 1: @@ -4139,6 +4242,18 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CELMapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_federation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CELVariable); i { case 0: return &v.state @@ -4167,29 +4282,31 @@ func file_grpc_federation_federation_proto_init() { (*VariableDefinition_Message)(nil), (*VariableDefinition_Call)(nil), (*VariableDefinition_Validation)(nil), + (*VariableDefinition_Enum)(nil), } file_grpc_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{ (*MapExpr_By)(nil), (*MapExpr_Message)(nil), + (*MapExpr_Enum)(nil), } - file_grpc_federation_federation_proto_msgTypes[16].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[19].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[22].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[23].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[24].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[25].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[28].OneofWrappers = []interface{}{ (*FieldOneof_If)(nil), (*FieldOneof_Default)(nil), } - file_grpc_federation_federation_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[34].OneofWrappers = []interface{}{ (*CELType_Kind)(nil), (*CELType_Repeated)(nil), (*CELType_Map)(nil), @@ -4202,7 +4319,7 @@ func file_grpc_federation_federation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_federation_proto_rawDesc, NumEnums: 2, - NumMessages: 36, + NumMessages: 37, NumExtensions: 8, NumServices: 0, }, diff --git a/_examples/13_map/federation/federation.pb.go b/_examples/13_map/federation/federation.pb.go index f43bb713..7c8a3571 100644 --- a/_examples/13_map/federation/federation.pb.go +++ b/_examples/13_map/federation/federation.pb.go @@ -22,6 +22,58 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type Item_ItemType int32 + +const ( + Item_ITEM_TYPE_UNSPECIFIED Item_ItemType = 0 + Item_ITEM_TYPE_1 Item_ItemType = 1 + Item_ITEM_TYPE_2 Item_ItemType = 2 + Item_ITEM_TYPE_3 Item_ItemType = 3 +) + +// Enum value maps for Item_ItemType. +var ( + Item_ItemType_name = map[int32]string{ + 0: "ITEM_TYPE_UNSPECIFIED", + 1: "ITEM_TYPE_1", + 2: "ITEM_TYPE_2", + 3: "ITEM_TYPE_3", + } + Item_ItemType_value = map[string]int32{ + "ITEM_TYPE_UNSPECIFIED": 0, + "ITEM_TYPE_1": 1, + "ITEM_TYPE_2": 2, + "ITEM_TYPE_3": 3, + } +) + +func (x Item_ItemType) Enum() *Item_ItemType { + p := new(Item_ItemType) + *p = x + return p +} + +func (x Item_ItemType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Item_ItemType) Descriptor() protoreflect.EnumDescriptor { + return file_federation_federation_proto_enumTypes[0].Descriptor() +} + +func (Item_ItemType) Type() protoreflect.EnumType { + return &file_federation_federation_proto_enumTypes[0] +} + +func (x Item_ItemType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Item_ItemType.Descriptor instead. +func (Item_ItemType) EnumDescriptor() ([]byte, []int) { + return file_federation_federation_proto_rawDescGZIP(), []int{4, 0} +} + type GetPostsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -121,11 +173,12 @@ type Posts struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` - Titles []string `protobuf:"bytes,2,rep,name=titles,proto3" json:"titles,omitempty"` - Contents []string `protobuf:"bytes,3,rep,name=contents,proto3" json:"contents,omitempty"` - Users []*User `protobuf:"bytes,4,rep,name=users,proto3" json:"users,omitempty"` - Items []*Posts_PostItem `protobuf:"bytes,5,rep,name=items,proto3" json:"items,omitempty"` + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` + Titles []string `protobuf:"bytes,2,rep,name=titles,proto3" json:"titles,omitempty"` + Contents []string `protobuf:"bytes,3,rep,name=contents,proto3" json:"contents,omitempty"` + Users []*User `protobuf:"bytes,4,rep,name=users,proto3" json:"users,omitempty"` + Items []*Posts_PostItem `protobuf:"bytes,5,rep,name=items,proto3" json:"items,omitempty"` + ItemTypes []Item_ItemType `protobuf:"varint,6,rep,packed,name=item_types,json=itemTypes,proto3,enum=org.federation.Item_ItemType" json:"item_types,omitempty"` } func (x *Posts) Reset() { @@ -195,6 +248,13 @@ func (x *Posts) GetItems() []*Posts_PostItem { return nil } +func (x *Posts) GetItemTypes() []Item_ItemType { + if x != nil { + return x.ItemTypes + } + return nil +} + type User struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -250,6 +310,44 @@ func (x *User) GetName() string { return "" } +type Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Item) Reset() { + *x = Item{} + if protoimpl.UnsafeEnabled { + mi := &file_federation_federation_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Item) ProtoMessage() {} + +func (x *Item) ProtoReflect() protoreflect.Message { + mi := &file_federation_federation_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Item.ProtoReflect.Descriptor instead. +func (*Item) Descriptor() ([]byte, []int) { + return file_federation_federation_proto_rawDescGZIP(), []int{4} +} + type Posts_PostItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -261,7 +359,7 @@ type Posts_PostItem struct { func (x *Posts_PostItem) Reset() { *x = Posts_PostItem{} if protoimpl.UnsafeEnabled { - mi := &file_federation_federation_proto_msgTypes[4] + mi := &file_federation_federation_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -274,7 +372,7 @@ func (x *Posts_PostItem) String() string { func (*Posts_PostItem) ProtoMessage() {} func (x *Posts_PostItem) ProtoReflect() protoreflect.Message { - mi := &file_federation_federation_proto_msgTypes[4] + mi := &file_federation_federation_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -316,7 +414,7 @@ var file_federation_federation_proto_rawDesc = []byte{ 0x70, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x3a, 0x28, 0x9a, 0x4a, 0x25, 0x0a, 0x23, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x6a, 0x1a, 0x0a, 0x05, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x11, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x12, - 0x05, 0x24, 0x2e, 0x69, 0x64, 0x73, 0x22, 0xb5, 0x04, 0x0a, 0x05, 0x50, 0x6f, 0x73, 0x74, 0x73, + 0x05, 0x24, 0x2e, 0x69, 0x64, 0x73, 0x22, 0xad, 0x06, 0x0a, 0x05, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0x9a, 0x4a, 0x05, 0x12, 0x03, 0x69, 0x64, 0x73, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x20, 0x9a, 0x4a, @@ -334,51 +432,76 @@ var file_federation_federation_proto_rawDesc = []byte{ 0x6f, 0x72, 0x67, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0a, 0x9a, 0x4a, 0x07, 0x12, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x1a, 0x33, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, 0x9a, 0x4a, 0x10, 0x12, - 0x0e, 0x27, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x27, 0x20, 0x2b, 0x20, 0x24, 0x2e, 0x69, 0x64, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0xe6, 0x01, 0x9a, 0x4a, 0xe2, 0x01, 0x0a, 0x35, 0x0a, 0x03, - 0x72, 0x65, 0x73, 0x72, 0x2e, 0x0a, 0x19, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, - 0x12, 0x11, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x12, 0x0a, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x5f, - 0x69, 0x64, 0x73, 0x0a, 0x12, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5a, 0x09, 0x72, 0x65, - 0x73, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x0a, 0x1f, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x62, 0x18, - 0x0a, 0x0d, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5a, - 0x07, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x0a, 0x39, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x62, 0x30, 0x0a, 0x0d, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x72, 0x12, 0x05, 0x70, 0x6f, 0x73, - 0x74, 0x73, 0x62, 0x1f, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x12, 0x0c, 0x69, 0x74, 0x65, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x0a, 0x39, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x62, 0x30, 0x0a, 0x0d, - 0x0a, 0x04, 0x69, 0x74, 0x65, 0x72, 0x12, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x62, 0x1f, 0x0a, - 0x0e, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x0d, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x07, 0x69, 0x74, 0x65, 0x72, 0x2e, 0x69, 0x64, 0x22, 0x77, - 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x4b, 0x9a, 0x4a, 0x48, 0x0a, - 0x32, 0x0a, 0x03, 0x72, 0x65, 0x73, 0x72, 0x2b, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x09, 0x24, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x0a, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x5a, 0x08, 0x72, - 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x32, 0x69, 0x0a, 0x11, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x08, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6f, 0x72, 0x67, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x1a, 0x03, 0x9a, - 0x4a, 0x00, 0x42, 0xc2, 0x01, 0x9a, 0x4a, 0x22, 0x12, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x2f, 0x70, - 0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, - 0x6f, 0x72, 0x67, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x1d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0xa2, 0x02, 0x03, 0x4f, 0x46, 0x58, 0xaa, 0x02, 0x0e, 0x4f, 0x72, 0x67, 0x2e, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0e, 0x4f, 0x72, 0x67, 0x5c, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1a, 0x4f, 0x72, 0x67, 0x5c, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x4f, 0x72, 0x67, 0x3a, 0x3a, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x4d, 0x0a, 0x0a, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x0f, 0x9a, 0x4a, 0x0c, 0x12, 0x0a, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x52, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, + 0x33, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, 0x9a, 0x4a, 0x10, 0x12, 0x0e, + 0x27, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x27, 0x20, 0x2b, 0x20, 0x24, 0x2e, 0x69, 0x64, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x8f, 0x03, 0x9a, 0x4a, 0x8b, 0x03, 0x0a, 0x35, 0x0a, 0x03, 0x72, + 0x65, 0x73, 0x72, 0x2e, 0x0a, 0x19, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, + 0x11, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x12, 0x0a, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, + 0x64, 0x73, 0x0a, 0x12, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5a, 0x09, 0x72, 0x65, 0x73, + 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x0a, 0x1f, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x62, 0x18, 0x0a, + 0x0d, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5a, 0x07, + 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x0a, 0x39, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x62, 0x30, 0x0a, 0x0d, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x72, 0x12, 0x05, 0x70, 0x6f, 0x73, 0x74, + 0x73, 0x62, 0x1f, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x12, 0x0c, 0x69, 0x74, 0x65, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x0a, 0x39, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x62, 0x30, 0x0a, 0x0d, 0x0a, + 0x04, 0x69, 0x74, 0x65, 0x72, 0x12, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x62, 0x1f, 0x0a, 0x0e, + 0x50, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0d, + 0x0a, 0x02, 0x69, 0x64, 0x12, 0x07, 0x69, 0x74, 0x65, 0x72, 0x2e, 0x69, 0x64, 0x0a, 0x67, 0x0a, + 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x5a, 0x52, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x28, 0x27, 0x49, + 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x27, 0x29, 0x2c, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, + 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x28, 0x27, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x32, 0x27, 0x29, 0x5d, 0x0a, 0x3e, 0x0a, 0x0a, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x62, 0x30, 0x0a, 0x18, 0x0a, 0x03, 0x74, 0x79, 0x70, 0x12, 0x11, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x6a, 0x14, 0x0a, 0x0d, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x03, 0x74, 0x79, 0x70, 0x22, 0x77, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x3a, 0x4b, 0x9a, 0x4a, 0x48, 0x0a, 0x32, 0x0a, 0x03, 0x72, 0x65, 0x73, 0x72, 0x2b, + 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, + 0x12, 0x09, 0x24, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x0a, 0x12, 0x0a, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x01, 0x5a, 0x08, 0x72, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x22, + 0x89, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x71, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0f, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x10, 0x01, + 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x32, 0x10, + 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x33, + 0x10, 0x03, 0x1a, 0x17, 0x9a, 0x4a, 0x14, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x0e, 0x9a, 0x4a, 0x0b, + 0x1a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x32, 0x69, 0x0a, 0x11, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x4f, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x6f, + 0x72, 0x67, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, + 0x6f, 0x72, 0x67, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x1a, 0x03, 0x9a, 0x4a, 0x00, 0x42, 0xc2, 0x01, 0x9a, 0x4a, 0x22, 0x12, 0x0f, 0x70, 0x6f, + 0x73, 0x74, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x75, + 0x73, 0x65, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x0a, 0x12, + 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x4f, 0x46, 0x58, 0xaa, 0x02, 0x0e, 0x4f, 0x72, 0x67, + 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0e, 0x4f, 0x72, + 0x67, 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1a, 0x4f, + 0x72, 0x67, 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x4f, 0x72, 0x67, 0x3a, + 0x3a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -393,25 +516,29 @@ func file_federation_federation_proto_rawDescGZIP() []byte { return file_federation_federation_proto_rawDescData } -var file_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_federation_federation_proto_goTypes = []interface{}{ - (*GetPostsRequest)(nil), // 0: org.federation.GetPostsRequest - (*GetPostsResponse)(nil), // 1: org.federation.GetPostsResponse - (*Posts)(nil), // 2: org.federation.Posts - (*User)(nil), // 3: org.federation.User - (*Posts_PostItem)(nil), // 4: org.federation.Posts.PostItem + (Item_ItemType)(0), // 0: org.federation.Item.ItemType + (*GetPostsRequest)(nil), // 1: org.federation.GetPostsRequest + (*GetPostsResponse)(nil), // 2: org.federation.GetPostsResponse + (*Posts)(nil), // 3: org.federation.Posts + (*User)(nil), // 4: org.federation.User + (*Item)(nil), // 5: org.federation.Item + (*Posts_PostItem)(nil), // 6: org.federation.Posts.PostItem } var file_federation_federation_proto_depIdxs = []int32{ - 2, // 0: org.federation.GetPostsResponse.posts:type_name -> org.federation.Posts - 3, // 1: org.federation.Posts.users:type_name -> org.federation.User - 4, // 2: org.federation.Posts.items:type_name -> org.federation.Posts.PostItem - 0, // 3: org.federation.FederationService.GetPosts:input_type -> org.federation.GetPostsRequest - 1, // 4: org.federation.FederationService.GetPosts:output_type -> org.federation.GetPostsResponse - 4, // [4:5] is the sub-list for method output_type - 3, // [3:4] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 3, // 0: org.federation.GetPostsResponse.posts:type_name -> org.federation.Posts + 4, // 1: org.federation.Posts.users:type_name -> org.federation.User + 6, // 2: org.federation.Posts.items:type_name -> org.federation.Posts.PostItem + 0, // 3: org.federation.Posts.item_types:type_name -> org.federation.Item.ItemType + 1, // 4: org.federation.FederationService.GetPosts:input_type -> org.federation.GetPostsRequest + 2, // 5: org.federation.FederationService.GetPosts:output_type -> org.federation.GetPostsResponse + 5, // [5:6] is the sub-list for method output_type + 4, // [4:5] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_federation_federation_proto_init() } @@ -469,6 +596,18 @@ func file_federation_federation_proto_init() { } } file_federation_federation_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_federation_federation_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Posts_PostItem); i { case 0: return &v.state @@ -486,13 +625,14 @@ func file_federation_federation_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_federation_federation_proto_rawDesc, - NumEnums: 0, - NumMessages: 5, + NumEnums: 1, + NumMessages: 6, NumExtensions: 0, NumServices: 1, }, GoTypes: file_federation_federation_proto_goTypes, DependencyIndexes: file_federation_federation_proto_depIdxs, + EnumInfos: file_federation_federation_proto_enumTypes, MessageInfos: file_federation_federation_proto_msgTypes, }.Build() File_federation_federation_proto = out.File diff --git a/_examples/13_map/federation/federation_grpc_federation.pb.go b/_examples/13_map/federation/federation_grpc_federation.pb.go index 821731dc..22ae5a26 100644 --- a/_examples/13_map/federation/federation_grpc_federation.pb.go +++ b/_examples/13_map/federation/federation_grpc_federation.pb.go @@ -33,12 +33,14 @@ type FederationService_Org_Federation_GetPostsResponseArgument struct { // Org_Federation_PostsArgument is argument for "org.federation.Posts" message. type FederationService_Org_Federation_PostsArgument struct { - Ids []string - Items []*Posts_PostItem - PostIds []string - Posts []*post.Post - Res *post.GetPostsResponse - Users []*User + Ids []string + ItemTypes []Item_ItemType + Items []*Posts_PostItem + PostIds []string + Posts []*post.Post + Res *post.GetPostsResponse + SourceItemTypes []user.Item_ItemType + Users []*User } // Org_Federation_Posts_PostItemArgument is argument for "org.federation.PostItem" message. @@ -165,6 +167,7 @@ func NewFederationService(cfg FederationServiceConfig) (*FederationService, erro celTypeHelper := grpcfed.NewCELTypeHelper("org.federation", celTypeHelperFieldMap) var celEnvOpts []grpcfed.CELEnvOption celEnvOpts = append(celEnvOpts, grpcfed.NewDefaultEnvOptions(celTypeHelper)...) + celEnvOpts = append(celEnvOpts, grpcfed.EnumAccessorOptions("org.federation.Item.ItemType", Item_ItemType_value, Item_ItemType_name)...) celEnvOpts = append(celEnvOpts, grpcfed.EnumAccessorOptions("user.Item.ItemType", user.Item_ItemType_value, user.Item_ItemType_name)...) return &FederationService{ cfg: cfg, @@ -298,11 +301,13 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re type localValueType struct { *grpcfed.LocalValue vars struct { - ids []string - items []*Posts_PostItem - posts []*post.Post - res *post.GetPostsResponse - users []*User + ids []string + item_types []Item_ItemType + items []*Posts_PostItem + posts []*post.Post + res *post.GetPostsResponse + source_item_types []user.Item_ItemType + users []*User } } value := &localValueType{LocalValue: grpcfed.NewLocalValue(ctx, s.celEnvOpts, "grpc.federation.private.PostsArgument", req)} @@ -492,17 +497,75 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re }) } + /* + def { + name: "source_item_types" + by: "[user.Item.ItemType.value('ITEM_TYPE_1'), user.Item.ItemType.value('ITEM_TYPE_2')]" + } + */ + def_source_item_types := func(ctx context.Context) error { + return grpcfed.EvalDef(ctx, value, grpcfed.Def[[]user.Item_ItemType, *localValueType]{ + Name: `source_item_types`, + Type: grpcfed.CELListType(grpcfed.CELIntType), + Setter: func(value *localValueType, v []user.Item_ItemType) error { + value.vars.source_item_types = v + return nil + }, + By: `[user.Item.ItemType.value('ITEM_TYPE_1'), user.Item.ItemType.value('ITEM_TYPE_2')]`, + ByCacheIndex: 8, + }) + } + + /* + def { + name: "item_types" + map { + iterator { + name: "typ" + src: "source_item_types" + } + } + } + */ + def_item_types := func(ctx context.Context) error { + return grpcfed.EvalDefMap(ctx, value, grpcfed.DefMap[[]user.Item_ItemType, user.Item_ItemType, *localValueType]{ + Name: `item_types`, + Type: grpcfed.CELListType(grpcfed.CELIntType), + Setter: func(value *localValueType, v []user.Item_ItemType) error { + dst, err := s.cast_repeated_User_Item_ItemType__to__repeated_Org_Federation_Item_ItemType(v) + if err != nil { + return err + } + value.vars.item_types = dst + return nil + }, + IteratorName: `typ`, + IteratorType: grpcfed.CELIntType, + IteratorSource: func(value *localValueType) []user.Item_ItemType { return value.vars.source_item_types }, + Iterator: func(ctx context.Context, value *grpcfed.MapIteratorValue) (any, error) { + return grpcfed.EvalCEL(ctx, &grpcfed.EvalCELRequest{ + Value: value, + Expr: `typ`, + OutType: reflect.TypeOf(user.Item_ItemType(0)), + CacheIndex: 9, + }) + }, + }) + } + // A tree view of message dependencies is shown below. /* res ─┐ - posts ─┐ - ids ─┐ - res ─┐ │ - posts ─┐ │ - items ─┤ - res ─┐ │ - posts ─┐ │ - users ─┤ + posts ─┐ + ids ─┐ + source_item_types ─┐ │ + item_types ─┤ + res ─┐ │ + posts ─┐ │ + items ─┤ + res ─┐ │ + posts ─┐ │ + users ─┤ */ eg, ctx1 := grpcfed.ErrorGroupWithContext(ctx) @@ -522,6 +585,18 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re return nil, nil }) + grpcfed.GoWithRecover(eg, func() (any, error) { + if err := def_source_item_types(ctx1); err != nil { + grpcfed.RecordErrorToSpan(ctx1, err) + return nil, err + } + if err := def_item_types(ctx1); err != nil { + grpcfed.RecordErrorToSpan(ctx1, err) + return nil, err + } + return nil, nil + }) + grpcfed.GoWithRecover(eg, func() (any, error) { if err := def_res(ctx1); err != nil { grpcfed.RecordErrorToSpan(ctx1, err) @@ -560,9 +635,11 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re // assign named parameters to message arguments to pass to the custom resolver. req.Ids = value.vars.ids + req.ItemTypes = value.vars.item_types req.Items = value.vars.items req.Posts = value.vars.posts req.Res = value.vars.res + req.SourceItemTypes = value.vars.source_item_types req.Users = value.vars.users // create a message value to be returned. @@ -573,7 +650,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]string]{ Value: value, Expr: `ids`, - CacheIndex: 8, + CacheIndex: 10, Setter: func(v []string) error { ret.Ids = v return nil @@ -586,7 +663,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]string]{ Value: value, Expr: `posts.map(post, post.title)`, - CacheIndex: 9, + CacheIndex: 11, Setter: func(v []string) error { ret.Titles = v return nil @@ -599,7 +676,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]string]{ Value: value, Expr: `posts.map(post, post.content)`, - CacheIndex: 10, + CacheIndex: 12, Setter: func(v []string) error { ret.Contents = v return nil @@ -612,7 +689,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]*User]{ Value: value, Expr: `users`, - CacheIndex: 11, + CacheIndex: 13, Setter: func(v []*User) error { ret.Users = v return nil @@ -625,7 +702,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]*Posts_PostItem]{ Value: value, Expr: `items`, - CacheIndex: 12, + CacheIndex: 14, Setter: func(v []*Posts_PostItem) error { ret.Items = v return nil @@ -634,6 +711,19 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re grpcfed.RecordErrorToSpan(ctx, err) return nil, err } + // (grpc.federation.field).by = "item_types" + if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]Item_ItemType]{ + Value: value, + Expr: `item_types`, + CacheIndex: 15, + Setter: func(v []Item_ItemType) error { + ret.ItemTypes = v + return nil + }, + }); err != nil { + grpcfed.RecordErrorToSpan(ctx, err) + return nil, err + } grpcfed.Logger(ctx).DebugContext(ctx, "resolved org.federation.Posts", slog.Any("org.federation.Posts", s.logvalue_Org_Federation_Posts(ret))) return ret, nil @@ -661,7 +751,7 @@ func (s *FederationService) resolve_Org_Federation_Posts_PostItem(ctx context.Co if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `'item_' + $.id`, - CacheIndex: 13, + CacheIndex: 16, Setter: func(v string) error { ret.Name = v return nil @@ -713,7 +803,7 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `$.user_id`, - CacheIndex: 14, + CacheIndex: 17, Setter: func(v string) error { args.Id = v return nil @@ -749,7 +839,7 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req return nil }, By: `res.user`, - ByCacheIndex: 15, + ByCacheIndex: 18, }) } @@ -777,6 +867,35 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req return ret, nil } +// cast_User_Item_ItemType__to__Org_Federation_Item_ItemType cast from "user.Item.ItemType" to "org.federation.Item.ItemType". +func (s *FederationService) cast_User_Item_ItemType__to__Org_Federation_Item_ItemType(from user.Item_ItemType) (Item_ItemType, error) { + switch from { + case user.Item_ITEM_TYPE_UNSPECIFIED: + return Item_ITEM_TYPE_UNSPECIFIED, nil + case user.Item_ITEM_TYPE_1: + return Item_ITEM_TYPE_1, nil + case user.Item_ITEM_TYPE_2: + return Item_ITEM_TYPE_2, nil + case user.Item_ITEM_TYPE_3: + return Item_ITEM_TYPE_3, nil + default: + return 0, nil + } +} + +// cast_repeated_User_Item_ItemType__to__repeated_Org_Federation_Item_ItemType cast from "repeated user.Item.ItemType" to "repeated org.federation.Item.ItemType". +func (s *FederationService) cast_repeated_User_Item_ItemType__to__repeated_Org_Federation_Item_ItemType(from []user.Item_ItemType) ([]Item_ItemType, error) { + ret := make([]Item_ItemType, 0, len(from)) + for _, v := range from { + casted, err := s.cast_User_Item_ItemType__to__Org_Federation_Item_ItemType(v) + if err != nil { + return nil, err + } + ret = append(ret, casted) + } + return ret, nil +} + func (s *FederationService) logvalue_Org_Federation_GetPostsResponse(v *GetPostsResponse) slog.Value { if v == nil { return slog.GroupValue() @@ -795,6 +914,20 @@ func (s *FederationService) logvalue_Org_Federation_GetPostsResponseArgument(v * ) } +func (s *FederationService) logvalue_Org_Federation_Item_ItemType(v Item_ItemType) slog.Value { + switch v { + case Item_ITEM_TYPE_UNSPECIFIED: + return slog.StringValue("ITEM_TYPE_UNSPECIFIED") + case Item_ITEM_TYPE_1: + return slog.StringValue("ITEM_TYPE_1") + case Item_ITEM_TYPE_2: + return slog.StringValue("ITEM_TYPE_2") + case Item_ITEM_TYPE_3: + return slog.StringValue("ITEM_TYPE_3") + } + return slog.StringValue("") +} + func (s *FederationService) logvalue_Org_Federation_Posts(v *Posts) slog.Value { if v == nil { return slog.GroupValue() @@ -805,6 +938,7 @@ func (s *FederationService) logvalue_Org_Federation_Posts(v *Posts) slog.Value { slog.Any("contents", v.GetContents()), slog.Any("users", s.logvalue_repeated_Org_Federation_User(v.GetUsers())), slog.Any("items", s.logvalue_repeated_Org_Federation_Posts_PostItem(v.GetItems())), + slog.Any("item_types", s.logvalue_repeated_Org_Federation_Item_ItemType(v.GetItemTypes())), ) } @@ -890,6 +1024,17 @@ func (s *FederationService) logvalue_User_GetUsersRequest(v *user.GetUsersReques ) } +func (s *FederationService) logvalue_repeated_Org_Federation_Item_ItemType(v []Item_ItemType) slog.Value { + attrs := make([]slog.Attr, 0, len(v)) + for idx, vv := range v { + attrs = append(attrs, slog.Attr{ + Key: grpcfed.ToLogAttrKey(idx), + Value: s.logvalue_Org_Federation_Item_ItemType(vv), + }) + } + return slog.GroupValue(attrs...) +} + func (s *FederationService) logvalue_repeated_Org_Federation_Posts_PostItem(v []*Posts_PostItem) slog.Value { attrs := make([]slog.Attr, 0, len(v)) for idx, vv := range v { diff --git a/_examples/13_map/main_test.go b/_examples/13_map/main_test.go index 6b24c89a..bf12fbf1 100644 --- a/_examples/13_map/main_test.go +++ b/_examples/13_map/main_test.go @@ -164,6 +164,10 @@ func TestFederation(t *testing.T) { {Name: "item_x"}, {Name: "item_y"}, }, + ItemTypes: []federation.Item_ItemType{ + federation.Item_ITEM_TYPE_1, + federation.Item_ITEM_TYPE_2, + }, }, }, cmpopts.IgnoreUnexported( federation.GetPostsResponse{}, diff --git a/_examples/13_map/proto/federation/federation.proto b/_examples/13_map/proto/federation/federation.proto index dfee8fac..f00afc8d 100644 --- a/_examples/13_map/proto/federation/federation.proto +++ b/_examples/13_map/proto/federation/federation.proto @@ -79,6 +79,23 @@ message Posts { args { name: "id" by: "iter.id" } } } + }, + { + name: "source_item_types" + by: "[user.Item.ItemType.value('ITEM_TYPE_1'), user.Item.ItemType.value('ITEM_TYPE_2')]" + }, + { + name: "item_types" + map { + iterator { + name: "typ" + src: "source_item_types" + } + enum { + name: "Item.ItemType" + by: "typ" + } + } } ] }; @@ -92,6 +109,7 @@ message Posts { repeated string contents = 3 [(grpc.federation.field).by = "posts.map(post, post.content)"]; repeated User users = 4 [(grpc.federation.field).by = "users"]; repeated PostItem items = 5 [(grpc.federation.field).by = "items"]; + repeated Item.ItemType item_types = 6 [(grpc.federation.field).by = "item_types"]; } message User { @@ -108,3 +126,16 @@ message User { string id = 1; string name = 2; } + +message Item { + option (grpc.federation.message).alias = "user.Item"; + + enum ItemType { + option (grpc.federation.enum).alias = "user.Item.ItemType"; + + ITEM_TYPE_UNSPECIFIED = 0; + ITEM_TYPE_1 = 1; + ITEM_TYPE_2 = 2; + ITEM_TYPE_3 = 3; + } +} \ No newline at end of file diff --git a/_examples/14_condition/grpc/federation/federation.pb.go b/_examples/14_condition/grpc/federation/federation.pb.go index ecfdd20c..5cb2d17a 100644 --- a/_examples/14_condition/grpc/federation/federation.pb.go +++ b/_examples/14_condition/grpc/federation/federation.pb.go @@ -151,7 +151,7 @@ func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use GRPCError_LogLevel.Descriptor instead. func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17, 0} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18, 0} } type FileRule struct { @@ -938,6 +938,7 @@ type VariableDefinition struct { // *VariableDefinition_Message // *VariableDefinition_Call // *VariableDefinition_Validation + // *VariableDefinition_Enum Expr isVariableDefinition_Expr `protobuf_oneof:"expr"` } @@ -1036,6 +1037,13 @@ func (x *VariableDefinition) GetValidation() *ValidationExpr { return nil } +func (x *VariableDefinition) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableDefinition_Enum); ok { + return x.Enum + } + return nil +} + type isVariableDefinition_Expr interface { isVariableDefinition_Expr() } @@ -1065,6 +1073,11 @@ type VariableDefinition_Validation struct { Validation *ValidationExpr `protobuf:"bytes,15,opt,name=validation,proto3,oneof"` } +type VariableDefinition_Enum struct { + // enum gets with cel value. + Enum *EnumExpr `protobuf:"bytes,16,opt,name=enum,proto3,oneof"` +} + func (*VariableDefinition_By) isVariableDefinition_Expr() {} func (*VariableDefinition_Map) isVariableDefinition_Expr() {} @@ -1075,6 +1088,8 @@ func (*VariableDefinition_Call) isVariableDefinition_Expr() {} func (*VariableDefinition_Validation) isVariableDefinition_Expr() {} +func (*VariableDefinition_Enum) isVariableDefinition_Expr() {} + // MapExpr apply map operation for the specified repeated type. type MapExpr struct { state protoimpl.MessageState @@ -1090,6 +1105,7 @@ type MapExpr struct { // // *MapExpr_By // *MapExpr_Message + // *MapExpr_Enum Expr isMapExpr_Expr `protobuf_oneof:"expr"` } @@ -1153,6 +1169,13 @@ func (x *MapExpr) GetMessage() *MessageExpr { return nil } +func (x *MapExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapExpr_Expr interface { isMapExpr_Expr() } @@ -1169,10 +1192,18 @@ type MapExpr_Message struct { Message *MessageExpr `protobuf:"bytes,12,opt,name=message,proto3,oneof"` } +type MapExpr_Enum struct { + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + Enum *EnumExpr `protobuf:"bytes,13,opt,name=enum,proto3,oneof"` +} + func (*MapExpr_By) isMapExpr_Expr() {} func (*MapExpr_Message) isMapExpr_Expr() {} +func (*MapExpr_Enum) isMapExpr_Expr() {} + // Iterator represents iterator variable. type Iterator struct { state protoimpl.MessageState @@ -1291,6 +1322,65 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +// EnumExpr represents dependent enum. +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // `by` evaluates with CEL. + By string `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} +} + +func (x *EnumExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnumExpr) GetBy() string { + if x != nil { + return x.By + } + return "" +} + // CallExpr represents how to call gRPC method. type CallExpr struct { state protoimpl.MessageState @@ -1316,7 +1406,7 @@ type CallExpr struct { func (x *CallExpr) Reset() { *x = CallExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1419,7 @@ func (x *CallExpr) String() string { func (*CallExpr) ProtoMessage() {} func (x *CallExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1432,7 @@ func (x *CallExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use CallExpr.ProtoReflect.Descriptor instead. func (*CallExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} } func (x *CallExpr) GetMethod() string { @@ -1418,7 +1508,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1521,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1534,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} } func (x *GRPCError) GetDef() []*VariableDefinition { @@ -1541,7 +1631,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1554,7 +1644,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1567,7 +1657,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} } func (x *GRPCErrorDetail) GetIf() string { @@ -1685,7 +1775,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1788,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1801,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} } func (x *ValidationExpr) GetName() string { @@ -1748,7 +1838,7 @@ type RetryPolicy struct { func (x *RetryPolicy) Reset() { *x = RetryPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1851,7 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1864,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} } func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy { @@ -1841,7 +1931,7 @@ type RetryPolicyConstant struct { func (x *RetryPolicyConstant) Reset() { *x = RetryPolicyConstant{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1944,7 @@ func (x *RetryPolicyConstant) String() string { func (*RetryPolicyConstant) ProtoMessage() {} func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1957,7 @@ func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyConstant.ProtoReflect.Descriptor instead. func (*RetryPolicyConstant) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} } func (x *RetryPolicyConstant) GetInterval() string { @@ -1905,7 +1995,7 @@ type RetryPolicyExponential struct { func (x *RetryPolicyExponential) Reset() { *x = RetryPolicyExponential{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2008,7 @@ func (x *RetryPolicyExponential) String() string { func (*RetryPolicyExponential) ProtoMessage() {} func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2021,7 @@ func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyExponential.ProtoReflect.Descriptor instead. func (*RetryPolicyExponential) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} } func (x *RetryPolicyExponential) GetInitialInterval() string { @@ -1992,7 +2082,7 @@ type MethodRequest struct { func (x *MethodRequest) Reset() { *x = MethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2005,7 +2095,7 @@ func (x *MethodRequest) String() string { func (*MethodRequest) ProtoMessage() {} func (x *MethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2018,7 +2108,7 @@ func (x *MethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodRequest.ProtoReflect.Descriptor instead. func (*MethodRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} } func (x *MethodRequest) GetField() string { @@ -2062,7 +2152,7 @@ type MethodResponse struct { func (x *MethodResponse) Reset() { *x = MethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2165,7 @@ func (x *MethodResponse) String() string { func (*MethodResponse) ProtoMessage() {} func (x *MethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2178,7 @@ func (x *MethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodResponse.ProtoReflect.Descriptor instead. func (*MethodResponse) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} } func (x *MethodResponse) GetName() string { @@ -2134,7 +2224,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2237,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,7 +2250,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} } func (x *Argument) GetName() string { @@ -2210,7 +2300,7 @@ type FieldRule struct { func (x *FieldRule) Reset() { *x = FieldRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2313,7 @@ func (x *FieldRule) String() string { func (*FieldRule) ProtoMessage() {} func (x *FieldRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2326,7 @@ func (x *FieldRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldRule.ProtoReflect.Descriptor instead. func (*FieldRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} } func (x *FieldRule) GetCustomResolver() bool { @@ -2299,7 +2389,7 @@ type FieldOneof struct { func (x *FieldOneof) Reset() { *x = FieldOneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2402,7 @@ func (x *FieldOneof) String() string { func (*FieldOneof) ProtoMessage() {} func (x *FieldOneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2415,7 @@ func (x *FieldOneof) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldOneof.ProtoReflect.Descriptor instead. func (*FieldOneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} } func (m *FieldOneof) GetCond() isFieldOneof_Cond { @@ -2397,7 +2487,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2500,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2513,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} } func (x *CELPlugin) GetExport() []*CELPluginExport { @@ -2455,7 +2545,7 @@ type CELPluginExport struct { func (x *CELPluginExport) Reset() { *x = CELPluginExport{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2558,7 @@ func (x *CELPluginExport) String() string { func (*CELPluginExport) ProtoMessage() {} func (x *CELPluginExport) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2571,7 @@ func (x *CELPluginExport) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPluginExport.ProtoReflect.Descriptor instead. func (*CELPluginExport) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} } func (x *CELPluginExport) GetName() string { @@ -2539,7 +2629,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2642,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2655,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} } func (x *CELFunction) GetName() string { @@ -2614,7 +2704,7 @@ type CELReceiverType struct { func (x *CELReceiverType) Reset() { *x = CELReceiverType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2717,7 @@ func (x *CELReceiverType) String() string { func (*CELReceiverType) ProtoMessage() {} func (x *CELReceiverType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2730,7 @@ func (x *CELReceiverType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELReceiverType.ProtoReflect.Descriptor instead. func (*CELReceiverType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} } func (x *CELReceiverType) GetName() string { @@ -2682,7 +2772,7 @@ type CELFunctionArgument struct { func (x *CELFunctionArgument) Reset() { *x = CELFunctionArgument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2785,7 @@ func (x *CELFunctionArgument) String() string { func (*CELFunctionArgument) ProtoMessage() {} func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2798,7 @@ func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunctionArgument.ProtoReflect.Descriptor instead. func (*CELFunctionArgument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} } func (x *CELFunctionArgument) GetName() string { @@ -2751,7 +2841,7 @@ type CELType struct { func (x *CELType) Reset() { *x = CELType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2854,7 @@ func (x *CELType) String() string { func (*CELType) ProtoMessage() {} func (x *CELType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2867,7 @@ func (x *CELType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELType.ProtoReflect.Descriptor instead. func (*CELType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} } func (m *CELType) GetType() isCELType_Type { @@ -2876,7 +2966,7 @@ type CELMapType struct { func (x *CELMapType) Reset() { *x = CELMapType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +2979,7 @@ func (x *CELMapType) String() string { func (*CELMapType) ProtoMessage() {} func (x *CELMapType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +2992,7 @@ func (x *CELMapType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELMapType.ProtoReflect.Descriptor instead. func (*CELMapType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} } func (x *CELMapType) GetKey() *CELType { @@ -2937,7 +3027,7 @@ type CELVariable struct { func (x *CELVariable) Reset() { *x = CELVariable{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3040,7 @@ func (x *CELVariable) String() string { func (*CELVariable) ProtoMessage() {} func (x *CELVariable) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3053,7 @@ func (x *CELVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use CELVariable.ProtoReflect.Descriptor instead. func (*CELVariable) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{36} } func (x *CELVariable) GetName() string { @@ -3194,7 +3284,7 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x12, + 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xa7, 0x03, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, @@ -3215,347 +3305,357 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0x50, 0x0a, - 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, + 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, + 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x22, 0x86, 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x22, 0x86, - 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x03, - 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, 0x03, 0x64, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, - 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, - 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, - 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, - 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, - 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, 0x08, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, - 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x69, 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, + 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, + 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, + 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, - 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x38, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, + 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, + 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x12, 0x2f, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x43, 0x45, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, + 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, 0x4c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x1a, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, - 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, 0x4d, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, + 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, + 0x4c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, + 0x1a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, + 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, - 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, - 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x54, - 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x3a, 0x54, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, 0xa3, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x50, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x50, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x3a, 0x61, - 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, - 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, - 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x3a, 0x61, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, + 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, + 0x02, 0x03, 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, + 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -3571,7 +3671,7 @@ func file_grpc_federation_federation_proto_rawDescGZIP() []byte { } var file_grpc_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_grpc_federation_federation_proto_goTypes = []interface{}{ (TypeKind)(0), // 0: grpc.federation.TypeKind (GRPCError_LogLevel)(0), // 1: grpc.federation.GRPCError.LogLevel @@ -3591,48 +3691,49 @@ var file_grpc_federation_federation_proto_goTypes = []interface{}{ (*MapExpr)(nil), // 15: grpc.federation.MapExpr (*Iterator)(nil), // 16: grpc.federation.Iterator (*MessageExpr)(nil), // 17: grpc.federation.MessageExpr - (*CallExpr)(nil), // 18: grpc.federation.CallExpr - (*GRPCError)(nil), // 19: grpc.federation.GRPCError - (*GRPCErrorDetail)(nil), // 20: grpc.federation.GRPCErrorDetail - (*ValidationExpr)(nil), // 21: grpc.federation.ValidationExpr - (*RetryPolicy)(nil), // 22: grpc.federation.RetryPolicy - (*RetryPolicyConstant)(nil), // 23: grpc.federation.RetryPolicyConstant - (*RetryPolicyExponential)(nil), // 24: grpc.federation.RetryPolicyExponential - (*MethodRequest)(nil), // 25: grpc.federation.MethodRequest - (*MethodResponse)(nil), // 26: grpc.federation.MethodResponse - (*Argument)(nil), // 27: grpc.federation.Argument - (*FieldRule)(nil), // 28: grpc.federation.FieldRule - (*FieldOneof)(nil), // 29: grpc.federation.FieldOneof - (*CELPlugin)(nil), // 30: grpc.federation.CELPlugin - (*CELPluginExport)(nil), // 31: grpc.federation.CELPluginExport - (*CELFunction)(nil), // 32: grpc.federation.CELFunction - (*CELReceiverType)(nil), // 33: grpc.federation.CELReceiverType - (*CELFunctionArgument)(nil), // 34: grpc.federation.CELFunctionArgument - (*CELType)(nil), // 35: grpc.federation.CELType - (*CELMapType)(nil), // 36: grpc.federation.CELMapType - (*CELVariable)(nil), // 37: grpc.federation.CELVariable - (code.Code)(0), // 38: google.rpc.Code - (*errdetails.ErrorInfo)(nil), // 39: google.rpc.ErrorInfo - (*errdetails.RetryInfo)(nil), // 40: google.rpc.RetryInfo - (*errdetails.DebugInfo)(nil), // 41: google.rpc.DebugInfo - (*errdetails.QuotaFailure)(nil), // 42: google.rpc.QuotaFailure - (*errdetails.PreconditionFailure)(nil), // 43: google.rpc.PreconditionFailure - (*errdetails.BadRequest)(nil), // 44: google.rpc.BadRequest - (*errdetails.RequestInfo)(nil), // 45: google.rpc.RequestInfo - (*errdetails.ResourceInfo)(nil), // 46: google.rpc.ResourceInfo - (*errdetails.Help)(nil), // 47: google.rpc.Help - (*errdetails.LocalizedMessage)(nil), // 48: google.rpc.LocalizedMessage - (*descriptorpb.FileOptions)(nil), // 49: google.protobuf.FileOptions - (*descriptorpb.ServiceOptions)(nil), // 50: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 51: google.protobuf.MethodOptions - (*descriptorpb.MessageOptions)(nil), // 52: google.protobuf.MessageOptions - (*descriptorpb.FieldOptions)(nil), // 53: google.protobuf.FieldOptions - (*descriptorpb.EnumOptions)(nil), // 54: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 55: google.protobuf.EnumValueOptions - (*descriptorpb.OneofOptions)(nil), // 56: google.protobuf.OneofOptions + (*EnumExpr)(nil), // 18: grpc.federation.EnumExpr + (*CallExpr)(nil), // 19: grpc.federation.CallExpr + (*GRPCError)(nil), // 20: grpc.federation.GRPCError + (*GRPCErrorDetail)(nil), // 21: grpc.federation.GRPCErrorDetail + (*ValidationExpr)(nil), // 22: grpc.federation.ValidationExpr + (*RetryPolicy)(nil), // 23: grpc.federation.RetryPolicy + (*RetryPolicyConstant)(nil), // 24: grpc.federation.RetryPolicyConstant + (*RetryPolicyExponential)(nil), // 25: grpc.federation.RetryPolicyExponential + (*MethodRequest)(nil), // 26: grpc.federation.MethodRequest + (*MethodResponse)(nil), // 27: grpc.federation.MethodResponse + (*Argument)(nil), // 28: grpc.federation.Argument + (*FieldRule)(nil), // 29: grpc.federation.FieldRule + (*FieldOneof)(nil), // 30: grpc.federation.FieldOneof + (*CELPlugin)(nil), // 31: grpc.federation.CELPlugin + (*CELPluginExport)(nil), // 32: grpc.federation.CELPluginExport + (*CELFunction)(nil), // 33: grpc.federation.CELFunction + (*CELReceiverType)(nil), // 34: grpc.federation.CELReceiverType + (*CELFunctionArgument)(nil), // 35: grpc.federation.CELFunctionArgument + (*CELType)(nil), // 36: grpc.federation.CELType + (*CELMapType)(nil), // 37: grpc.federation.CELMapType + (*CELVariable)(nil), // 38: grpc.federation.CELVariable + (code.Code)(0), // 39: google.rpc.Code + (*errdetails.ErrorInfo)(nil), // 40: google.rpc.ErrorInfo + (*errdetails.RetryInfo)(nil), // 41: google.rpc.RetryInfo + (*errdetails.DebugInfo)(nil), // 42: google.rpc.DebugInfo + (*errdetails.QuotaFailure)(nil), // 43: google.rpc.QuotaFailure + (*errdetails.PreconditionFailure)(nil), // 44: google.rpc.PreconditionFailure + (*errdetails.BadRequest)(nil), // 45: google.rpc.BadRequest + (*errdetails.RequestInfo)(nil), // 46: google.rpc.RequestInfo + (*errdetails.ResourceInfo)(nil), // 47: google.rpc.ResourceInfo + (*errdetails.Help)(nil), // 48: google.rpc.Help + (*errdetails.LocalizedMessage)(nil), // 49: google.rpc.LocalizedMessage + (*descriptorpb.FileOptions)(nil), // 50: google.protobuf.FileOptions + (*descriptorpb.ServiceOptions)(nil), // 51: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 52: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 53: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 54: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 55: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 56: google.protobuf.EnumValueOptions + (*descriptorpb.OneofOptions)(nil), // 57: google.protobuf.OneofOptions } var file_grpc_federation_federation_proto_depIdxs = []int32{ - 30, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin + 31, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin 7, // 1: grpc.federation.ServiceRule.env:type_name -> grpc.federation.Env 8, // 2: grpc.federation.Env.var:type_name -> grpc.federation.EnvVar 9, // 3: grpc.federation.EnvVar.type:type_name -> grpc.federation.EnvType @@ -3645,71 +3746,73 @@ var file_grpc_federation_federation_proto_depIdxs = []int32{ 14, // 10: grpc.federation.MessageRule.def:type_name -> grpc.federation.VariableDefinition 15, // 11: grpc.federation.VariableDefinition.map:type_name -> grpc.federation.MapExpr 17, // 12: grpc.federation.VariableDefinition.message:type_name -> grpc.federation.MessageExpr - 18, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr - 21, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr - 16, // 15: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator - 17, // 16: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr - 27, // 17: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument - 25, // 18: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest - 22, // 19: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy - 19, // 20: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError - 14, // 21: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition - 38, // 22: grpc.federation.GRPCError.code:type_name -> google.rpc.Code - 20, // 23: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail - 1, // 24: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel - 14, // 25: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition - 17, // 26: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr - 39, // 27: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo - 40, // 28: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo - 41, // 29: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo - 42, // 30: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure - 43, // 31: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure - 44, // 32: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest - 45, // 33: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo - 46, // 34: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo - 47, // 35: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help - 48, // 36: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage - 19, // 37: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError - 23, // 38: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant - 24, // 39: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential - 29, // 40: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof - 11, // 41: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption - 14, // 42: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition - 31, // 43: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport - 33, // 44: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType - 32, // 45: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction - 37, // 46: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable - 34, // 47: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument - 35, // 48: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType - 32, // 49: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction - 35, // 50: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType - 0, // 51: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind - 35, // 52: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType - 36, // 53: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType - 35, // 54: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType - 35, // 55: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType - 35, // 56: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType - 49, // 57: grpc.federation.file:extendee -> google.protobuf.FileOptions - 50, // 58: grpc.federation.service:extendee -> google.protobuf.ServiceOptions - 51, // 59: grpc.federation.method:extendee -> google.protobuf.MethodOptions - 52, // 60: grpc.federation.message:extendee -> google.protobuf.MessageOptions - 53, // 61: grpc.federation.field:extendee -> google.protobuf.FieldOptions - 54, // 62: grpc.federation.enum:extendee -> google.protobuf.EnumOptions - 55, // 63: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions - 56, // 64: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions - 2, // 65: grpc.federation.file:type_name -> grpc.federation.FileRule - 6, // 66: grpc.federation.service:type_name -> grpc.federation.ServiceRule - 12, // 67: grpc.federation.method:type_name -> grpc.federation.MethodRule - 13, // 68: grpc.federation.message:type_name -> grpc.federation.MessageRule - 28, // 69: grpc.federation.field:type_name -> grpc.federation.FieldRule - 3, // 70: grpc.federation.enum:type_name -> grpc.federation.EnumRule - 4, // 71: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule - 5, // 72: grpc.federation.oneof:type_name -> grpc.federation.OneofRule - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 65, // [65:73] is the sub-list for extension type_name - 57, // [57:65] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 19, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr + 22, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr + 18, // 15: grpc.federation.VariableDefinition.enum:type_name -> grpc.federation.EnumExpr + 16, // 16: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator + 17, // 17: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr + 18, // 18: grpc.federation.MapExpr.enum:type_name -> grpc.federation.EnumExpr + 28, // 19: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument + 26, // 20: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest + 23, // 21: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy + 20, // 22: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError + 14, // 23: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition + 39, // 24: grpc.federation.GRPCError.code:type_name -> google.rpc.Code + 21, // 25: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail + 1, // 26: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel + 14, // 27: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition + 17, // 28: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr + 40, // 29: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo + 41, // 30: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo + 42, // 31: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo + 43, // 32: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure + 44, // 33: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure + 45, // 34: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest + 46, // 35: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo + 47, // 36: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo + 48, // 37: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help + 49, // 38: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage + 20, // 39: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError + 24, // 40: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant + 25, // 41: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential + 30, // 42: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof + 11, // 43: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption + 14, // 44: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition + 32, // 45: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport + 34, // 46: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType + 33, // 47: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction + 38, // 48: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable + 35, // 49: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument + 36, // 50: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType + 33, // 51: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction + 36, // 52: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType + 0, // 53: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind + 36, // 54: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType + 37, // 55: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType + 36, // 56: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType + 36, // 57: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType + 36, // 58: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType + 50, // 59: grpc.federation.file:extendee -> google.protobuf.FileOptions + 51, // 60: grpc.federation.service:extendee -> google.protobuf.ServiceOptions + 52, // 61: grpc.federation.method:extendee -> google.protobuf.MethodOptions + 53, // 62: grpc.federation.message:extendee -> google.protobuf.MessageOptions + 54, // 63: grpc.federation.field:extendee -> google.protobuf.FieldOptions + 55, // 64: grpc.federation.enum:extendee -> google.protobuf.EnumOptions + 56, // 65: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions + 57, // 66: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions + 2, // 67: grpc.federation.file:type_name -> grpc.federation.FileRule + 6, // 68: grpc.federation.service:type_name -> grpc.federation.ServiceRule + 12, // 69: grpc.federation.method:type_name -> grpc.federation.MethodRule + 13, // 70: grpc.federation.message:type_name -> grpc.federation.MessageRule + 29, // 71: grpc.federation.field:type_name -> grpc.federation.FieldRule + 3, // 72: grpc.federation.enum:type_name -> grpc.federation.EnumRule + 4, // 73: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule + 5, // 74: grpc.federation.oneof:type_name -> grpc.federation.OneofRule + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 67, // [67:75] is the sub-list for extension type_name + 59, // [59:67] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_grpc_federation_federation_proto_init() } @@ -3911,7 +4014,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallExpr); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -3923,7 +4026,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*CallExpr); i { case 0: return &v.state case 1: @@ -3935,7 +4038,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -3947,7 +4050,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -3959,7 +4062,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -3971,7 +4074,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyConstant); i { + switch v := v.(*RetryPolicy); i { case 0: return &v.state case 1: @@ -3983,7 +4086,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyExponential); i { + switch v := v.(*RetryPolicyConstant); i { case 0: return &v.state case 1: @@ -3995,7 +4098,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodRequest); i { + switch v := v.(*RetryPolicyExponential); i { case 0: return &v.state case 1: @@ -4007,7 +4110,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodResponse); i { + switch v := v.(*MethodRequest); i { case 0: return &v.state case 1: @@ -4019,7 +4122,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*MethodResponse); i { case 0: return &v.state case 1: @@ -4031,7 +4134,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldRule); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -4043,7 +4146,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOneof); i { + switch v := v.(*FieldRule); i { case 0: return &v.state case 1: @@ -4055,7 +4158,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*FieldOneof); i { case 0: return &v.state case 1: @@ -4067,7 +4170,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPluginExport); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -4079,7 +4182,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPluginExport); i { case 0: return &v.state case 1: @@ -4091,7 +4194,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELReceiverType); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -4103,7 +4206,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunctionArgument); i { + switch v := v.(*CELReceiverType); i { case 0: return &v.state case 1: @@ -4115,7 +4218,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELType); i { + switch v := v.(*CELFunctionArgument); i { case 0: return &v.state case 1: @@ -4127,7 +4230,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELMapType); i { + switch v := v.(*CELType); i { case 0: return &v.state case 1: @@ -4139,6 +4242,18 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CELMapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_federation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CELVariable); i { case 0: return &v.state @@ -4167,29 +4282,31 @@ func file_grpc_federation_federation_proto_init() { (*VariableDefinition_Message)(nil), (*VariableDefinition_Call)(nil), (*VariableDefinition_Validation)(nil), + (*VariableDefinition_Enum)(nil), } file_grpc_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{ (*MapExpr_By)(nil), (*MapExpr_Message)(nil), + (*MapExpr_Enum)(nil), } - file_grpc_federation_federation_proto_msgTypes[16].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[19].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[22].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[23].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[24].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[25].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[28].OneofWrappers = []interface{}{ (*FieldOneof_If)(nil), (*FieldOneof_Default)(nil), } - file_grpc_federation_federation_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[34].OneofWrappers = []interface{}{ (*CELType_Kind)(nil), (*CELType_Repeated)(nil), (*CELType_Map)(nil), @@ -4202,7 +4319,7 @@ func file_grpc_federation_federation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_federation_proto_rawDesc, NumEnums: 2, - NumMessages: 36, + NumMessages: 37, NumExtensions: 8, NumServices: 0, }, diff --git a/_examples/17_error_handler/grpc/federation/federation.pb.go b/_examples/17_error_handler/grpc/federation/federation.pb.go index ecfdd20c..5cb2d17a 100644 --- a/_examples/17_error_handler/grpc/federation/federation.pb.go +++ b/_examples/17_error_handler/grpc/federation/federation.pb.go @@ -151,7 +151,7 @@ func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use GRPCError_LogLevel.Descriptor instead. func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17, 0} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18, 0} } type FileRule struct { @@ -938,6 +938,7 @@ type VariableDefinition struct { // *VariableDefinition_Message // *VariableDefinition_Call // *VariableDefinition_Validation + // *VariableDefinition_Enum Expr isVariableDefinition_Expr `protobuf_oneof:"expr"` } @@ -1036,6 +1037,13 @@ func (x *VariableDefinition) GetValidation() *ValidationExpr { return nil } +func (x *VariableDefinition) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableDefinition_Enum); ok { + return x.Enum + } + return nil +} + type isVariableDefinition_Expr interface { isVariableDefinition_Expr() } @@ -1065,6 +1073,11 @@ type VariableDefinition_Validation struct { Validation *ValidationExpr `protobuf:"bytes,15,opt,name=validation,proto3,oneof"` } +type VariableDefinition_Enum struct { + // enum gets with cel value. + Enum *EnumExpr `protobuf:"bytes,16,opt,name=enum,proto3,oneof"` +} + func (*VariableDefinition_By) isVariableDefinition_Expr() {} func (*VariableDefinition_Map) isVariableDefinition_Expr() {} @@ -1075,6 +1088,8 @@ func (*VariableDefinition_Call) isVariableDefinition_Expr() {} func (*VariableDefinition_Validation) isVariableDefinition_Expr() {} +func (*VariableDefinition_Enum) isVariableDefinition_Expr() {} + // MapExpr apply map operation for the specified repeated type. type MapExpr struct { state protoimpl.MessageState @@ -1090,6 +1105,7 @@ type MapExpr struct { // // *MapExpr_By // *MapExpr_Message + // *MapExpr_Enum Expr isMapExpr_Expr `protobuf_oneof:"expr"` } @@ -1153,6 +1169,13 @@ func (x *MapExpr) GetMessage() *MessageExpr { return nil } +func (x *MapExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapExpr_Expr interface { isMapExpr_Expr() } @@ -1169,10 +1192,18 @@ type MapExpr_Message struct { Message *MessageExpr `protobuf:"bytes,12,opt,name=message,proto3,oneof"` } +type MapExpr_Enum struct { + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + Enum *EnumExpr `protobuf:"bytes,13,opt,name=enum,proto3,oneof"` +} + func (*MapExpr_By) isMapExpr_Expr() {} func (*MapExpr_Message) isMapExpr_Expr() {} +func (*MapExpr_Enum) isMapExpr_Expr() {} + // Iterator represents iterator variable. type Iterator struct { state protoimpl.MessageState @@ -1291,6 +1322,65 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +// EnumExpr represents dependent enum. +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // `by` evaluates with CEL. + By string `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} +} + +func (x *EnumExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnumExpr) GetBy() string { + if x != nil { + return x.By + } + return "" +} + // CallExpr represents how to call gRPC method. type CallExpr struct { state protoimpl.MessageState @@ -1316,7 +1406,7 @@ type CallExpr struct { func (x *CallExpr) Reset() { *x = CallExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1419,7 @@ func (x *CallExpr) String() string { func (*CallExpr) ProtoMessage() {} func (x *CallExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1432,7 @@ func (x *CallExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use CallExpr.ProtoReflect.Descriptor instead. func (*CallExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} } func (x *CallExpr) GetMethod() string { @@ -1418,7 +1508,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1521,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1534,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} } func (x *GRPCError) GetDef() []*VariableDefinition { @@ -1541,7 +1631,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1554,7 +1644,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1567,7 +1657,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} } func (x *GRPCErrorDetail) GetIf() string { @@ -1685,7 +1775,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1788,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1801,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} } func (x *ValidationExpr) GetName() string { @@ -1748,7 +1838,7 @@ type RetryPolicy struct { func (x *RetryPolicy) Reset() { *x = RetryPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1851,7 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1864,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} } func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy { @@ -1841,7 +1931,7 @@ type RetryPolicyConstant struct { func (x *RetryPolicyConstant) Reset() { *x = RetryPolicyConstant{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1944,7 @@ func (x *RetryPolicyConstant) String() string { func (*RetryPolicyConstant) ProtoMessage() {} func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1957,7 @@ func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyConstant.ProtoReflect.Descriptor instead. func (*RetryPolicyConstant) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} } func (x *RetryPolicyConstant) GetInterval() string { @@ -1905,7 +1995,7 @@ type RetryPolicyExponential struct { func (x *RetryPolicyExponential) Reset() { *x = RetryPolicyExponential{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2008,7 @@ func (x *RetryPolicyExponential) String() string { func (*RetryPolicyExponential) ProtoMessage() {} func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2021,7 @@ func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyExponential.ProtoReflect.Descriptor instead. func (*RetryPolicyExponential) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} } func (x *RetryPolicyExponential) GetInitialInterval() string { @@ -1992,7 +2082,7 @@ type MethodRequest struct { func (x *MethodRequest) Reset() { *x = MethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2005,7 +2095,7 @@ func (x *MethodRequest) String() string { func (*MethodRequest) ProtoMessage() {} func (x *MethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2018,7 +2108,7 @@ func (x *MethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodRequest.ProtoReflect.Descriptor instead. func (*MethodRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} } func (x *MethodRequest) GetField() string { @@ -2062,7 +2152,7 @@ type MethodResponse struct { func (x *MethodResponse) Reset() { *x = MethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2165,7 @@ func (x *MethodResponse) String() string { func (*MethodResponse) ProtoMessage() {} func (x *MethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2178,7 @@ func (x *MethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodResponse.ProtoReflect.Descriptor instead. func (*MethodResponse) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} } func (x *MethodResponse) GetName() string { @@ -2134,7 +2224,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2237,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,7 +2250,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} } func (x *Argument) GetName() string { @@ -2210,7 +2300,7 @@ type FieldRule struct { func (x *FieldRule) Reset() { *x = FieldRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2313,7 @@ func (x *FieldRule) String() string { func (*FieldRule) ProtoMessage() {} func (x *FieldRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2326,7 @@ func (x *FieldRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldRule.ProtoReflect.Descriptor instead. func (*FieldRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} } func (x *FieldRule) GetCustomResolver() bool { @@ -2299,7 +2389,7 @@ type FieldOneof struct { func (x *FieldOneof) Reset() { *x = FieldOneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2402,7 @@ func (x *FieldOneof) String() string { func (*FieldOneof) ProtoMessage() {} func (x *FieldOneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2415,7 @@ func (x *FieldOneof) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldOneof.ProtoReflect.Descriptor instead. func (*FieldOneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} } func (m *FieldOneof) GetCond() isFieldOneof_Cond { @@ -2397,7 +2487,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2500,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2513,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} } func (x *CELPlugin) GetExport() []*CELPluginExport { @@ -2455,7 +2545,7 @@ type CELPluginExport struct { func (x *CELPluginExport) Reset() { *x = CELPluginExport{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2558,7 @@ func (x *CELPluginExport) String() string { func (*CELPluginExport) ProtoMessage() {} func (x *CELPluginExport) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2571,7 @@ func (x *CELPluginExport) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPluginExport.ProtoReflect.Descriptor instead. func (*CELPluginExport) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} } func (x *CELPluginExport) GetName() string { @@ -2539,7 +2629,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2642,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2655,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} } func (x *CELFunction) GetName() string { @@ -2614,7 +2704,7 @@ type CELReceiverType struct { func (x *CELReceiverType) Reset() { *x = CELReceiverType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2717,7 @@ func (x *CELReceiverType) String() string { func (*CELReceiverType) ProtoMessage() {} func (x *CELReceiverType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2730,7 @@ func (x *CELReceiverType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELReceiverType.ProtoReflect.Descriptor instead. func (*CELReceiverType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} } func (x *CELReceiverType) GetName() string { @@ -2682,7 +2772,7 @@ type CELFunctionArgument struct { func (x *CELFunctionArgument) Reset() { *x = CELFunctionArgument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2785,7 @@ func (x *CELFunctionArgument) String() string { func (*CELFunctionArgument) ProtoMessage() {} func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2798,7 @@ func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunctionArgument.ProtoReflect.Descriptor instead. func (*CELFunctionArgument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} } func (x *CELFunctionArgument) GetName() string { @@ -2751,7 +2841,7 @@ type CELType struct { func (x *CELType) Reset() { *x = CELType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2854,7 @@ func (x *CELType) String() string { func (*CELType) ProtoMessage() {} func (x *CELType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2867,7 @@ func (x *CELType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELType.ProtoReflect.Descriptor instead. func (*CELType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} } func (m *CELType) GetType() isCELType_Type { @@ -2876,7 +2966,7 @@ type CELMapType struct { func (x *CELMapType) Reset() { *x = CELMapType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +2979,7 @@ func (x *CELMapType) String() string { func (*CELMapType) ProtoMessage() {} func (x *CELMapType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +2992,7 @@ func (x *CELMapType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELMapType.ProtoReflect.Descriptor instead. func (*CELMapType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} } func (x *CELMapType) GetKey() *CELType { @@ -2937,7 +3027,7 @@ type CELVariable struct { func (x *CELVariable) Reset() { *x = CELVariable{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3040,7 @@ func (x *CELVariable) String() string { func (*CELVariable) ProtoMessage() {} func (x *CELVariable) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3053,7 @@ func (x *CELVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use CELVariable.ProtoReflect.Descriptor instead. func (*CELVariable) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{36} } func (x *CELVariable) GetName() string { @@ -3194,7 +3284,7 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x12, + 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xa7, 0x03, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, @@ -3215,347 +3305,357 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0x50, 0x0a, - 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, + 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, + 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x22, 0x86, 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x22, 0x86, - 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x03, - 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, 0x03, 0x64, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, - 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, - 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, - 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, - 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, - 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, 0x08, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, - 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x69, 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, + 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, + 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, + 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, - 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x38, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, + 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, + 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x12, 0x2f, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x43, 0x45, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, + 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, 0x4c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x1a, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, - 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, 0x4d, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, + 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, + 0x4c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, + 0x1a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, + 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, - 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, - 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x54, - 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x3a, 0x54, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, 0xa3, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x50, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x50, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x3a, 0x61, - 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, - 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, - 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x3a, 0x61, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, + 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, + 0x02, 0x03, 0x47, 0x46, 0x58, 0xaa, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1b, 0x47, 0x72, 0x70, 0x63, + 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -3571,7 +3671,7 @@ func file_grpc_federation_federation_proto_rawDescGZIP() []byte { } var file_grpc_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_grpc_federation_federation_proto_goTypes = []interface{}{ (TypeKind)(0), // 0: grpc.federation.TypeKind (GRPCError_LogLevel)(0), // 1: grpc.federation.GRPCError.LogLevel @@ -3591,48 +3691,49 @@ var file_grpc_federation_federation_proto_goTypes = []interface{}{ (*MapExpr)(nil), // 15: grpc.federation.MapExpr (*Iterator)(nil), // 16: grpc.federation.Iterator (*MessageExpr)(nil), // 17: grpc.federation.MessageExpr - (*CallExpr)(nil), // 18: grpc.federation.CallExpr - (*GRPCError)(nil), // 19: grpc.federation.GRPCError - (*GRPCErrorDetail)(nil), // 20: grpc.federation.GRPCErrorDetail - (*ValidationExpr)(nil), // 21: grpc.federation.ValidationExpr - (*RetryPolicy)(nil), // 22: grpc.federation.RetryPolicy - (*RetryPolicyConstant)(nil), // 23: grpc.federation.RetryPolicyConstant - (*RetryPolicyExponential)(nil), // 24: grpc.federation.RetryPolicyExponential - (*MethodRequest)(nil), // 25: grpc.federation.MethodRequest - (*MethodResponse)(nil), // 26: grpc.federation.MethodResponse - (*Argument)(nil), // 27: grpc.federation.Argument - (*FieldRule)(nil), // 28: grpc.federation.FieldRule - (*FieldOneof)(nil), // 29: grpc.federation.FieldOneof - (*CELPlugin)(nil), // 30: grpc.federation.CELPlugin - (*CELPluginExport)(nil), // 31: grpc.federation.CELPluginExport - (*CELFunction)(nil), // 32: grpc.federation.CELFunction - (*CELReceiverType)(nil), // 33: grpc.federation.CELReceiverType - (*CELFunctionArgument)(nil), // 34: grpc.federation.CELFunctionArgument - (*CELType)(nil), // 35: grpc.federation.CELType - (*CELMapType)(nil), // 36: grpc.federation.CELMapType - (*CELVariable)(nil), // 37: grpc.federation.CELVariable - (code.Code)(0), // 38: google.rpc.Code - (*errdetails.ErrorInfo)(nil), // 39: google.rpc.ErrorInfo - (*errdetails.RetryInfo)(nil), // 40: google.rpc.RetryInfo - (*errdetails.DebugInfo)(nil), // 41: google.rpc.DebugInfo - (*errdetails.QuotaFailure)(nil), // 42: google.rpc.QuotaFailure - (*errdetails.PreconditionFailure)(nil), // 43: google.rpc.PreconditionFailure - (*errdetails.BadRequest)(nil), // 44: google.rpc.BadRequest - (*errdetails.RequestInfo)(nil), // 45: google.rpc.RequestInfo - (*errdetails.ResourceInfo)(nil), // 46: google.rpc.ResourceInfo - (*errdetails.Help)(nil), // 47: google.rpc.Help - (*errdetails.LocalizedMessage)(nil), // 48: google.rpc.LocalizedMessage - (*descriptorpb.FileOptions)(nil), // 49: google.protobuf.FileOptions - (*descriptorpb.ServiceOptions)(nil), // 50: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 51: google.protobuf.MethodOptions - (*descriptorpb.MessageOptions)(nil), // 52: google.protobuf.MessageOptions - (*descriptorpb.FieldOptions)(nil), // 53: google.protobuf.FieldOptions - (*descriptorpb.EnumOptions)(nil), // 54: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 55: google.protobuf.EnumValueOptions - (*descriptorpb.OneofOptions)(nil), // 56: google.protobuf.OneofOptions + (*EnumExpr)(nil), // 18: grpc.federation.EnumExpr + (*CallExpr)(nil), // 19: grpc.federation.CallExpr + (*GRPCError)(nil), // 20: grpc.federation.GRPCError + (*GRPCErrorDetail)(nil), // 21: grpc.federation.GRPCErrorDetail + (*ValidationExpr)(nil), // 22: grpc.federation.ValidationExpr + (*RetryPolicy)(nil), // 23: grpc.federation.RetryPolicy + (*RetryPolicyConstant)(nil), // 24: grpc.federation.RetryPolicyConstant + (*RetryPolicyExponential)(nil), // 25: grpc.federation.RetryPolicyExponential + (*MethodRequest)(nil), // 26: grpc.federation.MethodRequest + (*MethodResponse)(nil), // 27: grpc.federation.MethodResponse + (*Argument)(nil), // 28: grpc.federation.Argument + (*FieldRule)(nil), // 29: grpc.federation.FieldRule + (*FieldOneof)(nil), // 30: grpc.federation.FieldOneof + (*CELPlugin)(nil), // 31: grpc.federation.CELPlugin + (*CELPluginExport)(nil), // 32: grpc.federation.CELPluginExport + (*CELFunction)(nil), // 33: grpc.federation.CELFunction + (*CELReceiverType)(nil), // 34: grpc.federation.CELReceiverType + (*CELFunctionArgument)(nil), // 35: grpc.federation.CELFunctionArgument + (*CELType)(nil), // 36: grpc.federation.CELType + (*CELMapType)(nil), // 37: grpc.federation.CELMapType + (*CELVariable)(nil), // 38: grpc.federation.CELVariable + (code.Code)(0), // 39: google.rpc.Code + (*errdetails.ErrorInfo)(nil), // 40: google.rpc.ErrorInfo + (*errdetails.RetryInfo)(nil), // 41: google.rpc.RetryInfo + (*errdetails.DebugInfo)(nil), // 42: google.rpc.DebugInfo + (*errdetails.QuotaFailure)(nil), // 43: google.rpc.QuotaFailure + (*errdetails.PreconditionFailure)(nil), // 44: google.rpc.PreconditionFailure + (*errdetails.BadRequest)(nil), // 45: google.rpc.BadRequest + (*errdetails.RequestInfo)(nil), // 46: google.rpc.RequestInfo + (*errdetails.ResourceInfo)(nil), // 47: google.rpc.ResourceInfo + (*errdetails.Help)(nil), // 48: google.rpc.Help + (*errdetails.LocalizedMessage)(nil), // 49: google.rpc.LocalizedMessage + (*descriptorpb.FileOptions)(nil), // 50: google.protobuf.FileOptions + (*descriptorpb.ServiceOptions)(nil), // 51: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 52: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 53: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 54: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 55: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 56: google.protobuf.EnumValueOptions + (*descriptorpb.OneofOptions)(nil), // 57: google.protobuf.OneofOptions } var file_grpc_federation_federation_proto_depIdxs = []int32{ - 30, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin + 31, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin 7, // 1: grpc.federation.ServiceRule.env:type_name -> grpc.federation.Env 8, // 2: grpc.federation.Env.var:type_name -> grpc.federation.EnvVar 9, // 3: grpc.federation.EnvVar.type:type_name -> grpc.federation.EnvType @@ -3645,71 +3746,73 @@ var file_grpc_federation_federation_proto_depIdxs = []int32{ 14, // 10: grpc.federation.MessageRule.def:type_name -> grpc.federation.VariableDefinition 15, // 11: grpc.federation.VariableDefinition.map:type_name -> grpc.federation.MapExpr 17, // 12: grpc.federation.VariableDefinition.message:type_name -> grpc.federation.MessageExpr - 18, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr - 21, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr - 16, // 15: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator - 17, // 16: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr - 27, // 17: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument - 25, // 18: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest - 22, // 19: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy - 19, // 20: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError - 14, // 21: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition - 38, // 22: grpc.federation.GRPCError.code:type_name -> google.rpc.Code - 20, // 23: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail - 1, // 24: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel - 14, // 25: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition - 17, // 26: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr - 39, // 27: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo - 40, // 28: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo - 41, // 29: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo - 42, // 30: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure - 43, // 31: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure - 44, // 32: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest - 45, // 33: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo - 46, // 34: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo - 47, // 35: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help - 48, // 36: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage - 19, // 37: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError - 23, // 38: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant - 24, // 39: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential - 29, // 40: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof - 11, // 41: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption - 14, // 42: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition - 31, // 43: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport - 33, // 44: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType - 32, // 45: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction - 37, // 46: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable - 34, // 47: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument - 35, // 48: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType - 32, // 49: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction - 35, // 50: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType - 0, // 51: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind - 35, // 52: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType - 36, // 53: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType - 35, // 54: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType - 35, // 55: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType - 35, // 56: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType - 49, // 57: grpc.federation.file:extendee -> google.protobuf.FileOptions - 50, // 58: grpc.federation.service:extendee -> google.protobuf.ServiceOptions - 51, // 59: grpc.federation.method:extendee -> google.protobuf.MethodOptions - 52, // 60: grpc.federation.message:extendee -> google.protobuf.MessageOptions - 53, // 61: grpc.federation.field:extendee -> google.protobuf.FieldOptions - 54, // 62: grpc.federation.enum:extendee -> google.protobuf.EnumOptions - 55, // 63: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions - 56, // 64: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions - 2, // 65: grpc.federation.file:type_name -> grpc.federation.FileRule - 6, // 66: grpc.federation.service:type_name -> grpc.federation.ServiceRule - 12, // 67: grpc.federation.method:type_name -> grpc.federation.MethodRule - 13, // 68: grpc.federation.message:type_name -> grpc.federation.MessageRule - 28, // 69: grpc.federation.field:type_name -> grpc.federation.FieldRule - 3, // 70: grpc.federation.enum:type_name -> grpc.federation.EnumRule - 4, // 71: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule - 5, // 72: grpc.federation.oneof:type_name -> grpc.federation.OneofRule - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 65, // [65:73] is the sub-list for extension type_name - 57, // [57:65] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 19, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr + 22, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr + 18, // 15: grpc.federation.VariableDefinition.enum:type_name -> grpc.federation.EnumExpr + 16, // 16: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator + 17, // 17: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr + 18, // 18: grpc.federation.MapExpr.enum:type_name -> grpc.federation.EnumExpr + 28, // 19: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument + 26, // 20: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest + 23, // 21: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy + 20, // 22: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError + 14, // 23: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition + 39, // 24: grpc.federation.GRPCError.code:type_name -> google.rpc.Code + 21, // 25: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail + 1, // 26: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel + 14, // 27: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition + 17, // 28: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr + 40, // 29: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo + 41, // 30: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo + 42, // 31: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo + 43, // 32: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure + 44, // 33: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure + 45, // 34: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest + 46, // 35: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo + 47, // 36: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo + 48, // 37: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help + 49, // 38: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage + 20, // 39: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError + 24, // 40: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant + 25, // 41: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential + 30, // 42: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof + 11, // 43: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption + 14, // 44: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition + 32, // 45: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport + 34, // 46: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType + 33, // 47: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction + 38, // 48: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable + 35, // 49: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument + 36, // 50: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType + 33, // 51: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction + 36, // 52: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType + 0, // 53: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind + 36, // 54: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType + 37, // 55: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType + 36, // 56: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType + 36, // 57: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType + 36, // 58: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType + 50, // 59: grpc.federation.file:extendee -> google.protobuf.FileOptions + 51, // 60: grpc.federation.service:extendee -> google.protobuf.ServiceOptions + 52, // 61: grpc.federation.method:extendee -> google.protobuf.MethodOptions + 53, // 62: grpc.federation.message:extendee -> google.protobuf.MessageOptions + 54, // 63: grpc.federation.field:extendee -> google.protobuf.FieldOptions + 55, // 64: grpc.federation.enum:extendee -> google.protobuf.EnumOptions + 56, // 65: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions + 57, // 66: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions + 2, // 67: grpc.federation.file:type_name -> grpc.federation.FileRule + 6, // 68: grpc.federation.service:type_name -> grpc.federation.ServiceRule + 12, // 69: grpc.federation.method:type_name -> grpc.federation.MethodRule + 13, // 70: grpc.federation.message:type_name -> grpc.federation.MessageRule + 29, // 71: grpc.federation.field:type_name -> grpc.federation.FieldRule + 3, // 72: grpc.federation.enum:type_name -> grpc.federation.EnumRule + 4, // 73: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule + 5, // 74: grpc.federation.oneof:type_name -> grpc.federation.OneofRule + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 67, // [67:75] is the sub-list for extension type_name + 59, // [59:67] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_grpc_federation_federation_proto_init() } @@ -3911,7 +4014,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallExpr); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -3923,7 +4026,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*CallExpr); i { case 0: return &v.state case 1: @@ -3935,7 +4038,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -3947,7 +4050,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -3959,7 +4062,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -3971,7 +4074,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyConstant); i { + switch v := v.(*RetryPolicy); i { case 0: return &v.state case 1: @@ -3983,7 +4086,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyExponential); i { + switch v := v.(*RetryPolicyConstant); i { case 0: return &v.state case 1: @@ -3995,7 +4098,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodRequest); i { + switch v := v.(*RetryPolicyExponential); i { case 0: return &v.state case 1: @@ -4007,7 +4110,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodResponse); i { + switch v := v.(*MethodRequest); i { case 0: return &v.state case 1: @@ -4019,7 +4122,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*MethodResponse); i { case 0: return &v.state case 1: @@ -4031,7 +4134,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldRule); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -4043,7 +4146,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOneof); i { + switch v := v.(*FieldRule); i { case 0: return &v.state case 1: @@ -4055,7 +4158,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*FieldOneof); i { case 0: return &v.state case 1: @@ -4067,7 +4170,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPluginExport); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -4079,7 +4182,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPluginExport); i { case 0: return &v.state case 1: @@ -4091,7 +4194,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELReceiverType); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -4103,7 +4206,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunctionArgument); i { + switch v := v.(*CELReceiverType); i { case 0: return &v.state case 1: @@ -4115,7 +4218,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELType); i { + switch v := v.(*CELFunctionArgument); i { case 0: return &v.state case 1: @@ -4127,7 +4230,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELMapType); i { + switch v := v.(*CELType); i { case 0: return &v.state case 1: @@ -4139,6 +4242,18 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CELMapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_federation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CELVariable); i { case 0: return &v.state @@ -4167,29 +4282,31 @@ func file_grpc_federation_federation_proto_init() { (*VariableDefinition_Message)(nil), (*VariableDefinition_Call)(nil), (*VariableDefinition_Validation)(nil), + (*VariableDefinition_Enum)(nil), } file_grpc_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{ (*MapExpr_By)(nil), (*MapExpr_Message)(nil), + (*MapExpr_Enum)(nil), } - file_grpc_federation_federation_proto_msgTypes[16].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[19].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[22].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[23].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[24].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[25].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[28].OneofWrappers = []interface{}{ (*FieldOneof_If)(nil), (*FieldOneof_Default)(nil), } - file_grpc_federation_federation_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[34].OneofWrappers = []interface{}{ (*CELType_Kind)(nil), (*CELType_Repeated)(nil), (*CELType_Map)(nil), @@ -4202,7 +4319,7 @@ func file_grpc_federation_federation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_federation_proto_rawDesc, NumEnums: 2, - NumMessages: 36, + NumMessages: 37, NumExtensions: 8, NumServices: 0, }, diff --git a/_examples/17_error_handler/grpc/federation/generator.pb.go b/_examples/17_error_handler/grpc/federation/generator.pb.go index 366cd716..4a5efc3b 100644 --- a/_examples/17_error_handler/grpc/federation/generator.pb.go +++ b/_examples/17_error_handler/grpc/federation/generator.pb.go @@ -2064,6 +2064,7 @@ type VariableExpr struct { // *VariableExpr_Call // *VariableExpr_Message // *VariableExpr_Validation + // *VariableExpr_Enum Expr isVariableExpr_Expr `protobuf_oneof:"expr"` } @@ -2148,6 +2149,13 @@ func (x *VariableExpr) GetValidation() *ValidationExpr { return nil } +func (x *VariableExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableExpr_Enum); ok { + return x.Enum + } + return nil +} + type isVariableExpr_Expr interface { isVariableExpr_Expr() } @@ -2172,6 +2180,10 @@ type VariableExpr_Validation struct { Validation *ValidationExpr `protobuf:"bytes,6,opt,name=validation,proto3,oneof"` } +type VariableExpr_Enum struct { + Enum *EnumExpr `protobuf:"bytes,7,opt,name=enum,proto3,oneof"` +} + func (*VariableExpr_By) isVariableExpr_Expr() {} func (*VariableExpr_Map) isVariableExpr_Expr() {} @@ -2182,6 +2194,8 @@ func (*VariableExpr_Message) isVariableExpr_Expr() {} func (*VariableExpr_Validation) isVariableExpr_Expr() {} +func (*VariableExpr_Enum) isVariableExpr_Expr() {} + type Type struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2476,6 +2490,7 @@ type MapIteratorExpr struct { // // *MapIteratorExpr_By // *MapIteratorExpr_Message + // *MapIteratorExpr_Enum Expr isMapIteratorExpr_Expr `protobuf_oneof:"expr"` } @@ -2539,6 +2554,13 @@ func (x *MapIteratorExpr) GetMessage() *MessageExpr { return nil } +func (x *MapIteratorExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapIteratorExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapIteratorExpr_Expr interface { isMapIteratorExpr_Expr() } @@ -2551,10 +2573,16 @@ type MapIteratorExpr_Message struct { Message *MessageExpr `protobuf:"bytes,3,opt,name=message,proto3,oneof"` } +type MapIteratorExpr_Enum struct { + Enum *EnumExpr `protobuf:"bytes,4,opt,name=enum,proto3,oneof"` +} + func (*MapIteratorExpr_By) isMapIteratorExpr_Expr() {} func (*MapIteratorExpr_Message) isMapIteratorExpr_Expr() {} +func (*MapIteratorExpr_Enum) isMapIteratorExpr_Expr() {} + type CallExpr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2975,6 +3003,61 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EnumId string `protobuf:"bytes,1,opt,name=enum_id,json=enumId,proto3" json:"enum_id,omitempty"` + By *CELValue `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_generator_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_generator_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{35} +} + +func (x *EnumExpr) GetEnumId() string { + if x != nil { + return x.EnumId + } + return "" +} + +func (x *EnumExpr) GetBy() *CELValue { + if x != nil { + return x.By + } + return nil +} + type Argument struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2989,7 +3072,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[35] + mi := &file_grpc_federation_generator_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3002,7 +3085,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[35] + mi := &file_grpc_federation_generator_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3015,7 +3098,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{36} } func (x *Argument) GetName() string { @@ -3058,7 +3141,7 @@ type Value struct { func (x *Value) Reset() { *x = Value{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[36] + mi := &file_grpc_federation_generator_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3071,7 +3154,7 @@ func (x *Value) String() string { func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[36] + mi := &file_grpc_federation_generator_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3084,7 +3167,7 @@ func (x *Value) ProtoReflect() protoreflect.Message { // Deprecated: Use Value.ProtoReflect.Descriptor instead. func (*Value) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{36} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{37} } func (x *Value) GetInline() bool { @@ -3113,7 +3196,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[37] + mi := &file_grpc_federation_generator_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3126,7 +3209,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[37] + mi := &file_grpc_federation_generator_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3139,7 +3222,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{37} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{38} } func (x *ValidationExpr) GetName() string { @@ -3173,7 +3256,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[38] + mi := &file_grpc_federation_generator_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3186,7 +3269,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[38] + mi := &file_grpc_federation_generator_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3199,7 +3282,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{38} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{39} } func (x *GRPCError) GetDefSet() *VariableDefinitionSet { @@ -3268,7 +3351,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[39] + mi := &file_grpc_federation_generator_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3281,7 +3364,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[39] + mi := &file_grpc_federation_generator_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3294,7 +3377,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{39} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{40} } func (x *GRPCErrorDetail) GetDefSet() *VariableDefinitionSet { @@ -3357,7 +3440,7 @@ type PreconditionFailure struct { func (x *PreconditionFailure) Reset() { *x = PreconditionFailure{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[40] + mi := &file_grpc_federation_generator_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3370,7 +3453,7 @@ func (x *PreconditionFailure) String() string { func (*PreconditionFailure) ProtoMessage() {} func (x *PreconditionFailure) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[40] + mi := &file_grpc_federation_generator_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3383,7 +3466,7 @@ func (x *PreconditionFailure) ProtoReflect() protoreflect.Message { // Deprecated: Use PreconditionFailure.ProtoReflect.Descriptor instead. func (*PreconditionFailure) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{40} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{41} } func (x *PreconditionFailure) GetViolations() []*PreconditionFailureViolation { @@ -3406,7 +3489,7 @@ type PreconditionFailureViolation struct { func (x *PreconditionFailureViolation) Reset() { *x = PreconditionFailureViolation{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[41] + mi := &file_grpc_federation_generator_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3419,7 +3502,7 @@ func (x *PreconditionFailureViolation) String() string { func (*PreconditionFailureViolation) ProtoMessage() {} func (x *PreconditionFailureViolation) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[41] + mi := &file_grpc_federation_generator_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3432,7 +3515,7 @@ func (x *PreconditionFailureViolation) ProtoReflect() protoreflect.Message { // Deprecated: Use PreconditionFailureViolation.ProtoReflect.Descriptor instead. func (*PreconditionFailureViolation) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{41} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{42} } func (x *PreconditionFailureViolation) GetType() *CELValue { @@ -3467,7 +3550,7 @@ type BadRequest struct { func (x *BadRequest) Reset() { *x = BadRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[42] + mi := &file_grpc_federation_generator_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3480,7 +3563,7 @@ func (x *BadRequest) String() string { func (*BadRequest) ProtoMessage() {} func (x *BadRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[42] + mi := &file_grpc_federation_generator_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3493,7 +3576,7 @@ func (x *BadRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BadRequest.ProtoReflect.Descriptor instead. func (*BadRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{42} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{43} } func (x *BadRequest) GetFieldViolations() []*BadRequestFieldViolation { @@ -3515,7 +3598,7 @@ type BadRequestFieldViolation struct { func (x *BadRequestFieldViolation) Reset() { *x = BadRequestFieldViolation{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[43] + mi := &file_grpc_federation_generator_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3528,7 +3611,7 @@ func (x *BadRequestFieldViolation) String() string { func (*BadRequestFieldViolation) ProtoMessage() {} func (x *BadRequestFieldViolation) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[43] + mi := &file_grpc_federation_generator_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3541,7 +3624,7 @@ func (x *BadRequestFieldViolation) ProtoReflect() protoreflect.Message { // Deprecated: Use BadRequestFieldViolation.ProtoReflect.Descriptor instead. func (*BadRequestFieldViolation) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{43} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{44} } func (x *BadRequestFieldViolation) GetField() *CELValue { @@ -3570,7 +3653,7 @@ type LocalizedMessage struct { func (x *LocalizedMessage) Reset() { *x = LocalizedMessage{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[44] + mi := &file_grpc_federation_generator_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3583,7 +3666,7 @@ func (x *LocalizedMessage) String() string { func (*LocalizedMessage) ProtoMessage() {} func (x *LocalizedMessage) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[44] + mi := &file_grpc_federation_generator_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3596,7 +3679,7 @@ func (x *LocalizedMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use LocalizedMessage.ProtoReflect.Descriptor instead. func (*LocalizedMessage) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{44} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{45} } func (x *LocalizedMessage) GetLocale() string { @@ -3627,7 +3710,7 @@ type Oneof struct { func (x *Oneof) Reset() { *x = Oneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[45] + mi := &file_grpc_federation_generator_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3640,7 +3723,7 @@ func (x *Oneof) String() string { func (*Oneof) ProtoMessage() {} func (x *Oneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[45] + mi := &file_grpc_federation_generator_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3653,7 +3736,7 @@ func (x *Oneof) ProtoReflect() protoreflect.Message { // Deprecated: Use Oneof.ProtoReflect.Descriptor instead. func (*Oneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{45} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{46} } func (x *Oneof) GetId() string { @@ -3700,7 +3783,7 @@ type Enum struct { func (x *Enum) Reset() { *x = Enum{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[46] + mi := &file_grpc_federation_generator_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3713,7 +3796,7 @@ func (x *Enum) String() string { func (*Enum) ProtoMessage() {} func (x *Enum) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[46] + mi := &file_grpc_federation_generator_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3726,7 +3809,7 @@ func (x *Enum) ProtoReflect() protoreflect.Message { // Deprecated: Use Enum.ProtoReflect.Descriptor instead. func (*Enum) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{46} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{47} } func (x *Enum) GetId() string { @@ -3785,7 +3868,7 @@ type EnumValue struct { func (x *EnumValue) Reset() { *x = EnumValue{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[47] + mi := &file_grpc_federation_generator_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3798,7 +3881,7 @@ func (x *EnumValue) String() string { func (*EnumValue) ProtoMessage() {} func (x *EnumValue) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[47] + mi := &file_grpc_federation_generator_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3811,7 +3894,7 @@ func (x *EnumValue) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValue.ProtoReflect.Descriptor instead. func (*EnumValue) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{47} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{48} } func (x *EnumValue) GetId() string { @@ -3853,7 +3936,7 @@ type EnumRule struct { func (x *EnumRule) Reset() { *x = EnumRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[48] + mi := &file_grpc_federation_generator_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3866,7 +3949,7 @@ func (x *EnumRule) String() string { func (*EnumRule) ProtoMessage() {} func (x *EnumRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[48] + mi := &file_grpc_federation_generator_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3879,7 +3962,7 @@ func (x *EnumRule) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumRule.ProtoReflect.Descriptor instead. func (*EnumRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{48} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{49} } func (x *EnumRule) GetAliasIds() []string { @@ -3901,7 +3984,7 @@ type EnumValueRule struct { func (x *EnumValueRule) Reset() { *x = EnumValueRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[49] + mi := &file_grpc_federation_generator_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3914,7 +3997,7 @@ func (x *EnumValueRule) String() string { func (*EnumValueRule) ProtoMessage() {} func (x *EnumValueRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[49] + mi := &file_grpc_federation_generator_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3927,7 +4010,7 @@ func (x *EnumValueRule) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueRule.ProtoReflect.Descriptor instead. func (*EnumValueRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{49} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{50} } func (x *EnumValueRule) GetDefault() bool { @@ -3956,7 +4039,7 @@ type EnumValueAlias struct { func (x *EnumValueAlias) Reset() { *x = EnumValueAlias{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[50] + mi := &file_grpc_federation_generator_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3969,7 +4052,7 @@ func (x *EnumValueAlias) String() string { func (*EnumValueAlias) ProtoMessage() {} func (x *EnumValueAlias) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[50] + mi := &file_grpc_federation_generator_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3982,7 +4065,7 @@ func (x *EnumValueAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueAlias.ProtoReflect.Descriptor instead. func (*EnumValueAlias) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{50} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{51} } func (x *EnumValueAlias) GetEnumAliasId() string { @@ -4013,7 +4096,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[51] + mi := &file_grpc_federation_generator_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4026,7 +4109,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[51] + mi := &file_grpc_federation_generator_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4039,7 +4122,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{51} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{52} } func (x *CELPlugin) GetId() string { @@ -4085,7 +4168,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[52] + mi := &file_grpc_federation_generator_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4098,7 +4181,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[52] + mi := &file_grpc_federation_generator_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4111,7 +4194,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{52} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{53} } func (x *CELFunction) GetName() string { @@ -4160,7 +4243,7 @@ type ProtoCodeGeneratorResponse_GeneratedCodeInfo struct { func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo) Reset() { *x = ProtoCodeGeneratorResponse_GeneratedCodeInfo{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[53] + mi := &file_grpc_federation_generator_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4173,7 +4256,7 @@ func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo) String() string { func (*ProtoCodeGeneratorResponse_GeneratedCodeInfo) ProtoMessage() {} func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[53] + mi := &file_grpc_federation_generator_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4210,7 +4293,7 @@ type ProtoCodeGeneratorResponse_File struct { func (x *ProtoCodeGeneratorResponse_File) Reset() { *x = ProtoCodeGeneratorResponse_File{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[54] + mi := &file_grpc_federation_generator_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4223,7 +4306,7 @@ func (x *ProtoCodeGeneratorResponse_File) String() string { func (*ProtoCodeGeneratorResponse_File) ProtoMessage() {} func (x *ProtoCodeGeneratorResponse_File) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[54] + mi := &file_grpc_federation_generator_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4282,7 +4365,7 @@ type ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation struct { func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation) Reset() { *x = ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[55] + mi := &file_grpc_federation_generator_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4295,7 +4378,7 @@ func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation) String() strin func (*ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation) ProtoMessage() {} func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[55] + mi := &file_grpc_federation_generator_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4856,7 +4939,7 @@ var file_grpc_federation_generator_proto_rawDesc = []byte{ 0x12, 0x34, 0x0a, 0x16, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb0, 0x03, 0x0a, 0x0c, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xf2, 0x03, 0x0a, 0x0c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, @@ -4883,385 +4966,400 @@ var file_grpc_federation_generator_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0xe6, 0x01, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x17, - 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x69, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x65, 0x6e, 0x75, 0x6d, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x75, - 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x05, 0x0a, 0x03, 0x72, - 0x65, 0x66, 0x22, 0x58, 0x0a, 0x08, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x78, - 0x70, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x40, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6f, 0x75, 0x74, 0x22, 0x98, 0x01, 0x0a, - 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, 0x12, 0x46, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x49, 0x74, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x45, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x3b, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x64, 0x22, 0xde, 0x01, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x49, 0x74, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x02, - 0x62, 0x79, 0x12, 0x49, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, - 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, - 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0xab, 0x02, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, - 0x70, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, 0x64, 0x12, - 0x43, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0xe6, 0x01, 0x0a, 0x04, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x69, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0a, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x65, 0x6e, + 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x65, + 0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x05, 0x0a, + 0x03, 0x72, 0x65, 0x66, 0x22, 0x58, 0x0a, 0x08, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x65, 0x78, 0x70, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6f, 0x75, 0x74, 0x22, 0x98, + 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, 0x12, 0x46, 0x0a, 0x08, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, + 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x43, 0x0a, 0x05, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x67, 0x69, 0x6e, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x3b, 0x0a, 0x08, 0x49, 0x74, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x22, 0xa0, 0x02, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x49, 0x74, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, - 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x12, 0x43, - 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, - 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x6d, 0x0a, 0x13, - 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, - 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0xd5, 0x02, 0x0a, 0x16, - 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x31, 0x0a, 0x14, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, 0x64, - 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x1e, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, - 0x3c, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1f, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x43, - 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, - 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x17, - 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x6c, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x66, 0x22, 0x5d, 0x0a, - 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3c, - 0x0a, 0x03, 0x63, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, - 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x63, 0x65, 0x6c, 0x22, 0x67, 0x0a, 0x0e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd4, 0x03, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x06, 0x64, - 0x65, 0x66, 0x53, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, - 0x66, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, - 0x65, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, + 0x52, 0x02, 0x62, 0x79, 0x12, 0x49, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x40, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x4b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x5a, 0x0a, 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0xab, 0x02, 0x0a, 0x08, 0x43, 0x61, + 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xd0, 0x04, 0x0a, - 0x0f, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0x50, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x53, - 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x66, 0x12, 0x53, - 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, - 0x4f, 0x0a, 0x0c, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x0b, 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, - 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, + 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x43, 0x0a, + 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x62, 0x79, 0x22, - 0x75, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x5e, 0x0a, 0x0a, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x72, 0x70, + 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x72, 0x65, 0x74, + 0x72, 0x79, 0x12, 0x43, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, + 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x74, + 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0b, + 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, 0x65, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x22, 0x6d, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, + 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1f, + 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, + 0xd5, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x12, 0x31, 0x0a, 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, + 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x43, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, + 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x45, 0x6c, 0x61, 0x70, + 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, + 0x67, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x6c, 0x0a, 0x0b, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0x5f, 0x0a, 0x08, 0x45, 0x6e, 0x75, + 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x3a, + 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x72, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x69, 0x6f, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x1c, 0x50, 0x72, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x56, 0x69, - 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x4c, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x62, 0x79, 0x22, 0xd5, 0x01, 0x0a, 0x08, 0x41, + 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, + 0x69, 0x66, 0x22, 0x5d, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x12, 0x3c, 0x0a, 0x03, 0x63, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x63, 0x65, + 0x6c, 0x22, 0x67, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd4, 0x03, 0x0a, 0x09, 0x47, + 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x5f, + 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x53, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x02, 0x69, 0x66, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x44, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x0a, 0x42, - 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x10, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x5a, 0x0a, 0x13, + 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x22, 0xd0, 0x04, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x50, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x5f, 0x73, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, + 0x06, 0x64, 0x65, 0x66, 0x53, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0xaa, 0x01, 0x0a, 0x18, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, - 0x4c, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x02, 0x69, 0x66, 0x12, 0x53, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x08, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x70, 0x72, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x14, + 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x61, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0b, 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, - 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, + 0x52, 0x02, 0x62, 0x79, 0x22, 0x75, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x5e, 0x0a, 0x0a, 0x76, + 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x1c, + 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, - 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0x67, 0x0a, 0x05, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, - 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x04, 0x72, 0x75, - 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x07, + 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x73, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, + 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x09, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x17, - 0x0a, 0x07, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x27, 0x0a, 0x08, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x49, 0x64, 0x73, 0x22, 0x75, 0x0a, 0x0d, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x12, 0x4a, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x18, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x22, 0x51, 0x0a, 0x0e, - 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x22, - 0x0a, 0x0d, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x49, 0x64, 0x73, 0x22, - 0x9e, 0x01, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x0e, 0x0a, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x12, 0x4c, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x44, + 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x67, 0x0a, 0x05, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x73, 0x22, 0xbf, 0x01, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, + 0x3e, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, + 0x8f, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x04, + 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, + 0x65, 0x22, 0x27, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x08, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x49, 0x64, 0x73, 0x22, 0x75, 0x0a, 0x0d, 0x45, 0x6e, + 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x4a, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0xce, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, - 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, - 0x64, 0x2a, 0x6b, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x13, 0x0a, 0x0f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x45, 0x4c, 0x45, - 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x2a, 0xcc, - 0x02, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x0c, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, - 0x0b, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x0e, - 0x0a, 0x0a, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, 0x0e, - 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, - 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x12, - 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x59, 0x54, 0x45, 0x53, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, - 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x46, 0x49, 0x58, - 0x45, 0x44, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x53, - 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, - 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x12, 0x42, 0xa8, 0x02, - 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x42, 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, - 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, - 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x3b, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0xa2, 0x02, 0x04, 0x47, 0x46, 0x47, 0x50, 0xaa, 0x02, 0x20, 0x47, 0x72, - 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0xca, 0x02, - 0x21, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x5c, 0x50, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0xe2, 0x02, 0x2d, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x5c, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x23, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x3a, 0x3a, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, + 0x73, 0x22, 0x51, 0x0a, 0x0e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x75, 0x6d, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x49, 0x64, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xce, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x2a, 0x6b, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x45, 0x45, + 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x11, 0x0a, + 0x0d, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, + 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x04, 0x2a, 0xcc, 0x02, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, + 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, + 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x4f, 0x4f, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x49, 0x4e, + 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x49, + 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x45, + 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x46, + 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0f, 0x12, 0x11, 0x0a, + 0x0d, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x10, + 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x12, 0x42, 0xa8, 0x02, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x42, 0x0e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, 0x72, + 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x3b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0xa2, 0x02, 0x04, 0x47, 0x46, 0x47, 0x50, + 0xaa, 0x02, 0x20, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0xca, 0x02, 0x21, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0xe2, 0x02, 0x2d, 0x47, 0x72, 0x70, 0x63, 0x5c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x23, 0x47, 0x72, 0x70, 0x63, 0x3a, 0x3a, + 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3a, 0x3a, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5277,7 +5375,7 @@ func file_grpc_federation_generator_proto_rawDescGZIP() []byte { } var file_grpc_federation_generator_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_grpc_federation_generator_proto_msgTypes = make([]protoimpl.MessageInfo, 68) +var file_grpc_federation_generator_proto_msgTypes = make([]protoimpl.MessageInfo, 69) var file_grpc_federation_generator_proto_goTypes = []interface{}{ (ActionType)(0), // 0: grpc.federation.generator.plugin.ActionType (TypeKind)(0), // 1: grpc.federation.generator.plugin.TypeKind @@ -5318,71 +5416,72 @@ var file_grpc_federation_generator_proto_goTypes = []interface{}{ (*RetryPolicyExponential)(nil), // 36: grpc.federation.generator.plugin.RetryPolicyExponential (*Request)(nil), // 37: grpc.federation.generator.plugin.Request (*MessageExpr)(nil), // 38: grpc.federation.generator.plugin.MessageExpr - (*Argument)(nil), // 39: grpc.federation.generator.plugin.Argument - (*Value)(nil), // 40: grpc.federation.generator.plugin.Value - (*ValidationExpr)(nil), // 41: grpc.federation.generator.plugin.ValidationExpr - (*GRPCError)(nil), // 42: grpc.federation.generator.plugin.GRPCError - (*GRPCErrorDetail)(nil), // 43: grpc.federation.generator.plugin.GRPCErrorDetail - (*PreconditionFailure)(nil), // 44: grpc.federation.generator.plugin.PreconditionFailure - (*PreconditionFailureViolation)(nil), // 45: grpc.federation.generator.plugin.PreconditionFailureViolation - (*BadRequest)(nil), // 46: grpc.federation.generator.plugin.BadRequest - (*BadRequestFieldViolation)(nil), // 47: grpc.federation.generator.plugin.BadRequestFieldViolation - (*LocalizedMessage)(nil), // 48: grpc.federation.generator.plugin.LocalizedMessage - (*Oneof)(nil), // 49: grpc.federation.generator.plugin.Oneof - (*Enum)(nil), // 50: grpc.federation.generator.plugin.Enum - (*EnumValue)(nil), // 51: grpc.federation.generator.plugin.EnumValue - (*EnumRule)(nil), // 52: grpc.federation.generator.plugin.EnumRule - (*EnumValueRule)(nil), // 53: grpc.federation.generator.plugin.EnumValueRule - (*EnumValueAlias)(nil), // 54: grpc.federation.generator.plugin.EnumValueAlias - (*CELPlugin)(nil), // 55: grpc.federation.generator.plugin.CELPlugin - (*CELFunction)(nil), // 56: grpc.federation.generator.plugin.CELFunction - (*ProtoCodeGeneratorResponse_GeneratedCodeInfo)(nil), // 57: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo - (*ProtoCodeGeneratorResponse_File)(nil), // 58: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File - (*ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation)(nil), // 59: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation - nil, // 60: grpc.federation.generator.plugin.Reference.FileMapEntry - nil, // 61: grpc.federation.generator.plugin.Reference.ServiceMapEntry - nil, // 62: grpc.federation.generator.plugin.Reference.MethodMapEntry - nil, // 63: grpc.federation.generator.plugin.Reference.MessageMapEntry - nil, // 64: grpc.federation.generator.plugin.Reference.FieldMapEntry - nil, // 65: grpc.federation.generator.plugin.Reference.EnumMapEntry - nil, // 66: grpc.federation.generator.plugin.Reference.EnumValueMapEntry - nil, // 67: grpc.federation.generator.plugin.Reference.OneofMapEntry - nil, // 68: grpc.federation.generator.plugin.Reference.CelPluginMapEntry - nil, // 69: grpc.federation.generator.plugin.Reference.GraphMapEntry - nil, // 70: grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry - nil, // 71: grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry - (*durationpb.Duration)(nil), // 72: google.protobuf.Duration - (code.Code)(0), // 73: google.rpc.Code + (*EnumExpr)(nil), // 39: grpc.federation.generator.plugin.EnumExpr + (*Argument)(nil), // 40: grpc.federation.generator.plugin.Argument + (*Value)(nil), // 41: grpc.federation.generator.plugin.Value + (*ValidationExpr)(nil), // 42: grpc.federation.generator.plugin.ValidationExpr + (*GRPCError)(nil), // 43: grpc.federation.generator.plugin.GRPCError + (*GRPCErrorDetail)(nil), // 44: grpc.federation.generator.plugin.GRPCErrorDetail + (*PreconditionFailure)(nil), // 45: grpc.federation.generator.plugin.PreconditionFailure + (*PreconditionFailureViolation)(nil), // 46: grpc.federation.generator.plugin.PreconditionFailureViolation + (*BadRequest)(nil), // 47: grpc.federation.generator.plugin.BadRequest + (*BadRequestFieldViolation)(nil), // 48: grpc.federation.generator.plugin.BadRequestFieldViolation + (*LocalizedMessage)(nil), // 49: grpc.federation.generator.plugin.LocalizedMessage + (*Oneof)(nil), // 50: grpc.federation.generator.plugin.Oneof + (*Enum)(nil), // 51: grpc.federation.generator.plugin.Enum + (*EnumValue)(nil), // 52: grpc.federation.generator.plugin.EnumValue + (*EnumRule)(nil), // 53: grpc.federation.generator.plugin.EnumRule + (*EnumValueRule)(nil), // 54: grpc.federation.generator.plugin.EnumValueRule + (*EnumValueAlias)(nil), // 55: grpc.federation.generator.plugin.EnumValueAlias + (*CELPlugin)(nil), // 56: grpc.federation.generator.plugin.CELPlugin + (*CELFunction)(nil), // 57: grpc.federation.generator.plugin.CELFunction + (*ProtoCodeGeneratorResponse_GeneratedCodeInfo)(nil), // 58: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo + (*ProtoCodeGeneratorResponse_File)(nil), // 59: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File + (*ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation)(nil), // 60: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation + nil, // 61: grpc.federation.generator.plugin.Reference.FileMapEntry + nil, // 62: grpc.federation.generator.plugin.Reference.ServiceMapEntry + nil, // 63: grpc.federation.generator.plugin.Reference.MethodMapEntry + nil, // 64: grpc.federation.generator.plugin.Reference.MessageMapEntry + nil, // 65: grpc.federation.generator.plugin.Reference.FieldMapEntry + nil, // 66: grpc.federation.generator.plugin.Reference.EnumMapEntry + nil, // 67: grpc.federation.generator.plugin.Reference.EnumValueMapEntry + nil, // 68: grpc.federation.generator.plugin.Reference.OneofMapEntry + nil, // 69: grpc.federation.generator.plugin.Reference.CelPluginMapEntry + nil, // 70: grpc.federation.generator.plugin.Reference.GraphMapEntry + nil, // 71: grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry + nil, // 72: grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry + (*durationpb.Duration)(nil), // 73: google.protobuf.Duration + (code.Code)(0), // 74: google.rpc.Code } var file_grpc_federation_generator_proto_depIdxs = []int32{ - 58, // 0: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.file:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File + 59, // 0: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.file:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File 0, // 1: grpc.federation.generator.plugin.CodeGeneratorRequest.type:type_name -> grpc.federation.generator.plugin.ActionType - 58, // 2: grpc.federation.generator.plugin.CodeGeneratorRequest.files:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File + 59, // 2: grpc.federation.generator.plugin.CodeGeneratorRequest.files:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File 6, // 3: grpc.federation.generator.plugin.CodeGeneratorRequest.reference:type_name -> grpc.federation.generator.plugin.Reference - 60, // 4: grpc.federation.generator.plugin.Reference.file_map:type_name -> grpc.federation.generator.plugin.Reference.FileMapEntry - 61, // 5: grpc.federation.generator.plugin.Reference.service_map:type_name -> grpc.federation.generator.plugin.Reference.ServiceMapEntry - 62, // 6: grpc.federation.generator.plugin.Reference.method_map:type_name -> grpc.federation.generator.plugin.Reference.MethodMapEntry - 63, // 7: grpc.federation.generator.plugin.Reference.message_map:type_name -> grpc.federation.generator.plugin.Reference.MessageMapEntry - 64, // 8: grpc.federation.generator.plugin.Reference.field_map:type_name -> grpc.federation.generator.plugin.Reference.FieldMapEntry - 65, // 9: grpc.federation.generator.plugin.Reference.enum_map:type_name -> grpc.federation.generator.plugin.Reference.EnumMapEntry - 66, // 10: grpc.federation.generator.plugin.Reference.enum_value_map:type_name -> grpc.federation.generator.plugin.Reference.EnumValueMapEntry - 67, // 11: grpc.federation.generator.plugin.Reference.oneof_map:type_name -> grpc.federation.generator.plugin.Reference.OneofMapEntry - 68, // 12: grpc.federation.generator.plugin.Reference.cel_plugin_map:type_name -> grpc.federation.generator.plugin.Reference.CelPluginMapEntry - 69, // 13: grpc.federation.generator.plugin.Reference.graph_map:type_name -> grpc.federation.generator.plugin.Reference.GraphMapEntry - 70, // 14: grpc.federation.generator.plugin.Reference.variable_definition_map:type_name -> grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry - 71, // 15: grpc.federation.generator.plugin.Reference.variable_definition_group_map:type_name -> grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry + 61, // 4: grpc.federation.generator.plugin.Reference.file_map:type_name -> grpc.federation.generator.plugin.Reference.FileMapEntry + 62, // 5: grpc.federation.generator.plugin.Reference.service_map:type_name -> grpc.federation.generator.plugin.Reference.ServiceMapEntry + 63, // 6: grpc.federation.generator.plugin.Reference.method_map:type_name -> grpc.federation.generator.plugin.Reference.MethodMapEntry + 64, // 7: grpc.federation.generator.plugin.Reference.message_map:type_name -> grpc.federation.generator.plugin.Reference.MessageMapEntry + 65, // 8: grpc.federation.generator.plugin.Reference.field_map:type_name -> grpc.federation.generator.plugin.Reference.FieldMapEntry + 66, // 9: grpc.federation.generator.plugin.Reference.enum_map:type_name -> grpc.federation.generator.plugin.Reference.EnumMapEntry + 67, // 10: grpc.federation.generator.plugin.Reference.enum_value_map:type_name -> grpc.federation.generator.plugin.Reference.EnumValueMapEntry + 68, // 11: grpc.federation.generator.plugin.Reference.oneof_map:type_name -> grpc.federation.generator.plugin.Reference.OneofMapEntry + 69, // 12: grpc.federation.generator.plugin.Reference.cel_plugin_map:type_name -> grpc.federation.generator.plugin.Reference.CelPluginMapEntry + 70, // 13: grpc.federation.generator.plugin.Reference.graph_map:type_name -> grpc.federation.generator.plugin.Reference.GraphMapEntry + 71, // 14: grpc.federation.generator.plugin.Reference.variable_definition_map:type_name -> grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry + 72, // 15: grpc.federation.generator.plugin.Reference.variable_definition_group_map:type_name -> grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry 8, // 16: grpc.federation.generator.plugin.File.package:type_name -> grpc.federation.generator.plugin.Package 9, // 17: grpc.federation.generator.plugin.File.go_package:type_name -> grpc.federation.generator.plugin.GoPackage 11, // 18: grpc.federation.generator.plugin.Service.rule:type_name -> grpc.federation.generator.plugin.ServiceRule 13, // 19: grpc.federation.generator.plugin.Method.rule:type_name -> grpc.federation.generator.plugin.MethodRule - 72, // 20: grpc.federation.generator.plugin.MethodRule.timeout:type_name -> google.protobuf.Duration + 73, // 20: grpc.federation.generator.plugin.MethodRule.timeout:type_name -> google.protobuf.Duration 15, // 21: grpc.federation.generator.plugin.Message.rule:type_name -> grpc.federation.generator.plugin.MessageRule 16, // 22: grpc.federation.generator.plugin.MessageRule.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet 29, // 23: grpc.federation.generator.plugin.VariableDefinition.if:type_name -> grpc.federation.generator.plugin.CELValue 27, // 24: grpc.federation.generator.plugin.VariableDefinition.expr:type_name -> grpc.federation.generator.plugin.VariableExpr 28, // 25: grpc.federation.generator.plugin.Field.type:type_name -> grpc.federation.generator.plugin.Type 19, // 26: grpc.federation.generator.plugin.Field.rule:type_name -> grpc.federation.generator.plugin.FieldRule - 40, // 27: grpc.federation.generator.plugin.FieldRule.value:type_name -> grpc.federation.generator.plugin.Value + 41, // 27: grpc.federation.generator.plugin.FieldRule.value:type_name -> grpc.federation.generator.plugin.Value 20, // 28: grpc.federation.generator.plugin.FieldRule.auto_bind_field:type_name -> grpc.federation.generator.plugin.AutoBindField 21, // 29: grpc.federation.generator.plugin.FieldRule.oneof_rule:type_name -> grpc.federation.generator.plugin.FieldOneofRule 29, // 30: grpc.federation.generator.plugin.FieldOneofRule.if:type_name -> grpc.federation.generator.plugin.CELValue @@ -5397,79 +5496,82 @@ var file_grpc_federation_generator_proto_depIdxs = []int32{ 30, // 39: grpc.federation.generator.plugin.VariableExpr.map:type_name -> grpc.federation.generator.plugin.MapExpr 33, // 40: grpc.federation.generator.plugin.VariableExpr.call:type_name -> grpc.federation.generator.plugin.CallExpr 38, // 41: grpc.federation.generator.plugin.VariableExpr.message:type_name -> grpc.federation.generator.plugin.MessageExpr - 41, // 42: grpc.federation.generator.plugin.VariableExpr.validation:type_name -> grpc.federation.generator.plugin.ValidationExpr - 1, // 43: grpc.federation.generator.plugin.Type.kind:type_name -> grpc.federation.generator.plugin.TypeKind - 28, // 44: grpc.federation.generator.plugin.CELValue.out:type_name -> grpc.federation.generator.plugin.Type - 31, // 45: grpc.federation.generator.plugin.MapExpr.iterator:type_name -> grpc.federation.generator.plugin.Iterator - 32, // 46: grpc.federation.generator.plugin.MapExpr.expr:type_name -> grpc.federation.generator.plugin.MapIteratorExpr - 28, // 47: grpc.federation.generator.plugin.MapIteratorExpr.type:type_name -> grpc.federation.generator.plugin.Type - 29, // 48: grpc.federation.generator.plugin.MapIteratorExpr.by:type_name -> grpc.federation.generator.plugin.CELValue - 38, // 49: grpc.federation.generator.plugin.MapIteratorExpr.message:type_name -> grpc.federation.generator.plugin.MessageExpr - 37, // 50: grpc.federation.generator.plugin.CallExpr.request:type_name -> grpc.federation.generator.plugin.Request - 72, // 51: grpc.federation.generator.plugin.CallExpr.timeout:type_name -> google.protobuf.Duration - 34, // 52: grpc.federation.generator.plugin.CallExpr.retry:type_name -> grpc.federation.generator.plugin.RetryPolicy - 42, // 53: grpc.federation.generator.plugin.CallExpr.errors:type_name -> grpc.federation.generator.plugin.GRPCError - 35, // 54: grpc.federation.generator.plugin.RetryPolicy.constant:type_name -> grpc.federation.generator.plugin.RetryPolicyConstant - 36, // 55: grpc.federation.generator.plugin.RetryPolicy.exponential:type_name -> grpc.federation.generator.plugin.RetryPolicyExponential - 29, // 56: grpc.federation.generator.plugin.RetryPolicy.if:type_name -> grpc.federation.generator.plugin.CELValue - 72, // 57: grpc.federation.generator.plugin.RetryPolicyConstant.interval:type_name -> google.protobuf.Duration - 72, // 58: grpc.federation.generator.plugin.RetryPolicyExponential.initial_interval:type_name -> google.protobuf.Duration - 72, // 59: grpc.federation.generator.plugin.RetryPolicyExponential.max_interval:type_name -> google.protobuf.Duration - 72, // 60: grpc.federation.generator.plugin.RetryPolicyExponential.max_elapsed_time:type_name -> google.protobuf.Duration - 39, // 61: grpc.federation.generator.plugin.Request.args:type_name -> grpc.federation.generator.plugin.Argument - 39, // 62: grpc.federation.generator.plugin.MessageExpr.args:type_name -> grpc.federation.generator.plugin.Argument - 28, // 63: grpc.federation.generator.plugin.Argument.type:type_name -> grpc.federation.generator.plugin.Type - 40, // 64: grpc.federation.generator.plugin.Argument.value:type_name -> grpc.federation.generator.plugin.Value - 29, // 65: grpc.federation.generator.plugin.Argument.if:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 66: grpc.federation.generator.plugin.Value.cel:type_name -> grpc.federation.generator.plugin.CELValue - 42, // 67: grpc.federation.generator.plugin.ValidationExpr.error:type_name -> grpc.federation.generator.plugin.GRPCError - 16, // 68: grpc.federation.generator.plugin.GRPCError.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet - 29, // 69: grpc.federation.generator.plugin.GRPCError.if:type_name -> grpc.federation.generator.plugin.CELValue - 73, // 70: grpc.federation.generator.plugin.GRPCError.code:type_name -> google.rpc.Code - 29, // 71: grpc.federation.generator.plugin.GRPCError.message:type_name -> grpc.federation.generator.plugin.CELValue - 43, // 72: grpc.federation.generator.plugin.GRPCError.details:type_name -> grpc.federation.generator.plugin.GRPCErrorDetail - 29, // 73: grpc.federation.generator.plugin.GRPCError.ignore_and_response:type_name -> grpc.federation.generator.plugin.CELValue - 16, // 74: grpc.federation.generator.plugin.GRPCErrorDetail.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet - 29, // 75: grpc.federation.generator.plugin.GRPCErrorDetail.if:type_name -> grpc.federation.generator.plugin.CELValue - 16, // 76: grpc.federation.generator.plugin.GRPCErrorDetail.messages:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet - 44, // 77: grpc.federation.generator.plugin.GRPCErrorDetail.precondition_failures:type_name -> grpc.federation.generator.plugin.PreconditionFailure - 46, // 78: grpc.federation.generator.plugin.GRPCErrorDetail.bad_requests:type_name -> grpc.federation.generator.plugin.BadRequest - 48, // 79: grpc.federation.generator.plugin.GRPCErrorDetail.localized_messages:type_name -> grpc.federation.generator.plugin.LocalizedMessage - 29, // 80: grpc.federation.generator.plugin.GRPCErrorDetail.by:type_name -> grpc.federation.generator.plugin.CELValue - 45, // 81: grpc.federation.generator.plugin.PreconditionFailure.violations:type_name -> grpc.federation.generator.plugin.PreconditionFailureViolation - 29, // 82: grpc.federation.generator.plugin.PreconditionFailureViolation.type:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 83: grpc.federation.generator.plugin.PreconditionFailureViolation.subject:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 84: grpc.federation.generator.plugin.PreconditionFailureViolation.description:type_name -> grpc.federation.generator.plugin.CELValue - 47, // 85: grpc.federation.generator.plugin.BadRequest.field_violations:type_name -> grpc.federation.generator.plugin.BadRequestFieldViolation - 29, // 86: grpc.federation.generator.plugin.BadRequestFieldViolation.field:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 87: grpc.federation.generator.plugin.BadRequestFieldViolation.description:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 88: grpc.federation.generator.plugin.LocalizedMessage.message:type_name -> grpc.federation.generator.plugin.CELValue - 52, // 89: grpc.federation.generator.plugin.Enum.rule:type_name -> grpc.federation.generator.plugin.EnumRule - 53, // 90: grpc.federation.generator.plugin.EnumValue.rule:type_name -> grpc.federation.generator.plugin.EnumValueRule - 54, // 91: grpc.federation.generator.plugin.EnumValueRule.aliases:type_name -> grpc.federation.generator.plugin.EnumValueAlias - 56, // 92: grpc.federation.generator.plugin.CELPlugin.functions:type_name -> grpc.federation.generator.plugin.CELFunction - 28, // 93: grpc.federation.generator.plugin.CELFunction.args:type_name -> grpc.federation.generator.plugin.Type - 28, // 94: grpc.federation.generator.plugin.CELFunction.return:type_name -> grpc.federation.generator.plugin.Type - 59, // 95: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.annotation:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation - 57, // 96: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File.generated_code_info:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo - 3, // 97: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation.semantic:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation.Semantic - 7, // 98: grpc.federation.generator.plugin.Reference.FileMapEntry.value:type_name -> grpc.federation.generator.plugin.File - 10, // 99: grpc.federation.generator.plugin.Reference.ServiceMapEntry.value:type_name -> grpc.federation.generator.plugin.Service - 12, // 100: grpc.federation.generator.plugin.Reference.MethodMapEntry.value:type_name -> grpc.federation.generator.plugin.Method - 14, // 101: grpc.federation.generator.plugin.Reference.MessageMapEntry.value:type_name -> grpc.federation.generator.plugin.Message - 18, // 102: grpc.federation.generator.plugin.Reference.FieldMapEntry.value:type_name -> grpc.federation.generator.plugin.Field - 50, // 103: grpc.federation.generator.plugin.Reference.EnumMapEntry.value:type_name -> grpc.federation.generator.plugin.Enum - 51, // 104: grpc.federation.generator.plugin.Reference.EnumValueMapEntry.value:type_name -> grpc.federation.generator.plugin.EnumValue - 49, // 105: grpc.federation.generator.plugin.Reference.OneofMapEntry.value:type_name -> grpc.federation.generator.plugin.Oneof - 55, // 106: grpc.federation.generator.plugin.Reference.CelPluginMapEntry.value:type_name -> grpc.federation.generator.plugin.CELPlugin - 25, // 107: grpc.federation.generator.plugin.Reference.GraphMapEntry.value:type_name -> grpc.federation.generator.plugin.MessageDependencyGraph - 17, // 108: grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry.value:type_name -> grpc.federation.generator.plugin.VariableDefinition - 22, // 109: grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry.value:type_name -> grpc.federation.generator.plugin.VariableDefinitionGroup - 110, // [110:110] is the sub-list for method output_type - 110, // [110:110] is the sub-list for method input_type - 110, // [110:110] is the sub-list for extension type_name - 110, // [110:110] is the sub-list for extension extendee - 0, // [0:110] is the sub-list for field type_name + 42, // 42: grpc.federation.generator.plugin.VariableExpr.validation:type_name -> grpc.federation.generator.plugin.ValidationExpr + 39, // 43: grpc.federation.generator.plugin.VariableExpr.enum:type_name -> grpc.federation.generator.plugin.EnumExpr + 1, // 44: grpc.federation.generator.plugin.Type.kind:type_name -> grpc.federation.generator.plugin.TypeKind + 28, // 45: grpc.federation.generator.plugin.CELValue.out:type_name -> grpc.federation.generator.plugin.Type + 31, // 46: grpc.federation.generator.plugin.MapExpr.iterator:type_name -> grpc.federation.generator.plugin.Iterator + 32, // 47: grpc.federation.generator.plugin.MapExpr.expr:type_name -> grpc.federation.generator.plugin.MapIteratorExpr + 28, // 48: grpc.federation.generator.plugin.MapIteratorExpr.type:type_name -> grpc.federation.generator.plugin.Type + 29, // 49: grpc.federation.generator.plugin.MapIteratorExpr.by:type_name -> grpc.federation.generator.plugin.CELValue + 38, // 50: grpc.federation.generator.plugin.MapIteratorExpr.message:type_name -> grpc.federation.generator.plugin.MessageExpr + 39, // 51: grpc.federation.generator.plugin.MapIteratorExpr.enum:type_name -> grpc.federation.generator.plugin.EnumExpr + 37, // 52: grpc.federation.generator.plugin.CallExpr.request:type_name -> grpc.federation.generator.plugin.Request + 73, // 53: grpc.federation.generator.plugin.CallExpr.timeout:type_name -> google.protobuf.Duration + 34, // 54: grpc.federation.generator.plugin.CallExpr.retry:type_name -> grpc.federation.generator.plugin.RetryPolicy + 43, // 55: grpc.federation.generator.plugin.CallExpr.errors:type_name -> grpc.federation.generator.plugin.GRPCError + 35, // 56: grpc.federation.generator.plugin.RetryPolicy.constant:type_name -> grpc.federation.generator.plugin.RetryPolicyConstant + 36, // 57: grpc.federation.generator.plugin.RetryPolicy.exponential:type_name -> grpc.federation.generator.plugin.RetryPolicyExponential + 29, // 58: grpc.federation.generator.plugin.RetryPolicy.if:type_name -> grpc.federation.generator.plugin.CELValue + 73, // 59: grpc.federation.generator.plugin.RetryPolicyConstant.interval:type_name -> google.protobuf.Duration + 73, // 60: grpc.federation.generator.plugin.RetryPolicyExponential.initial_interval:type_name -> google.protobuf.Duration + 73, // 61: grpc.federation.generator.plugin.RetryPolicyExponential.max_interval:type_name -> google.protobuf.Duration + 73, // 62: grpc.federation.generator.plugin.RetryPolicyExponential.max_elapsed_time:type_name -> google.protobuf.Duration + 40, // 63: grpc.federation.generator.plugin.Request.args:type_name -> grpc.federation.generator.plugin.Argument + 40, // 64: grpc.federation.generator.plugin.MessageExpr.args:type_name -> grpc.federation.generator.plugin.Argument + 29, // 65: grpc.federation.generator.plugin.EnumExpr.by:type_name -> grpc.federation.generator.plugin.CELValue + 28, // 66: grpc.federation.generator.plugin.Argument.type:type_name -> grpc.federation.generator.plugin.Type + 41, // 67: grpc.federation.generator.plugin.Argument.value:type_name -> grpc.federation.generator.plugin.Value + 29, // 68: grpc.federation.generator.plugin.Argument.if:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 69: grpc.federation.generator.plugin.Value.cel:type_name -> grpc.federation.generator.plugin.CELValue + 43, // 70: grpc.federation.generator.plugin.ValidationExpr.error:type_name -> grpc.federation.generator.plugin.GRPCError + 16, // 71: grpc.federation.generator.plugin.GRPCError.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet + 29, // 72: grpc.federation.generator.plugin.GRPCError.if:type_name -> grpc.federation.generator.plugin.CELValue + 74, // 73: grpc.federation.generator.plugin.GRPCError.code:type_name -> google.rpc.Code + 29, // 74: grpc.federation.generator.plugin.GRPCError.message:type_name -> grpc.federation.generator.plugin.CELValue + 44, // 75: grpc.federation.generator.plugin.GRPCError.details:type_name -> grpc.federation.generator.plugin.GRPCErrorDetail + 29, // 76: grpc.federation.generator.plugin.GRPCError.ignore_and_response:type_name -> grpc.federation.generator.plugin.CELValue + 16, // 77: grpc.federation.generator.plugin.GRPCErrorDetail.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet + 29, // 78: grpc.federation.generator.plugin.GRPCErrorDetail.if:type_name -> grpc.federation.generator.plugin.CELValue + 16, // 79: grpc.federation.generator.plugin.GRPCErrorDetail.messages:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet + 45, // 80: grpc.federation.generator.plugin.GRPCErrorDetail.precondition_failures:type_name -> grpc.federation.generator.plugin.PreconditionFailure + 47, // 81: grpc.federation.generator.plugin.GRPCErrorDetail.bad_requests:type_name -> grpc.federation.generator.plugin.BadRequest + 49, // 82: grpc.federation.generator.plugin.GRPCErrorDetail.localized_messages:type_name -> grpc.federation.generator.plugin.LocalizedMessage + 29, // 83: grpc.federation.generator.plugin.GRPCErrorDetail.by:type_name -> grpc.federation.generator.plugin.CELValue + 46, // 84: grpc.federation.generator.plugin.PreconditionFailure.violations:type_name -> grpc.federation.generator.plugin.PreconditionFailureViolation + 29, // 85: grpc.federation.generator.plugin.PreconditionFailureViolation.type:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 86: grpc.federation.generator.plugin.PreconditionFailureViolation.subject:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 87: grpc.federation.generator.plugin.PreconditionFailureViolation.description:type_name -> grpc.federation.generator.plugin.CELValue + 48, // 88: grpc.federation.generator.plugin.BadRequest.field_violations:type_name -> grpc.federation.generator.plugin.BadRequestFieldViolation + 29, // 89: grpc.federation.generator.plugin.BadRequestFieldViolation.field:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 90: grpc.federation.generator.plugin.BadRequestFieldViolation.description:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 91: grpc.federation.generator.plugin.LocalizedMessage.message:type_name -> grpc.federation.generator.plugin.CELValue + 53, // 92: grpc.federation.generator.plugin.Enum.rule:type_name -> grpc.federation.generator.plugin.EnumRule + 54, // 93: grpc.federation.generator.plugin.EnumValue.rule:type_name -> grpc.federation.generator.plugin.EnumValueRule + 55, // 94: grpc.federation.generator.plugin.EnumValueRule.aliases:type_name -> grpc.federation.generator.plugin.EnumValueAlias + 57, // 95: grpc.federation.generator.plugin.CELPlugin.functions:type_name -> grpc.federation.generator.plugin.CELFunction + 28, // 96: grpc.federation.generator.plugin.CELFunction.args:type_name -> grpc.federation.generator.plugin.Type + 28, // 97: grpc.federation.generator.plugin.CELFunction.return:type_name -> grpc.federation.generator.plugin.Type + 60, // 98: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.annotation:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation + 58, // 99: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File.generated_code_info:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo + 3, // 100: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation.semantic:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation.Semantic + 7, // 101: grpc.federation.generator.plugin.Reference.FileMapEntry.value:type_name -> grpc.federation.generator.plugin.File + 10, // 102: grpc.federation.generator.plugin.Reference.ServiceMapEntry.value:type_name -> grpc.federation.generator.plugin.Service + 12, // 103: grpc.federation.generator.plugin.Reference.MethodMapEntry.value:type_name -> grpc.federation.generator.plugin.Method + 14, // 104: grpc.federation.generator.plugin.Reference.MessageMapEntry.value:type_name -> grpc.federation.generator.plugin.Message + 18, // 105: grpc.federation.generator.plugin.Reference.FieldMapEntry.value:type_name -> grpc.federation.generator.plugin.Field + 51, // 106: grpc.federation.generator.plugin.Reference.EnumMapEntry.value:type_name -> grpc.federation.generator.plugin.Enum + 52, // 107: grpc.federation.generator.plugin.Reference.EnumValueMapEntry.value:type_name -> grpc.federation.generator.plugin.EnumValue + 50, // 108: grpc.federation.generator.plugin.Reference.OneofMapEntry.value:type_name -> grpc.federation.generator.plugin.Oneof + 56, // 109: grpc.federation.generator.plugin.Reference.CelPluginMapEntry.value:type_name -> grpc.federation.generator.plugin.CELPlugin + 25, // 110: grpc.federation.generator.plugin.Reference.GraphMapEntry.value:type_name -> grpc.federation.generator.plugin.MessageDependencyGraph + 17, // 111: grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry.value:type_name -> grpc.federation.generator.plugin.VariableDefinition + 22, // 112: grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry.value:type_name -> grpc.federation.generator.plugin.VariableDefinitionGroup + 113, // [113:113] is the sub-list for method output_type + 113, // [113:113] is the sub-list for method input_type + 113, // [113:113] is the sub-list for extension type_name + 113, // [113:113] is the sub-list for extension extendee + 0, // [0:113] is the sub-list for field type_name } func init() { file_grpc_federation_generator_proto_init() } @@ -5899,7 +6001,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -5911,7 +6013,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -5923,7 +6025,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*Value); i { case 0: return &v.state case 1: @@ -5935,7 +6037,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -5947,7 +6049,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -5959,7 +6061,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PreconditionFailure); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -5971,7 +6073,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PreconditionFailureViolation); i { + switch v := v.(*PreconditionFailure); i { case 0: return &v.state case 1: @@ -5983,7 +6085,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BadRequest); i { + switch v := v.(*PreconditionFailureViolation); i { case 0: return &v.state case 1: @@ -5995,7 +6097,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BadRequestFieldViolation); i { + switch v := v.(*BadRequest); i { case 0: return &v.state case 1: @@ -6007,7 +6109,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LocalizedMessage); i { + switch v := v.(*BadRequestFieldViolation); i { case 0: return &v.state case 1: @@ -6019,7 +6121,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Oneof); i { + switch v := v.(*LocalizedMessage); i { case 0: return &v.state case 1: @@ -6031,7 +6133,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Enum); i { + switch v := v.(*Oneof); i { case 0: return &v.state case 1: @@ -6043,7 +6145,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnumValue); i { + switch v := v.(*Enum); i { case 0: return &v.state case 1: @@ -6055,7 +6157,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnumRule); i { + switch v := v.(*EnumValue); i { case 0: return &v.state case 1: @@ -6067,7 +6169,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnumValueRule); i { + switch v := v.(*EnumRule); i { case 0: return &v.state case 1: @@ -6079,7 +6181,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnumValueAlias); i { + switch v := v.(*EnumValueRule); i { case 0: return &v.state case 1: @@ -6091,7 +6193,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*EnumValueAlias); i { case 0: return &v.state case 1: @@ -6103,7 +6205,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -6115,7 +6217,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtoCodeGeneratorResponse_GeneratedCodeInfo); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -6127,7 +6229,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtoCodeGeneratorResponse_File); i { + switch v := v.(*ProtoCodeGeneratorResponse_GeneratedCodeInfo); i { case 0: return &v.state case 1: @@ -6139,6 +6241,18 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProtoCodeGeneratorResponse_File); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_generator_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation); i { case 0: return &v.state @@ -6162,6 +6276,7 @@ func file_grpc_federation_generator_proto_init() { (*VariableExpr_Call)(nil), (*VariableExpr_Message)(nil), (*VariableExpr_Validation)(nil), + (*VariableExpr_Enum)(nil), } file_grpc_federation_generator_proto_msgTypes[24].OneofWrappers = []interface{}{ (*Type_MessageId)(nil), @@ -6171,21 +6286,22 @@ func file_grpc_federation_generator_proto_init() { file_grpc_federation_generator_proto_msgTypes[28].OneofWrappers = []interface{}{ (*MapIteratorExpr_By)(nil), (*MapIteratorExpr_Message)(nil), + (*MapIteratorExpr_Enum)(nil), } file_grpc_federation_generator_proto_msgTypes[30].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_generator_proto_msgTypes[38].OneofWrappers = []interface{}{} - file_grpc_federation_generator_proto_msgTypes[54].OneofWrappers = []interface{}{} + file_grpc_federation_generator_proto_msgTypes[39].OneofWrappers = []interface{}{} file_grpc_federation_generator_proto_msgTypes[55].OneofWrappers = []interface{}{} + file_grpc_federation_generator_proto_msgTypes[56].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_generator_proto_rawDesc, NumEnums: 4, - NumMessages: 68, + NumMessages: 69, NumExtensions: 0, NumServices: 0, }, diff --git a/docs/references.md b/docs/references.md index 38a7dc31..467c4251 100644 --- a/docs/references.md +++ b/docs/references.md @@ -380,6 +380,7 @@ The value to be assigned to a variable can be created with the following feature | [`by`](#grpcfederationmessagedefby) | [CEL](./cel.md) | optional | | [`call`](#grpcfederationmessagedefcall) | CallExpr | optional | | [`message`](#grpcfederationmessagedefmessage) | MessageExpr | optional | +| [`enum`](#grpcfederationmessagedefenum) | EnumExpr | optional | | [`map`](#grpcfederationmessagedefmap) | MapExpr | optional | | [`validation`](#grpcfederationmessagedefvalidation) | ValidationExpr | optional | @@ -1081,6 +1082,51 @@ You need to use `$.` to refer to the message argument. `inline` like `by`, it refers to the specified value and expands all fields beyond it. For this reason, the referenced value must always be of message type. +## (grpc.federation.message).def.enum + +`enum` is a feature designed to create enum values defined in the federation package. If you want to create enum values in the federation package based on enum values defined in a dependency package, this feature will be useful. + +### Example + +In this example, the value of `dep.Type.TYPE_1` is converted to the type `mypkg.MyType`. If the conversion fails, it is logged. + +```proto +package mypkg; + +message MyMessage { + option (grpc.federation.message) = { + def { + name: "v" + enum { + name: "MyType" + by: "dep.Type.TYPE_1" + } + } + def { + if: "v == MyType.TYPE_UNSPECIFIED" + by: "grpc.federation.log.warn('got unexpected type')" + } + }; +} + +enum MyType { + option (grpc.federation.enum).alias = "dep.Type"; + + TYPE_UNSPECIFIED = 1 [(grpc.federation.enum_value).default = true]; + TYPE_1 = 2; + TYPE_2 = 3; +} +``` + +```proto +package dep; + +enum Type { + TYPE_1 = 1; + TYPE_2 = 2; +} +``` + ## (grpc.federation.message).def.map | field | type | required or optional | @@ -1088,6 +1134,7 @@ For this reason, the referenced value must always be of message type. | [`iterator`](#grpcfederationmessagedefmapiterator) | Iterator | required | | [`by`](#grpcfederationmessagedefmapby) | [CEL](./cel.md) | optional | | [`message`](#grpcfederationmessagedefmapmessage) | MessageExpr | optional | +| [`enum`](#grpcfederationmessagedefmapenum) | EnumExpr | optional | ## (grpc.federation.message).def.map.iterator @@ -1158,6 +1205,10 @@ Create map elements using [`CEL`](./cel.md) by referencing variables created wit Create map elements using `message` value by referencing variables created with `iterator` section. +## (grpc.federation.message).def.map.enum + +Create map elements using `enum` value by referencing variables created with `iterator` section. + ## (grpc.federation.message).def.validation A validation rule against variables defined within the current scope. diff --git a/generator/code_generator.go b/generator/code_generator.go index 95162d1e..a8b85e94 100644 --- a/generator/code_generator.go +++ b/generator/code_generator.go @@ -2967,6 +2967,10 @@ func (d *VariableDefinition) IsBy() bool { return d.VariableDefinition.Expr.By != nil } +func (d *VariableDefinition) IsEnum() bool { + return d.VariableDefinition.Expr.Enum != nil +} + func (d *VariableDefinition) IsMap() bool { return d.VariableDefinition.Expr.Map != nil } @@ -2991,6 +2995,10 @@ func (d *VariableDefinition) By() *resolver.CELValue { return d.VariableDefinition.Expr.By } +func (d *VariableDefinition) Enum() *resolver.EnumExpr { + return d.VariableDefinition.Expr.Enum +} + func (d *VariableDefinition) ZeroValue() string { return toMakeZeroValue(d.Message.file, d.VariableDefinition.Expr.Type) } @@ -3004,9 +3012,40 @@ func (d *VariableDefinition) ProtoComment() string { } func (d *VariableDefinition) Type() string { + if typ := d.enumType(); typ != nil { + return d.Message.file.toTypeText(typ) + } return d.Message.file.toTypeText(d.VariableDefinition.Expr.Type) } +func (d *VariableDefinition) enumType() *resolver.Type { + if d.VariableDefinition.Expr.Enum != nil { + return d.VariableDefinition.Expr.Enum.By.Out + } + if d.VariableDefinition.Expr.Map != nil && d.VariableDefinition.Expr.Map.Expr.Enum != nil { + typ := d.VariableDefinition.Expr.Map.Expr.Enum.By.Out.Clone() + typ.Repeated = true + return typ + } + return nil +} + +func (d *VariableDefinition) EnumCastFunc() string { + typ := d.enumType() + if typ == nil { + return "v" + } + if typ.Enum == d.VariableDefinition.Expr.Type.Enum { + return "v" + } + return fmt.Sprintf("s.%s(v)", + castFuncName( + typ, + d.VariableDefinition.Expr.Type, + ), + ) +} + func (d *VariableDefinition) CELType() string { return toCELNativeType(d.VariableDefinition.Expr.Type) } @@ -3052,7 +3091,12 @@ func (r *MapResolver) IteratorType() string { } func (r *MapResolver) IteratorZeroValue() string { - iterType := r.MapExpr.Expr.Type.Clone() + var iterType *resolver.Type + if r.MapExpr.Expr.Enum != nil { + iterType = r.MapExpr.Expr.Enum.By.Out.Clone() + } else { + iterType = r.MapExpr.Expr.Type.Clone() + } iterType.Repeated = false return toMakeZeroValue(r.file, iterType) } @@ -3075,6 +3119,10 @@ func (r *MapResolver) IsMessage() bool { return r.MapExpr.Expr.Message != nil } +func (r *MapResolver) IsEnum() bool { + return r.MapExpr.Expr.Enum != nil +} + func (r *MapResolver) Arguments() []*Argument { return arguments(r.file, r.MapExpr.Expr.ToVariableExpr()) } diff --git a/generator/templates/eval.go.tmpl b/generator/templates/eval.go.tmpl index d615c2fe..059c0c5e 100644 --- a/generator/templates/eval.go.tmpl +++ b/generator/templates/eval.go.tmpl @@ -13,10 +13,21 @@ def_{{ .Key }} := func(ctx context.Context) error { {{- end }} Name: `{{ .Key }}`, Type: {{ .CELType }}, + {{- if $mapResolver.IsEnum }} + Setter: func(value *localValueType, v {{ .Type }}) error { + dst, err := {{ .EnumCastFunc }} + if err != nil { + return err + } + value.vars.{{ .Key }} = dst + return nil + }, + {{- else }} Setter: func(value *localValueType, v {{ .Type }}) error { value.vars.{{ .Key }} = v return nil }, + {{- end }} IteratorName: `{{ $mapResolver.IteratorName }}`, IteratorType: {{ $mapResolver.IteratorCELType }}, IteratorSource: func(value *localValueType) []{{ $mapResolver.IteratorSourceType }}{ return {{ $mapResolver.IteratorSource }} }, @@ -29,6 +40,14 @@ def_{{ .Key }} := func(ctx context.Context) error { OutType: reflect.TypeOf({{ $mapResolver.IteratorZeroValue }}), CacheIndex: {{ .CELCacheIndex }}, }) + {{- else if $mapResolver.IsEnum }} + {{- $enumExpr := $mapResolver.MapExpr.Expr.Enum }} + return grpcfed.EvalCEL(ctx, &grpcfed.EvalCELRequest{ + Value: value, + Expr: `{{ $enumExpr.By.Expr }}`, + OutType: reflect.TypeOf({{ $mapResolver.IteratorZeroValue }}), + CacheIndex: {{ .CELCacheIndex }}, + }) {{- else if $mapResolver.IsMessage }} {{- $arguments := $mapResolver.Arguments }} args := &{{ $mapResolver.Service.ServiceName }}_{{ $mapResolver.RequestType }}{ @@ -53,13 +72,27 @@ def_{{ .Key }} := func(ctx context.Context) error { {{- end }} Name: `{{ .Key }}`, Type: {{ .CELType }}, + {{- if .IsEnum }} + Setter: func(value *localValueType, v {{ .Type }}) error { + dst, err := {{ .EnumCastFunc }} + if err != nil { + return err + } + value.vars.{{ .Key }} = dst + return nil + }, + {{- else }} Setter: func(value *localValueType, v {{ .Type }}) error { value.vars.{{ .Key }} = v return nil }, + {{- end }} {{- if .IsBy }} By: `{{ .By.Expr }}`, ByCacheIndex: {{ .CELCacheIndex }}, + {{- else if .IsEnum }} + By: `{{ .Enum.By.Expr }}`, + ByCacheIndex: {{ .CELCacheIndex }}, {{- else if .IsValidation }} Validation: func(ctx context.Context, value *localValueType) error { {{- template "messageValidation" (map "Ctx" "ctx" "Error" .ValidationError) }} diff --git a/generator/testdata/expected_map.go b/generator/testdata/expected_map.go index ab5333b2..1a1871bc 100644 --- a/generator/testdata/expected_map.go +++ b/generator/testdata/expected_map.go @@ -33,12 +33,14 @@ type FederationService_Org_Federation_GetPostsResponseArgument struct { // Org_Federation_PostsArgument is argument for "org.federation.Posts" message. type FederationService_Org_Federation_PostsArgument struct { - Ids []string - Items []*Posts_PostItem - PostIds []string - Posts []*post.Post - Res *post.GetPostsResponse - Users []*User + Ids []string + Items []*Posts_PostItem + PostIds []string + Posts []*post.Post + Res *post.GetPostsResponse + SourceUserTypes []user.UserType + UserTypes []UserType + Users []*User } // Org_Federation_Posts_PostItemArgument is argument for "org.federation.PostItem" message. @@ -181,6 +183,7 @@ func NewFederationService(cfg FederationServiceConfig) (*FederationService, erro celTypeHelper := grpcfed.NewCELTypeHelper("org.federation", celTypeHelperFieldMap) var celEnvOpts []grpcfed.CELEnvOption celEnvOpts = append(celEnvOpts, grpcfed.NewDefaultEnvOptions(celTypeHelper)...) + celEnvOpts = append(celEnvOpts, grpcfed.EnumAccessorOptions("org.federation.UserType", UserType_value, UserType_name)...) celEnvOpts = append(celEnvOpts, grpcfed.EnumAccessorOptions("org.post.PostType", post.PostType_value, post.PostType_name)...) celEnvOpts = append(celEnvOpts, grpcfed.EnumAccessorOptions("org.user.Item.ItemType", user.Item_ItemType_value, user.Item_ItemType_name)...) celEnvOpts = append(celEnvOpts, grpcfed.EnumAccessorOptions("org.user.UserType", user.UserType_value, user.UserType_name)...) @@ -317,11 +320,13 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re type localValueType struct { *grpcfed.LocalValue vars struct { - ids []string - items []*Posts_PostItem - posts []*post.Post - res *post.GetPostsResponse - users []*User + ids []string + items []*Posts_PostItem + posts []*post.Post + res *post.GetPostsResponse + source_user_types []user.UserType + user_types []UserType + users []*User } } value := &localValueType{LocalValue: grpcfed.NewLocalValue(ctx, s.celEnvOpts, "grpc.federation.private.PostsArgument", req)} @@ -511,17 +516,75 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re }) } + /* + def { + name: "source_user_types" + by: "[org.user.UserType.value('USER_TYPE_1'), org.user.UserType.value('USER_TYPE_2')]" + } + */ + def_source_user_types := func(ctx context.Context) error { + return grpcfed.EvalDef(ctx, value, grpcfed.Def[[]user.UserType, *localValueType]{ + Name: `source_user_types`, + Type: grpcfed.CELListType(grpcfed.CELIntType), + Setter: func(value *localValueType, v []user.UserType) error { + value.vars.source_user_types = v + return nil + }, + By: `[org.user.UserType.value('USER_TYPE_1'), org.user.UserType.value('USER_TYPE_2')]`, + ByCacheIndex: 8, + }) + } + + /* + def { + name: "user_types" + map { + iterator { + name: "typ" + src: "source_user_types" + } + } + } + */ + def_user_types := func(ctx context.Context) error { + return grpcfed.EvalDefMap(ctx, value, grpcfed.DefMap[[]user.UserType, user.UserType, *localValueType]{ + Name: `user_types`, + Type: grpcfed.CELListType(grpcfed.CELIntType), + Setter: func(value *localValueType, v []user.UserType) error { + dst, err := s.cast_repeated_Org_User_UserType__to__repeated_Org_Federation_UserType(v) + if err != nil { + return err + } + value.vars.user_types = dst + return nil + }, + IteratorName: `typ`, + IteratorType: grpcfed.CELIntType, + IteratorSource: func(value *localValueType) []user.UserType { return value.vars.source_user_types }, + Iterator: func(ctx context.Context, value *grpcfed.MapIteratorValue) (any, error) { + return grpcfed.EvalCEL(ctx, &grpcfed.EvalCELRequest{ + Value: value, + Expr: `typ`, + OutType: reflect.TypeOf(user.UserType(0)), + CacheIndex: 9, + }) + }, + }) + } + // A tree view of message dependencies is shown below. /* res ─┐ - posts ─┐ - ids ─┐ - res ─┐ │ - posts ─┐ │ - items ─┤ - res ─┐ │ - posts ─┐ │ - users ─┤ + posts ─┐ + ids ─┐ + res ─┐ │ + posts ─┐ │ + items ─┤ + source_user_types ─┐ │ + user_types ─┤ + res ─┐ │ + posts ─┐ │ + users ─┤ */ eg, ctx1 := grpcfed.ErrorGroupWithContext(ctx) @@ -557,6 +620,18 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re return nil, nil }) + grpcfed.GoWithRecover(eg, func() (any, error) { + if err := def_source_user_types(ctx1); err != nil { + grpcfed.RecordErrorToSpan(ctx1, err) + return nil, err + } + if err := def_user_types(ctx1); err != nil { + grpcfed.RecordErrorToSpan(ctx1, err) + return nil, err + } + return nil, nil + }) + grpcfed.GoWithRecover(eg, func() (any, error) { if err := def_res(ctx1); err != nil { grpcfed.RecordErrorToSpan(ctx1, err) @@ -582,6 +657,8 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re req.Items = value.vars.items req.Posts = value.vars.posts req.Res = value.vars.res + req.SourceUserTypes = value.vars.source_user_types + req.UserTypes = value.vars.user_types req.Users = value.vars.users // create a message value to be returned. @@ -592,7 +669,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]string]{ Value: value, Expr: `ids`, - CacheIndex: 8, + CacheIndex: 10, Setter: func(v []string) error { ret.Ids = v return nil @@ -605,7 +682,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]string]{ Value: value, Expr: `posts.map(post, post.title)`, - CacheIndex: 9, + CacheIndex: 11, Setter: func(v []string) error { ret.Titles = v return nil @@ -618,7 +695,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]string]{ Value: value, Expr: `posts.map(post, post.content)`, - CacheIndex: 10, + CacheIndex: 12, Setter: func(v []string) error { ret.Contents = v return nil @@ -631,7 +708,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]*User]{ Value: value, Expr: `users`, - CacheIndex: 11, + CacheIndex: 13, Setter: func(v []*User) error { ret.Users = v return nil @@ -644,7 +721,7 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]*Posts_PostItem]{ Value: value, Expr: `items`, - CacheIndex: 12, + CacheIndex: 14, Setter: func(v []*Posts_PostItem) error { ret.Items = v return nil @@ -653,6 +730,19 @@ func (s *FederationService) resolve_Org_Federation_Posts(ctx context.Context, re grpcfed.RecordErrorToSpan(ctx, err) return nil, err } + // (grpc.federation.field).by = "user_types" + if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[[]UserType]{ + Value: value, + Expr: `user_types`, + CacheIndex: 15, + Setter: func(v []UserType) error { + ret.UserTypes = v + return nil + }, + }); err != nil { + grpcfed.RecordErrorToSpan(ctx, err) + return nil, err + } grpcfed.Logger(ctx).DebugContext(ctx, "resolved org.federation.Posts", slog.Any("org.federation.Posts", s.logvalue_Org_Federation_Posts(ret))) return ret, nil @@ -680,7 +770,7 @@ func (s *FederationService) resolve_Org_Federation_Posts_PostItem(ctx context.Co if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `'item_' + $.id`, - CacheIndex: 13, + CacheIndex: 16, Setter: func(v string) error { ret.Name = v return nil @@ -732,7 +822,7 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `$.user_id`, - CacheIndex: 14, + CacheIndex: 17, Setter: func(v string) error { args.Id = v return nil @@ -768,7 +858,7 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req return nil }, By: `res.user`, - ByCacheIndex: 15, + ByCacheIndex: 18, }) } @@ -798,6 +888,31 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req return ret, nil } +// cast_Org_User_UserType__to__Org_Federation_UserType cast from "org.user.UserType" to "org.federation.UserType". +func (s *FederationService) cast_Org_User_UserType__to__Org_Federation_UserType(from user.UserType) (UserType, error) { + switch from { + case user.UserType_USER_TYPE_1: + return UserType_USER_TYPE_1, nil + case user.UserType_USER_TYPE_2: + return UserType_USER_TYPE_2, nil + default: + return 0, nil + } +} + +// cast_repeated_Org_User_UserType__to__repeated_Org_Federation_UserType cast from "repeated org.user.UserType" to "repeated org.federation.UserType". +func (s *FederationService) cast_repeated_Org_User_UserType__to__repeated_Org_Federation_UserType(from []user.UserType) ([]UserType, error) { + ret := make([]UserType, 0, len(from)) + for _, v := range from { + casted, err := s.cast_Org_User_UserType__to__Org_Federation_UserType(v) + if err != nil { + return nil, err + } + ret = append(ret, casted) + } + return ret, nil +} + func (s *FederationService) logvalue_Org_Federation_GetPostsResponse(v *GetPostsResponse) slog.Value { if v == nil { return slog.GroupValue() @@ -826,6 +941,7 @@ func (s *FederationService) logvalue_Org_Federation_Posts(v *Posts) slog.Value { slog.Any("contents", v.GetContents()), slog.Any("users", s.logvalue_repeated_Org_Federation_User(v.GetUsers())), slog.Any("items", s.logvalue_repeated_Org_Federation_Posts_PostItem(v.GetItems())), + slog.Any("user_types", s.logvalue_repeated_Org_Federation_UserType(v.GetUserTypes())), ) } @@ -875,6 +991,16 @@ func (s *FederationService) logvalue_Org_Federation_UserArgument(v *FederationSe ) } +func (s *FederationService) logvalue_Org_Federation_UserType(v UserType) slog.Value { + switch v { + case UserType_USER_TYPE_1: + return slog.StringValue("USER_TYPE_1") + case UserType_USER_TYPE_2: + return slog.StringValue("USER_TYPE_2") + } + return slog.StringValue("") +} + func (s *FederationService) logvalue_Org_Post_CreatePost(v *post.CreatePost) slog.Value { if v == nil { return slog.GroupValue() @@ -977,3 +1103,14 @@ func (s *FederationService) logvalue_repeated_Org_Federation_User(v []*User) slo } return slog.GroupValue(attrs...) } + +func (s *FederationService) logvalue_repeated_Org_Federation_UserType(v []UserType) slog.Value { + attrs := make([]slog.Attr, 0, len(v)) + for idx, vv := range v { + attrs = append(attrs, slog.Attr{ + Key: grpcfed.ToLogAttrKey(idx), + Value: s.logvalue_Org_Federation_UserType(vv), + }) + } + return slog.GroupValue(attrs...) +} diff --git a/generator/testdata/expected_simple_aggregation.go b/generator/testdata/expected_simple_aggregation.go index 6afcce87..d184e010 100644 --- a/generator/testdata/expected_simple_aggregation.go +++ b/generator/testdata/expected_simple_aggregation.go @@ -28,6 +28,7 @@ var ( // Org_Federation_GetPostResponseArgument is argument for "org.federation.GetPostResponse" message. type FederationService_Org_Federation_GetPostResponseArgument struct { + E Item_ItemType Id string MapValue map[int64]string Post *Post @@ -267,6 +268,7 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C type localValueType struct { *grpcfed.LocalValue vars struct { + e Item_ItemType map_value map[int64]string post *Post uuid *grpcfedcel.UUID @@ -351,14 +353,49 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C }) } + /* + def { + name: "e" + enum { + name: "org.federation.Item.ItemType" + by: "org.user.Item.ItemType.value('ITEM_TYPE_2')" + } + } + */ + def_e := func(ctx context.Context) error { + return grpcfed.EvalDef(ctx, value, grpcfed.Def[user.Item_ItemType, *localValueType]{ + Name: `e`, + Type: grpcfed.CELIntType, + Setter: func(value *localValueType, v user.Item_ItemType) error { + dst, err := s.cast_Org_User_Item_ItemType__to__Org_Federation_Item_ItemType(v) + if err != nil { + return err + } + value.vars.e = dst + return nil + }, + By: `org.user.Item.ItemType.value('ITEM_TYPE_2')`, + ByCacheIndex: 4, + }) + } + // A tree view of message dependencies is shown below. /* - map_value ─┐ + e ─┐ + map_value ─┤ post ─┤ uuid ─┤ */ eg, ctx1 := grpcfed.ErrorGroupWithContext(ctx) + grpcfed.GoWithRecover(eg, func() (any, error) { + if err := def_e(ctx1); err != nil { + grpcfed.RecordErrorToSpan(ctx1, err) + return nil, err + } + return nil, nil + }) + grpcfed.GoWithRecover(eg, func() (any, error) { if err := def_map_value(ctx1); err != nil { grpcfed.RecordErrorToSpan(ctx1, err) @@ -388,6 +425,7 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C } // assign named parameters to message arguments to pass to the custom resolver. + req.E = value.vars.e req.MapValue = value.vars.map_value req.Post = value.vars.post req.Uuid = value.vars.uuid @@ -400,7 +438,7 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*Post]{ Value: value, Expr: `post`, - CacheIndex: 4, + CacheIndex: 5, Setter: func(v *Post) error { ret.Post = v return nil @@ -413,7 +451,7 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `'foo'`, - CacheIndex: 5, + CacheIndex: 6, Setter: func(v string) error { ret.Const = v return nil @@ -426,7 +464,7 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `uuid.string()`, - CacheIndex: 6, + CacheIndex: 7, Setter: func(v string) error { ret.Uuid = v return nil @@ -439,7 +477,7 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `org.federation.Item.ItemType.name(org.federation.Item.ItemType.ITEM_TYPE_1)`, - CacheIndex: 7, + CacheIndex: 8, Setter: func(v string) error { ret.EnumName = v return nil @@ -452,7 +490,7 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[Item_ItemType]{ Value: value, Expr: `org.federation.Item.ItemType.value('ITEM_TYPE_1')`, - CacheIndex: 8, + CacheIndex: 9, Setter: func(v Item_ItemType) error { enumValueValue, err := s.cast_Org_Federation_Item_ItemType__to__int32(v) if err != nil { @@ -469,7 +507,7 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[map[int64]string]{ Value: value, Expr: `map_value`, - CacheIndex: 9, + CacheIndex: 10, Setter: func(v map[int64]string) error { mapValueValue, err := s.cast_map_int64_string__to__map_int32_string(v) if err != nil { @@ -482,6 +520,19 @@ func (s *FederationService) resolve_Org_Federation_GetPostResponse(ctx context.C grpcfed.RecordErrorToSpan(ctx, err) return nil, err } + // (grpc.federation.field).by = "e" + if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[Item_ItemType]{ + Value: value, + Expr: `e`, + CacheIndex: 11, + Setter: func(v Item_ItemType) error { + ret.ItemType = v + return nil + }, + }); err != nil { + grpcfed.RecordErrorToSpan(ctx, err) + return nil, err + } grpcfed.Logger(ctx).DebugContext(ctx, "resolved org.federation.GetPostResponse", slog.Any("org.federation.GetPostResponse", s.logvalue_Org_Federation_GetPostResponse(ret))) return ret, nil @@ -509,7 +560,7 @@ func (s *FederationService) resolve_Org_Federation_M(ctx context.Context, req *F if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `'foo'`, - CacheIndex: 10, + CacheIndex: 12, Setter: func(v string) error { ret.Foo = v return nil @@ -522,7 +573,7 @@ func (s *FederationService) resolve_Org_Federation_M(ctx context.Context, req *F if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[int64]{ Value: value, Expr: `1`, - CacheIndex: 11, + CacheIndex: 13, Setter: func(v int64) error { ret.Bar = v return nil @@ -577,7 +628,7 @@ func (s *FederationService) resolve_Org_Federation_Post(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `$.id`, - CacheIndex: 12, + CacheIndex: 14, Setter: func(v string) error { args.Id = v return nil @@ -593,7 +644,7 @@ func (s *FederationService) resolve_Org_Federation_Post(ctx context.Context, req return grpcfed.WithRetry(ctx, &grpcfed.RetryParam[post.GetPostResponse]{ Value: value, If: `true`, - CacheIndex: 13, + CacheIndex: 15, BackOff: b, Body: func() (*post.GetPostResponse, error) { return s.client.Org_Post_PostServiceClient.GetPost(ctx, args) @@ -626,7 +677,7 @@ func (s *FederationService) resolve_Org_Federation_Post(ctx context.Context, req return nil }, By: `res.post`, - ByCacheIndex: 14, + ByCacheIndex: 16, }) } @@ -653,7 +704,7 @@ func (s *FederationService) resolve_Org_Federation_Post(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*post.Post]{ Value: value, Expr: `post`, - CacheIndex: 15, + CacheIndex: 17, Setter: func(v *post.Post) error { args.Id = v.GetId() args.Title = v.GetTitle() @@ -727,7 +778,7 @@ func (s *FederationService) resolve_Org_Federation_Post(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[int64]{ Value: value, Expr: `10`, - CacheIndex: 16, + CacheIndex: 18, Setter: func(v int64) error { xValue, err := s.cast_int64__to__uint64(v) if err != nil { @@ -743,7 +794,7 @@ func (s *FederationService) resolve_Org_Federation_Post(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[int64]{ Value: value, Expr: `1`, - CacheIndex: 17, + CacheIndex: 19, Setter: func(v int64) error { yValue, err := s.cast_int64__to__Org_User_Item_ItemType(v) if err != nil { @@ -827,7 +878,7 @@ func (s *FederationService) resolve_Org_Federation_Post(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*User]{ Value: value, Expr: `user`, - CacheIndex: 18, + CacheIndex: 20, Setter: func(v *User) error { ret.User = v return nil @@ -882,7 +933,7 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{ Value: value, Expr: `$.user_id`, - CacheIndex: 19, + CacheIndex: 21, Setter: func(v string) error { args.Id = v return nil @@ -904,7 +955,7 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req return grpcfed.WithRetry(ctx, &grpcfed.RetryParam[user.GetUserResponse]{ Value: value, If: `error.code != google.rpc.Code.UNIMPLEMENTED`, - CacheIndex: 20, + CacheIndex: 22, BackOff: b, Body: func() (*user.GetUserResponse, error) { return s.client.Org_User_UserServiceClient.GetUser(ctx, args) @@ -937,7 +988,7 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req return nil }, By: `res.user`, - ByCacheIndex: 21, + ByCacheIndex: 23, }) } @@ -967,7 +1018,7 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[uint64]{ Value: value, Expr: `uint(2)`, - CacheIndex: 22, + CacheIndex: 24, Setter: func(v uint64) error { args.X = v return nil @@ -979,7 +1030,7 @@ func (s *FederationService) resolve_Org_Federation_User(ctx context.Context, req if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[user.Item_ItemType]{ Value: value, Expr: `org.user.Item.ItemType.value('ITEM_TYPE_2')`, - CacheIndex: 23, + CacheIndex: 25, Setter: func(v user.Item_ItemType) error { args.Y = v return nil @@ -1293,6 +1344,7 @@ func (s *FederationService) logvalue_Org_Federation_GetPostResponse(v *GetPostRe slog.String("enum_name", v.GetEnumName()), slog.Int64("enum_value", int64(v.GetEnumValue())), slog.Any("map_value", s.logvalue_Org_Federation_GetPostResponse_MapValueEntry(v.GetMapValue())), + slog.String("item_type", s.logvalue_Org_Federation_Item_ItemType(v.GetItemType()).String()), ) } diff --git a/grpc/federation/federation.pb.go b/grpc/federation/federation.pb.go index 7024c890..63ca074a 100644 --- a/grpc/federation/federation.pb.go +++ b/grpc/federation/federation.pb.go @@ -151,7 +151,7 @@ func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use GRPCError_LogLevel.Descriptor instead. func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17, 0} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18, 0} } type FileRule struct { @@ -938,6 +938,7 @@ type VariableDefinition struct { // *VariableDefinition_Message // *VariableDefinition_Call // *VariableDefinition_Validation + // *VariableDefinition_Enum Expr isVariableDefinition_Expr `protobuf_oneof:"expr"` } @@ -1036,6 +1037,13 @@ func (x *VariableDefinition) GetValidation() *ValidationExpr { return nil } +func (x *VariableDefinition) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableDefinition_Enum); ok { + return x.Enum + } + return nil +} + type isVariableDefinition_Expr interface { isVariableDefinition_Expr() } @@ -1065,6 +1073,11 @@ type VariableDefinition_Validation struct { Validation *ValidationExpr `protobuf:"bytes,15,opt,name=validation,proto3,oneof"` } +type VariableDefinition_Enum struct { + // enum gets with cel value. + Enum *EnumExpr `protobuf:"bytes,16,opt,name=enum,proto3,oneof"` +} + func (*VariableDefinition_By) isVariableDefinition_Expr() {} func (*VariableDefinition_Map) isVariableDefinition_Expr() {} @@ -1075,6 +1088,8 @@ func (*VariableDefinition_Call) isVariableDefinition_Expr() {} func (*VariableDefinition_Validation) isVariableDefinition_Expr() {} +func (*VariableDefinition_Enum) isVariableDefinition_Expr() {} + // MapExpr apply map operation for the specified repeated type. type MapExpr struct { state protoimpl.MessageState @@ -1090,6 +1105,7 @@ type MapExpr struct { // // *MapExpr_By // *MapExpr_Message + // *MapExpr_Enum Expr isMapExpr_Expr `protobuf_oneof:"expr"` } @@ -1153,6 +1169,13 @@ func (x *MapExpr) GetMessage() *MessageExpr { return nil } +func (x *MapExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapExpr_Expr interface { isMapExpr_Expr() } @@ -1169,10 +1192,18 @@ type MapExpr_Message struct { Message *MessageExpr `protobuf:"bytes,12,opt,name=message,proto3,oneof"` } +type MapExpr_Enum struct { + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + Enum *EnumExpr `protobuf:"bytes,13,opt,name=enum,proto3,oneof"` +} + func (*MapExpr_By) isMapExpr_Expr() {} func (*MapExpr_Message) isMapExpr_Expr() {} +func (*MapExpr_Enum) isMapExpr_Expr() {} + // Iterator represents iterator variable. type Iterator struct { state protoimpl.MessageState @@ -1291,6 +1322,65 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +// EnumExpr represents dependent enum. +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // `by` evaluates with CEL. + By string `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_federation_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} +} + +func (x *EnumExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnumExpr) GetBy() string { + if x != nil { + return x.By + } + return "" +} + // CallExpr represents how to call gRPC method. type CallExpr struct { state protoimpl.MessageState @@ -1316,7 +1406,7 @@ type CallExpr struct { func (x *CallExpr) Reset() { *x = CallExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1419,7 @@ func (x *CallExpr) String() string { func (*CallExpr) ProtoMessage() {} func (x *CallExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[16] + mi := &file_grpc_federation_federation_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1432,7 @@ func (x *CallExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use CallExpr.ProtoReflect.Descriptor instead. func (*CallExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{16} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} } func (x *CallExpr) GetMethod() string { @@ -1418,7 +1508,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1521,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[17] + mi := &file_grpc_federation_federation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1534,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{17} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} } func (x *GRPCError) GetDef() []*VariableDefinition { @@ -1541,7 +1631,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1554,7 +1644,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[18] + mi := &file_grpc_federation_federation_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1567,7 +1657,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{18} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} } func (x *GRPCErrorDetail) GetIf() string { @@ -1685,7 +1775,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1788,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[19] + mi := &file_grpc_federation_federation_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1801,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{19} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} } func (x *ValidationExpr) GetName() string { @@ -1748,7 +1838,7 @@ type RetryPolicy struct { func (x *RetryPolicy) Reset() { *x = RetryPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1851,7 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[20] + mi := &file_grpc_federation_federation_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1864,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{20} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} } func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy { @@ -1841,7 +1931,7 @@ type RetryPolicyConstant struct { func (x *RetryPolicyConstant) Reset() { *x = RetryPolicyConstant{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1944,7 @@ func (x *RetryPolicyConstant) String() string { func (*RetryPolicyConstant) ProtoMessage() {} func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[21] + mi := &file_grpc_federation_federation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1957,7 @@ func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyConstant.ProtoReflect.Descriptor instead. func (*RetryPolicyConstant) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{21} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} } func (x *RetryPolicyConstant) GetInterval() string { @@ -1905,7 +1995,7 @@ type RetryPolicyExponential struct { func (x *RetryPolicyExponential) Reset() { *x = RetryPolicyExponential{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2008,7 @@ func (x *RetryPolicyExponential) String() string { func (*RetryPolicyExponential) ProtoMessage() {} func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[22] + mi := &file_grpc_federation_federation_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2021,7 @@ func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicyExponential.ProtoReflect.Descriptor instead. func (*RetryPolicyExponential) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{22} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} } func (x *RetryPolicyExponential) GetInitialInterval() string { @@ -1992,7 +2082,7 @@ type MethodRequest struct { func (x *MethodRequest) Reset() { *x = MethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2005,7 +2095,7 @@ func (x *MethodRequest) String() string { func (*MethodRequest) ProtoMessage() {} func (x *MethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[23] + mi := &file_grpc_federation_federation_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2018,7 +2108,7 @@ func (x *MethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodRequest.ProtoReflect.Descriptor instead. func (*MethodRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{23} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} } func (x *MethodRequest) GetField() string { @@ -2062,7 +2152,7 @@ type MethodResponse struct { func (x *MethodResponse) Reset() { *x = MethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2165,7 @@ func (x *MethodResponse) String() string { func (*MethodResponse) ProtoMessage() {} func (x *MethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[24] + mi := &file_grpc_federation_federation_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2178,7 @@ func (x *MethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodResponse.ProtoReflect.Descriptor instead. func (*MethodResponse) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{24} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} } func (x *MethodResponse) GetName() string { @@ -2134,7 +2224,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2237,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[25] + mi := &file_grpc_federation_federation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2160,7 +2250,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{25} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} } func (x *Argument) GetName() string { @@ -2210,7 +2300,7 @@ type FieldRule struct { func (x *FieldRule) Reset() { *x = FieldRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2313,7 @@ func (x *FieldRule) String() string { func (*FieldRule) ProtoMessage() {} func (x *FieldRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[26] + mi := &file_grpc_federation_federation_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2326,7 @@ func (x *FieldRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldRule.ProtoReflect.Descriptor instead. func (*FieldRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{26} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} } func (x *FieldRule) GetCustomResolver() bool { @@ -2299,7 +2389,7 @@ type FieldOneof struct { func (x *FieldOneof) Reset() { *x = FieldOneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2402,7 @@ func (x *FieldOneof) String() string { func (*FieldOneof) ProtoMessage() {} func (x *FieldOneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[27] + mi := &file_grpc_federation_federation_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2415,7 @@ func (x *FieldOneof) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldOneof.ProtoReflect.Descriptor instead. func (*FieldOneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{27} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} } func (m *FieldOneof) GetCond() isFieldOneof_Cond { @@ -2397,7 +2487,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2500,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[28] + mi := &file_grpc_federation_federation_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2513,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{28} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} } func (x *CELPlugin) GetExport() []*CELPluginExport { @@ -2455,7 +2545,7 @@ type CELPluginExport struct { func (x *CELPluginExport) Reset() { *x = CELPluginExport{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2558,7 @@ func (x *CELPluginExport) String() string { func (*CELPluginExport) ProtoMessage() {} func (x *CELPluginExport) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[29] + mi := &file_grpc_federation_federation_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2571,7 @@ func (x *CELPluginExport) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPluginExport.ProtoReflect.Descriptor instead. func (*CELPluginExport) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{29} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} } func (x *CELPluginExport) GetName() string { @@ -2539,7 +2629,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2642,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[30] + mi := &file_grpc_federation_federation_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2655,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{30} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} } func (x *CELFunction) GetName() string { @@ -2614,7 +2704,7 @@ type CELReceiverType struct { func (x *CELReceiverType) Reset() { *x = CELReceiverType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2717,7 @@ func (x *CELReceiverType) String() string { func (*CELReceiverType) ProtoMessage() {} func (x *CELReceiverType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[31] + mi := &file_grpc_federation_federation_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2730,7 @@ func (x *CELReceiverType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELReceiverType.ProtoReflect.Descriptor instead. func (*CELReceiverType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{31} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} } func (x *CELReceiverType) GetName() string { @@ -2682,7 +2772,7 @@ type CELFunctionArgument struct { func (x *CELFunctionArgument) Reset() { *x = CELFunctionArgument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2785,7 @@ func (x *CELFunctionArgument) String() string { func (*CELFunctionArgument) ProtoMessage() {} func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[32] + mi := &file_grpc_federation_federation_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2798,7 @@ func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunctionArgument.ProtoReflect.Descriptor instead. func (*CELFunctionArgument) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{32} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} } func (x *CELFunctionArgument) GetName() string { @@ -2751,7 +2841,7 @@ type CELType struct { func (x *CELType) Reset() { *x = CELType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2854,7 @@ func (x *CELType) String() string { func (*CELType) ProtoMessage() {} func (x *CELType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[33] + mi := &file_grpc_federation_federation_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2867,7 @@ func (x *CELType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELType.ProtoReflect.Descriptor instead. func (*CELType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{33} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} } func (m *CELType) GetType() isCELType_Type { @@ -2876,7 +2966,7 @@ type CELMapType struct { func (x *CELMapType) Reset() { *x = CELMapType{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +2979,7 @@ func (x *CELMapType) String() string { func (*CELMapType) ProtoMessage() {} func (x *CELMapType) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[34] + mi := &file_grpc_federation_federation_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +2992,7 @@ func (x *CELMapType) ProtoReflect() protoreflect.Message { // Deprecated: Use CELMapType.ProtoReflect.Descriptor instead. func (*CELMapType) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{34} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} } func (x *CELMapType) GetKey() *CELType { @@ -2937,7 +3027,7 @@ type CELVariable struct { func (x *CELVariable) Reset() { *x = CELVariable{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3040,7 @@ func (x *CELVariable) String() string { func (*CELVariable) ProtoMessage() {} func (x *CELVariable) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_federation_proto_msgTypes[35] + mi := &file_grpc_federation_federation_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3053,7 @@ func (x *CELVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use CELVariable.ProtoReflect.Descriptor instead. func (*CELVariable) Descriptor() ([]byte, []int) { - return file_grpc_federation_federation_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_federation_proto_rawDescGZIP(), []int{36} } func (x *CELVariable) GetName() string { @@ -3194,7 +3284,7 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x12, + 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xa7, 0x03, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, @@ -3215,339 +3305,348 @@ var file_grpc_federation_federation_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0x50, 0x0a, - 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x30, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, + 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, + 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x22, 0x86, 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x22, 0x86, - 0x04, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x03, - 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x65, 0x66, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, 0x03, 0x64, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, - 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, - 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, - 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, - 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, - 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, 0x08, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, - 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x62, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x41, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x69, 0x66, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfa, 0x05, 0x0a, 0x0f, 0x47, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x12, 0x35, 0x0a, + 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x65, 0x66, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, + 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, + 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x22, 0x64, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, - 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x38, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, + 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x02, 0x69, 0x66, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x69, 0x66, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x69, 0x6e, 0x64, 0x22, 0x62, 0x0a, + 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, + 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x02, 0x62, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x12, 0x2f, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x43, 0x45, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x62, 0x79, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x45, + 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x38, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, 0x4c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x1a, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, - 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, 0x4d, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x45, 0x4c, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x13, + 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x43, 0x45, + 0x4c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, + 0x1a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x43, 0x45, 0x4c, + 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, - 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, - 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x54, - 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0x4c, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x3a, 0x54, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 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, 0xa3, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x50, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x58, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x50, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x3a, 0x61, - 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x42, 0x3f, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x3a, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x3a, 0x61, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x50, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x3f, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, + 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, + 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3563,7 +3662,7 @@ func file_grpc_federation_federation_proto_rawDescGZIP() []byte { } var file_grpc_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_grpc_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_grpc_federation_federation_proto_goTypes = []interface{}{ (TypeKind)(0), // 0: grpc.federation.TypeKind (GRPCError_LogLevel)(0), // 1: grpc.federation.GRPCError.LogLevel @@ -3583,48 +3682,49 @@ var file_grpc_federation_federation_proto_goTypes = []interface{}{ (*MapExpr)(nil), // 15: grpc.federation.MapExpr (*Iterator)(nil), // 16: grpc.federation.Iterator (*MessageExpr)(nil), // 17: grpc.federation.MessageExpr - (*CallExpr)(nil), // 18: grpc.federation.CallExpr - (*GRPCError)(nil), // 19: grpc.federation.GRPCError - (*GRPCErrorDetail)(nil), // 20: grpc.federation.GRPCErrorDetail - (*ValidationExpr)(nil), // 21: grpc.federation.ValidationExpr - (*RetryPolicy)(nil), // 22: grpc.federation.RetryPolicy - (*RetryPolicyConstant)(nil), // 23: grpc.federation.RetryPolicyConstant - (*RetryPolicyExponential)(nil), // 24: grpc.federation.RetryPolicyExponential - (*MethodRequest)(nil), // 25: grpc.federation.MethodRequest - (*MethodResponse)(nil), // 26: grpc.federation.MethodResponse - (*Argument)(nil), // 27: grpc.federation.Argument - (*FieldRule)(nil), // 28: grpc.federation.FieldRule - (*FieldOneof)(nil), // 29: grpc.federation.FieldOneof - (*CELPlugin)(nil), // 30: grpc.federation.CELPlugin - (*CELPluginExport)(nil), // 31: grpc.federation.CELPluginExport - (*CELFunction)(nil), // 32: grpc.federation.CELFunction - (*CELReceiverType)(nil), // 33: grpc.federation.CELReceiverType - (*CELFunctionArgument)(nil), // 34: grpc.federation.CELFunctionArgument - (*CELType)(nil), // 35: grpc.federation.CELType - (*CELMapType)(nil), // 36: grpc.federation.CELMapType - (*CELVariable)(nil), // 37: grpc.federation.CELVariable - (code.Code)(0), // 38: google.rpc.Code - (*errdetails.ErrorInfo)(nil), // 39: google.rpc.ErrorInfo - (*errdetails.RetryInfo)(nil), // 40: google.rpc.RetryInfo - (*errdetails.DebugInfo)(nil), // 41: google.rpc.DebugInfo - (*errdetails.QuotaFailure)(nil), // 42: google.rpc.QuotaFailure - (*errdetails.PreconditionFailure)(nil), // 43: google.rpc.PreconditionFailure - (*errdetails.BadRequest)(nil), // 44: google.rpc.BadRequest - (*errdetails.RequestInfo)(nil), // 45: google.rpc.RequestInfo - (*errdetails.ResourceInfo)(nil), // 46: google.rpc.ResourceInfo - (*errdetails.Help)(nil), // 47: google.rpc.Help - (*errdetails.LocalizedMessage)(nil), // 48: google.rpc.LocalizedMessage - (*descriptorpb.FileOptions)(nil), // 49: google.protobuf.FileOptions - (*descriptorpb.ServiceOptions)(nil), // 50: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 51: google.protobuf.MethodOptions - (*descriptorpb.MessageOptions)(nil), // 52: google.protobuf.MessageOptions - (*descriptorpb.FieldOptions)(nil), // 53: google.protobuf.FieldOptions - (*descriptorpb.EnumOptions)(nil), // 54: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 55: google.protobuf.EnumValueOptions - (*descriptorpb.OneofOptions)(nil), // 56: google.protobuf.OneofOptions + (*EnumExpr)(nil), // 18: grpc.federation.EnumExpr + (*CallExpr)(nil), // 19: grpc.federation.CallExpr + (*GRPCError)(nil), // 20: grpc.federation.GRPCError + (*GRPCErrorDetail)(nil), // 21: grpc.federation.GRPCErrorDetail + (*ValidationExpr)(nil), // 22: grpc.federation.ValidationExpr + (*RetryPolicy)(nil), // 23: grpc.federation.RetryPolicy + (*RetryPolicyConstant)(nil), // 24: grpc.federation.RetryPolicyConstant + (*RetryPolicyExponential)(nil), // 25: grpc.federation.RetryPolicyExponential + (*MethodRequest)(nil), // 26: grpc.federation.MethodRequest + (*MethodResponse)(nil), // 27: grpc.federation.MethodResponse + (*Argument)(nil), // 28: grpc.federation.Argument + (*FieldRule)(nil), // 29: grpc.federation.FieldRule + (*FieldOneof)(nil), // 30: grpc.federation.FieldOneof + (*CELPlugin)(nil), // 31: grpc.federation.CELPlugin + (*CELPluginExport)(nil), // 32: grpc.federation.CELPluginExport + (*CELFunction)(nil), // 33: grpc.federation.CELFunction + (*CELReceiverType)(nil), // 34: grpc.federation.CELReceiverType + (*CELFunctionArgument)(nil), // 35: grpc.federation.CELFunctionArgument + (*CELType)(nil), // 36: grpc.federation.CELType + (*CELMapType)(nil), // 37: grpc.federation.CELMapType + (*CELVariable)(nil), // 38: grpc.federation.CELVariable + (code.Code)(0), // 39: google.rpc.Code + (*errdetails.ErrorInfo)(nil), // 40: google.rpc.ErrorInfo + (*errdetails.RetryInfo)(nil), // 41: google.rpc.RetryInfo + (*errdetails.DebugInfo)(nil), // 42: google.rpc.DebugInfo + (*errdetails.QuotaFailure)(nil), // 43: google.rpc.QuotaFailure + (*errdetails.PreconditionFailure)(nil), // 44: google.rpc.PreconditionFailure + (*errdetails.BadRequest)(nil), // 45: google.rpc.BadRequest + (*errdetails.RequestInfo)(nil), // 46: google.rpc.RequestInfo + (*errdetails.ResourceInfo)(nil), // 47: google.rpc.ResourceInfo + (*errdetails.Help)(nil), // 48: google.rpc.Help + (*errdetails.LocalizedMessage)(nil), // 49: google.rpc.LocalizedMessage + (*descriptorpb.FileOptions)(nil), // 50: google.protobuf.FileOptions + (*descriptorpb.ServiceOptions)(nil), // 51: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 52: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 53: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 54: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 55: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 56: google.protobuf.EnumValueOptions + (*descriptorpb.OneofOptions)(nil), // 57: google.protobuf.OneofOptions } var file_grpc_federation_federation_proto_depIdxs = []int32{ - 30, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin + 31, // 0: grpc.federation.FileRule.plugin:type_name -> grpc.federation.CELPlugin 7, // 1: grpc.federation.ServiceRule.env:type_name -> grpc.federation.Env 8, // 2: grpc.federation.Env.var:type_name -> grpc.federation.EnvVar 9, // 3: grpc.federation.EnvVar.type:type_name -> grpc.federation.EnvType @@ -3637,71 +3737,73 @@ var file_grpc_federation_federation_proto_depIdxs = []int32{ 14, // 10: grpc.federation.MessageRule.def:type_name -> grpc.federation.VariableDefinition 15, // 11: grpc.federation.VariableDefinition.map:type_name -> grpc.federation.MapExpr 17, // 12: grpc.federation.VariableDefinition.message:type_name -> grpc.federation.MessageExpr - 18, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr - 21, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr - 16, // 15: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator - 17, // 16: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr - 27, // 17: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument - 25, // 18: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest - 22, // 19: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy - 19, // 20: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError - 14, // 21: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition - 38, // 22: grpc.federation.GRPCError.code:type_name -> google.rpc.Code - 20, // 23: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail - 1, // 24: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel - 14, // 25: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition - 17, // 26: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr - 39, // 27: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo - 40, // 28: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo - 41, // 29: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo - 42, // 30: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure - 43, // 31: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure - 44, // 32: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest - 45, // 33: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo - 46, // 34: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo - 47, // 35: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help - 48, // 36: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage - 19, // 37: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError - 23, // 38: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant - 24, // 39: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential - 29, // 40: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof - 11, // 41: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption - 14, // 42: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition - 31, // 43: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport - 33, // 44: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType - 32, // 45: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction - 37, // 46: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable - 34, // 47: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument - 35, // 48: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType - 32, // 49: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction - 35, // 50: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType - 0, // 51: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind - 35, // 52: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType - 36, // 53: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType - 35, // 54: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType - 35, // 55: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType - 35, // 56: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType - 49, // 57: grpc.federation.file:extendee -> google.protobuf.FileOptions - 50, // 58: grpc.federation.service:extendee -> google.protobuf.ServiceOptions - 51, // 59: grpc.federation.method:extendee -> google.protobuf.MethodOptions - 52, // 60: grpc.federation.message:extendee -> google.protobuf.MessageOptions - 53, // 61: grpc.federation.field:extendee -> google.protobuf.FieldOptions - 54, // 62: grpc.federation.enum:extendee -> google.protobuf.EnumOptions - 55, // 63: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions - 56, // 64: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions - 2, // 65: grpc.federation.file:type_name -> grpc.federation.FileRule - 6, // 66: grpc.federation.service:type_name -> grpc.federation.ServiceRule - 12, // 67: grpc.federation.method:type_name -> grpc.federation.MethodRule - 13, // 68: grpc.federation.message:type_name -> grpc.federation.MessageRule - 28, // 69: grpc.federation.field:type_name -> grpc.federation.FieldRule - 3, // 70: grpc.federation.enum:type_name -> grpc.federation.EnumRule - 4, // 71: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule - 5, // 72: grpc.federation.oneof:type_name -> grpc.federation.OneofRule - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 65, // [65:73] is the sub-list for extension type_name - 57, // [57:65] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 19, // 13: grpc.federation.VariableDefinition.call:type_name -> grpc.federation.CallExpr + 22, // 14: grpc.federation.VariableDefinition.validation:type_name -> grpc.federation.ValidationExpr + 18, // 15: grpc.federation.VariableDefinition.enum:type_name -> grpc.federation.EnumExpr + 16, // 16: grpc.federation.MapExpr.iterator:type_name -> grpc.federation.Iterator + 17, // 17: grpc.federation.MapExpr.message:type_name -> grpc.federation.MessageExpr + 18, // 18: grpc.federation.MapExpr.enum:type_name -> grpc.federation.EnumExpr + 28, // 19: grpc.federation.MessageExpr.args:type_name -> grpc.federation.Argument + 26, // 20: grpc.federation.CallExpr.request:type_name -> grpc.federation.MethodRequest + 23, // 21: grpc.federation.CallExpr.retry:type_name -> grpc.federation.RetryPolicy + 20, // 22: grpc.federation.CallExpr.error:type_name -> grpc.federation.GRPCError + 14, // 23: grpc.federation.GRPCError.def:type_name -> grpc.federation.VariableDefinition + 39, // 24: grpc.federation.GRPCError.code:type_name -> google.rpc.Code + 21, // 25: grpc.federation.GRPCError.details:type_name -> grpc.federation.GRPCErrorDetail + 1, // 26: grpc.federation.GRPCError.log_level:type_name -> grpc.federation.GRPCError.LogLevel + 14, // 27: grpc.federation.GRPCErrorDetail.def:type_name -> grpc.federation.VariableDefinition + 17, // 28: grpc.federation.GRPCErrorDetail.message:type_name -> grpc.federation.MessageExpr + 40, // 29: grpc.federation.GRPCErrorDetail.error_info:type_name -> google.rpc.ErrorInfo + 41, // 30: grpc.federation.GRPCErrorDetail.retry_info:type_name -> google.rpc.RetryInfo + 42, // 31: grpc.federation.GRPCErrorDetail.debug_info:type_name -> google.rpc.DebugInfo + 43, // 32: grpc.federation.GRPCErrorDetail.quota_failure:type_name -> google.rpc.QuotaFailure + 44, // 33: grpc.federation.GRPCErrorDetail.precondition_failure:type_name -> google.rpc.PreconditionFailure + 45, // 34: grpc.federation.GRPCErrorDetail.bad_request:type_name -> google.rpc.BadRequest + 46, // 35: grpc.federation.GRPCErrorDetail.request_info:type_name -> google.rpc.RequestInfo + 47, // 36: grpc.federation.GRPCErrorDetail.resource_info:type_name -> google.rpc.ResourceInfo + 48, // 37: grpc.federation.GRPCErrorDetail.help:type_name -> google.rpc.Help + 49, // 38: grpc.federation.GRPCErrorDetail.localized_message:type_name -> google.rpc.LocalizedMessage + 20, // 39: grpc.federation.ValidationExpr.error:type_name -> grpc.federation.GRPCError + 24, // 40: grpc.federation.RetryPolicy.constant:type_name -> grpc.federation.RetryPolicyConstant + 25, // 41: grpc.federation.RetryPolicy.exponential:type_name -> grpc.federation.RetryPolicyExponential + 30, // 42: grpc.federation.FieldRule.oneof:type_name -> grpc.federation.FieldOneof + 11, // 43: grpc.federation.FieldRule.env:type_name -> grpc.federation.EnvVarOption + 14, // 44: grpc.federation.FieldOneof.def:type_name -> grpc.federation.VariableDefinition + 32, // 45: grpc.federation.CELPlugin.export:type_name -> grpc.federation.CELPluginExport + 34, // 46: grpc.federation.CELPluginExport.types:type_name -> grpc.federation.CELReceiverType + 33, // 47: grpc.federation.CELPluginExport.functions:type_name -> grpc.federation.CELFunction + 38, // 48: grpc.federation.CELPluginExport.variables:type_name -> grpc.federation.CELVariable + 35, // 49: grpc.federation.CELFunction.args:type_name -> grpc.federation.CELFunctionArgument + 36, // 50: grpc.federation.CELFunction.return:type_name -> grpc.federation.CELType + 33, // 51: grpc.federation.CELReceiverType.methods:type_name -> grpc.federation.CELFunction + 36, // 52: grpc.federation.CELFunctionArgument.type:type_name -> grpc.federation.CELType + 0, // 53: grpc.federation.CELType.kind:type_name -> grpc.federation.TypeKind + 36, // 54: grpc.federation.CELType.repeated:type_name -> grpc.federation.CELType + 37, // 55: grpc.federation.CELType.map:type_name -> grpc.federation.CELMapType + 36, // 56: grpc.federation.CELMapType.key:type_name -> grpc.federation.CELType + 36, // 57: grpc.federation.CELMapType.value:type_name -> grpc.federation.CELType + 36, // 58: grpc.federation.CELVariable.type:type_name -> grpc.federation.CELType + 50, // 59: grpc.federation.file:extendee -> google.protobuf.FileOptions + 51, // 60: grpc.federation.service:extendee -> google.protobuf.ServiceOptions + 52, // 61: grpc.federation.method:extendee -> google.protobuf.MethodOptions + 53, // 62: grpc.federation.message:extendee -> google.protobuf.MessageOptions + 54, // 63: grpc.federation.field:extendee -> google.protobuf.FieldOptions + 55, // 64: grpc.federation.enum:extendee -> google.protobuf.EnumOptions + 56, // 65: grpc.federation.enum_value:extendee -> google.protobuf.EnumValueOptions + 57, // 66: grpc.federation.oneof:extendee -> google.protobuf.OneofOptions + 2, // 67: grpc.federation.file:type_name -> grpc.federation.FileRule + 6, // 68: grpc.federation.service:type_name -> grpc.federation.ServiceRule + 12, // 69: grpc.federation.method:type_name -> grpc.federation.MethodRule + 13, // 70: grpc.federation.message:type_name -> grpc.federation.MessageRule + 29, // 71: grpc.federation.field:type_name -> grpc.federation.FieldRule + 3, // 72: grpc.federation.enum:type_name -> grpc.federation.EnumRule + 4, // 73: grpc.federation.enum_value:type_name -> grpc.federation.EnumValueRule + 5, // 74: grpc.federation.oneof:type_name -> grpc.federation.OneofRule + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 67, // [67:75] is the sub-list for extension type_name + 59, // [59:67] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_grpc_federation_federation_proto_init() } @@ -3903,7 +4005,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallExpr); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -3915,7 +4017,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*CallExpr); i { case 0: return &v.state case 1: @@ -3927,7 +4029,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -3939,7 +4041,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -3951,7 +4053,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -3963,7 +4065,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyConstant); i { + switch v := v.(*RetryPolicy); i { case 0: return &v.state case 1: @@ -3975,7 +4077,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicyExponential); i { + switch v := v.(*RetryPolicyConstant); i { case 0: return &v.state case 1: @@ -3987,7 +4089,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodRequest); i { + switch v := v.(*RetryPolicyExponential); i { case 0: return &v.state case 1: @@ -3999,7 +4101,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodResponse); i { + switch v := v.(*MethodRequest); i { case 0: return &v.state case 1: @@ -4011,7 +4113,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*MethodResponse); i { case 0: return &v.state case 1: @@ -4023,7 +4125,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldRule); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -4035,7 +4137,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOneof); i { + switch v := v.(*FieldRule); i { case 0: return &v.state case 1: @@ -4047,7 +4149,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*FieldOneof); i { case 0: return &v.state case 1: @@ -4059,7 +4161,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPluginExport); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -4071,7 +4173,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPluginExport); i { case 0: return &v.state case 1: @@ -4083,7 +4185,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELReceiverType); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -4095,7 +4197,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunctionArgument); i { + switch v := v.(*CELReceiverType); i { case 0: return &v.state case 1: @@ -4107,7 +4209,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELType); i { + switch v := v.(*CELFunctionArgument); i { case 0: return &v.state case 1: @@ -4119,7 +4221,7 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELMapType); i { + switch v := v.(*CELType); i { case 0: return &v.state case 1: @@ -4131,6 +4233,18 @@ func file_grpc_federation_federation_proto_init() { } } file_grpc_federation_federation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CELMapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_federation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CELVariable); i { case 0: return &v.state @@ -4159,29 +4273,31 @@ func file_grpc_federation_federation_proto_init() { (*VariableDefinition_Message)(nil), (*VariableDefinition_Call)(nil), (*VariableDefinition_Validation)(nil), + (*VariableDefinition_Enum)(nil), } file_grpc_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{ (*MapExpr_By)(nil), (*MapExpr_Message)(nil), + (*MapExpr_Enum)(nil), } - file_grpc_federation_federation_proto_msgTypes[16].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[19].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_federation_proto_msgTypes[21].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[22].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[23].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[24].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[25].OneofWrappers = []interface{}{} file_grpc_federation_federation_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_grpc_federation_federation_proto_msgTypes[28].OneofWrappers = []interface{}{ (*FieldOneof_If)(nil), (*FieldOneof_Default)(nil), } - file_grpc_federation_federation_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_grpc_federation_federation_proto_msgTypes[34].OneofWrappers = []interface{}{ (*CELType_Kind)(nil), (*CELType_Repeated)(nil), (*CELType_Map)(nil), @@ -4194,7 +4310,7 @@ func file_grpc_federation_federation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_federation_proto_rawDesc, NumEnums: 2, - NumMessages: 36, + NumMessages: 37, NumExtensions: 8, NumServices: 0, }, diff --git a/grpc/federation/generator/decode.go b/grpc/federation/generator/decode.go index 6f750d60..8bb46191 100644 --- a/grpc/federation/generator/decode.go +++ b/grpc/federation/generator/decode.go @@ -792,6 +792,10 @@ func (d *decoder) toVariableExpr(expr *plugin.VariableExpr) (*resolver.VariableE if err != nil { return nil, err } + enumExpr, err := d.toEnumExpr(expr.GetEnum()) + if err != nil { + return nil, err + } validationExpr, err := d.toValidationExpr(expr.GetValidation()) if err != nil { return nil, err @@ -802,6 +806,7 @@ func (d *decoder) toVariableExpr(expr *plugin.VariableExpr) (*resolver.VariableE ret.Map = mapExpr ret.Call = callExpr ret.Message = msgExpr + ret.Enum = enumExpr ret.Validation = validationExpr return ret, nil } @@ -858,10 +863,15 @@ func (d *decoder) toMapIteratorExpr(expr *plugin.MapIteratorExpr) (*resolver.Map if err != nil { return nil, err } + enum, err := d.toEnumExpr(expr.GetEnum()) + if err != nil { + return nil, err + } ret.Type = typ ret.By = by ret.Message = msg + ret.Enum = enum return ret, nil } @@ -1014,6 +1024,25 @@ func (d *decoder) toMessageExpr(expr *plugin.MessageExpr) (*resolver.MessageExpr return ret, nil } +func (d *decoder) toEnumExpr(expr *plugin.EnumExpr) (*resolver.EnumExpr, error) { + if expr == nil { + return nil, nil + } + ret := &resolver.EnumExpr{} + + enum, err := d.toEnum(expr.GetEnumId()) + if err != nil { + return nil, err + } + by, err := d.toCELValue(expr.GetBy()) + if err != nil { + return nil, err + } + ret.Enum = enum + ret.By = by + return ret, nil +} + func (d *decoder) toValidationExpr(expr *plugin.ValidationExpr) (*resolver.ValidationExpr, error) { if expr == nil { return nil, nil diff --git a/grpc/federation/generator/encode.go b/grpc/federation/generator/encode.go index fb00b163..edc64710 100644 --- a/grpc/federation/generator/encode.go +++ b/grpc/federation/generator/encode.go @@ -803,6 +803,10 @@ func (e *encoder) toVariableExpr(expr *resolver.VariableExpr) *plugin.VariableEx ret.Expr = &plugin.VariableExpr_Message{ Message: e.toMessageExpr(expr.Message), } + case expr.Enum != nil: + ret.Expr = &plugin.VariableExpr_Enum{ + Enum: e.toEnumExpr(expr.Enum), + } case expr.Validation != nil: ret.Expr = &plugin.VariableExpr_Validation{ Validation: e.toValidationExpr(expr.Validation), @@ -847,6 +851,10 @@ func (e *encoder) toMapIteratorExpr(expr *resolver.MapIteratorExpr) *plugin.MapI ret.Expr = &plugin.MapIteratorExpr_Message{ Message: e.toMessageExpr(expr.Message), } + case expr.Enum != nil: + ret.Expr = &plugin.MapIteratorExpr_Enum{ + Enum: e.toEnumExpr(expr.Enum), + } } return ret } @@ -958,6 +966,16 @@ func (e *encoder) toValue(value *resolver.Value) *plugin.Value { } } +func (e *encoder) toEnumExpr(expr *resolver.EnumExpr) *plugin.EnumExpr { + if expr == nil { + return nil + } + return &plugin.EnumExpr{ + EnumId: e.toEnum(expr.Enum).GetId(), + By: e.toCELValue(expr.By), + } +} + func (e *encoder) toValidationExpr(expr *resolver.ValidationExpr) *plugin.ValidationExpr { if expr == nil { return nil diff --git a/grpc/federation/generator/plugin/generator.pb.go b/grpc/federation/generator/plugin/generator.pb.go index 51542978..0cd22b66 100644 --- a/grpc/federation/generator/plugin/generator.pb.go +++ b/grpc/federation/generator/plugin/generator.pb.go @@ -2064,6 +2064,7 @@ type VariableExpr struct { // *VariableExpr_Call // *VariableExpr_Message // *VariableExpr_Validation + // *VariableExpr_Enum Expr isVariableExpr_Expr `protobuf_oneof:"expr"` } @@ -2148,6 +2149,13 @@ func (x *VariableExpr) GetValidation() *ValidationExpr { return nil } +func (x *VariableExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*VariableExpr_Enum); ok { + return x.Enum + } + return nil +} + type isVariableExpr_Expr interface { isVariableExpr_Expr() } @@ -2172,6 +2180,10 @@ type VariableExpr_Validation struct { Validation *ValidationExpr `protobuf:"bytes,6,opt,name=validation,proto3,oneof"` } +type VariableExpr_Enum struct { + Enum *EnumExpr `protobuf:"bytes,7,opt,name=enum,proto3,oneof"` +} + func (*VariableExpr_By) isVariableExpr_Expr() {} func (*VariableExpr_Map) isVariableExpr_Expr() {} @@ -2182,6 +2194,8 @@ func (*VariableExpr_Message) isVariableExpr_Expr() {} func (*VariableExpr_Validation) isVariableExpr_Expr() {} +func (*VariableExpr_Enum) isVariableExpr_Expr() {} + type Type struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2476,6 +2490,7 @@ type MapIteratorExpr struct { // // *MapIteratorExpr_By // *MapIteratorExpr_Message + // *MapIteratorExpr_Enum Expr isMapIteratorExpr_Expr `protobuf_oneof:"expr"` } @@ -2539,6 +2554,13 @@ func (x *MapIteratorExpr) GetMessage() *MessageExpr { return nil } +func (x *MapIteratorExpr) GetEnum() *EnumExpr { + if x, ok := x.GetExpr().(*MapIteratorExpr_Enum); ok { + return x.Enum + } + return nil +} + type isMapIteratorExpr_Expr interface { isMapIteratorExpr_Expr() } @@ -2551,10 +2573,16 @@ type MapIteratorExpr_Message struct { Message *MessageExpr `protobuf:"bytes,3,opt,name=message,proto3,oneof"` } +type MapIteratorExpr_Enum struct { + Enum *EnumExpr `protobuf:"bytes,4,opt,name=enum,proto3,oneof"` +} + func (*MapIteratorExpr_By) isMapIteratorExpr_Expr() {} func (*MapIteratorExpr_Message) isMapIteratorExpr_Expr() {} +func (*MapIteratorExpr_Enum) isMapIteratorExpr_Expr() {} + type CallExpr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2975,6 +3003,61 @@ func (x *MessageExpr) GetArgs() []*Argument { return nil } +type EnumExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EnumId string `protobuf:"bytes,1,opt,name=enum_id,json=enumId,proto3" json:"enum_id,omitempty"` + By *CELValue `protobuf:"bytes,2,opt,name=by,proto3" json:"by,omitempty"` +} + +func (x *EnumExpr) Reset() { + *x = EnumExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_federation_generator_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnumExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnumExpr) ProtoMessage() {} + +func (x *EnumExpr) ProtoReflect() protoreflect.Message { + mi := &file_grpc_federation_generator_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnumExpr.ProtoReflect.Descriptor instead. +func (*EnumExpr) Descriptor() ([]byte, []int) { + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{35} +} + +func (x *EnumExpr) GetEnumId() string { + if x != nil { + return x.EnumId + } + return "" +} + +func (x *EnumExpr) GetBy() *CELValue { + if x != nil { + return x.By + } + return nil +} + type Argument struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2989,7 +3072,7 @@ type Argument struct { func (x *Argument) Reset() { *x = Argument{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[35] + mi := &file_grpc_federation_generator_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3002,7 +3085,7 @@ func (x *Argument) String() string { func (*Argument) ProtoMessage() {} func (x *Argument) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[35] + mi := &file_grpc_federation_generator_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3015,7 +3098,7 @@ func (x *Argument) ProtoReflect() protoreflect.Message { // Deprecated: Use Argument.ProtoReflect.Descriptor instead. func (*Argument) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{35} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{36} } func (x *Argument) GetName() string { @@ -3058,7 +3141,7 @@ type Value struct { func (x *Value) Reset() { *x = Value{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[36] + mi := &file_grpc_federation_generator_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3071,7 +3154,7 @@ func (x *Value) String() string { func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[36] + mi := &file_grpc_federation_generator_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3084,7 +3167,7 @@ func (x *Value) ProtoReflect() protoreflect.Message { // Deprecated: Use Value.ProtoReflect.Descriptor instead. func (*Value) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{36} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{37} } func (x *Value) GetInline() bool { @@ -3113,7 +3196,7 @@ type ValidationExpr struct { func (x *ValidationExpr) Reset() { *x = ValidationExpr{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[37] + mi := &file_grpc_federation_generator_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3126,7 +3209,7 @@ func (x *ValidationExpr) String() string { func (*ValidationExpr) ProtoMessage() {} func (x *ValidationExpr) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[37] + mi := &file_grpc_federation_generator_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3139,7 +3222,7 @@ func (x *ValidationExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidationExpr.ProtoReflect.Descriptor instead. func (*ValidationExpr) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{37} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{38} } func (x *ValidationExpr) GetName() string { @@ -3173,7 +3256,7 @@ type GRPCError struct { func (x *GRPCError) Reset() { *x = GRPCError{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[38] + mi := &file_grpc_federation_generator_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3186,7 +3269,7 @@ func (x *GRPCError) String() string { func (*GRPCError) ProtoMessage() {} func (x *GRPCError) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[38] + mi := &file_grpc_federation_generator_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3199,7 +3282,7 @@ func (x *GRPCError) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCError.ProtoReflect.Descriptor instead. func (*GRPCError) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{38} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{39} } func (x *GRPCError) GetDefSet() *VariableDefinitionSet { @@ -3268,7 +3351,7 @@ type GRPCErrorDetail struct { func (x *GRPCErrorDetail) Reset() { *x = GRPCErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[39] + mi := &file_grpc_federation_generator_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3281,7 +3364,7 @@ func (x *GRPCErrorDetail) String() string { func (*GRPCErrorDetail) ProtoMessage() {} func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[39] + mi := &file_grpc_federation_generator_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3294,7 +3377,7 @@ func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCErrorDetail.ProtoReflect.Descriptor instead. func (*GRPCErrorDetail) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{39} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{40} } func (x *GRPCErrorDetail) GetDefSet() *VariableDefinitionSet { @@ -3357,7 +3440,7 @@ type PreconditionFailure struct { func (x *PreconditionFailure) Reset() { *x = PreconditionFailure{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[40] + mi := &file_grpc_federation_generator_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3370,7 +3453,7 @@ func (x *PreconditionFailure) String() string { func (*PreconditionFailure) ProtoMessage() {} func (x *PreconditionFailure) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[40] + mi := &file_grpc_federation_generator_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3383,7 +3466,7 @@ func (x *PreconditionFailure) ProtoReflect() protoreflect.Message { // Deprecated: Use PreconditionFailure.ProtoReflect.Descriptor instead. func (*PreconditionFailure) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{40} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{41} } func (x *PreconditionFailure) GetViolations() []*PreconditionFailureViolation { @@ -3406,7 +3489,7 @@ type PreconditionFailureViolation struct { func (x *PreconditionFailureViolation) Reset() { *x = PreconditionFailureViolation{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[41] + mi := &file_grpc_federation_generator_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3419,7 +3502,7 @@ func (x *PreconditionFailureViolation) String() string { func (*PreconditionFailureViolation) ProtoMessage() {} func (x *PreconditionFailureViolation) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[41] + mi := &file_grpc_federation_generator_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3432,7 +3515,7 @@ func (x *PreconditionFailureViolation) ProtoReflect() protoreflect.Message { // Deprecated: Use PreconditionFailureViolation.ProtoReflect.Descriptor instead. func (*PreconditionFailureViolation) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{41} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{42} } func (x *PreconditionFailureViolation) GetType() *CELValue { @@ -3467,7 +3550,7 @@ type BadRequest struct { func (x *BadRequest) Reset() { *x = BadRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[42] + mi := &file_grpc_federation_generator_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3480,7 +3563,7 @@ func (x *BadRequest) String() string { func (*BadRequest) ProtoMessage() {} func (x *BadRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[42] + mi := &file_grpc_federation_generator_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3493,7 +3576,7 @@ func (x *BadRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BadRequest.ProtoReflect.Descriptor instead. func (*BadRequest) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{42} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{43} } func (x *BadRequest) GetFieldViolations() []*BadRequestFieldViolation { @@ -3515,7 +3598,7 @@ type BadRequestFieldViolation struct { func (x *BadRequestFieldViolation) Reset() { *x = BadRequestFieldViolation{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[43] + mi := &file_grpc_federation_generator_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3528,7 +3611,7 @@ func (x *BadRequestFieldViolation) String() string { func (*BadRequestFieldViolation) ProtoMessage() {} func (x *BadRequestFieldViolation) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[43] + mi := &file_grpc_federation_generator_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3541,7 +3624,7 @@ func (x *BadRequestFieldViolation) ProtoReflect() protoreflect.Message { // Deprecated: Use BadRequestFieldViolation.ProtoReflect.Descriptor instead. func (*BadRequestFieldViolation) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{43} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{44} } func (x *BadRequestFieldViolation) GetField() *CELValue { @@ -3570,7 +3653,7 @@ type LocalizedMessage struct { func (x *LocalizedMessage) Reset() { *x = LocalizedMessage{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[44] + mi := &file_grpc_federation_generator_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3583,7 +3666,7 @@ func (x *LocalizedMessage) String() string { func (*LocalizedMessage) ProtoMessage() {} func (x *LocalizedMessage) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[44] + mi := &file_grpc_federation_generator_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3596,7 +3679,7 @@ func (x *LocalizedMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use LocalizedMessage.ProtoReflect.Descriptor instead. func (*LocalizedMessage) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{44} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{45} } func (x *LocalizedMessage) GetLocale() string { @@ -3627,7 +3710,7 @@ type Oneof struct { func (x *Oneof) Reset() { *x = Oneof{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[45] + mi := &file_grpc_federation_generator_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3640,7 +3723,7 @@ func (x *Oneof) String() string { func (*Oneof) ProtoMessage() {} func (x *Oneof) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[45] + mi := &file_grpc_federation_generator_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3653,7 +3736,7 @@ func (x *Oneof) ProtoReflect() protoreflect.Message { // Deprecated: Use Oneof.ProtoReflect.Descriptor instead. func (*Oneof) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{45} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{46} } func (x *Oneof) GetId() string { @@ -3700,7 +3783,7 @@ type Enum struct { func (x *Enum) Reset() { *x = Enum{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[46] + mi := &file_grpc_federation_generator_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3713,7 +3796,7 @@ func (x *Enum) String() string { func (*Enum) ProtoMessage() {} func (x *Enum) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[46] + mi := &file_grpc_federation_generator_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3726,7 +3809,7 @@ func (x *Enum) ProtoReflect() protoreflect.Message { // Deprecated: Use Enum.ProtoReflect.Descriptor instead. func (*Enum) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{46} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{47} } func (x *Enum) GetId() string { @@ -3785,7 +3868,7 @@ type EnumValue struct { func (x *EnumValue) Reset() { *x = EnumValue{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[47] + mi := &file_grpc_federation_generator_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3798,7 +3881,7 @@ func (x *EnumValue) String() string { func (*EnumValue) ProtoMessage() {} func (x *EnumValue) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[47] + mi := &file_grpc_federation_generator_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3811,7 +3894,7 @@ func (x *EnumValue) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValue.ProtoReflect.Descriptor instead. func (*EnumValue) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{47} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{48} } func (x *EnumValue) GetId() string { @@ -3853,7 +3936,7 @@ type EnumRule struct { func (x *EnumRule) Reset() { *x = EnumRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[48] + mi := &file_grpc_federation_generator_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3866,7 +3949,7 @@ func (x *EnumRule) String() string { func (*EnumRule) ProtoMessage() {} func (x *EnumRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[48] + mi := &file_grpc_federation_generator_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3879,7 +3962,7 @@ func (x *EnumRule) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumRule.ProtoReflect.Descriptor instead. func (*EnumRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{48} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{49} } func (x *EnumRule) GetAliasIds() []string { @@ -3901,7 +3984,7 @@ type EnumValueRule struct { func (x *EnumValueRule) Reset() { *x = EnumValueRule{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[49] + mi := &file_grpc_federation_generator_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3914,7 +3997,7 @@ func (x *EnumValueRule) String() string { func (*EnumValueRule) ProtoMessage() {} func (x *EnumValueRule) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[49] + mi := &file_grpc_federation_generator_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3927,7 +4010,7 @@ func (x *EnumValueRule) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueRule.ProtoReflect.Descriptor instead. func (*EnumValueRule) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{49} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{50} } func (x *EnumValueRule) GetDefault() bool { @@ -3956,7 +4039,7 @@ type EnumValueAlias struct { func (x *EnumValueAlias) Reset() { *x = EnumValueAlias{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[50] + mi := &file_grpc_federation_generator_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3969,7 +4052,7 @@ func (x *EnumValueAlias) String() string { func (*EnumValueAlias) ProtoMessage() {} func (x *EnumValueAlias) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[50] + mi := &file_grpc_federation_generator_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3982,7 +4065,7 @@ func (x *EnumValueAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueAlias.ProtoReflect.Descriptor instead. func (*EnumValueAlias) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{50} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{51} } func (x *EnumValueAlias) GetEnumAliasId() string { @@ -4013,7 +4096,7 @@ type CELPlugin struct { func (x *CELPlugin) Reset() { *x = CELPlugin{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[51] + mi := &file_grpc_federation_generator_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4026,7 +4109,7 @@ func (x *CELPlugin) String() string { func (*CELPlugin) ProtoMessage() {} func (x *CELPlugin) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[51] + mi := &file_grpc_federation_generator_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4039,7 +4122,7 @@ func (x *CELPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use CELPlugin.ProtoReflect.Descriptor instead. func (*CELPlugin) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{51} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{52} } func (x *CELPlugin) GetId() string { @@ -4085,7 +4168,7 @@ type CELFunction struct { func (x *CELFunction) Reset() { *x = CELFunction{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[52] + mi := &file_grpc_federation_generator_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4098,7 +4181,7 @@ func (x *CELFunction) String() string { func (*CELFunction) ProtoMessage() {} func (x *CELFunction) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[52] + mi := &file_grpc_federation_generator_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4111,7 +4194,7 @@ func (x *CELFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use CELFunction.ProtoReflect.Descriptor instead. func (*CELFunction) Descriptor() ([]byte, []int) { - return file_grpc_federation_generator_proto_rawDescGZIP(), []int{52} + return file_grpc_federation_generator_proto_rawDescGZIP(), []int{53} } func (x *CELFunction) GetName() string { @@ -4160,7 +4243,7 @@ type ProtoCodeGeneratorResponse_GeneratedCodeInfo struct { func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo) Reset() { *x = ProtoCodeGeneratorResponse_GeneratedCodeInfo{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[53] + mi := &file_grpc_federation_generator_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4173,7 +4256,7 @@ func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo) String() string { func (*ProtoCodeGeneratorResponse_GeneratedCodeInfo) ProtoMessage() {} func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[53] + mi := &file_grpc_federation_generator_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4210,7 +4293,7 @@ type ProtoCodeGeneratorResponse_File struct { func (x *ProtoCodeGeneratorResponse_File) Reset() { *x = ProtoCodeGeneratorResponse_File{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[54] + mi := &file_grpc_federation_generator_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4223,7 +4306,7 @@ func (x *ProtoCodeGeneratorResponse_File) String() string { func (*ProtoCodeGeneratorResponse_File) ProtoMessage() {} func (x *ProtoCodeGeneratorResponse_File) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[54] + mi := &file_grpc_federation_generator_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4282,7 +4365,7 @@ type ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation struct { func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation) Reset() { *x = ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_federation_generator_proto_msgTypes[55] + mi := &file_grpc_federation_generator_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4295,7 +4378,7 @@ func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation) String() strin func (*ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation) ProtoMessage() {} func (x *ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message { - mi := &file_grpc_federation_generator_proto_msgTypes[55] + mi := &file_grpc_federation_generator_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4856,7 +4939,7 @@ var file_grpc_federation_generator_proto_rawDesc = []byte{ 0x12, 0x34, 0x0a, 0x16, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb0, 0x03, 0x0a, 0x0c, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xf2, 0x03, 0x0a, 0x0c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, @@ -4883,372 +4966,386 @@ var file_grpc_federation_generator_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0xe6, 0x01, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x17, - 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x69, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x65, 0x6e, 0x75, 0x6d, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x75, - 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x05, 0x0a, 0x03, 0x72, - 0x65, 0x66, 0x22, 0x58, 0x0a, 0x08, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x78, - 0x70, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x40, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6f, 0x75, 0x74, 0x22, 0x98, 0x01, 0x0a, - 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, 0x12, 0x46, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x49, 0x74, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x45, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, - 0x72, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x3b, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x64, 0x22, 0xde, 0x01, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x49, 0x74, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x02, - 0x62, 0x79, 0x12, 0x49, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, - 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, - 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0xab, 0x02, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, - 0x70, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, 0x64, 0x12, - 0x43, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0xe6, 0x01, 0x0a, 0x04, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x69, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0a, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x65, 0x6e, + 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x65, + 0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x05, 0x0a, + 0x03, 0x72, 0x65, 0x66, 0x22, 0x58, 0x0a, 0x08, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x65, 0x78, 0x70, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6f, 0x75, 0x74, 0x22, 0x98, + 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x45, 0x78, 0x70, 0x72, 0x12, 0x46, 0x0a, 0x08, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, + 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x43, 0x0a, 0x05, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x67, 0x69, 0x6e, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x3b, 0x0a, 0x08, 0x49, 0x74, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x22, 0xa0, 0x02, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x49, 0x74, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, - 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x12, 0x43, - 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, - 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x6d, 0x0a, 0x13, - 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, - 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0xd5, 0x02, 0x0a, 0x16, - 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x31, 0x0a, 0x14, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x72, 0x61, 0x6e, 0x64, - 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x1e, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, - 0x3c, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1f, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x43, - 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, - 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x17, - 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x6c, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x08, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x66, 0x22, 0x5d, 0x0a, - 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3c, - 0x0a, 0x03, 0x63, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, - 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x63, 0x65, 0x6c, 0x22, 0x67, 0x0a, 0x0e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd4, 0x03, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x06, 0x64, - 0x65, 0x66, 0x53, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, - 0x66, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, - 0x65, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, + 0x52, 0x02, 0x62, 0x79, 0x12, 0x49, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x40, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x4b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x5a, 0x0a, 0x13, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0xab, 0x02, 0x0a, 0x08, 0x43, 0x61, + 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xd0, 0x04, 0x0a, - 0x0f, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0x50, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x53, - 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x66, 0x12, 0x53, - 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x14, 0x70, 0x72, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, - 0x4f, 0x0a, 0x0c, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x0b, 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, - 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, + 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x43, 0x0a, + 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x62, 0x79, 0x22, - 0x75, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x5e, 0x0a, 0x0a, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x72, 0x70, + 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x72, 0x65, 0x74, + 0x72, 0x79, 0x12, 0x43, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, + 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x74, + 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0b, + 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0b, 0x65, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x02, 0x69, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x22, 0x6d, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, + 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1f, + 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, + 0xd5, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x12, 0x31, 0x0a, 0x14, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, + 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x43, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, + 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x45, 0x6c, 0x61, 0x70, + 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, + 0x67, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x6c, 0x0a, 0x0b, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0x5f, 0x0a, 0x08, 0x45, 0x6e, 0x75, + 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x3a, + 0x0a, 0x02, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x72, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x69, 0x6f, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x1c, 0x50, 0x72, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x56, 0x69, - 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x4c, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, + 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x62, 0x79, 0x22, 0xd5, 0x01, 0x0a, 0x08, 0x41, + 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, + 0x69, 0x66, 0x22, 0x5d, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x12, 0x3c, 0x0a, 0x03, 0x63, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x63, 0x65, + 0x6c, 0x22, 0x67, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd4, 0x03, 0x0a, 0x09, 0x47, + 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x5f, + 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x53, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x02, 0x69, 0x66, 0x12, 0x29, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x44, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x0a, 0x42, - 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x10, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x52, 0x50, 0x43, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x5a, 0x0a, 0x13, + 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x22, 0xd0, 0x04, 0x0a, 0x0f, 0x47, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x50, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x5f, 0x73, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, + 0x06, 0x64, 0x65, 0x66, 0x53, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0xaa, 0x01, 0x0a, 0x18, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, - 0x4c, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x02, 0x69, 0x66, 0x12, 0x53, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x08, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x70, 0x72, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x14, + 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x62, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x61, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0b, 0x62, 0x61, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, - 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, + 0x52, 0x02, 0x62, 0x79, 0x22, 0x75, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x5e, 0x0a, 0x0a, 0x76, + 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x1c, + 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, - 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0x67, 0x0a, 0x05, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, - 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x04, 0x72, 0x75, - 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x07, + 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x73, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, + 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x09, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x17, - 0x0a, 0x07, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x27, 0x0a, 0x08, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x49, 0x64, 0x73, 0x22, 0x75, 0x0a, 0x0d, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x12, 0x4a, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x18, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x22, 0x51, 0x0a, 0x0e, - 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x22, - 0x0a, 0x0d, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x49, 0x64, 0x73, 0x22, - 0x9e, 0x01, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x0e, 0x0a, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x12, 0x4c, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x44, + 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x67, 0x0a, 0x05, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x73, 0x22, 0xbf, 0x01, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, + 0x3e, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, + 0x8f, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x04, + 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, + 0x65, 0x22, 0x27, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x08, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x49, 0x64, 0x73, 0x22, 0x75, 0x0a, 0x0d, 0x45, 0x6e, + 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x4a, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0xce, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, - 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, - 0x64, 0x2a, 0x6b, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x13, 0x0a, 0x0f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x45, 0x4c, 0x45, - 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x2a, 0xcc, - 0x02, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x0c, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, - 0x0b, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x0e, - 0x0a, 0x0a, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, 0x0e, - 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, - 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x12, - 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x59, 0x54, 0x45, 0x53, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, - 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x46, 0x49, 0x58, - 0x45, 0x44, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x53, - 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, - 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x12, 0x42, 0x4c, 0x5a, - 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x63, - 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x3b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, + 0x73, 0x22, 0x51, 0x0a, 0x0e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x75, 0x6d, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x49, 0x64, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x09, 0x43, 0x45, 0x4c, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, + 0x45, 0x4c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xce, 0x01, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x2a, 0x6b, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x45, 0x45, + 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x11, 0x0a, + 0x0d, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, + 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x04, 0x2a, 0xcc, 0x02, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64, + 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, + 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x4f, 0x4f, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x49, 0x4e, + 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x49, + 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x45, + 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x46, + 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0f, 0x12, 0x11, 0x0a, + 0x0d, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x10, + 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x12, 0x42, 0x4c, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x6d, 0x65, 0x72, 0x63, 0x61, 0x72, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x3b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5264,7 +5361,7 @@ func file_grpc_federation_generator_proto_rawDescGZIP() []byte { } var file_grpc_federation_generator_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_grpc_federation_generator_proto_msgTypes = make([]protoimpl.MessageInfo, 68) +var file_grpc_federation_generator_proto_msgTypes = make([]protoimpl.MessageInfo, 69) var file_grpc_federation_generator_proto_goTypes = []interface{}{ (ActionType)(0), // 0: grpc.federation.generator.plugin.ActionType (TypeKind)(0), // 1: grpc.federation.generator.plugin.TypeKind @@ -5305,71 +5402,72 @@ var file_grpc_federation_generator_proto_goTypes = []interface{}{ (*RetryPolicyExponential)(nil), // 36: grpc.federation.generator.plugin.RetryPolicyExponential (*Request)(nil), // 37: grpc.federation.generator.plugin.Request (*MessageExpr)(nil), // 38: grpc.federation.generator.plugin.MessageExpr - (*Argument)(nil), // 39: grpc.federation.generator.plugin.Argument - (*Value)(nil), // 40: grpc.federation.generator.plugin.Value - (*ValidationExpr)(nil), // 41: grpc.federation.generator.plugin.ValidationExpr - (*GRPCError)(nil), // 42: grpc.federation.generator.plugin.GRPCError - (*GRPCErrorDetail)(nil), // 43: grpc.federation.generator.plugin.GRPCErrorDetail - (*PreconditionFailure)(nil), // 44: grpc.federation.generator.plugin.PreconditionFailure - (*PreconditionFailureViolation)(nil), // 45: grpc.federation.generator.plugin.PreconditionFailureViolation - (*BadRequest)(nil), // 46: grpc.federation.generator.plugin.BadRequest - (*BadRequestFieldViolation)(nil), // 47: grpc.federation.generator.plugin.BadRequestFieldViolation - (*LocalizedMessage)(nil), // 48: grpc.federation.generator.plugin.LocalizedMessage - (*Oneof)(nil), // 49: grpc.federation.generator.plugin.Oneof - (*Enum)(nil), // 50: grpc.federation.generator.plugin.Enum - (*EnumValue)(nil), // 51: grpc.federation.generator.plugin.EnumValue - (*EnumRule)(nil), // 52: grpc.federation.generator.plugin.EnumRule - (*EnumValueRule)(nil), // 53: grpc.federation.generator.plugin.EnumValueRule - (*EnumValueAlias)(nil), // 54: grpc.federation.generator.plugin.EnumValueAlias - (*CELPlugin)(nil), // 55: grpc.federation.generator.plugin.CELPlugin - (*CELFunction)(nil), // 56: grpc.federation.generator.plugin.CELFunction - (*ProtoCodeGeneratorResponse_GeneratedCodeInfo)(nil), // 57: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo - (*ProtoCodeGeneratorResponse_File)(nil), // 58: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File - (*ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation)(nil), // 59: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation - nil, // 60: grpc.federation.generator.plugin.Reference.FileMapEntry - nil, // 61: grpc.federation.generator.plugin.Reference.ServiceMapEntry - nil, // 62: grpc.federation.generator.plugin.Reference.MethodMapEntry - nil, // 63: grpc.federation.generator.plugin.Reference.MessageMapEntry - nil, // 64: grpc.federation.generator.plugin.Reference.FieldMapEntry - nil, // 65: grpc.federation.generator.plugin.Reference.EnumMapEntry - nil, // 66: grpc.federation.generator.plugin.Reference.EnumValueMapEntry - nil, // 67: grpc.federation.generator.plugin.Reference.OneofMapEntry - nil, // 68: grpc.federation.generator.plugin.Reference.CelPluginMapEntry - nil, // 69: grpc.federation.generator.plugin.Reference.GraphMapEntry - nil, // 70: grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry - nil, // 71: grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry - (*durationpb.Duration)(nil), // 72: google.protobuf.Duration - (code.Code)(0), // 73: google.rpc.Code + (*EnumExpr)(nil), // 39: grpc.federation.generator.plugin.EnumExpr + (*Argument)(nil), // 40: grpc.federation.generator.plugin.Argument + (*Value)(nil), // 41: grpc.federation.generator.plugin.Value + (*ValidationExpr)(nil), // 42: grpc.federation.generator.plugin.ValidationExpr + (*GRPCError)(nil), // 43: grpc.federation.generator.plugin.GRPCError + (*GRPCErrorDetail)(nil), // 44: grpc.federation.generator.plugin.GRPCErrorDetail + (*PreconditionFailure)(nil), // 45: grpc.federation.generator.plugin.PreconditionFailure + (*PreconditionFailureViolation)(nil), // 46: grpc.federation.generator.plugin.PreconditionFailureViolation + (*BadRequest)(nil), // 47: grpc.federation.generator.plugin.BadRequest + (*BadRequestFieldViolation)(nil), // 48: grpc.federation.generator.plugin.BadRequestFieldViolation + (*LocalizedMessage)(nil), // 49: grpc.federation.generator.plugin.LocalizedMessage + (*Oneof)(nil), // 50: grpc.federation.generator.plugin.Oneof + (*Enum)(nil), // 51: grpc.federation.generator.plugin.Enum + (*EnumValue)(nil), // 52: grpc.federation.generator.plugin.EnumValue + (*EnumRule)(nil), // 53: grpc.federation.generator.plugin.EnumRule + (*EnumValueRule)(nil), // 54: grpc.federation.generator.plugin.EnumValueRule + (*EnumValueAlias)(nil), // 55: grpc.federation.generator.plugin.EnumValueAlias + (*CELPlugin)(nil), // 56: grpc.federation.generator.plugin.CELPlugin + (*CELFunction)(nil), // 57: grpc.federation.generator.plugin.CELFunction + (*ProtoCodeGeneratorResponse_GeneratedCodeInfo)(nil), // 58: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo + (*ProtoCodeGeneratorResponse_File)(nil), // 59: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File + (*ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation)(nil), // 60: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation + nil, // 61: grpc.federation.generator.plugin.Reference.FileMapEntry + nil, // 62: grpc.federation.generator.plugin.Reference.ServiceMapEntry + nil, // 63: grpc.federation.generator.plugin.Reference.MethodMapEntry + nil, // 64: grpc.federation.generator.plugin.Reference.MessageMapEntry + nil, // 65: grpc.federation.generator.plugin.Reference.FieldMapEntry + nil, // 66: grpc.federation.generator.plugin.Reference.EnumMapEntry + nil, // 67: grpc.federation.generator.plugin.Reference.EnumValueMapEntry + nil, // 68: grpc.federation.generator.plugin.Reference.OneofMapEntry + nil, // 69: grpc.federation.generator.plugin.Reference.CelPluginMapEntry + nil, // 70: grpc.federation.generator.plugin.Reference.GraphMapEntry + nil, // 71: grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry + nil, // 72: grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry + (*durationpb.Duration)(nil), // 73: google.protobuf.Duration + (code.Code)(0), // 74: google.rpc.Code } var file_grpc_federation_generator_proto_depIdxs = []int32{ - 58, // 0: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.file:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File + 59, // 0: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.file:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File 0, // 1: grpc.federation.generator.plugin.CodeGeneratorRequest.type:type_name -> grpc.federation.generator.plugin.ActionType - 58, // 2: grpc.federation.generator.plugin.CodeGeneratorRequest.files:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File + 59, // 2: grpc.federation.generator.plugin.CodeGeneratorRequest.files:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File 6, // 3: grpc.federation.generator.plugin.CodeGeneratorRequest.reference:type_name -> grpc.federation.generator.plugin.Reference - 60, // 4: grpc.federation.generator.plugin.Reference.file_map:type_name -> grpc.federation.generator.plugin.Reference.FileMapEntry - 61, // 5: grpc.federation.generator.plugin.Reference.service_map:type_name -> grpc.federation.generator.plugin.Reference.ServiceMapEntry - 62, // 6: grpc.federation.generator.plugin.Reference.method_map:type_name -> grpc.federation.generator.plugin.Reference.MethodMapEntry - 63, // 7: grpc.federation.generator.plugin.Reference.message_map:type_name -> grpc.federation.generator.plugin.Reference.MessageMapEntry - 64, // 8: grpc.federation.generator.plugin.Reference.field_map:type_name -> grpc.federation.generator.plugin.Reference.FieldMapEntry - 65, // 9: grpc.federation.generator.plugin.Reference.enum_map:type_name -> grpc.federation.generator.plugin.Reference.EnumMapEntry - 66, // 10: grpc.federation.generator.plugin.Reference.enum_value_map:type_name -> grpc.federation.generator.plugin.Reference.EnumValueMapEntry - 67, // 11: grpc.federation.generator.plugin.Reference.oneof_map:type_name -> grpc.federation.generator.plugin.Reference.OneofMapEntry - 68, // 12: grpc.federation.generator.plugin.Reference.cel_plugin_map:type_name -> grpc.federation.generator.plugin.Reference.CelPluginMapEntry - 69, // 13: grpc.federation.generator.plugin.Reference.graph_map:type_name -> grpc.federation.generator.plugin.Reference.GraphMapEntry - 70, // 14: grpc.federation.generator.plugin.Reference.variable_definition_map:type_name -> grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry - 71, // 15: grpc.federation.generator.plugin.Reference.variable_definition_group_map:type_name -> grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry + 61, // 4: grpc.federation.generator.plugin.Reference.file_map:type_name -> grpc.federation.generator.plugin.Reference.FileMapEntry + 62, // 5: grpc.federation.generator.plugin.Reference.service_map:type_name -> grpc.federation.generator.plugin.Reference.ServiceMapEntry + 63, // 6: grpc.federation.generator.plugin.Reference.method_map:type_name -> grpc.federation.generator.plugin.Reference.MethodMapEntry + 64, // 7: grpc.federation.generator.plugin.Reference.message_map:type_name -> grpc.federation.generator.plugin.Reference.MessageMapEntry + 65, // 8: grpc.federation.generator.plugin.Reference.field_map:type_name -> grpc.federation.generator.plugin.Reference.FieldMapEntry + 66, // 9: grpc.federation.generator.plugin.Reference.enum_map:type_name -> grpc.federation.generator.plugin.Reference.EnumMapEntry + 67, // 10: grpc.federation.generator.plugin.Reference.enum_value_map:type_name -> grpc.federation.generator.plugin.Reference.EnumValueMapEntry + 68, // 11: grpc.federation.generator.plugin.Reference.oneof_map:type_name -> grpc.federation.generator.plugin.Reference.OneofMapEntry + 69, // 12: grpc.federation.generator.plugin.Reference.cel_plugin_map:type_name -> grpc.federation.generator.plugin.Reference.CelPluginMapEntry + 70, // 13: grpc.federation.generator.plugin.Reference.graph_map:type_name -> grpc.federation.generator.plugin.Reference.GraphMapEntry + 71, // 14: grpc.federation.generator.plugin.Reference.variable_definition_map:type_name -> grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry + 72, // 15: grpc.federation.generator.plugin.Reference.variable_definition_group_map:type_name -> grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry 8, // 16: grpc.federation.generator.plugin.File.package:type_name -> grpc.federation.generator.plugin.Package 9, // 17: grpc.federation.generator.plugin.File.go_package:type_name -> grpc.federation.generator.plugin.GoPackage 11, // 18: grpc.federation.generator.plugin.Service.rule:type_name -> grpc.federation.generator.plugin.ServiceRule 13, // 19: grpc.federation.generator.plugin.Method.rule:type_name -> grpc.federation.generator.plugin.MethodRule - 72, // 20: grpc.federation.generator.plugin.MethodRule.timeout:type_name -> google.protobuf.Duration + 73, // 20: grpc.federation.generator.plugin.MethodRule.timeout:type_name -> google.protobuf.Duration 15, // 21: grpc.federation.generator.plugin.Message.rule:type_name -> grpc.federation.generator.plugin.MessageRule 16, // 22: grpc.federation.generator.plugin.MessageRule.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet 29, // 23: grpc.federation.generator.plugin.VariableDefinition.if:type_name -> grpc.federation.generator.plugin.CELValue 27, // 24: grpc.federation.generator.plugin.VariableDefinition.expr:type_name -> grpc.federation.generator.plugin.VariableExpr 28, // 25: grpc.federation.generator.plugin.Field.type:type_name -> grpc.federation.generator.plugin.Type 19, // 26: grpc.federation.generator.plugin.Field.rule:type_name -> grpc.federation.generator.plugin.FieldRule - 40, // 27: grpc.federation.generator.plugin.FieldRule.value:type_name -> grpc.federation.generator.plugin.Value + 41, // 27: grpc.federation.generator.plugin.FieldRule.value:type_name -> grpc.federation.generator.plugin.Value 20, // 28: grpc.federation.generator.plugin.FieldRule.auto_bind_field:type_name -> grpc.federation.generator.plugin.AutoBindField 21, // 29: grpc.federation.generator.plugin.FieldRule.oneof_rule:type_name -> grpc.federation.generator.plugin.FieldOneofRule 29, // 30: grpc.federation.generator.plugin.FieldOneofRule.if:type_name -> grpc.federation.generator.plugin.CELValue @@ -5384,79 +5482,82 @@ var file_grpc_federation_generator_proto_depIdxs = []int32{ 30, // 39: grpc.federation.generator.plugin.VariableExpr.map:type_name -> grpc.federation.generator.plugin.MapExpr 33, // 40: grpc.federation.generator.plugin.VariableExpr.call:type_name -> grpc.federation.generator.plugin.CallExpr 38, // 41: grpc.federation.generator.plugin.VariableExpr.message:type_name -> grpc.federation.generator.plugin.MessageExpr - 41, // 42: grpc.federation.generator.plugin.VariableExpr.validation:type_name -> grpc.federation.generator.plugin.ValidationExpr - 1, // 43: grpc.federation.generator.plugin.Type.kind:type_name -> grpc.federation.generator.plugin.TypeKind - 28, // 44: grpc.federation.generator.plugin.CELValue.out:type_name -> grpc.federation.generator.plugin.Type - 31, // 45: grpc.federation.generator.plugin.MapExpr.iterator:type_name -> grpc.federation.generator.plugin.Iterator - 32, // 46: grpc.federation.generator.plugin.MapExpr.expr:type_name -> grpc.federation.generator.plugin.MapIteratorExpr - 28, // 47: grpc.federation.generator.plugin.MapIteratorExpr.type:type_name -> grpc.federation.generator.plugin.Type - 29, // 48: grpc.federation.generator.plugin.MapIteratorExpr.by:type_name -> grpc.federation.generator.plugin.CELValue - 38, // 49: grpc.federation.generator.plugin.MapIteratorExpr.message:type_name -> grpc.federation.generator.plugin.MessageExpr - 37, // 50: grpc.federation.generator.plugin.CallExpr.request:type_name -> grpc.federation.generator.plugin.Request - 72, // 51: grpc.federation.generator.plugin.CallExpr.timeout:type_name -> google.protobuf.Duration - 34, // 52: grpc.federation.generator.plugin.CallExpr.retry:type_name -> grpc.federation.generator.plugin.RetryPolicy - 42, // 53: grpc.federation.generator.plugin.CallExpr.errors:type_name -> grpc.federation.generator.plugin.GRPCError - 35, // 54: grpc.federation.generator.plugin.RetryPolicy.constant:type_name -> grpc.federation.generator.plugin.RetryPolicyConstant - 36, // 55: grpc.federation.generator.plugin.RetryPolicy.exponential:type_name -> grpc.federation.generator.plugin.RetryPolicyExponential - 29, // 56: grpc.federation.generator.plugin.RetryPolicy.if:type_name -> grpc.federation.generator.plugin.CELValue - 72, // 57: grpc.federation.generator.plugin.RetryPolicyConstant.interval:type_name -> google.protobuf.Duration - 72, // 58: grpc.federation.generator.plugin.RetryPolicyExponential.initial_interval:type_name -> google.protobuf.Duration - 72, // 59: grpc.federation.generator.plugin.RetryPolicyExponential.max_interval:type_name -> google.protobuf.Duration - 72, // 60: grpc.federation.generator.plugin.RetryPolicyExponential.max_elapsed_time:type_name -> google.protobuf.Duration - 39, // 61: grpc.federation.generator.plugin.Request.args:type_name -> grpc.federation.generator.plugin.Argument - 39, // 62: grpc.federation.generator.plugin.MessageExpr.args:type_name -> grpc.federation.generator.plugin.Argument - 28, // 63: grpc.federation.generator.plugin.Argument.type:type_name -> grpc.federation.generator.plugin.Type - 40, // 64: grpc.federation.generator.plugin.Argument.value:type_name -> grpc.federation.generator.plugin.Value - 29, // 65: grpc.federation.generator.plugin.Argument.if:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 66: grpc.federation.generator.plugin.Value.cel:type_name -> grpc.federation.generator.plugin.CELValue - 42, // 67: grpc.federation.generator.plugin.ValidationExpr.error:type_name -> grpc.federation.generator.plugin.GRPCError - 16, // 68: grpc.federation.generator.plugin.GRPCError.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet - 29, // 69: grpc.federation.generator.plugin.GRPCError.if:type_name -> grpc.federation.generator.plugin.CELValue - 73, // 70: grpc.federation.generator.plugin.GRPCError.code:type_name -> google.rpc.Code - 29, // 71: grpc.federation.generator.plugin.GRPCError.message:type_name -> grpc.federation.generator.plugin.CELValue - 43, // 72: grpc.federation.generator.plugin.GRPCError.details:type_name -> grpc.federation.generator.plugin.GRPCErrorDetail - 29, // 73: grpc.federation.generator.plugin.GRPCError.ignore_and_response:type_name -> grpc.federation.generator.plugin.CELValue - 16, // 74: grpc.federation.generator.plugin.GRPCErrorDetail.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet - 29, // 75: grpc.federation.generator.plugin.GRPCErrorDetail.if:type_name -> grpc.federation.generator.plugin.CELValue - 16, // 76: grpc.federation.generator.plugin.GRPCErrorDetail.messages:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet - 44, // 77: grpc.federation.generator.plugin.GRPCErrorDetail.precondition_failures:type_name -> grpc.federation.generator.plugin.PreconditionFailure - 46, // 78: grpc.federation.generator.plugin.GRPCErrorDetail.bad_requests:type_name -> grpc.federation.generator.plugin.BadRequest - 48, // 79: grpc.federation.generator.plugin.GRPCErrorDetail.localized_messages:type_name -> grpc.federation.generator.plugin.LocalizedMessage - 29, // 80: grpc.federation.generator.plugin.GRPCErrorDetail.by:type_name -> grpc.federation.generator.plugin.CELValue - 45, // 81: grpc.federation.generator.plugin.PreconditionFailure.violations:type_name -> grpc.federation.generator.plugin.PreconditionFailureViolation - 29, // 82: grpc.federation.generator.plugin.PreconditionFailureViolation.type:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 83: grpc.federation.generator.plugin.PreconditionFailureViolation.subject:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 84: grpc.federation.generator.plugin.PreconditionFailureViolation.description:type_name -> grpc.federation.generator.plugin.CELValue - 47, // 85: grpc.federation.generator.plugin.BadRequest.field_violations:type_name -> grpc.federation.generator.plugin.BadRequestFieldViolation - 29, // 86: grpc.federation.generator.plugin.BadRequestFieldViolation.field:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 87: grpc.federation.generator.plugin.BadRequestFieldViolation.description:type_name -> grpc.federation.generator.plugin.CELValue - 29, // 88: grpc.federation.generator.plugin.LocalizedMessage.message:type_name -> grpc.federation.generator.plugin.CELValue - 52, // 89: grpc.federation.generator.plugin.Enum.rule:type_name -> grpc.federation.generator.plugin.EnumRule - 53, // 90: grpc.federation.generator.plugin.EnumValue.rule:type_name -> grpc.federation.generator.plugin.EnumValueRule - 54, // 91: grpc.federation.generator.plugin.EnumValueRule.aliases:type_name -> grpc.federation.generator.plugin.EnumValueAlias - 56, // 92: grpc.federation.generator.plugin.CELPlugin.functions:type_name -> grpc.federation.generator.plugin.CELFunction - 28, // 93: grpc.federation.generator.plugin.CELFunction.args:type_name -> grpc.federation.generator.plugin.Type - 28, // 94: grpc.federation.generator.plugin.CELFunction.return:type_name -> grpc.federation.generator.plugin.Type - 59, // 95: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.annotation:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation - 57, // 96: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File.generated_code_info:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo - 3, // 97: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation.semantic:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation.Semantic - 7, // 98: grpc.federation.generator.plugin.Reference.FileMapEntry.value:type_name -> grpc.federation.generator.plugin.File - 10, // 99: grpc.federation.generator.plugin.Reference.ServiceMapEntry.value:type_name -> grpc.federation.generator.plugin.Service - 12, // 100: grpc.federation.generator.plugin.Reference.MethodMapEntry.value:type_name -> grpc.federation.generator.plugin.Method - 14, // 101: grpc.federation.generator.plugin.Reference.MessageMapEntry.value:type_name -> grpc.federation.generator.plugin.Message - 18, // 102: grpc.federation.generator.plugin.Reference.FieldMapEntry.value:type_name -> grpc.federation.generator.plugin.Field - 50, // 103: grpc.federation.generator.plugin.Reference.EnumMapEntry.value:type_name -> grpc.federation.generator.plugin.Enum - 51, // 104: grpc.federation.generator.plugin.Reference.EnumValueMapEntry.value:type_name -> grpc.federation.generator.plugin.EnumValue - 49, // 105: grpc.federation.generator.plugin.Reference.OneofMapEntry.value:type_name -> grpc.federation.generator.plugin.Oneof - 55, // 106: grpc.federation.generator.plugin.Reference.CelPluginMapEntry.value:type_name -> grpc.federation.generator.plugin.CELPlugin - 25, // 107: grpc.federation.generator.plugin.Reference.GraphMapEntry.value:type_name -> grpc.federation.generator.plugin.MessageDependencyGraph - 17, // 108: grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry.value:type_name -> grpc.federation.generator.plugin.VariableDefinition - 22, // 109: grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry.value:type_name -> grpc.federation.generator.plugin.VariableDefinitionGroup - 110, // [110:110] is the sub-list for method output_type - 110, // [110:110] is the sub-list for method input_type - 110, // [110:110] is the sub-list for extension type_name - 110, // [110:110] is the sub-list for extension extendee - 0, // [0:110] is the sub-list for field type_name + 42, // 42: grpc.federation.generator.plugin.VariableExpr.validation:type_name -> grpc.federation.generator.plugin.ValidationExpr + 39, // 43: grpc.federation.generator.plugin.VariableExpr.enum:type_name -> grpc.federation.generator.plugin.EnumExpr + 1, // 44: grpc.federation.generator.plugin.Type.kind:type_name -> grpc.federation.generator.plugin.TypeKind + 28, // 45: grpc.federation.generator.plugin.CELValue.out:type_name -> grpc.federation.generator.plugin.Type + 31, // 46: grpc.federation.generator.plugin.MapExpr.iterator:type_name -> grpc.federation.generator.plugin.Iterator + 32, // 47: grpc.federation.generator.plugin.MapExpr.expr:type_name -> grpc.federation.generator.plugin.MapIteratorExpr + 28, // 48: grpc.federation.generator.plugin.MapIteratorExpr.type:type_name -> grpc.federation.generator.plugin.Type + 29, // 49: grpc.federation.generator.plugin.MapIteratorExpr.by:type_name -> grpc.federation.generator.plugin.CELValue + 38, // 50: grpc.federation.generator.plugin.MapIteratorExpr.message:type_name -> grpc.federation.generator.plugin.MessageExpr + 39, // 51: grpc.federation.generator.plugin.MapIteratorExpr.enum:type_name -> grpc.federation.generator.plugin.EnumExpr + 37, // 52: grpc.federation.generator.plugin.CallExpr.request:type_name -> grpc.federation.generator.plugin.Request + 73, // 53: grpc.federation.generator.plugin.CallExpr.timeout:type_name -> google.protobuf.Duration + 34, // 54: grpc.federation.generator.plugin.CallExpr.retry:type_name -> grpc.federation.generator.plugin.RetryPolicy + 43, // 55: grpc.federation.generator.plugin.CallExpr.errors:type_name -> grpc.federation.generator.plugin.GRPCError + 35, // 56: grpc.federation.generator.plugin.RetryPolicy.constant:type_name -> grpc.federation.generator.plugin.RetryPolicyConstant + 36, // 57: grpc.federation.generator.plugin.RetryPolicy.exponential:type_name -> grpc.federation.generator.plugin.RetryPolicyExponential + 29, // 58: grpc.federation.generator.plugin.RetryPolicy.if:type_name -> grpc.federation.generator.plugin.CELValue + 73, // 59: grpc.federation.generator.plugin.RetryPolicyConstant.interval:type_name -> google.protobuf.Duration + 73, // 60: grpc.federation.generator.plugin.RetryPolicyExponential.initial_interval:type_name -> google.protobuf.Duration + 73, // 61: grpc.federation.generator.plugin.RetryPolicyExponential.max_interval:type_name -> google.protobuf.Duration + 73, // 62: grpc.federation.generator.plugin.RetryPolicyExponential.max_elapsed_time:type_name -> google.protobuf.Duration + 40, // 63: grpc.federation.generator.plugin.Request.args:type_name -> grpc.federation.generator.plugin.Argument + 40, // 64: grpc.federation.generator.plugin.MessageExpr.args:type_name -> grpc.federation.generator.plugin.Argument + 29, // 65: grpc.federation.generator.plugin.EnumExpr.by:type_name -> grpc.federation.generator.plugin.CELValue + 28, // 66: grpc.federation.generator.plugin.Argument.type:type_name -> grpc.federation.generator.plugin.Type + 41, // 67: grpc.federation.generator.plugin.Argument.value:type_name -> grpc.federation.generator.plugin.Value + 29, // 68: grpc.federation.generator.plugin.Argument.if:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 69: grpc.federation.generator.plugin.Value.cel:type_name -> grpc.federation.generator.plugin.CELValue + 43, // 70: grpc.federation.generator.plugin.ValidationExpr.error:type_name -> grpc.federation.generator.plugin.GRPCError + 16, // 71: grpc.federation.generator.plugin.GRPCError.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet + 29, // 72: grpc.federation.generator.plugin.GRPCError.if:type_name -> grpc.federation.generator.plugin.CELValue + 74, // 73: grpc.federation.generator.plugin.GRPCError.code:type_name -> google.rpc.Code + 29, // 74: grpc.federation.generator.plugin.GRPCError.message:type_name -> grpc.federation.generator.plugin.CELValue + 44, // 75: grpc.federation.generator.plugin.GRPCError.details:type_name -> grpc.federation.generator.plugin.GRPCErrorDetail + 29, // 76: grpc.federation.generator.plugin.GRPCError.ignore_and_response:type_name -> grpc.federation.generator.plugin.CELValue + 16, // 77: grpc.federation.generator.plugin.GRPCErrorDetail.def_set:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet + 29, // 78: grpc.federation.generator.plugin.GRPCErrorDetail.if:type_name -> grpc.federation.generator.plugin.CELValue + 16, // 79: grpc.federation.generator.plugin.GRPCErrorDetail.messages:type_name -> grpc.federation.generator.plugin.VariableDefinitionSet + 45, // 80: grpc.federation.generator.plugin.GRPCErrorDetail.precondition_failures:type_name -> grpc.federation.generator.plugin.PreconditionFailure + 47, // 81: grpc.federation.generator.plugin.GRPCErrorDetail.bad_requests:type_name -> grpc.federation.generator.plugin.BadRequest + 49, // 82: grpc.federation.generator.plugin.GRPCErrorDetail.localized_messages:type_name -> grpc.federation.generator.plugin.LocalizedMessage + 29, // 83: grpc.federation.generator.plugin.GRPCErrorDetail.by:type_name -> grpc.federation.generator.plugin.CELValue + 46, // 84: grpc.federation.generator.plugin.PreconditionFailure.violations:type_name -> grpc.federation.generator.plugin.PreconditionFailureViolation + 29, // 85: grpc.federation.generator.plugin.PreconditionFailureViolation.type:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 86: grpc.federation.generator.plugin.PreconditionFailureViolation.subject:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 87: grpc.federation.generator.plugin.PreconditionFailureViolation.description:type_name -> grpc.federation.generator.plugin.CELValue + 48, // 88: grpc.federation.generator.plugin.BadRequest.field_violations:type_name -> grpc.federation.generator.plugin.BadRequestFieldViolation + 29, // 89: grpc.federation.generator.plugin.BadRequestFieldViolation.field:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 90: grpc.federation.generator.plugin.BadRequestFieldViolation.description:type_name -> grpc.federation.generator.plugin.CELValue + 29, // 91: grpc.federation.generator.plugin.LocalizedMessage.message:type_name -> grpc.federation.generator.plugin.CELValue + 53, // 92: grpc.federation.generator.plugin.Enum.rule:type_name -> grpc.federation.generator.plugin.EnumRule + 54, // 93: grpc.federation.generator.plugin.EnumValue.rule:type_name -> grpc.federation.generator.plugin.EnumValueRule + 55, // 94: grpc.federation.generator.plugin.EnumValueRule.aliases:type_name -> grpc.federation.generator.plugin.EnumValueAlias + 57, // 95: grpc.federation.generator.plugin.CELPlugin.functions:type_name -> grpc.federation.generator.plugin.CELFunction + 28, // 96: grpc.federation.generator.plugin.CELFunction.args:type_name -> grpc.federation.generator.plugin.Type + 28, // 97: grpc.federation.generator.plugin.CELFunction.return:type_name -> grpc.federation.generator.plugin.Type + 60, // 98: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.annotation:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation + 58, // 99: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.File.generated_code_info:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo + 3, // 100: grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation.semantic:type_name -> grpc.federation.generator.plugin.ProtoCodeGeneratorResponse.GeneratedCodeInfo.Annotation.Semantic + 7, // 101: grpc.federation.generator.plugin.Reference.FileMapEntry.value:type_name -> grpc.federation.generator.plugin.File + 10, // 102: grpc.federation.generator.plugin.Reference.ServiceMapEntry.value:type_name -> grpc.federation.generator.plugin.Service + 12, // 103: grpc.federation.generator.plugin.Reference.MethodMapEntry.value:type_name -> grpc.federation.generator.plugin.Method + 14, // 104: grpc.federation.generator.plugin.Reference.MessageMapEntry.value:type_name -> grpc.federation.generator.plugin.Message + 18, // 105: grpc.federation.generator.plugin.Reference.FieldMapEntry.value:type_name -> grpc.federation.generator.plugin.Field + 51, // 106: grpc.federation.generator.plugin.Reference.EnumMapEntry.value:type_name -> grpc.federation.generator.plugin.Enum + 52, // 107: grpc.federation.generator.plugin.Reference.EnumValueMapEntry.value:type_name -> grpc.federation.generator.plugin.EnumValue + 50, // 108: grpc.federation.generator.plugin.Reference.OneofMapEntry.value:type_name -> grpc.federation.generator.plugin.Oneof + 56, // 109: grpc.federation.generator.plugin.Reference.CelPluginMapEntry.value:type_name -> grpc.federation.generator.plugin.CELPlugin + 25, // 110: grpc.federation.generator.plugin.Reference.GraphMapEntry.value:type_name -> grpc.federation.generator.plugin.MessageDependencyGraph + 17, // 111: grpc.federation.generator.plugin.Reference.VariableDefinitionMapEntry.value:type_name -> grpc.federation.generator.plugin.VariableDefinition + 22, // 112: grpc.federation.generator.plugin.Reference.VariableDefinitionGroupMapEntry.value:type_name -> grpc.federation.generator.plugin.VariableDefinitionGroup + 113, // [113:113] is the sub-list for method output_type + 113, // [113:113] is the sub-list for method input_type + 113, // [113:113] is the sub-list for extension type_name + 113, // [113:113] is the sub-list for extension extendee + 0, // [0:113] is the sub-list for field type_name } func init() { file_grpc_federation_generator_proto_init() } @@ -5886,7 +5987,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Argument); i { + switch v := v.(*EnumExpr); i { case 0: return &v.state case 1: @@ -5898,7 +5999,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value); i { + switch v := v.(*Argument); i { case 0: return &v.state case 1: @@ -5910,7 +6011,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidationExpr); i { + switch v := v.(*Value); i { case 0: return &v.state case 1: @@ -5922,7 +6023,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCError); i { + switch v := v.(*ValidationExpr); i { case 0: return &v.state case 1: @@ -5934,7 +6035,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRPCErrorDetail); i { + switch v := v.(*GRPCError); i { case 0: return &v.state case 1: @@ -5946,7 +6047,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PreconditionFailure); i { + switch v := v.(*GRPCErrorDetail); i { case 0: return &v.state case 1: @@ -5958,7 +6059,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PreconditionFailureViolation); i { + switch v := v.(*PreconditionFailure); i { case 0: return &v.state case 1: @@ -5970,7 +6071,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BadRequest); i { + switch v := v.(*PreconditionFailureViolation); i { case 0: return &v.state case 1: @@ -5982,7 +6083,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BadRequestFieldViolation); i { + switch v := v.(*BadRequest); i { case 0: return &v.state case 1: @@ -5994,7 +6095,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LocalizedMessage); i { + switch v := v.(*BadRequestFieldViolation); i { case 0: return &v.state case 1: @@ -6006,7 +6107,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Oneof); i { + switch v := v.(*LocalizedMessage); i { case 0: return &v.state case 1: @@ -6018,7 +6119,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Enum); i { + switch v := v.(*Oneof); i { case 0: return &v.state case 1: @@ -6030,7 +6131,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnumValue); i { + switch v := v.(*Enum); i { case 0: return &v.state case 1: @@ -6042,7 +6143,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnumRule); i { + switch v := v.(*EnumValue); i { case 0: return &v.state case 1: @@ -6054,7 +6155,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnumValueRule); i { + switch v := v.(*EnumRule); i { case 0: return &v.state case 1: @@ -6066,7 +6167,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnumValueAlias); i { + switch v := v.(*EnumValueRule); i { case 0: return &v.state case 1: @@ -6078,7 +6179,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELPlugin); i { + switch v := v.(*EnumValueAlias); i { case 0: return &v.state case 1: @@ -6090,7 +6191,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CELFunction); i { + switch v := v.(*CELPlugin); i { case 0: return &v.state case 1: @@ -6102,7 +6203,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtoCodeGeneratorResponse_GeneratedCodeInfo); i { + switch v := v.(*CELFunction); i { case 0: return &v.state case 1: @@ -6114,7 +6215,7 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtoCodeGeneratorResponse_File); i { + switch v := v.(*ProtoCodeGeneratorResponse_GeneratedCodeInfo); i { case 0: return &v.state case 1: @@ -6126,6 +6227,18 @@ func file_grpc_federation_generator_proto_init() { } } file_grpc_federation_generator_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProtoCodeGeneratorResponse_File); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_federation_generator_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProtoCodeGeneratorResponse_GeneratedCodeInfo_Annotation); i { case 0: return &v.state @@ -6149,6 +6262,7 @@ func file_grpc_federation_generator_proto_init() { (*VariableExpr_Call)(nil), (*VariableExpr_Message)(nil), (*VariableExpr_Validation)(nil), + (*VariableExpr_Enum)(nil), } file_grpc_federation_generator_proto_msgTypes[24].OneofWrappers = []interface{}{ (*Type_MessageId)(nil), @@ -6158,21 +6272,22 @@ func file_grpc_federation_generator_proto_init() { file_grpc_federation_generator_proto_msgTypes[28].OneofWrappers = []interface{}{ (*MapIteratorExpr_By)(nil), (*MapIteratorExpr_Message)(nil), + (*MapIteratorExpr_Enum)(nil), } file_grpc_federation_generator_proto_msgTypes[30].OneofWrappers = []interface{}{ (*RetryPolicy_Constant)(nil), (*RetryPolicy_Exponential)(nil), } - file_grpc_federation_generator_proto_msgTypes[38].OneofWrappers = []interface{}{} - file_grpc_federation_generator_proto_msgTypes[54].OneofWrappers = []interface{}{} + file_grpc_federation_generator_proto_msgTypes[39].OneofWrappers = []interface{}{} file_grpc_federation_generator_proto_msgTypes[55].OneofWrappers = []interface{}{} + file_grpc_federation_generator_proto_msgTypes[56].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_federation_generator_proto_rawDesc, NumEnums: 4, - NumMessages: 68, + NumMessages: 69, NumExtensions: 0, NumServices: 0, }, diff --git a/internal/testutil/builder.go b/internal/testutil/builder.go index e936a62d..ecff9be4 100644 --- a/internal/testutil/builder.go +++ b/internal/testutil/builder.go @@ -697,6 +697,14 @@ func (b *VariableDefinitionBuilder) SetMessage(v *resolver.MessageExpr) *Variabl return b } +func (b *VariableDefinitionBuilder) SetEnum(v *resolver.EnumExpr) *VariableDefinitionBuilder { + b.def.Expr = &resolver.VariableExpr{ + Enum: v, + Type: resolver.NewEnumType(v.Enum, false), + } + return b +} + func (b *VariableDefinitionBuilder) SetValidation(v *resolver.ValidationExpr) *VariableDefinitionBuilder { b.def.Expr = &resolver.VariableExpr{ Validation: v, @@ -784,6 +792,12 @@ func (b *MapIteratorExprBuilder) SetMessage(v *resolver.MessageExpr) *MapIterato return b } +func (b *MapIteratorExprBuilder) SetEnum(v *resolver.EnumExpr) *MapIteratorExprBuilder { + b.expr.Enum = v + b.expr.Type = resolver.NewEnumType(v.Enum, false) + return b +} + func (b *MapIteratorExprBuilder) Build(t *testing.T) *resolver.MapIteratorExpr { t.Helper() return b.expr @@ -914,6 +928,31 @@ func (b *MessageExprBuilder) Build(t *testing.T) *resolver.MessageExpr { return b.expr } +type EnumExprBuilder struct { + expr *resolver.EnumExpr +} + +func NewEnumExprBuilder() *EnumExprBuilder { + return &EnumExprBuilder{ + expr: &resolver.EnumExpr{}, + } +} + +func (b *EnumExprBuilder) SetEnum(v *resolver.Enum) *EnumExprBuilder { + b.expr.Enum = v + return b +} + +func (b *EnumExprBuilder) SetBy(v *resolver.CELValue) *EnumExprBuilder { + b.expr.By = v + return b +} + +func (b *EnumExprBuilder) Build(t *testing.T) *resolver.EnumExpr { + t.Helper() + return b.expr +} + type ValidationExprBuilder struct { expr *resolver.ValidationExpr } diff --git a/proto/grpc/federation/federation.proto b/proto/grpc/federation/federation.proto index ef4205e4..8b1bbc75 100644 --- a/proto/grpc/federation/federation.proto +++ b/proto/grpc/federation/federation.proto @@ -213,6 +213,9 @@ message VariableDefinition { // validation defines the validation rule and error. ValidationExpr validation = 15; + + // enum gets with cel value. + EnumExpr enum = 16; } } @@ -230,6 +233,9 @@ message MapExpr { // message gets with message arguments, and it is made an element of the map. // The result type of MapExpr is the repeated type of the specified message. MessageExpr message = 12; + // enum creates enum value for each element of the map. + // The result type of MapExpr is the repeated type of the specified enum. + EnumExpr enum = 13; } } @@ -252,6 +258,16 @@ message MessageExpr { repeated Argument args = 2; } +// EnumExpr represents dependent enum. +message EnumExpr { + // name specify the enum name by FQDN. format is `.`. + // can be omitted when referring to enum in the same package. + string name = 1; + + // `by` evaluates with CEL. + string by = 2; +} + // CallExpr represents how to call gRPC method. message CallExpr { // method specify the FQDN for the gRPC method. format is `./`. diff --git a/proto/grpc/federation/generator.proto b/proto/grpc/federation/generator.proto index a6c3f119..a07d64fc 100644 --- a/proto/grpc/federation/generator.proto +++ b/proto/grpc/federation/generator.proto @@ -228,6 +228,7 @@ message VariableExpr { CallExpr call = 4; MessageExpr message = 5; ValidationExpr validation = 6; + EnumExpr enum = 7; } } @@ -284,6 +285,7 @@ message MapIteratorExpr { oneof expr { CELValue by = 2; MessageExpr message = 3; + EnumExpr enum = 4; } } @@ -327,6 +329,11 @@ message MessageExpr { repeated Argument args = 2; } +message EnumExpr { + string enum_id = 1; + CELValue by = 2; +} + message Argument { string name = 1; Type type = 2; diff --git a/resolver/def.go b/resolver/def.go index 975c9b79..76ba0a49 100644 --- a/resolver/def.go +++ b/resolver/def.go @@ -224,6 +224,8 @@ func (e *VariableExpr) ReferenceNames() []string { return e.Call.ReferenceNames() case e.Message != nil: return e.Message.ReferenceNames() + case e.Enum != nil: + return e.Enum.ReferenceNames() case e.Validation != nil: return e.Validation.Error.ReferenceNames() } diff --git a/resolver/enum.go b/resolver/enum.go index 3154478a..0bfe788e 100644 --- a/resolver/enum.go +++ b/resolver/enum.go @@ -1,6 +1,18 @@ package resolver -import "strings" +import ( + "strings" + + "github.com/mercari/grpc-federation/types" +) + +func NewEnumType(enum *Enum, repeated bool) *Type { + return &Type{ + Kind: types.Enum, + Enum: enum, + Repeated: repeated, + } +} func (e *Enum) HasValue(name string) bool { return e.Value(name) != nil @@ -43,3 +55,7 @@ func (e *Enum) PackageName() string { } return pkg.Name } + +func (e *EnumExpr) ReferenceNames() []string { + return e.By.ReferenceNames() +} diff --git a/resolver/format.go b/resolver/format.go index a0dbf5ec..20b6db2e 100644 --- a/resolver/format.go +++ b/resolver/format.go @@ -130,6 +130,8 @@ func (e *VariableExpr) ProtoFormat(opt *ProtoFormatOption) string { return e.Call.ProtoFormat(opt) case e.Message != nil: return e.Message.ProtoFormat(opt) + case e.Enum != nil: + return e.Enum.ProtoFormat(opt) case e.Map != nil: return e.Map.ProtoFormat(opt) case e.Validation != nil: @@ -258,6 +260,25 @@ func (e *MessageExpr) protoFormatMessageArgs(opt *ProtoFormatOption) string { return indent + fmt.Sprintf("args: [\n%s\n%s]", strings.Join(formattedArgs, ",\n"), indent) } +func (e *EnumExpr) ProtoFormat(opt *ProtoFormatOption) string { + if e == nil { + return "" + } + indent := opt.indentFormat() + nextOpt := opt.toNextIndentLevel() + var elems []string + if e.Enum != nil { + elems = append(elems, nextOpt.indentFormat()+fmt.Sprintf("name: %q", e.Enum.FQDN())) + } + if e.By != nil { + elems = append(elems, nextOpt.indentFormat()+fmt.Sprintf("by: %q", e.By.Expr)) + } + if len(elems) == 0 { + return "" + } + return indent + fmt.Sprintf("enum {\n%s\n%s}", strings.Join(elems, "\n"), indent) +} + func (m *Method) ProtoFormat(opt *ProtoFormatOption) string { if m == nil { return "" diff --git a/resolver/format_test.go b/resolver/format_test.go index 7b54bc14..e0005c1d 100644 --- a/resolver/format_test.go +++ b/resolver/format_test.go @@ -39,6 +39,13 @@ func TestProtoFormat(t *testing.T) { name: "map_value" by: "{1:'a', 2:'b', 3:'c'}" } + def { + name: "e" + enum { + name: "org.federation.Item.ItemType" + by: "org.user.Item.ItemType.value('ITEM_TYPE_2')" + } + } }`, "Post": ` option (grpc.federation.message) = { diff --git a/resolver/message.go b/resolver/message.go index 0d13a34b..d0a96309 100644 --- a/resolver/message.go +++ b/resolver/message.go @@ -404,6 +404,17 @@ func (m *Message) TypeConversionDecls() []*TypeConversionDecl { } } } + case varDef.Expr.Enum != nil: + enumExpr := varDef.Expr.Enum + decls = append(decls, typeConversionDecls(enumExpr.By.Out, varDef.Expr.Type, convertedFQDNMap)...) + case varDef.Expr.Map != nil: + mapExpr := varDef.Expr.Map.Expr + switch { + case mapExpr.Enum != nil: + from := mapExpr.Enum.By.Out.Clone() + from.Repeated = true + decls = append(decls, typeConversionDecls(from, varDef.Expr.Type, convertedFQDNMap)...) + } } } } diff --git a/resolver/resolver.go b/resolver/resolver.go index 662fd6cf..1dd380f1 100644 --- a/resolver/resolver.go +++ b/resolver/resolver.go @@ -581,6 +581,10 @@ func (r *Resolver) lookupPackageNameMapFromVariableDefinitionSet(defSet *Variabl pkgNameMap[v.Expr.Message.Message.PackageName()] = struct{}{} } maps.Copy(pkgNameMap, r.lookupPackageNameMapFromMessageArguments(v.Expr.Message.Args)) + case v.Expr.Enum != nil: + if v.Expr.Enum.Enum != nil { + pkgNameMap[v.Expr.Enum.Enum.PackageName()] = struct{}{} + } case v.Expr.Map != nil: if v.Expr.Map.Expr != nil { if v.Expr.Map.Expr.By != nil { @@ -1192,6 +1196,22 @@ func (r *Resolver) resolveOneof(ctx *context, def *descriptorpb.OneofDescriptorP return oneof } +func (r *Resolver) resolveEnumByName(ctx *context, name string, builder *source.EnumBuilder) (*Enum, error) { + if strings.Contains(name, ".") { + pkg, err := r.lookupPackage(name) + if err != nil { + // attempt to resolve the enum because of a possible name specified as a inner message. + if enum := r.resolveEnum(ctx, ctx.file().Package, name, builder); enum != nil { + return enum, nil + } + return nil, err + } + enumName := r.trimPackage(pkg, name) + return r.resolveEnum(ctx, pkg, enumName, source.ToLazyEnumBuilder(builder, enumName)), nil + } + return r.resolveEnum(ctx, ctx.file().Package, name, builder), nil +} + func (r *Resolver) resolveEnum(ctx *context, pkg *Package, name string, builder *source.EnumBuilder) *Enum { fqdn := fmt.Sprintf("%s.%s", pkg.Name, name) cachedEnum, exists := r.cachedEnumMap[fqdn] @@ -2191,6 +2211,8 @@ func (r *Resolver) resolveVariableExpr(ctx *context, varDef *federation.Variable return &VariableExpr{Map: r.resolveMapExpr(ctx, varDef.GetMap(), builder.WithMap())} case *federation.VariableDefinition_Message: return &VariableExpr{Message: r.resolveMessageExpr(ctx, varDef.GetMessage(), builder.WithMessage())} + case *federation.VariableDefinition_Enum: + return &VariableExpr{Enum: r.resolveEnumExpr(ctx, varDef.GetEnum(), builder.WithEnum())} case *federation.VariableDefinition_Call: return &VariableExpr{Call: r.resolveCallExpr(ctx, varDef.GetCall(), builder.WithCall())} case *federation.VariableDefinition_Validation: @@ -2250,6 +2272,8 @@ func (r *Resolver) resolveMapIteratorExpr(ctx *context, def *federation.MapExpr, return &MapIteratorExpr{By: &CELValue{Expr: def.GetBy()}} case *federation.MapExpr_Message: return &MapIteratorExpr{Message: r.resolveMessageExpr(ctx, def.GetMessage(), builder.WithMessage())} + case *federation.MapExpr_Enum: + return &MapIteratorExpr{Enum: r.resolveEnumExpr(ctx, def.GetEnum(), builder.WithEnum())} } return nil } @@ -2285,6 +2309,34 @@ func (r *Resolver) resolveMessageExpr(ctx *context, def *federation.MessageExpr, } } +func (r *Resolver) resolveEnumExpr(ctx *context, def *federation.EnumExpr, builder *source.EnumExprOptionBuilder) *EnumExpr { + if def == nil { + return nil + } + enum, err := r.resolveEnumByName(ctx, def.GetName(), source.ToLazyEnumBuilder(builder, def.GetName())) + if err != nil { + ctx.addError( + ErrWithLocation( + err.Error(), + builder.WithName().Location(), + ), + ) + } + by := def.GetBy() + if by == "" { + ctx.addError( + ErrWithLocation( + `"by" is required`, + builder.WithBy().Location(), + ), + ) + } + return &EnumExpr{ + Enum: enum, + By: &CELValue{Expr: by}, + } +} + func (r *Resolver) resolveCallExpr(ctx *context, def *federation.CallExpr, builder *source.CallExprOptionBuilder) *CallExpr { if def == nil { return nil @@ -3736,6 +3788,52 @@ func (r *Resolver) resolveVariableExprCELValues(ctx *context, env *cel.Env, expr } } expr.Type = NewMessageType(expr.Message.Message, false) + case expr.Enum != nil: + toEnum := expr.Enum.Enum + expr.Type = NewEnumType(toEnum, false) + + enumBuilder := builder.WithEnum() + if err := r.resolveCELValue(ctx, env, expr.Enum.By); err != nil { + ctx.addError( + ErrWithLocation( + err.Error(), + enumBuilder.WithBy().Location(), + ), + ) + return + } + fromType := expr.Enum.By.Out + if fromType.Kind != types.Enum { + ctx.addError( + ErrWithLocation( + fmt.Sprintf( + "enum must always return a enum value, but got %q type", + fromType.Kind.ToString(), + ), + enumBuilder.WithBy().Location(), + ), + ) + } + fromEnum := fromType.Enum + if fromEnum == nil || toEnum == nil { + return + } + fromEnumName := fromEnum.FQDN() + toEnumName := toEnum.FQDN() + if fromEnumName != toEnumName { + if !r.findEnumAliasName(fromEnum, toEnum) { + ctx.addError( + ErrWithLocation( + fmt.Sprintf( + `required specify alias = %q in grpc.federation.enum option for the %q type to automatically assign a value`, + toEnumName, fromEnumName, + ), + enumBuilder.WithBy().Location(), + ), + ) + return + } + } case expr.Validation != nil: validationBuilder := builder.WithValidation() r.resolveGRPCErrorCELValues(ctx, env, expr.Validation.Error, nil, validationBuilder.WithError()) @@ -3780,6 +3878,52 @@ func (r *Resolver) resolveMapIteratorExprCELValues(ctx *context, env *cel.Env, e } } expr.Type = NewMessageType(expr.Message.Message, false) + case expr.Enum != nil: + toEnum := expr.Enum.Enum + expr.Type = NewEnumType(toEnum, false) + + enumBuilder := mapBuilder.WithEnum() + if err := r.resolveCELValue(ctx, env, expr.Enum.By); err != nil { + ctx.addError( + ErrWithLocation( + err.Error(), + enumBuilder.WithBy().Location(), + ), + ) + return + } + fromType := expr.Enum.By.Out + if fromType.Kind != types.Enum { + ctx.addError( + ErrWithLocation( + fmt.Sprintf( + "enum must always return a enum value, but got %q type", + fromType.Kind.ToString(), + ), + enumBuilder.WithBy().Location(), + ), + ) + } + fromEnum := fromType.Enum + if fromEnum == nil || toEnum == nil { + return + } + fromEnumName := fromEnum.FQDN() + toEnumName := toEnum.FQDN() + if fromEnumName != toEnumName { + if !r.findEnumAliasName(fromEnum, toEnum) { + ctx.addError( + ErrWithLocation( + fmt.Sprintf( + `required specify alias = %q in grpc.federation.enum option for the %q type to automatically assign a value`, + toEnumName, fromEnumName, + ), + enumBuilder.WithBy().Location(), + ), + ) + return + } + } } } diff --git a/resolver/resolver_test.go b/resolver/resolver_test.go index 7bcb7292..9d863df6 100644 --- a/resolver/resolver_test.go +++ b/resolver/resolver_test.go @@ -416,6 +416,17 @@ func TestSimpleAggregation(t *testing.T) { }, false)), ).Build(t), ). + AddFieldWithRule( + "item_type", + ref.Type(t, "org.federation", "Item.ItemType"), + testutil.NewFieldRuleBuilder( + testutil.NewNameReferenceValueBuilder( + ref.Type(t, "org.federation", "Item.ItemType"), + ref.Type(t, "org.user", "Item.ItemType"), + "e", + ).Build(t), + ).Build(t), + ). SetRule( testutil.NewMessageRuleBuilder(). AddVariableDefinition( @@ -458,12 +469,30 @@ func TestSimpleAggregation(t *testing.T) { ). Build(t), ). + AddVariableDefinition( + testutil.NewVariableDefinitionBuilder(). + SetName("e"). + SetUsed(true). + SetEnum( + testutil.NewEnumExprBuilder(). + SetEnum(ref.Enum(t, "org.federation", "Item.ItemType")). + SetBy( + testutil.NewCELValueBuilder( + "org.user.Item.ItemType.value('ITEM_TYPE_2')", + resolver.NewEnumType(ref.Enum(t, "org.user", "Item.ItemType"), false), + ).Build(t), + ). + Build(t), + ). + Build(t), + ). SetMessageArgument(ref.Message(t, "org.federation", "GetPostResponseArgument")). SetDependencyGraph( testutil.NewDependencyGraphBuilder(). Add(ref.Message(t, "org.federation", "Post")). Build(t), ). + AddVariableDefinitionGroup(testutil.NewVariableDefinitionGroupByName("e")). AddVariableDefinitionGroup(testutil.NewVariableDefinitionGroupByName("map_value")). AddVariableDefinitionGroup(testutil.NewVariableDefinitionGroupByName("post")). AddVariableDefinitionGroup(testutil.NewVariableDefinitionGroupByName("uuid")). @@ -2737,6 +2766,13 @@ func TestMap(t *testing.T) { fb.SetPackage("org.federation"). SetGoPackage("example/federation", "federation"). + AddEnum( + testutil.NewEnumBuilder("UserType"). + WithAlias(ref.Enum(t, "org.user", "UserType")). + AddValueWithAlias("USER_TYPE_1", ref.EnumValue(t, "org.user", "UserType", "USER_TYPE_1")). + AddValueWithAlias("USER_TYPE_2", ref.EnumValue(t, "org.user", "UserType", "USER_TYPE_2")). + Build(t), + ). AddMessage( testutil.NewMessageBuilder("PostsArgument"). AddField("post_ids", resolver.StringRepeatedType). @@ -2835,6 +2871,11 @@ func TestMap(t *testing.T) { repeatedPostItemType, testutil.NewFieldRuleBuilder(resolver.NewByValue("items", repeatedPostItemType)).Build(t), ). + AddFieldWithRule( + "user_types", + ref.RepeatedType(t, "org.federation", "UserType"), + testutil.NewFieldRuleBuilder(resolver.NewByValue("user_types", ref.RepeatedType(t, "org.federation", "UserType"))).Build(t), + ). SetRule( testutil.NewMessageRuleBuilder(). AddVariableDefinition( @@ -2945,6 +2986,49 @@ func TestMap(t *testing.T) { ). Build(t), ). + AddVariableDefinition( + testutil.NewVariableDefinitionBuilder(). + SetName("source_user_types"). + SetUsed(true). + SetBy( + testutil.NewCELValueBuilder( + "[org.user.UserType.value('USER_TYPE_1'), org.user.UserType.value('USER_TYPE_2')]", + ref.RepeatedType(t, "org.user", "UserType"), + ).Build(t), + ). + Build(t), + ). + AddVariableDefinition( + testutil.NewVariableDefinitionBuilder(). + SetName("user_types"). + SetUsed(true). + SetMap( + testutil.NewMapExprBuilder(). + SetIterator( + testutil.NewIteratorBuilder(). + SetName("typ"). + SetSource("source_user_types"). + Build(t), + ). + SetExpr( + testutil.NewMapIteratorExprBuilder(). + SetEnum( + testutil.NewEnumExprBuilder(). + SetEnum(ref.Enum(t, "org.federation", "UserType")). + SetBy( + testutil.NewCELValueBuilder( + "typ", + resolver.NewEnumType(ref.Enum(t, "org.user", "UserType"), false), + ).Build(t), + ). + Build(t), + ). + Build(t), + ). + Build(t), + ). + Build(t), + ). SetMessageArgument(ref.Message(t, "org.federation", "PostsArgument")). SetDependencyGraph( testutil.NewDependencyGraphBuilder(). @@ -2973,6 +3057,12 @@ func TestMap(t *testing.T) { SetEnd(testutil.NewVariableDefinition("items")). Build(t), ). + AddVariableDefinitionGroup( + testutil.NewVariableDefinitionGroupBuilder(). + AddStart(testutil.NewVariableDefinitionGroupByName("source_user_types")). + SetEnd(testutil.NewVariableDefinition("user_types")). + Build(t), + ). AddVariableDefinitionGroup( testutil.NewVariableDefinitionGroupBuilder(). AddStart( diff --git a/resolver/types.go b/resolver/types.go index 770a1670..d68688ed 100644 --- a/resolver/types.go +++ b/resolver/types.go @@ -213,6 +213,7 @@ type VariableExpr struct { Map *MapExpr Call *CallExpr Message *MessageExpr + Enum *EnumExpr Validation *ValidationExpr } @@ -238,6 +239,7 @@ type MapIteratorExpr struct { Type *Type By *CELValue Message *MessageExpr + Enum *EnumExpr } type MessageExpr struct { @@ -245,6 +247,11 @@ type MessageExpr struct { Args []*Argument } +type EnumExpr struct { + Enum *Enum + By *CELValue +} + type ValidationExpr struct { Name string Error *GRPCError diff --git a/source/clone.go b/source/clone.go index 23acd461..17a68265 100644 --- a/source/clone.go +++ b/source/clone.go @@ -271,6 +271,7 @@ func (o *VariableDefinitionOption) Clone() *VariableDefinitionOption { Map: o.Map.Clone(), Call: o.Call.Clone(), Message: o.Message.Clone(), + Enum: o.Enum.Clone(), Validation: o.Validation.Clone(), } } @@ -283,6 +284,7 @@ func (o *MapExprOption) Clone() *MapExprOption { Iterator: o.Iterator.Clone(), By: o.By, Message: o.Message.Clone(), + Enum: o.Enum.Clone(), } } @@ -319,6 +321,16 @@ func (o *MessageExprOption) Clone() *MessageExprOption { } } +func (o *EnumExprOption) Clone() *EnumExprOption { + if o == nil { + return nil + } + return &EnumExprOption{ + Name: o.Name, + By: o.By, + } +} + func (o *RequestOption) Clone() *RequestOption { if o == nil { return nil diff --git a/source/file.go b/source/file.go index 2087aaaf..7e61a7d6 100644 --- a/source/file.go +++ b/source/file.go @@ -1229,6 +1229,12 @@ func (f *File) nodeInfoByDef(list []*ast.MessageLiteralNode, def *VariableDefini return nil } return f.nodeInfoByMessageExpr(value, def.Message) + case def.Enum != nil && fieldName == "enum": + value, ok := elem.Val.(*ast.MessageLiteralNode) + if !ok { + return nil + } + return f.nodeInfoByEnumExpr(value, def.Enum) case def.Validation != nil && fieldName == "validation": value, ok := elem.Val.(*ast.MessageLiteralNode) if !ok { @@ -1240,7 +1246,44 @@ func (f *File) nodeInfoByDef(list []*ast.MessageLiteralNode, def *VariableDefini return f.nodeInfo(node) } -func (f *File) nodeInfoByMapExpr(node *ast.MessageLiteralNode, _ *MapExprOption) *ast.NodeInfo { +func (f *File) nodeInfoByMapExpr(node *ast.MessageLiteralNode, opt *MapExprOption) *ast.NodeInfo { + for _, elem := range node.Elements { + fieldName := elem.Name.Name.AsIdentifier() + switch { + case opt.Iterator != nil && fieldName == "iterator": + n, ok := elem.Val.(*ast.MessageLiteralNode) + if !ok { + return nil + } + for _, elem := range n.Elements { + optName := elem.Name.Name.AsIdentifier() + switch { + case opt.Iterator.Name && optName == "name": + return f.nodeInfo(elem.Val) + case opt.Iterator.Source && optName == "src": + return f.nodeInfo(elem.Val) + } + } + case opt.By && fieldName == "by": + value, ok := elem.Val.(*ast.StringLiteralNode) + if !ok { + return nil + } + return f.nodeInfo(value) + case opt.Message != nil && fieldName == "message": + value, ok := elem.Val.(*ast.MessageLiteralNode) + if !ok { + return nil + } + return f.nodeInfoByMessageExpr(value, opt.Message) + case opt.Enum != nil && fieldName == "enum": + value, ok := elem.Val.(*ast.MessageLiteralNode) + if !ok { + return nil + } + return f.nodeInfoByEnumExpr(value, opt.Enum) + } + } return f.nodeInfo(node) } @@ -1392,6 +1435,27 @@ func (f *File) nodeInfoByMessageExpr(node *ast.MessageLiteralNode, msg *MessageE return f.nodeInfo(node) } +func (f *File) nodeInfoByEnumExpr(node *ast.MessageLiteralNode, expr *EnumExprOption) *ast.NodeInfo { + for _, elem := range node.Elements { + fieldName := elem.Name.Name.AsIdentifier() + switch { + case expr.Name && fieldName == "name": + value, ok := elem.Val.(*ast.StringLiteralNode) + if !ok { + return nil + } + return f.nodeInfo(value) + case expr.By && fieldName == "by": + value, ok := elem.Val.(*ast.StringLiteralNode) + if !ok { + return nil + } + return f.nodeInfo(value) + } + } + return f.nodeInfo(node) +} + func (f *File) nodeInfoByValidationExpr(node *ast.MessageLiteralNode, opt *ValidationExprOption) *ast.NodeInfo { for _, elem := range node.Elements { fieldName := elem.Name.Name.AsIdentifier() diff --git a/source/location.go b/source/location.go index df361163..46a95862 100644 --- a/source/location.go +++ b/source/location.go @@ -183,6 +183,7 @@ type VariableDefinitionOption struct { Map *MapExprOption Call *CallExprOption Message *MessageExprOption + Enum *EnumExprOption Validation *ValidationExprOption } @@ -191,6 +192,7 @@ type MapExprOption struct { Iterator *IteratorOption By bool Message *MessageExprOption + Enum *EnumExprOption } // IteratorOption represents def.map.iterator location of grpc.federation.message option. @@ -214,6 +216,12 @@ type MessageExprOption struct { Args *ArgumentOption } +// EnumExprOption represents def.enum location of grpc.federation.message option. +type EnumExprOption struct { + Name bool + By bool +} + // RequestOption represents resolver.request location of grpc.federation.message option. type RequestOption struct { Idx int diff --git a/source/location_builder.go b/source/location_builder.go index bee8e378..f85d7864 100644 --- a/source/location_builder.go +++ b/source/location_builder.go @@ -663,6 +663,19 @@ func ToLazyMessageBuilder(l Locationer, name string) *MessageBuilder { } } +// ToLazyEnumBuilder sets new Enum to the root lazily to return the original Location +// unless EnumBuilder's methods are called afterword. +func ToLazyEnumBuilder(l Locationer, name string) *EnumBuilder { + root := l.Location().Clone() + return &EnumBuilder{ + root: root, + enum: func(loc *Location) *Enum { + loc.Enum = &Enum{Name: name} + return loc.Enum + }, + } +} + type FieldBuilder struct { root *Location field func(*Location) *Field @@ -823,6 +836,18 @@ func (b *VariableDefinitionOptionBuilder) WithMessage() *MessageExprOptionBuilde } } +func (b *VariableDefinitionOptionBuilder) WithEnum() *EnumExprOptionBuilder { + root := b.root.Clone() + option := b.option(root) + option.Enum = &EnumExprOption{} + return &EnumExprOptionBuilder{ + root: root, + option: func(loc *Location) *EnumExprOption { + return b.option(loc).Enum + }, + } +} + func (b *VariableDefinitionOptionBuilder) WithCall() *CallExprOptionBuilder { root := b.root.Clone() option := b.option(root) @@ -894,6 +919,35 @@ func (b *MessageExprOptionBuilder) Location() *Location { return b.root } +type EnumExprOptionBuilder struct { + root *Location + option func(*Location) *EnumExprOption +} + +func (b *EnumExprOptionBuilder) WithName() *EnumExprOptionBuilder { + root := b.root.Clone() + option := b.option(root) + option.Name = true + return &EnumExprOptionBuilder{ + root: root, + option: b.option, + } +} + +func (b *EnumExprOptionBuilder) WithBy() *EnumExprOptionBuilder { + root := b.root.Clone() + option := b.option(root) + option.By = true + return &EnumExprOptionBuilder{ + root: root, + option: b.option, + } +} + +func (b *EnumExprOptionBuilder) Location() *Location { + return b.root +} + type ArgumentOptionBuilder struct { root *Location option func(*Location) *ArgumentOption @@ -1381,6 +1435,18 @@ func (b *MapExprOptionBuilder) WithMessage() *MessageExprOptionBuilder { } } +func (b *MapExprOptionBuilder) WithEnum() *EnumExprOptionBuilder { + root := b.root.Clone() + option := b.option(root) + option.Enum = &EnumExprOption{} + return &EnumExprOptionBuilder{ + root: root, + option: func(loc *Location) *EnumExprOption { + return b.option(loc).Enum + }, + } +} + func (b *MapExprOptionBuilder) Location() *Location { return b.root } diff --git a/testdata/map.proto b/testdata/map.proto index c1e60a5d..f20c3381 100644 --- a/testdata/map.proto +++ b/testdata/map.proto @@ -79,6 +79,23 @@ message Posts { args { name: "id" by: "iter.id" } } } + }, + { + name: "source_user_types" + by: "[org.user.UserType.value('USER_TYPE_1'), org.user.UserType.value('USER_TYPE_2')]" + }, + { + name: "user_types" + map { + iterator { + name: "typ" + src: "source_user_types" + } + enum { + name: "UserType" + by: "typ" + } + } } ] }; @@ -92,6 +109,7 @@ message Posts { repeated string contents = 3 [(grpc.federation.field).by = "posts.map(post, post.content)"]; repeated User users = 4 [(grpc.federation.field).by = "users"]; repeated PostItem items = 5 [(grpc.federation.field).by = "items"]; + repeated UserType user_types = 6 [(grpc.federation.field).by = "user_types"]; } message User { @@ -109,3 +127,10 @@ message User { string id = 1; string name = 2; } + +enum UserType { + option (grpc.federation.enum).alias = "org.user.UserType"; + + USER_TYPE_1 = 0; + USER_TYPE_2 = 1; +} diff --git a/testdata/simple_aggregation.proto b/testdata/simple_aggregation.proto index ffd93cae..4d4e530b 100644 --- a/testdata/simple_aggregation.proto +++ b/testdata/simple_aggregation.proto @@ -33,6 +33,7 @@ message GetPostResponse { } def { name: "uuid" by: "grpc.federation.uuid.newRandom()" } def { name: "map_value" by: "{1:'a', 2:'b', 3:'c'}" } + def { name: "e" enum { name: "Item.ItemType" by: "org.user.Item.ItemType.value('ITEM_TYPE_2')" }} }; org.federation.Post post = 1 [(grpc.federation.field).by = "post"]; string const = 2 [(grpc.federation.field).by = "'foo'"]; @@ -40,6 +41,7 @@ message GetPostResponse { string enum_name = 4 [(grpc.federation.field).by = "org.federation.Item.ItemType.name(org.federation.Item.ItemType.ITEM_TYPE_1)"]; int32 enum_value = 5 [(grpc.federation.field).by = "org.federation.Item.ItemType.value('ITEM_TYPE_1')"]; map map_value = 6 [(grpc.federation.field).by = "map_value"]; + Item.ItemType item_type = 7 [(grpc.federation.field).by = "e"]; } message Post { diff --git a/validator/testdata/invalid_enum_conversion.proto b/validator/testdata/invalid_enum_conversion.proto new file mode 100644 index 00000000..db50f6ed --- /dev/null +++ b/validator/testdata/invalid_enum_conversion.proto @@ -0,0 +1,62 @@ +syntax = "proto3"; + +package org.federation; + +import "federation.proto"; + +option go_package = "example/federation;federation"; +option (grpc.federation.file) = { + import: ["nested_post.proto"] +}; + +service FederationService { + option (grpc.federation.service) = {}; + rpc GetPost(GetPostRequest) returns (GetPostResponse) {}; +} + +message GetPostRequest { + string id = 1; +} + +message GetPostResponse { + option (grpc.federation.message) = { + def { + name: "e" + enum { + name: "PostType" + by: "org.post.PostContent.Category.value('CATEGORY_B')" + } + } + def { + enum { + name: "PostType" + by: "1" + } + } + def { + name: "post_types" + by: "[org.post.PostContent.Category.value('CATEGORY_A'), org.post.PostContent.Category.value('CATEGORY_B')]" + } + def { + name: "types" + map { + iterator { + name: "typ" + src: "post_types" + } + enum { + name: "PostType" + by: "typ" + } + } + } + }; +} + +enum PostType { + option (grpc.federation.enum).alias = "org.post.FakePostDataType"; + + POST_TYPE_UNKNOWN = 0 [(grpc.federation.enum_value).default = true]; + POST_TYPE_FOO = 1 [(grpc.federation.enum_value) = { alias: ["FAKE_POST_TYPE_A"] }]; + POST_TYPE_BAR = 2 [(grpc.federation.enum_value) = { alias: ["FAKE_POST_TYPE_B", "FAKE_POST_TYPE_C"] }]; +} diff --git a/validator/validator_test.go b/validator/validator_test.go index 7bd8a63c..bc662da9 100644 --- a/validator/validator_test.go +++ b/validator/validator_test.go @@ -93,6 +93,17 @@ invalid_enum_alias_target.proto:49:1: required specify alias = "org.post.PostDat invalid_enum_alias_target.proto:68:3: required specify alias = "org.post.PostContent.Category" in grpc.federation.enum option for the "org.federation.PostContent.Category" type to automatically assign a value to the "PostContent.category" field via autobind 68: enum Category { ^ +`}, + {file: "invalid_enum_conversion.proto", expected: ` +invalid_enum_conversion.proto:27:13: required specify alias = "org.federation.PostType" in grpc.federation.enum option for the "org.post.PostContent.Category" type to automatically assign a value +27: by: "org.post.PostContent.Category.value('CATEGORY_B')" + ^ +invalid_enum_conversion.proto:33:13: enum must always return a enum value, but got "int64" type +33: by: "1" + ^ +invalid_enum_conversion.proto:49:15: required specify alias = "org.federation.PostType" in grpc.federation.enum option for the "org.post.PostContent.Category" type to automatically assign a value +49: by: "typ" + ^ `}, {file: "invalid_enum_selector.proto", expected: ` invalid_enum_selector.proto:22:15: ERROR: :1:56: cannot specify an int type. if you are directly specifying an enum value, you need to explicitly use "pkg.EnumName.value('ENUM_VALUE')" function to use the enum type @@ -133,9 +144,9 @@ invalid_error_variable.proto:25:15: ERROR: :1:1: undeclared reference to ^ `}, {file: "invalid_map_iterator_src_type.proto", expected: ` -invalid_map_iterator_src_type.proto:40:13: map iterator's src value type must be repeated type -40: map { - ^ +invalid_map_iterator_src_type.proto:43:18: map iterator's src value type must be repeated type +43: src: "post_ids" + ^ invalid_map_iterator_src_type.proto:54:57: ERROR: :1:1: undeclared reference to 'users' (in container 'org.federation') | users | ^ @@ -148,14 +159,14 @@ invalid_map_iterator_src_type.proto:58:47: ERROR: :1:8: undefined field ' ^ `}, {file: "invalid_map_iterator_src.proto", expected: ` -invalid_map_iterator_src.proto:36:13: "posts" variable is not defined -36: map { - ^ -invalid_map_iterator_src.proto:36:13: ERROR: :1:1: undeclared reference to 'iter' (in container 'org.federation') +invalid_map_iterator_src.proto:39:18: "posts" variable is not defined +39: src: "posts" + ^ +invalid_map_iterator_src.proto:43:41: ERROR: :1:1: undeclared reference to 'iter' (in container 'org.federation') | iter.id | ^ -36: map { - ^ +43: args { name: "user_id", by: "iter.id" } + ^ invalid_map_iterator_src.proto:54:47: ERROR: :1:8: undefined field 'user_id' | __ARG__.user_id | .......^