From 72eda70ae5e3fbbfea30cd3eaa3d458169db3b59 Mon Sep 17 00:00:00 2001 From: Chris Roche Date: Wed, 8 Jan 2025 10:05:24 -0500 Subject: [PATCH] repro #174 --- buf.gen.yaml | 2 + buf.lock | 11 +- buf.yaml | 1 + go.mod | 11 +- go.sum | 14 +- .../gen/tests/example/v1/validations.pb.go | 517 ++++++++++-------- .../example/v1/validations_protoopaque.pb.go | 517 ++++++++++-------- proto/tests/example/v1/validations.proto | 12 + validator_test.go | 24 + 9 files changed, 663 insertions(+), 446 deletions(-) diff --git a/buf.gen.yaml b/buf.gen.yaml index f6328e2..0aab35b 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -6,6 +6,8 @@ managed: module: buf.build/envoyproxy/protoc-gen-validate - file_option: go_package module: buf.build/bufbuild/protovalidate + - file_option: go_package + module: buf.build/googleapis/googleapis override: - file_option: go_package_prefix value: github.com/bufbuild/protovalidate-go/internal/gen diff --git a/buf.lock b/buf.lock index 9a585dd..eb5f4dd 100644 --- a/buf.lock +++ b/buf.lock @@ -2,11 +2,14 @@ version: v2 deps: - name: buf.build/bufbuild/protovalidate - commit: 5a7b106cbb87462d9a8c9ffecdbd2e38 - digest: b5:0f2dc6c9453e9cc9e9f36807aaa5f94022e837d91fef4dcaeed79a35c0843cc64eba28ff077aab24da3b2cb12639ad256246f9f9a36c033b99d5754b19996b7e + commit: a3320276596649bcad929ac829d451f4 + digest: b5:285a6d3a423b195a21f45aacc97ee222ac09cfb01a42f0d546aa51d92177b0b9d00eb9ae93e72dabbbefdc77f35a4c7a11f15d913cc08da764fcb6071f85d148 - name: buf.build/bufbuild/protovalidate-testing - commit: 165ebb0f38244fc2a5b23a82cabe812f - digest: b5:4e3e21cabc93277d9069f7ded53c17659fefe47dd8daf9bc534387590feabe971b2d51b88b324835385650f3fa227e8a793a99ca9814cba76ee678f20ba9b4ef + commit: 64b51334278e428b85f48f2f808d95de + digest: b5:97470b47bdd2df5857e820b14a04a62cf9c4c8675c0bf7ef2ef90b727c115a8c7cb2ae0057b9103a4b959c69c7338f369f619a8de3dbf21508dd1ab6d37bdb3d - name: buf.build/envoyproxy/protoc-gen-validate commit: daf171c6cdb54629b5f51e345a79e4dd digest: b5:c745e1521879f43740230b1df673d0729f55704efefdcfc489d4a0a2d40c92a26cacfeab62813403040a8b180142d53b398c7ca784a065e43823605ee49681de + - name: buf.build/googleapis/googleapis + commit: e93e34f48be043dab55be31b4b47f458 + digest: b5:cebe5dfac5f7d67c55296f37ad9d368dba8d9862777e69d5d99eb1d72dc95fa68cd6323b483ca42cf70e66060002c1bc36e1f5f754b217a5c771c108eb243dbf diff --git a/buf.yaml b/buf.yaml index f5400c0..23ea15b 100644 --- a/buf.yaml +++ b/buf.yaml @@ -5,6 +5,7 @@ deps: - buf.build/bufbuild/protovalidate - buf.build/bufbuild/protovalidate-testing - buf.build/envoyproxy/protoc-gen-validate + - buf.build/googleapis/googleapis lint: use: - STANDARD diff --git a/go.mod b/go.mod index 92d2a00..9e29e29 100644 --- a/go.mod +++ b/go.mod @@ -1,12 +1,15 @@ module github.com/bufbuild/protovalidate-go -go 1.21.1 +go 1.22 + +toolchain go1.23.4 require ( buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.1-20241127180247-a33202765966.1 github.com/envoyproxy/protoc-gen-validate v1.1.0 github.com/google/cel-go v0.22.1 github.com/stretchr/testify v1.10.0 + google.golang.org/genproto v0.0.0-20250106144421-5f5ef82da422 google.golang.org/protobuf v1.36.1 ) @@ -19,9 +22,9 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/stoewer/go-strcase v1.3.0 // indirect golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect - golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250102185135-69823020774d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250102185135-69823020774d // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 7425766..43b9628 100644 --- a/go.sum +++ b/go.sum @@ -34,12 +34,14 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw= golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 h1:YcyjlL1PRr2Q17/I0dPk2JmYS5CDXfcdb2Z3YRioEbw= -google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 h1:2035KHhUv+EpyB+hWgJnaWKJOdX1E95w2S8Rr4uWKTs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +google.golang.org/genproto v0.0.0-20250106144421-5f5ef82da422 h1:6GUHKGv2huWOHKmDXLMNE94q3fBDlEHI+oTRIZSebK0= +google.golang.org/genproto v0.0.0-20250106144421-5f5ef82da422/go.mod h1:1NPAxoesyw/SgLPqaUp9u1f9PWCLAk/jVmhx7gJZStg= +google.golang.org/genproto/googleapis/api v0.0.0-20250102185135-69823020774d h1:H8tOf8XM88HvKqLTxe755haY6r1fqqzLbEnfrmLXlSA= +google.golang.org/genproto/googleapis/api v0.0.0-20250102185135-69823020774d/go.mod h1:2v7Z7gP2ZUOGsaFyxATQSRoBnKygqVq2Cwnvom7QiqY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250102185135-69823020774d h1:xJJRGY7TJcvIlpSrN3K6LAWgNFUILlO+OMAqtg9aqnw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250102185135-69823020774d/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4= google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/internal/gen/tests/example/v1/validations.pb.go b/internal/gen/tests/example/v1/validations.pb.go index b4e9623..faa034e 100644 --- a/internal/gen/tests/example/v1/validations.pb.go +++ b/internal/gen/tests/example/v1/validations.pb.go @@ -24,6 +24,7 @@ package examplev1 import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" + latlng "google.golang.org/genproto/googleapis/type/latlng" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" anypb "google.golang.org/protobuf/types/known/anypb" @@ -1511,6 +1512,74 @@ func (b0 FieldWithIssue_builder) Build() *FieldWithIssue { return m0 } +type Issue174 struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` + Coordinates *latlng.LatLng `protobuf:"bytes,6,opt,name=coordinates,proto3" json:"coordinates,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Issue174) Reset() { + *x = Issue174{} + mi := &file_tests_example_v1_validations_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Issue174) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Issue174) ProtoMessage() {} + +func (x *Issue174) ProtoReflect() protoreflect.Message { + mi := &file_tests_example_v1_validations_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Issue174) GetCoordinates() *latlng.LatLng { + if x != nil { + return x.Coordinates + } + return nil +} + +func (x *Issue174) SetCoordinates(v *latlng.LatLng) { + x.Coordinates = v +} + +func (x *Issue174) HasCoordinates() bool { + if x == nil { + return false + } + return x.Coordinates != nil +} + +func (x *Issue174) ClearCoordinates() { + x.Coordinates = nil +} + +type Issue174_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Coordinates *latlng.LatLng +} + +func (b0 Issue174_builder) Build() *Issue174 { + m0 := &Issue174{} + b, x := &b0, m0 + _, _ = b, x + x.Coordinates = b.Coordinates + return m0 +} + type CelMapOnARepeated_Value struct { state protoimpl.MessageState `protogen:"hybrid.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -1520,7 +1589,7 @@ type CelMapOnARepeated_Value struct { func (x *CelMapOnARepeated_Value) Reset() { *x = CelMapOnARepeated_Value{} - mi := &file_tests_example_v1_validations_proto_msgTypes[21] + mi := &file_tests_example_v1_validations_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1532,7 +1601,7 @@ func (x *CelMapOnARepeated_Value) String() string { func (*CelMapOnARepeated_Value) ProtoMessage() {} func (x *CelMapOnARepeated_Value) ProtoReflect() protoreflect.Message { - mi := &file_tests_example_v1_validations_proto_msgTypes[21] + mi := &file_tests_example_v1_validations_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1581,200 +1650,213 @@ var file_tests_example_v1_validations_proto_rawDesc = []byte{ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x02, 0x0a, 0x0b, - 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x72, 0x73, 0x12, 0x7f, 0x0a, 0x01, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x71, 0xba, 0x48, 0x6e, 0xba, 0x01, 0x27, 0x0a, 0x06, - 0x78, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x0e, 0x78, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, - 0x65, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x1a, 0x0d, 0x74, 0x68, 0x69, 0x73, 0x20, 0x25, 0x20, 0x32, - 0x20, 0x3d, 0x3d, 0x20, 0x30, 0xba, 0x01, 0x41, 0x0a, 0x0b, 0x78, 0x5f, 0x63, 0x6f, 0x70, 0x72, - 0x69, 0x6d, 0x65, 0x5f, 0x33, 0x1a, 0x32, 0x74, 0x68, 0x69, 0x73, 0x20, 0x25, 0x20, 0x33, 0x20, - 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x3a, 0x20, 0x27, 0x78, 0x20, 0x6d, 0x75, - 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, - 0x62, 0x6c, 0x65, 0x20, 0x62, 0x79, 0x20, 0x33, 0x27, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x3a, 0x6f, 0xba, 0x48, 0x6c, 0x1a, - 0x30, 0x0a, 0x06, 0x78, 0x5f, 0x6c, 0x74, 0x5f, 0x79, 0x12, 0x15, 0x78, 0x20, 0x6d, 0x75, 0x73, - 0x74, 0x20, 0x62, 0x65, 0x20, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x79, - 0x1a, 0x0f, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, - 0x79, 0x1a, 0x38, 0x0a, 0x07, 0x79, 0x5f, 0x67, 0x74, 0x5f, 0x34, 0x32, 0x1a, 0x2d, 0x74, 0x68, - 0x69, 0x73, 0x2e, 0x79, 0x20, 0x3e, 0x20, 0x34, 0x32, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x3a, 0x20, - 0x27, 0x79, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x34, 0x32, 0x27, 0x22, 0xfe, 0x01, 0x0a, 0x0d, - 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x0c, 0x0a, - 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x78, 0x12, 0x8d, 0x01, 0x0a, 0x06, - 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x54, 0xba, - 0x48, 0x51, 0xba, 0x01, 0x4e, 0x0a, 0x14, 0x6e, 0x6f, 0x6e, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, - 0x62, 0x61, 0x62, 0x79, 0x5f, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x12, 0x2a, 0x65, 0x6d, 0x62, - 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x27, 0x73, 0x20, 0x78, - 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x62, 0x65, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x0a, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, - 0x3e, 0x20, 0x30, 0x52, 0x06, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x3a, 0x4f, 0xba, 0x48, 0x4c, - 0x1a, 0x4a, 0x0a, 0x0e, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x75, 0x72, 0x74, 0x6c, - 0x65, 0x73, 0x12, 0x1f, 0x61, 0x64, 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x75, 0x72, - 0x74, 0x6c, 0x65, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x75, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x1a, 0x17, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x2e, 0x78, 0x22, 0x40, 0x0a, 0x0e, - 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x12, 0x2e, - 0x0a, 0x01, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, - 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, - 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x52, 0x01, 0x62, 0x22, 0x40, - 0x0a, 0x0e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, - 0x12, 0x2e, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, - 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x52, 0x01, 0x61, - 0x22, 0xfb, 0x01, 0x0a, 0x0b, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4f, 0x6e, 0x65, 0x6f, 0x66, - 0x12, 0x1a, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x3a, 0x03, 0x66, 0x6f, 0x6f, 0x48, 0x00, 0x52, 0x01, 0x78, 0x12, 0x17, 0x0a, 0x01, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xba, 0x48, 0x04, 0x1a, 0x02, 0x20, 0x00, - 0x48, 0x00, 0x52, 0x01, 0x79, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x72, - 0x73, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x3a, 0x78, 0xba, 0x48, 0x75, 0x1a, 0x5c, 0x0a, - 0x06, 0x74, 0x65, 0x73, 0x74, 0x20, 0x78, 0x1a, 0x52, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, - 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x20, 0x3a, 0x20, 0x0a, 0x21, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x78, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, - 0x28, 0x27, 0x66, 0x6f, 0x6f, 0x27, 0x29, 0x20, 0x3f, 0x20, 0x27, 0x64, 0x6f, 0x65, 0x73, 0x20, - 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, - 0x60, 0x66, 0x6f, 0x6f, 0x60, 0x27, 0x20, 0x3a, 0x20, 0x27, 0x27, 0x1a, 0x15, 0x0a, 0x06, 0x74, - 0x65, 0x78, 0x74, 0x20, 0x79, 0x1a, 0x0b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x79, 0x20, 0x3e, 0x3d, - 0x20, 0x30, 0x42, 0x0a, 0x0a, 0x01, 0x6f, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0xa0, - 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x3f, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x31, 0xba, 0x48, - 0x2e, 0x92, 0x01, 0x2b, 0x08, 0x01, 0x10, 0x03, 0x18, 0x01, 0x22, 0x23, 0xba, 0x01, 0x19, 0x12, - 0x11, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x1a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x05, 0x25, 0x00, 0x00, 0x00, 0x00, 0x52, - 0x01, 0x78, 0x12, 0x16, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xba, - 0x48, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, 0x52, 0x01, 0x79, 0x12, 0x35, 0x0a, 0x01, 0x7a, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, - 0x78, 0x70, 0x72, 0x73, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x10, 0x02, 0x52, 0x01, - 0x7a, 0x22, 0xf1, 0x03, 0x0a, 0x09, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x12, - 0x5b, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x49, - 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x14, 0xba, 0x48, - 0x11, 0x9a, 0x01, 0x0e, 0x08, 0x03, 0x22, 0x04, 0x1a, 0x02, 0x20, 0x00, 0x2a, 0x04, 0x1a, 0x02, - 0x10, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 0x12, 0x53, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0xba, 0x48, - 0x05, 0x9a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, - 0x70, 0x12, 0x56, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x70, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, - 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x08, 0xba, 0x48, 0x05, 0x9a, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x49, 0x6e, 0x74, - 0x33, 0x32, 0x6d, 0x61, 0x70, 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, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5f, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, - 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x70, - 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x6e, 0x74, 0x12, 0x71, 0x0a, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x41, 0xba, - 0x48, 0x3e, 0xba, 0x01, 0x3b, 0x0a, 0x0a, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x61, 0x74, 0x68, - 0x73, 0x12, 0x1c, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x6d, 0x75, - 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x0f, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x29, - 0x52, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xce, 0x01, 0x0a, 0x27, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x65, 0x53, 0x74, 0x65, 0x70, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, - 0x74, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x41, 0x70, 0x69, 0x42, 0x7a, 0xba, 0x48, 0x77, 0xba, 0x01, 0x74, 0x0a, 0x1c, - 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x61, 0x70, - 0x69, 0x27, 0x73, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75, 0x73, - 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, - 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x29, 0x52, 0x03, 0x61, 0x70, 0x69, 0x22, 0x16, 0x0a, 0x06, 0x53, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x22, - 0x70, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x66, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6e, - 0x79, 0x12, 0x5e, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x01, 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, 0x42, 0x36, 0xba, 0x48, 0x33, 0xba, 0x01, 0x30, 0x0a, 0x08, 0x61, 0x6e, - 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6f, - 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x1a, 0x0c, - 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x52, 0x03, 0x61, 0x6e, - 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x11, 0x43, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x4f, 0x6e, 0x41, 0x52, - 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x9c, 0x01, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x6c, 0x4d, - 0x61, 0x70, 0x4f, 0x6e, 0x41, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x59, 0xba, 0x48, 0x56, 0xba, 0x01, 0x53, 0x0a, 0x0f, 0x65, 0x6e, 0x76, - 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x1a, 0x40, 0x74, 0x68, - 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x70, 0x28, 0x76, 0x2c, 0x20, 0x76, 0x2e, 0x6e, 0x61, 0x6d, 0x65, - 0x29, 0x2e, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x28, 0x29, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x20, - 0x3a, 0x20, 0x27, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x6d, - 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x27, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x1b, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, - 0x74, 0x65, 0x6d, 0x43, 0x65, 0x6c, 0x12, 0x48, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x32, 0xba, 0x48, 0x2f, 0x92, 0x01, 0x2c, 0x22, 0x2a, 0xba, - 0x01, 0x27, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x2e, 0x6e, 0x6f, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x1a, 0x15, 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, - 0x57, 0x69, 0x74, 0x68, 0x28, 0x27, 0x20, 0x27, 0x29, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, - 0x22, 0x64, 0x0a, 0x06, 0x4f, 0x6e, 0x65, 0x54, 0x77, 0x6f, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, - 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x31, - 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x32, 0x52, 0x06, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x22, 0x64, 0x0a, 0x06, 0x54, 0x77, 0x6f, 0x4f, 0x6e, 0x65, - 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x32, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x2c, - 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x46, 0x31, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x22, 0x59, 0x0a, 0x02, - 0x46, 0x31, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x69, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x65, 0x64, 0x54, 0x68, 0x69, 0x73, 0x12, - 0x36, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x3c, 0x0a, 0x02, 0x46, 0x32, 0x12, 0x36, 0x0a, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6c, 0x61, 0x74, 0x6c, 0x6e, 0x67, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x02, 0x0a, 0x0b, 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, + 0x45, 0x78, 0x70, 0x72, 0x73, 0x12, 0x7f, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x71, 0xba, 0x48, 0x6e, 0xba, 0x01, 0x27, 0x0a, 0x06, 0x78, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x12, 0x0e, 0x78, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6e, + 0x1a, 0x0d, 0x74, 0x68, 0x69, 0x73, 0x20, 0x25, 0x20, 0x32, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0xba, + 0x01, 0x41, 0x0a, 0x0b, 0x78, 0x5f, 0x63, 0x6f, 0x70, 0x72, 0x69, 0x6d, 0x65, 0x5f, 0x33, 0x1a, + 0x32, 0x74, 0x68, 0x69, 0x73, 0x20, 0x25, 0x20, 0x33, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, + 0x20, 0x27, 0x27, 0x3a, 0x20, 0x27, 0x78, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x62, 0x65, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x79, + 0x20, 0x33, 0x27, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x01, 0x79, 0x3a, 0x6f, 0xba, 0x48, 0x6c, 0x1a, 0x30, 0x0a, 0x06, 0x78, 0x5f, 0x6c, + 0x74, 0x5f, 0x79, 0x12, 0x15, 0x78, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6c, + 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x79, 0x1a, 0x0f, 0x74, 0x68, 0x69, 0x73, + 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x79, 0x1a, 0x38, 0x0a, 0x07, 0x79, + 0x5f, 0x67, 0x74, 0x5f, 0x34, 0x32, 0x1a, 0x2d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x79, 0x20, 0x3e, + 0x20, 0x34, 0x32, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x3a, 0x20, 0x27, 0x79, 0x20, 0x6d, 0x75, 0x73, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, + 0x6e, 0x20, 0x34, 0x32, 0x27, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x01, 0x78, 0x12, 0x8d, 0x01, 0x0a, 0x06, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x54, 0xba, 0x48, 0x51, 0xba, 0x01, 0x4e, 0x0a, + 0x14, 0x6e, 0x6f, 0x6e, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x62, 0x61, 0x62, 0x79, 0x5f, 0x74, + 0x75, 0x72, 0x74, 0x6c, 0x65, 0x12, 0x2a, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, + 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x27, 0x73, 0x20, 0x78, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x7a, 0x65, 0x72, + 0x6f, 0x1a, 0x0a, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x3e, 0x20, 0x30, 0x52, 0x06, 0x74, + 0x75, 0x72, 0x74, 0x6c, 0x65, 0x3a, 0x4f, 0xba, 0x48, 0x4c, 0x1a, 0x4a, 0x0a, 0x0e, 0x75, 0x6e, + 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x61, 0x64, + 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x73, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x1a, 0x17, 0x74, + 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x74, 0x75, + 0x72, 0x74, 0x6c, 0x65, 0x2e, 0x78, 0x22, 0x40, 0x0a, 0x0e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x12, 0x2e, 0x0a, 0x01, 0x62, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, + 0x73, 0x69, 0x76, 0x65, 0x42, 0x52, 0x01, 0x62, 0x22, 0x40, 0x0a, 0x0e, 0x4c, 0x6f, 0x6f, 0x70, + 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x12, 0x2e, 0x0a, 0x01, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, + 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x52, 0x01, 0x61, 0x22, 0xfb, 0x01, 0x0a, 0x0b, 0x4d, + 0x73, 0x67, 0x48, 0x61, 0x73, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1a, 0x0a, 0x01, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x3a, 0x03, 0x66, 0x6f, + 0x6f, 0x48, 0x00, 0x52, 0x01, 0x78, 0x12, 0x17, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x07, 0xba, 0x48, 0x04, 0x1a, 0x02, 0x20, 0x00, 0x48, 0x00, 0x52, 0x01, 0x79, 0x12, + 0x31, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x05, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x53, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, 0x69, - 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x66, 0x31, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x31, 0x52, 0x02, 0x66, 0x31, 0x12, 0x1b, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0xd8, 0x01, 0x0a, 0x14, 0x63, - 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x42, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x75, 0x66, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2d, 0x67, 0x6f, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x54, 0x45, 0x58, 0xaa, 0x02, 0x10, 0x54, 0x65, - 0x73, 0x74, 0x73, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, - 0x10, 0x54, 0x65, 0x73, 0x74, 0x73, 0x5c, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x1c, 0x54, 0x65, 0x73, 0x74, 0x73, 0x5c, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x73, 0x3a, 0x3a, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var file_tests_example_v1_validations_proto_msgTypes = make([]protoimpl.MessageInfo, 22) + 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x72, 0x73, 0x48, 0x00, 0x52, 0x03, 0x6d, + 0x73, 0x67, 0x3a, 0x78, 0xba, 0x48, 0x75, 0x1a, 0x5c, 0x0a, 0x06, 0x74, 0x65, 0x73, 0x74, 0x20, + 0x78, 0x1a, 0x52, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20, + 0x3f, 0x20, 0x27, 0x27, 0x20, 0x3a, 0x20, 0x0a, 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x2e, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x28, 0x27, 0x66, 0x6f, 0x6f, 0x27, + 0x29, 0x20, 0x3f, 0x20, 0x27, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x60, 0x66, 0x6f, 0x6f, 0x60, 0x27, + 0x20, 0x3a, 0x20, 0x27, 0x27, 0x1a, 0x15, 0x0a, 0x06, 0x74, 0x65, 0x78, 0x74, 0x20, 0x79, 0x1a, + 0x0b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x79, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x42, 0x0a, 0x0a, 0x01, + 0x6f, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, + 0x48, 0x61, 0x73, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x01, 0x78, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x31, 0xba, 0x48, 0x2e, 0x92, 0x01, 0x2b, 0x08, 0x01, + 0x10, 0x03, 0x18, 0x01, 0x22, 0x23, 0xba, 0x01, 0x19, 0x12, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x1a, 0x04, 0x74, 0x72, + 0x75, 0x65, 0x0a, 0x05, 0x25, 0x00, 0x00, 0x00, 0x00, 0x52, 0x01, 0x78, 0x12, 0x16, 0x0a, 0x01, + 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x18, + 0x01, 0x52, 0x01, 0x79, 0x12, 0x35, 0x0a, 0x01, 0x7a, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x72, 0x73, 0x42, 0x08, + 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x10, 0x02, 0x52, 0x01, 0x7a, 0x22, 0xf1, 0x03, 0x0a, 0x09, + 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x12, 0x5b, 0x0a, 0x08, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x14, 0xba, 0x48, 0x11, 0x9a, 0x01, 0x0e, 0x08, 0x03, + 0x22, 0x04, 0x1a, 0x02, 0x20, 0x00, 0x2a, 0x04, 0x1a, 0x02, 0x10, 0x00, 0x52, 0x08, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 0x12, 0x53, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0xba, 0x48, 0x05, 0x9a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x56, 0x0a, 0x0b, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0xba, + 0x48, 0x05, 0x9a, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x4d, 0x61, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 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, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5f, + 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, + 0x69, 0x76, 0x65, 0x41, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x8e, 0x01, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x71, 0x0a, + 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x41, 0xba, 0x48, 0x3e, 0xba, 0x01, 0x3b, 0x0a, + 0x0a, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1c, 0x6d, 0x61, 0x73, + 0x6b, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x68, 0x61, 0x73, 0x28, 0x74, + 0x68, 0x69, 0x73, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x29, 0x52, 0x04, 0x6d, 0x61, 0x73, 0x6b, + 0x22, 0xce, 0x01, 0x0a, 0x27, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x65, + 0x70, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0xa2, 0x01, 0x0a, + 0x03, 0x61, 0x70, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x69, + 0x42, 0x7a, 0xba, 0x48, 0x77, 0xba, 0x01, 0x74, 0x0a, 0x1c, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x61, 0x70, 0x69, 0x27, 0x73, 0x20, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, + 0x69, 0x73, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x52, 0x03, 0x61, 0x70, + 0x69, 0x22, 0x16, 0x0a, 0x06, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x22, 0x70, 0x0a, 0x0e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4f, 0x66, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6e, 0x79, 0x12, 0x5e, 0x0a, 0x03, 0x61, + 0x6e, 0x79, 0x18, 0x01, 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, 0x42, 0x36, + 0xba, 0x48, 0x33, 0xba, 0x01, 0x30, 0x0a, 0x08, 0x61, 0x6e, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x65, + 0x76, 0x65, 0x72, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x1a, 0x0c, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, + 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x52, 0x03, 0x61, 0x6e, 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x11, + 0x43, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x4f, 0x6e, 0x41, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x9c, 0x01, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x4f, 0x6e, 0x41, 0x52, + 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x59, 0xba, + 0x48, 0x56, 0xba, 0x01, 0x53, 0x0a, 0x0f, 0x65, 0x6e, 0x76, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, + 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x1a, 0x40, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x70, + 0x28, 0x76, 0x2c, 0x20, 0x76, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x2e, 0x75, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x28, 0x29, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x20, 0x3a, 0x20, 0x27, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, + 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x27, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x1a, 0x1b, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5b, 0x0a, + 0x0f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x65, 0x6c, + 0x12, 0x48, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x32, 0xba, 0x48, 0x2f, 0x92, 0x01, 0x2c, 0x22, 0x2a, 0xba, 0x01, 0x27, 0x0a, 0x0e, 0x70, 0x61, + 0x74, 0x68, 0x73, 0x2e, 0x6e, 0x6f, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x15, 0x21, 0x74, + 0x68, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x28, 0x27, + 0x20, 0x27, 0x29, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x64, 0x0a, 0x06, 0x4f, 0x6e, + 0x65, 0x54, 0x77, 0x6f, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x31, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x31, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x32, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, + 0x22, 0x64, 0x0a, 0x06, 0x54, 0x77, 0x6f, 0x4f, 0x6e, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x32, + 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, + 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x31, 0x52, 0x06, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x22, 0x59, 0x0a, 0x02, 0x46, 0x31, 0x12, 0x1b, 0x0a, 0x09, + 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x69, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6e, 0x65, 0x65, 0x64, 0x54, 0x68, 0x69, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, + 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x57, 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x22, 0x3c, 0x0a, 0x02, 0x46, 0x32, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, + 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, + 0x53, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x12, 0x24, 0x0a, 0x02, 0x66, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x46, 0x31, 0x52, 0x02, 0x66, 0x31, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x08, 0x49, 0x73, 0x73, 0x75, 0x65, 0x31, 0x37, + 0x34, 0x12, 0xa8, 0x01, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x61, 0x74, 0x4c, 0x6e, 0x67, 0x42, 0x71, 0xba, 0x48, + 0x6e, 0xba, 0x01, 0x6b, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x73, 0x1a, 0x5c, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x20, 0x3c, 0x20, 0x39, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6c, + 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x20, 0x3e, 0x20, 0x2d, 0x39, 0x30, 0x29, 0x20, 0x26, + 0x26, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, + 0x20, 0x3c, 0x20, 0x31, 0x38, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6c, + 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x20, 0x3e, 0x20, 0x2d, 0x39, 0x30, 0x29, 0x52, + 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x42, 0xd8, 0x01, 0x0a, + 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x75, 0x66, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2d, 0x67, 0x6f, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x74, 0x65, 0x73, + 0x74, 0x73, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x54, 0x45, 0x58, 0xaa, 0x02, 0x10, + 0x54, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x10, 0x54, 0x65, 0x73, 0x74, 0x73, 0x5c, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x54, 0x65, 0x73, 0x74, 0x73, 0x5c, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x73, 0x3a, 0x3a, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_tests_example_v1_validations_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_tests_example_v1_validations_proto_goTypes = []any{ (*HasMsgExprs)(nil), // 0: tests.example.v1.HasMsgExprs (*SelfRecursive)(nil), // 1: tests.example.v1.SelfRecursive @@ -1794,13 +1876,15 @@ var file_tests_example_v1_validations_proto_goTypes = []any{ (*F1)(nil), // 15: tests.example.v1.F1 (*F2)(nil), // 16: tests.example.v1.F2 (*FieldWithIssue)(nil), // 17: tests.example.v1.FieldWithIssue - nil, // 18: tests.example.v1.MsgHasMap.Int32mapEntry - nil, // 19: tests.example.v1.MsgHasMap.StringMapEntry - nil, // 20: tests.example.v1.MsgHasMap.MessageMapEntry - (*CelMapOnARepeated_Value)(nil), // 21: tests.example.v1.CelMapOnARepeated.Value - (*fieldmaskpb.FieldMask)(nil), // 22: google.protobuf.FieldMask - (*apipb.Api)(nil), // 23: google.protobuf.Api - (*anypb.Any)(nil), // 24: google.protobuf.Any + (*Issue174)(nil), // 18: tests.example.v1.Issue174 + nil, // 19: tests.example.v1.MsgHasMap.Int32mapEntry + nil, // 20: tests.example.v1.MsgHasMap.StringMapEntry + nil, // 21: tests.example.v1.MsgHasMap.MessageMapEntry + (*CelMapOnARepeated_Value)(nil), // 22: tests.example.v1.CelMapOnARepeated.Value + (*fieldmaskpb.FieldMask)(nil), // 23: google.protobuf.FieldMask + (*apipb.Api)(nil), // 24: google.protobuf.Api + (*anypb.Any)(nil), // 25: google.protobuf.Any + (*latlng.LatLng)(nil), // 26: google.type.LatLng } var file_tests_example_v1_validations_proto_depIdxs = []int32{ 1, // 0: tests.example.v1.SelfRecursive.turtle:type_name -> tests.example.v1.SelfRecursive @@ -1808,13 +1892,13 @@ var file_tests_example_v1_validations_proto_depIdxs = []int32{ 2, // 2: tests.example.v1.LoopRecursiveB.a:type_name -> tests.example.v1.LoopRecursiveA 0, // 3: tests.example.v1.MsgHasOneof.msg:type_name -> tests.example.v1.HasMsgExprs 0, // 4: tests.example.v1.MsgHasRepeated.z:type_name -> tests.example.v1.HasMsgExprs - 18, // 5: tests.example.v1.MsgHasMap.int32map:type_name -> tests.example.v1.MsgHasMap.Int32mapEntry - 19, // 6: tests.example.v1.MsgHasMap.string_map:type_name -> tests.example.v1.MsgHasMap.StringMapEntry - 20, // 7: tests.example.v1.MsgHasMap.message_map:type_name -> tests.example.v1.MsgHasMap.MessageMapEntry - 22, // 8: tests.example.v1.TransitiveFieldConstraint.mask:type_name -> google.protobuf.FieldMask - 23, // 9: tests.example.v1.MultipleStepsTransitiveFieldConstraints.api:type_name -> google.protobuf.Api - 24, // 10: tests.example.v1.FieldOfTypeAny.any:type_name -> google.protobuf.Any - 21, // 11: tests.example.v1.CelMapOnARepeated.values:type_name -> tests.example.v1.CelMapOnARepeated.Value + 19, // 5: tests.example.v1.MsgHasMap.int32map:type_name -> tests.example.v1.MsgHasMap.Int32mapEntry + 20, // 6: tests.example.v1.MsgHasMap.string_map:type_name -> tests.example.v1.MsgHasMap.StringMapEntry + 21, // 7: tests.example.v1.MsgHasMap.message_map:type_name -> tests.example.v1.MsgHasMap.MessageMapEntry + 23, // 8: tests.example.v1.TransitiveFieldConstraint.mask:type_name -> google.protobuf.FieldMask + 24, // 9: tests.example.v1.MultipleStepsTransitiveFieldConstraints.api:type_name -> google.protobuf.Api + 25, // 10: tests.example.v1.FieldOfTypeAny.any:type_name -> google.protobuf.Any + 22, // 11: tests.example.v1.CelMapOnARepeated.values:type_name -> tests.example.v1.CelMapOnARepeated.Value 15, // 12: tests.example.v1.OneTwo.field1:type_name -> tests.example.v1.F1 16, // 13: tests.example.v1.OneTwo.field2:type_name -> tests.example.v1.F2 16, // 14: tests.example.v1.TwoOne.field2:type_name -> tests.example.v1.F2 @@ -1822,12 +1906,13 @@ var file_tests_example_v1_validations_proto_depIdxs = []int32{ 17, // 16: tests.example.v1.F1.field:type_name -> tests.example.v1.FieldWithIssue 17, // 17: tests.example.v1.F2.field:type_name -> tests.example.v1.FieldWithIssue 15, // 18: tests.example.v1.FieldWithIssue.f1:type_name -> tests.example.v1.F1 - 2, // 19: tests.example.v1.MsgHasMap.MessageMapEntry.value:type_name -> tests.example.v1.LoopRecursiveA - 20, // [20:20] is the sub-list for method output_type - 20, // [20:20] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 26, // 19: tests.example.v1.Issue174.coordinates:type_name -> google.type.LatLng + 2, // 20: tests.example.v1.MsgHasMap.MessageMapEntry.value:type_name -> tests.example.v1.LoopRecursiveA + 21, // [21:21] is the sub-list for method output_type + 21, // [21:21] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name } func init() { file_tests_example_v1_validations_proto_init() } @@ -1846,7 +1931,7 @@ func file_tests_example_v1_validations_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_tests_example_v1_validations_proto_rawDesc, NumEnums: 0, - NumMessages: 22, + NumMessages: 23, NumExtensions: 0, NumServices: 0, }, diff --git a/internal/gen/tests/example/v1/validations_protoopaque.pb.go b/internal/gen/tests/example/v1/validations_protoopaque.pb.go index 9f7e1e8..4e3b0df 100644 --- a/internal/gen/tests/example/v1/validations_protoopaque.pb.go +++ b/internal/gen/tests/example/v1/validations_protoopaque.pb.go @@ -24,6 +24,7 @@ package examplev1 import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" + latlng "google.golang.org/genproto/googleapis/type/latlng" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" anypb "google.golang.org/protobuf/types/known/anypb" @@ -1503,6 +1504,74 @@ func (b0 FieldWithIssue_builder) Build() *FieldWithIssue { return m0 } +type Issue174 struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Coordinates *latlng.LatLng `protobuf:"bytes,6,opt,name=coordinates,proto3" json:"coordinates,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Issue174) Reset() { + *x = Issue174{} + mi := &file_tests_example_v1_validations_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Issue174) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Issue174) ProtoMessage() {} + +func (x *Issue174) ProtoReflect() protoreflect.Message { + mi := &file_tests_example_v1_validations_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Issue174) GetCoordinates() *latlng.LatLng { + if x != nil { + return x.xxx_hidden_Coordinates + } + return nil +} + +func (x *Issue174) SetCoordinates(v *latlng.LatLng) { + x.xxx_hidden_Coordinates = v +} + +func (x *Issue174) HasCoordinates() bool { + if x == nil { + return false + } + return x.xxx_hidden_Coordinates != nil +} + +func (x *Issue174) ClearCoordinates() { + x.xxx_hidden_Coordinates = nil +} + +type Issue174_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Coordinates *latlng.LatLng +} + +func (b0 Issue174_builder) Build() *Issue174 { + m0 := &Issue174{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Coordinates = b.Coordinates + return m0 +} + type CelMapOnARepeated_Value struct { state protoimpl.MessageState `protogen:"opaque.v1"` xxx_hidden_Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -1512,7 +1581,7 @@ type CelMapOnARepeated_Value struct { func (x *CelMapOnARepeated_Value) Reset() { *x = CelMapOnARepeated_Value{} - mi := &file_tests_example_v1_validations_proto_msgTypes[21] + mi := &file_tests_example_v1_validations_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1524,7 +1593,7 @@ func (x *CelMapOnARepeated_Value) String() string { func (*CelMapOnARepeated_Value) ProtoMessage() {} func (x *CelMapOnARepeated_Value) ProtoReflect() protoreflect.Message { - mi := &file_tests_example_v1_validations_proto_msgTypes[21] + mi := &file_tests_example_v1_validations_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1573,200 +1642,213 @@ var file_tests_example_v1_validations_proto_rawDesc = []byte{ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x02, 0x0a, 0x0b, - 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x72, 0x73, 0x12, 0x7f, 0x0a, 0x01, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x71, 0xba, 0x48, 0x6e, 0xba, 0x01, 0x27, 0x0a, 0x06, - 0x78, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x0e, 0x78, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, - 0x65, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x1a, 0x0d, 0x74, 0x68, 0x69, 0x73, 0x20, 0x25, 0x20, 0x32, - 0x20, 0x3d, 0x3d, 0x20, 0x30, 0xba, 0x01, 0x41, 0x0a, 0x0b, 0x78, 0x5f, 0x63, 0x6f, 0x70, 0x72, - 0x69, 0x6d, 0x65, 0x5f, 0x33, 0x1a, 0x32, 0x74, 0x68, 0x69, 0x73, 0x20, 0x25, 0x20, 0x33, 0x20, - 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x3a, 0x20, 0x27, 0x78, 0x20, 0x6d, 0x75, - 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, - 0x62, 0x6c, 0x65, 0x20, 0x62, 0x79, 0x20, 0x33, 0x27, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x3a, 0x6f, 0xba, 0x48, 0x6c, 0x1a, - 0x30, 0x0a, 0x06, 0x78, 0x5f, 0x6c, 0x74, 0x5f, 0x79, 0x12, 0x15, 0x78, 0x20, 0x6d, 0x75, 0x73, - 0x74, 0x20, 0x62, 0x65, 0x20, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x79, - 0x1a, 0x0f, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, - 0x79, 0x1a, 0x38, 0x0a, 0x07, 0x79, 0x5f, 0x67, 0x74, 0x5f, 0x34, 0x32, 0x1a, 0x2d, 0x74, 0x68, - 0x69, 0x73, 0x2e, 0x79, 0x20, 0x3e, 0x20, 0x34, 0x32, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x3a, 0x20, - 0x27, 0x79, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x34, 0x32, 0x27, 0x22, 0xfe, 0x01, 0x0a, 0x0d, - 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x0c, 0x0a, - 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x78, 0x12, 0x8d, 0x01, 0x0a, 0x06, - 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x54, 0xba, - 0x48, 0x51, 0xba, 0x01, 0x4e, 0x0a, 0x14, 0x6e, 0x6f, 0x6e, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, - 0x62, 0x61, 0x62, 0x79, 0x5f, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x12, 0x2a, 0x65, 0x6d, 0x62, - 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x27, 0x73, 0x20, 0x78, - 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x62, 0x65, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x0a, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, - 0x3e, 0x20, 0x30, 0x52, 0x06, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x3a, 0x4f, 0xba, 0x48, 0x4c, - 0x1a, 0x4a, 0x0a, 0x0e, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x75, 0x72, 0x74, 0x6c, - 0x65, 0x73, 0x12, 0x1f, 0x61, 0x64, 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x75, 0x72, - 0x74, 0x6c, 0x65, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x75, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x1a, 0x17, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x2e, 0x78, 0x22, 0x40, 0x0a, 0x0e, - 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x12, 0x2e, - 0x0a, 0x01, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, - 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, - 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x52, 0x01, 0x62, 0x22, 0x40, - 0x0a, 0x0e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, - 0x12, 0x2e, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, - 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x52, 0x01, 0x61, - 0x22, 0xfb, 0x01, 0x0a, 0x0b, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4f, 0x6e, 0x65, 0x6f, 0x66, - 0x12, 0x1a, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x3a, 0x03, 0x66, 0x6f, 0x6f, 0x48, 0x00, 0x52, 0x01, 0x78, 0x12, 0x17, 0x0a, 0x01, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xba, 0x48, 0x04, 0x1a, 0x02, 0x20, 0x00, - 0x48, 0x00, 0x52, 0x01, 0x79, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x72, - 0x73, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x3a, 0x78, 0xba, 0x48, 0x75, 0x1a, 0x5c, 0x0a, - 0x06, 0x74, 0x65, 0x73, 0x74, 0x20, 0x78, 0x1a, 0x52, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, - 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x20, 0x3a, 0x20, 0x0a, 0x21, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x78, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, - 0x28, 0x27, 0x66, 0x6f, 0x6f, 0x27, 0x29, 0x20, 0x3f, 0x20, 0x27, 0x64, 0x6f, 0x65, 0x73, 0x20, - 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, - 0x60, 0x66, 0x6f, 0x6f, 0x60, 0x27, 0x20, 0x3a, 0x20, 0x27, 0x27, 0x1a, 0x15, 0x0a, 0x06, 0x74, - 0x65, 0x78, 0x74, 0x20, 0x79, 0x1a, 0x0b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x79, 0x20, 0x3e, 0x3d, - 0x20, 0x30, 0x42, 0x0a, 0x0a, 0x01, 0x6f, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0xa0, - 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x3f, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x31, 0xba, 0x48, - 0x2e, 0x92, 0x01, 0x2b, 0x08, 0x01, 0x10, 0x03, 0x18, 0x01, 0x22, 0x23, 0xba, 0x01, 0x19, 0x12, - 0x11, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x1a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x05, 0x25, 0x00, 0x00, 0x00, 0x00, 0x52, - 0x01, 0x78, 0x12, 0x16, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xba, - 0x48, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, 0x52, 0x01, 0x79, 0x12, 0x35, 0x0a, 0x01, 0x7a, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, - 0x78, 0x70, 0x72, 0x73, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x10, 0x02, 0x52, 0x01, - 0x7a, 0x22, 0xf1, 0x03, 0x0a, 0x09, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x12, - 0x5b, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x49, - 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x14, 0xba, 0x48, - 0x11, 0x9a, 0x01, 0x0e, 0x08, 0x03, 0x22, 0x04, 0x1a, 0x02, 0x20, 0x00, 0x2a, 0x04, 0x1a, 0x02, - 0x10, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 0x12, 0x53, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0xba, 0x48, - 0x05, 0x9a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, - 0x70, 0x12, 0x56, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x70, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, - 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x08, 0xba, 0x48, 0x05, 0x9a, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x49, 0x6e, 0x74, - 0x33, 0x32, 0x6d, 0x61, 0x70, 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, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5f, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, - 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x70, - 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x6e, 0x74, 0x12, 0x71, 0x0a, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x41, 0xba, - 0x48, 0x3e, 0xba, 0x01, 0x3b, 0x0a, 0x0a, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x61, 0x74, 0x68, - 0x73, 0x12, 0x1c, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x6d, 0x75, - 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x0f, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x29, - 0x52, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xce, 0x01, 0x0a, 0x27, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x65, 0x53, 0x74, 0x65, 0x70, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, - 0x74, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x41, 0x70, 0x69, 0x42, 0x7a, 0xba, 0x48, 0x77, 0xba, 0x01, 0x74, 0x0a, 0x1c, - 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x61, 0x70, - 0x69, 0x27, 0x73, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75, 0x73, - 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, - 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x29, 0x52, 0x03, 0x61, 0x70, 0x69, 0x22, 0x16, 0x0a, 0x06, 0x53, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x22, - 0x70, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x66, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6e, - 0x79, 0x12, 0x5e, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x01, 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, 0x42, 0x36, 0xba, 0x48, 0x33, 0xba, 0x01, 0x30, 0x0a, 0x08, 0x61, 0x6e, - 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6f, - 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x1a, 0x0c, - 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x52, 0x03, 0x61, 0x6e, - 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x11, 0x43, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x4f, 0x6e, 0x41, 0x52, - 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x9c, 0x01, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x6c, 0x4d, - 0x61, 0x70, 0x4f, 0x6e, 0x41, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x59, 0xba, 0x48, 0x56, 0xba, 0x01, 0x53, 0x0a, 0x0f, 0x65, 0x6e, 0x76, - 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x1a, 0x40, 0x74, 0x68, - 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x70, 0x28, 0x76, 0x2c, 0x20, 0x76, 0x2e, 0x6e, 0x61, 0x6d, 0x65, - 0x29, 0x2e, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x28, 0x29, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x20, - 0x3a, 0x20, 0x27, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x6d, - 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x27, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x1b, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, - 0x74, 0x65, 0x6d, 0x43, 0x65, 0x6c, 0x12, 0x48, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x32, 0xba, 0x48, 0x2f, 0x92, 0x01, 0x2c, 0x22, 0x2a, 0xba, - 0x01, 0x27, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x2e, 0x6e, 0x6f, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x1a, 0x15, 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, - 0x57, 0x69, 0x74, 0x68, 0x28, 0x27, 0x20, 0x27, 0x29, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, - 0x22, 0x64, 0x0a, 0x06, 0x4f, 0x6e, 0x65, 0x54, 0x77, 0x6f, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, - 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x31, - 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x32, 0x52, 0x06, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x22, 0x64, 0x0a, 0x06, 0x54, 0x77, 0x6f, 0x4f, 0x6e, 0x65, - 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x32, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x2c, - 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x46, 0x31, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x22, 0x59, 0x0a, 0x02, - 0x46, 0x31, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x69, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x65, 0x64, 0x54, 0x68, 0x69, 0x73, 0x12, - 0x36, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x3c, 0x0a, 0x02, 0x46, 0x32, 0x12, 0x36, 0x0a, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6c, 0x61, 0x74, 0x6c, 0x6e, 0x67, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x02, 0x0a, 0x0b, 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, + 0x45, 0x78, 0x70, 0x72, 0x73, 0x12, 0x7f, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x71, 0xba, 0x48, 0x6e, 0xba, 0x01, 0x27, 0x0a, 0x06, 0x78, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x12, 0x0e, 0x78, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6e, + 0x1a, 0x0d, 0x74, 0x68, 0x69, 0x73, 0x20, 0x25, 0x20, 0x32, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0xba, + 0x01, 0x41, 0x0a, 0x0b, 0x78, 0x5f, 0x63, 0x6f, 0x70, 0x72, 0x69, 0x6d, 0x65, 0x5f, 0x33, 0x1a, + 0x32, 0x74, 0x68, 0x69, 0x73, 0x20, 0x25, 0x20, 0x33, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, + 0x20, 0x27, 0x27, 0x3a, 0x20, 0x27, 0x78, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x62, 0x65, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x79, + 0x20, 0x33, 0x27, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x01, 0x79, 0x3a, 0x6f, 0xba, 0x48, 0x6c, 0x1a, 0x30, 0x0a, 0x06, 0x78, 0x5f, 0x6c, + 0x74, 0x5f, 0x79, 0x12, 0x15, 0x78, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6c, + 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x79, 0x1a, 0x0f, 0x74, 0x68, 0x69, 0x73, + 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x79, 0x1a, 0x38, 0x0a, 0x07, 0x79, + 0x5f, 0x67, 0x74, 0x5f, 0x34, 0x32, 0x1a, 0x2d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x79, 0x20, 0x3e, + 0x20, 0x34, 0x32, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x3a, 0x20, 0x27, 0x79, 0x20, 0x6d, 0x75, 0x73, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, + 0x6e, 0x20, 0x34, 0x32, 0x27, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x01, 0x78, 0x12, 0x8d, 0x01, 0x0a, 0x06, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x54, 0xba, 0x48, 0x51, 0xba, 0x01, 0x4e, 0x0a, + 0x14, 0x6e, 0x6f, 0x6e, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x62, 0x61, 0x62, 0x79, 0x5f, 0x74, + 0x75, 0x72, 0x74, 0x6c, 0x65, 0x12, 0x2a, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, + 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x27, 0x73, 0x20, 0x78, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x7a, 0x65, 0x72, + 0x6f, 0x1a, 0x0a, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x3e, 0x20, 0x30, 0x52, 0x06, 0x74, + 0x75, 0x72, 0x74, 0x6c, 0x65, 0x3a, 0x4f, 0xba, 0x48, 0x4c, 0x1a, 0x4a, 0x0a, 0x0e, 0x75, 0x6e, + 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x61, 0x64, + 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x75, 0x72, 0x74, 0x6c, 0x65, 0x73, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x1a, 0x17, 0x74, + 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x74, 0x75, + 0x72, 0x74, 0x6c, 0x65, 0x2e, 0x78, 0x22, 0x40, 0x0a, 0x0e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x12, 0x2e, 0x0a, 0x01, 0x62, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, + 0x73, 0x69, 0x76, 0x65, 0x42, 0x52, 0x01, 0x62, 0x22, 0x40, 0x0a, 0x0e, 0x4c, 0x6f, 0x6f, 0x70, + 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x12, 0x2e, 0x0a, 0x01, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, + 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x41, 0x52, 0x01, 0x61, 0x22, 0xfb, 0x01, 0x0a, 0x0b, 0x4d, + 0x73, 0x67, 0x48, 0x61, 0x73, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x1a, 0x0a, 0x01, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x3a, 0x03, 0x66, 0x6f, + 0x6f, 0x48, 0x00, 0x52, 0x01, 0x78, 0x12, 0x17, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x07, 0xba, 0x48, 0x04, 0x1a, 0x02, 0x20, 0x00, 0x48, 0x00, 0x52, 0x01, 0x79, 0x12, + 0x31, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x05, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x53, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, 0x69, - 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x66, 0x31, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x31, 0x52, 0x02, 0x66, 0x31, 0x12, 0x1b, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0xd8, 0x01, 0x0a, 0x14, 0x63, - 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x42, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x75, 0x66, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2d, 0x67, 0x6f, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x54, 0x45, 0x58, 0xaa, 0x02, 0x10, 0x54, 0x65, - 0x73, 0x74, 0x73, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, - 0x10, 0x54, 0x65, 0x73, 0x74, 0x73, 0x5c, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x1c, 0x54, 0x65, 0x73, 0x74, 0x73, 0x5c, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x73, 0x3a, 0x3a, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var file_tests_example_v1_validations_proto_msgTypes = make([]protoimpl.MessageInfo, 22) + 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x72, 0x73, 0x48, 0x00, 0x52, 0x03, 0x6d, + 0x73, 0x67, 0x3a, 0x78, 0xba, 0x48, 0x75, 0x1a, 0x5c, 0x0a, 0x06, 0x74, 0x65, 0x73, 0x74, 0x20, + 0x78, 0x1a, 0x52, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20, + 0x3f, 0x20, 0x27, 0x27, 0x20, 0x3a, 0x20, 0x0a, 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x78, 0x2e, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x28, 0x27, 0x66, 0x6f, 0x6f, 0x27, + 0x29, 0x20, 0x3f, 0x20, 0x27, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x60, 0x66, 0x6f, 0x6f, 0x60, 0x27, + 0x20, 0x3a, 0x20, 0x27, 0x27, 0x1a, 0x15, 0x0a, 0x06, 0x74, 0x65, 0x78, 0x74, 0x20, 0x79, 0x1a, + 0x0b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x79, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x42, 0x0a, 0x0a, 0x01, + 0x6f, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, + 0x48, 0x61, 0x73, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x01, 0x78, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x42, 0x31, 0xba, 0x48, 0x2e, 0x92, 0x01, 0x2b, 0x08, 0x01, + 0x10, 0x03, 0x18, 0x01, 0x22, 0x23, 0xba, 0x01, 0x19, 0x12, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x1a, 0x04, 0x74, 0x72, + 0x75, 0x65, 0x0a, 0x05, 0x25, 0x00, 0x00, 0x00, 0x00, 0x52, 0x01, 0x78, 0x12, 0x16, 0x0a, 0x01, + 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x18, + 0x01, 0x52, 0x01, 0x79, 0x12, 0x35, 0x0a, 0x01, 0x7a, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x48, 0x61, 0x73, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x72, 0x73, 0x42, 0x08, + 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x10, 0x02, 0x52, 0x01, 0x7a, 0x22, 0xf1, 0x03, 0x0a, 0x09, + 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x12, 0x5b, 0x0a, 0x08, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x14, 0xba, 0x48, 0x11, 0x9a, 0x01, 0x0e, 0x08, 0x03, + 0x22, 0x04, 0x1a, 0x02, 0x20, 0x00, 0x2a, 0x04, 0x1a, 0x02, 0x10, 0x00, 0x52, 0x08, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 0x12, 0x53, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0xba, 0x48, 0x05, 0x9a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x56, 0x0a, 0x0b, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0xba, + 0x48, 0x05, 0x9a, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x4d, 0x61, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x6d, 0x61, 0x70, 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, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5f, + 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x70, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, + 0x69, 0x76, 0x65, 0x41, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x8e, 0x01, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x71, 0x0a, + 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x41, 0xba, 0x48, 0x3e, 0xba, 0x01, 0x3b, 0x0a, + 0x0a, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1c, 0x6d, 0x61, 0x73, + 0x6b, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x68, 0x61, 0x73, 0x28, 0x74, + 0x68, 0x69, 0x73, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x73, 0x29, 0x52, 0x04, 0x6d, 0x61, 0x73, 0x6b, + 0x22, 0xce, 0x01, 0x0a, 0x27, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x65, + 0x70, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0xa2, 0x01, 0x0a, + 0x03, 0x61, 0x70, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x69, + 0x42, 0x7a, 0xba, 0x48, 0x77, 0xba, 0x01, 0x74, 0x0a, 0x1c, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x61, 0x70, 0x69, 0x27, 0x73, 0x20, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, + 0x69, 0x73, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x52, 0x03, 0x61, 0x70, + 0x69, 0x22, 0x16, 0x0a, 0x06, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x22, 0x70, 0x0a, 0x0e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4f, 0x66, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6e, 0x79, 0x12, 0x5e, 0x0a, 0x03, 0x61, + 0x6e, 0x79, 0x18, 0x01, 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, 0x42, 0x36, + 0xba, 0x48, 0x33, 0xba, 0x01, 0x30, 0x0a, 0x08, 0x61, 0x6e, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x65, + 0x76, 0x65, 0x72, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x1a, 0x0c, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, + 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x52, 0x03, 0x61, 0x6e, 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x11, + 0x43, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x4f, 0x6e, 0x41, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x9c, 0x01, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x4f, 0x6e, 0x41, 0x52, + 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x59, 0xba, + 0x48, 0x56, 0xba, 0x01, 0x53, 0x0a, 0x0f, 0x65, 0x6e, 0x76, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, + 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x1a, 0x40, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x70, + 0x28, 0x76, 0x2c, 0x20, 0x76, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x2e, 0x75, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x28, 0x29, 0x20, 0x3f, 0x20, 0x27, 0x27, 0x20, 0x3a, 0x20, 0x27, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, + 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x27, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x1a, 0x1b, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5b, 0x0a, + 0x0f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x65, 0x6c, + 0x12, 0x48, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x32, 0xba, 0x48, 0x2f, 0x92, 0x01, 0x2c, 0x22, 0x2a, 0xba, 0x01, 0x27, 0x0a, 0x0e, 0x70, 0x61, + 0x74, 0x68, 0x73, 0x2e, 0x6e, 0x6f, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x15, 0x21, 0x74, + 0x68, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x28, 0x27, + 0x20, 0x27, 0x29, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x64, 0x0a, 0x06, 0x4f, 0x6e, + 0x65, 0x54, 0x77, 0x6f, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x31, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x31, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x32, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, + 0x22, 0x64, 0x0a, 0x06, 0x54, 0x77, 0x6f, 0x4f, 0x6e, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x32, + 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, + 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x31, 0x52, 0x06, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x22, 0x59, 0x0a, 0x02, 0x46, 0x31, 0x12, 0x1b, 0x0a, 0x09, + 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x69, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6e, 0x65, 0x65, 0x64, 0x54, 0x68, 0x69, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, + 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x57, 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x22, 0x3c, 0x0a, 0x02, 0x46, 0x32, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, + 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, + 0x53, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, 0x69, 0x74, 0x68, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x12, 0x24, 0x0a, 0x02, 0x66, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x46, 0x31, 0x52, 0x02, 0x66, 0x31, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x08, 0x49, 0x73, 0x73, 0x75, 0x65, 0x31, 0x37, + 0x34, 0x12, 0xa8, 0x01, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x61, 0x74, 0x4c, 0x6e, 0x67, 0x42, 0x71, 0xba, 0x48, + 0x6e, 0xba, 0x01, 0x6b, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x73, 0x1a, 0x5c, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x20, 0x3c, 0x20, 0x39, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6c, + 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x20, 0x3e, 0x20, 0x2d, 0x39, 0x30, 0x29, 0x20, 0x26, + 0x26, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, + 0x20, 0x3c, 0x20, 0x31, 0x38, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6c, + 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x20, 0x3e, 0x20, 0x2d, 0x39, 0x30, 0x29, 0x52, + 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x42, 0xd8, 0x01, 0x0a, + 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x75, 0x66, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2d, 0x67, 0x6f, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x74, 0x65, 0x73, + 0x74, 0x73, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x54, 0x45, 0x58, 0xaa, 0x02, 0x10, + 0x54, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x10, 0x54, 0x65, 0x73, 0x74, 0x73, 0x5c, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x54, 0x65, 0x73, 0x74, 0x73, 0x5c, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x73, 0x3a, 0x3a, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_tests_example_v1_validations_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_tests_example_v1_validations_proto_goTypes = []any{ (*HasMsgExprs)(nil), // 0: tests.example.v1.HasMsgExprs (*SelfRecursive)(nil), // 1: tests.example.v1.SelfRecursive @@ -1786,13 +1868,15 @@ var file_tests_example_v1_validations_proto_goTypes = []any{ (*F1)(nil), // 15: tests.example.v1.F1 (*F2)(nil), // 16: tests.example.v1.F2 (*FieldWithIssue)(nil), // 17: tests.example.v1.FieldWithIssue - nil, // 18: tests.example.v1.MsgHasMap.Int32mapEntry - nil, // 19: tests.example.v1.MsgHasMap.StringMapEntry - nil, // 20: tests.example.v1.MsgHasMap.MessageMapEntry - (*CelMapOnARepeated_Value)(nil), // 21: tests.example.v1.CelMapOnARepeated.Value - (*fieldmaskpb.FieldMask)(nil), // 22: google.protobuf.FieldMask - (*apipb.Api)(nil), // 23: google.protobuf.Api - (*anypb.Any)(nil), // 24: google.protobuf.Any + (*Issue174)(nil), // 18: tests.example.v1.Issue174 + nil, // 19: tests.example.v1.MsgHasMap.Int32mapEntry + nil, // 20: tests.example.v1.MsgHasMap.StringMapEntry + nil, // 21: tests.example.v1.MsgHasMap.MessageMapEntry + (*CelMapOnARepeated_Value)(nil), // 22: tests.example.v1.CelMapOnARepeated.Value + (*fieldmaskpb.FieldMask)(nil), // 23: google.protobuf.FieldMask + (*apipb.Api)(nil), // 24: google.protobuf.Api + (*anypb.Any)(nil), // 25: google.protobuf.Any + (*latlng.LatLng)(nil), // 26: google.type.LatLng } var file_tests_example_v1_validations_proto_depIdxs = []int32{ 1, // 0: tests.example.v1.SelfRecursive.turtle:type_name -> tests.example.v1.SelfRecursive @@ -1800,13 +1884,13 @@ var file_tests_example_v1_validations_proto_depIdxs = []int32{ 2, // 2: tests.example.v1.LoopRecursiveB.a:type_name -> tests.example.v1.LoopRecursiveA 0, // 3: tests.example.v1.MsgHasOneof.msg:type_name -> tests.example.v1.HasMsgExprs 0, // 4: tests.example.v1.MsgHasRepeated.z:type_name -> tests.example.v1.HasMsgExprs - 18, // 5: tests.example.v1.MsgHasMap.int32map:type_name -> tests.example.v1.MsgHasMap.Int32mapEntry - 19, // 6: tests.example.v1.MsgHasMap.string_map:type_name -> tests.example.v1.MsgHasMap.StringMapEntry - 20, // 7: tests.example.v1.MsgHasMap.message_map:type_name -> tests.example.v1.MsgHasMap.MessageMapEntry - 22, // 8: tests.example.v1.TransitiveFieldConstraint.mask:type_name -> google.protobuf.FieldMask - 23, // 9: tests.example.v1.MultipleStepsTransitiveFieldConstraints.api:type_name -> google.protobuf.Api - 24, // 10: tests.example.v1.FieldOfTypeAny.any:type_name -> google.protobuf.Any - 21, // 11: tests.example.v1.CelMapOnARepeated.values:type_name -> tests.example.v1.CelMapOnARepeated.Value + 19, // 5: tests.example.v1.MsgHasMap.int32map:type_name -> tests.example.v1.MsgHasMap.Int32mapEntry + 20, // 6: tests.example.v1.MsgHasMap.string_map:type_name -> tests.example.v1.MsgHasMap.StringMapEntry + 21, // 7: tests.example.v1.MsgHasMap.message_map:type_name -> tests.example.v1.MsgHasMap.MessageMapEntry + 23, // 8: tests.example.v1.TransitiveFieldConstraint.mask:type_name -> google.protobuf.FieldMask + 24, // 9: tests.example.v1.MultipleStepsTransitiveFieldConstraints.api:type_name -> google.protobuf.Api + 25, // 10: tests.example.v1.FieldOfTypeAny.any:type_name -> google.protobuf.Any + 22, // 11: tests.example.v1.CelMapOnARepeated.values:type_name -> tests.example.v1.CelMapOnARepeated.Value 15, // 12: tests.example.v1.OneTwo.field1:type_name -> tests.example.v1.F1 16, // 13: tests.example.v1.OneTwo.field2:type_name -> tests.example.v1.F2 16, // 14: tests.example.v1.TwoOne.field2:type_name -> tests.example.v1.F2 @@ -1814,12 +1898,13 @@ var file_tests_example_v1_validations_proto_depIdxs = []int32{ 17, // 16: tests.example.v1.F1.field:type_name -> tests.example.v1.FieldWithIssue 17, // 17: tests.example.v1.F2.field:type_name -> tests.example.v1.FieldWithIssue 15, // 18: tests.example.v1.FieldWithIssue.f1:type_name -> tests.example.v1.F1 - 2, // 19: tests.example.v1.MsgHasMap.MessageMapEntry.value:type_name -> tests.example.v1.LoopRecursiveA - 20, // [20:20] is the sub-list for method output_type - 20, // [20:20] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 26, // 19: tests.example.v1.Issue174.coordinates:type_name -> google.type.LatLng + 2, // 20: tests.example.v1.MsgHasMap.MessageMapEntry.value:type_name -> tests.example.v1.LoopRecursiveA + 21, // [21:21] is the sub-list for method output_type + 21, // [21:21] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name } func init() { file_tests_example_v1_validations_proto_init() } @@ -1838,7 +1923,7 @@ func file_tests_example_v1_validations_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_tests_example_v1_validations_proto_rawDesc, NumEnums: 0, - NumMessages: 22, + NumMessages: 23, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/tests/example/v1/validations.proto b/proto/tests/example/v1/validations.proto index ddc5771..772b3c1 100644 --- a/proto/tests/example/v1/validations.proto +++ b/proto/tests/example/v1/validations.proto @@ -20,6 +20,7 @@ import "buf/validate/validate.proto"; import "google/protobuf/any.proto"; import "google/protobuf/api.proto"; import "google/protobuf/field_mask.proto"; +import "google/type/latlng.proto"; message HasMsgExprs { option (buf.validate.message).cel = { @@ -198,3 +199,14 @@ message FieldWithIssue { F1 f1 = 1; string name = 2 [(buf.validate.field).string.min_len = 1]; } + +message Issue174 { + google.type.LatLng coordinates = 6 [ + (buf.validate.field).cel = { + id: 'coordinates', + expression: + "(this.latitude < 90 && this.latitude > -90) &&" + "(this.longitude < 180 && this.longitude > -90)" + } + ]; +} \ No newline at end of file diff --git a/validator_test.go b/validator_test.go index 977fb04..0a7ed30 100644 --- a/validator_test.go +++ b/validator_test.go @@ -20,6 +20,7 @@ import ( pb "github.com/bufbuild/protovalidate-go/internal/gen/tests/example/v1" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/genproto/googleapis/type/latlng" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/apipb" @@ -281,3 +282,26 @@ func TestValidator_Validate_Issue148(t *testing.T) { err = val.Validate(msg) require.NoError(t, err) } + +func TestValidator_Validate_Issue174(t *testing.T) { + t.Parallel() + val, err := New() + require.NoError(t, err) + msg := &pb.Issue174{Coordinates: &latlng.LatLng{ + Latitude: 1.23, + Longitude: 4.56, + }} + err = val.Validate(msg) + require.NoError(t, err) + + msg = &pb.Issue174{Coordinates: nil} + err = val.Validate(msg) + require.NoError(t, err) + + msg = &pb.Issue174{Coordinates: &latlng.LatLng{ + Latitude: -99999, + Longitude: -99999, + }} + err = val.Validate(msg) + require.Error(t, err) +}