From cf25308deabb0f090d6842ff4ce1bbe2579fa00e Mon Sep 17 00:00:00 2001 From: Herbie Ong Date: Mon, 17 Dec 2018 17:13:07 -0800 Subject: [PATCH] encoding/text: marshal extensions Change-Id: Ic4a0c5909fb6eca76d22053b143be58c60b67b34 Reviewed-on: https://go-review.googlesource.com/c/154657 Reviewed-by: Joe Tsai --- encoding/textpb/encode.go | 114 ++- encoding/textpb/encode_test.go | 170 +++++ encoding/textpb/testprotos/pb2/test.pb.go | 831 +++++++++++++++++----- encoding/textpb/testprotos/pb2/test.proto | 52 ++ 4 files changed, 977 insertions(+), 190 deletions(-) diff --git a/encoding/textpb/encode.go b/encoding/textpb/encode.go index 8d4b9cbe..c0b04b6a 100644 --- a/encoding/textpb/encode.go +++ b/encoding/textpb/encode.go @@ -79,49 +79,66 @@ func (o MarshalOptions) marshalMessage(m pref.Message) (text.Value, error) { tname := text.ValueOf(fd.Name()) pval := knownFields.Get(num) - - if fd.Cardinality() == pref.Repeated { - // Map or repeated fields. - var items []text.Value - var err error - if fd.IsMap() { - items, err = o.marshalMap(pval.Map(), fd) - if !nerr.Merge(err) { - return text.Value{}, err - } - } else { - items, err = o.marshalList(pval.List(), fd) - if !nerr.Merge(err) { - return text.Value{}, err - } - } - - // Add each item as key: value field. - for _, item := range items { - msgFields = append(msgFields, [2]text.Value{tname, item}) - } - } else { - // Required or optional fields. - tval, err := o.marshalSingular(pval, fd) - if !nerr.Merge(err) { - return text.Value{}, err - } - msgFields = append(msgFields, [2]text.Value{tname, tval}) + var err error + msgFields, err = o.appendField(msgFields, tname, pval, fd) + if !nerr.Merge(err) { + return text.Value{}, err } } - // Marshal out unknown fields. + // Handle extensions. + var err error + msgFields, err = o.appendExtensions(msgFields, knownFields) + if !nerr.Merge(err) { + return text.Value{}, err + } + + // Handle unknown fields. // TODO: Provide option to exclude or include unknown fields. m.UnknownFields().Range(func(_ pref.FieldNumber, raw pref.RawFields) bool { msgFields = appendUnknown(msgFields, raw) return true }) - // TODO: Handle extensions and Any expansion. - return text.ValueOf(msgFields), nerr.E } +// appendField marshals a protoreflect.Value and appends it to the given [][2]text.Value. +func (o MarshalOptions) appendField(msgFields [][2]text.Value, tname text.Value, pval pref.Value, fd pref.FieldDescriptor) ([][2]text.Value, error) { + var nerr errors.NonFatal + + if fd.Cardinality() == pref.Repeated { + // Map or repeated fields. + var items []text.Value + var err error + if fd.IsMap() { + items, err = o.marshalMap(pval.Map(), fd) + if !nerr.Merge(err) { + return msgFields, err + } + } else { + items, err = o.marshalList(pval.List(), fd) + if !nerr.Merge(err) { + return msgFields, err + } + } + + // Add each item as key: value field. + for _, item := range items { + msgFields = append(msgFields, [2]text.Value{tname, item}) + } + } else { + // Required or optional fields. + tval, err := o.marshalSingular(pval, fd) + if !nerr.Merge(err) { + return msgFields, err + } + msgFields = append(msgFields, [2]text.Value{tname, tval}) + } + + return msgFields, nerr.E +} + // marshalSingular converts a non-repeated field value to text.Value. // This includes all scalar types, enums, messages, and groups. func (o MarshalOptions) marshalSingular(val pref.Value, fd pref.FieldDescriptor) (text.Value, error) { @@ -252,6 +269,41 @@ func sortMap(keyKind pref.Kind, values []text.Value) { sort.Slice(values, less) } +// appendExtensions marshals extension fields and appends them to the given [][2]text.Value. +func (o MarshalOptions) appendExtensions(msgFields [][2]text.Value, knownFields pref.KnownFields) ([][2]text.Value, error) { + var nerr errors.NonFatal + xtTypes := knownFields.ExtensionTypes() + xtFields := make([][2]text.Value, 0, xtTypes.Len()) + + var err error + xtTypes.Range(func(xt pref.ExtensionType) bool { + // TODO: Handle MessageSet. Field name should be message_set_extension + // of message type without any fields and has message option + // message_set_wire_format=true. + + num := xt.Number() + if knownFields.Has(num) { + // Use string type to produce [name] format. + tname := text.ValueOf(string(xt.FullName())) + pval := knownFields.Get(num) + xtFields, err = o.appendField(xtFields, tname, pval, xt) + if err != nil { + return false + } + } + return true + }) + if !nerr.Merge(err) { + return msgFields, err + } + + // Sort extensions lexicographically and append to output. + sort.SliceStable(xtFields, func(i, j int) bool { + return xtFields[i][0].String() < xtFields[j][0].String() + }) + return append(msgFields, xtFields...), nerr.E +} + // appendUnknown parses the given []byte and appends field(s) into the given fields slice. // This function assumes proper encoding in the given []byte. func appendUnknown(fields [][2]text.Value, b []byte) [][2]text.Value { diff --git a/encoding/textpb/encode_test.go b/encoding/textpb/encode_test.go index 55f3e77a..8b7974e9 100644 --- a/encoding/textpb/encode_test.go +++ b/encoding/textpb/encode_test.go @@ -9,9 +9,12 @@ import ( "strings" "testing" + "github.com/golang/protobuf/protoapi" "github.com/golang/protobuf/v2/encoding/textpb" "github.com/golang/protobuf/v2/internal/detrand" "github.com/golang/protobuf/v2/internal/encoding/pack" + "github.com/golang/protobuf/v2/internal/encoding/wire" + "github.com/golang/protobuf/v2/internal/legacy" "github.com/golang/protobuf/v2/internal/scalar" "github.com/golang/protobuf/v2/proto" "github.com/google/go-cmp/cmp" @@ -47,6 +50,18 @@ func pb2Enums_NestedEnum(i int32) *pb2.Enums_NestedEnum { return p } +func setExtension(m proto.Message, xd *protoapi.ExtensionDesc, val interface{}) { + xt := legacy.Export{}.ExtensionTypeFromDesc(xd) + knownFields := m.ProtoReflect().KnownFields() + extTypes := knownFields.ExtensionTypes() + extTypes.Register(xt) + if val == nil { + return + } + pval := xt.ValueOf(val) + knownFields.Set(wire.Number(xd.Field), pval) +} + func TestMarshal(t *testing.T) { tests := []struct { desc string @@ -794,6 +809,161 @@ req_nested: {} 102: "hello" 102: "世界" `, + }, { + desc: "extensions of non-repeated fields", + input: func() proto.Message { + m := &pb2.Extensions{ + OptString: scalar.String("non-extension field"), + OptBool: scalar.Bool(true), + OptInt32: scalar.Int32(42), + } + setExtension(m, pb2.E_OptExtBool, true) + setExtension(m, pb2.E_OptExtString, "extension field") + setExtension(m, pb2.E_OptExtEnum, pb2.Enum_TENTH) + setExtension(m, pb2.E_OptExtNested, &pb2.Nested{ + OptString: scalar.String("nested in an extension"), + OptNested: &pb2.Nested{ + OptString: scalar.String("another nested in an extension"), + }, + }) + return m + }(), + want: `opt_string: "non-extension field" +opt_bool: true +opt_int32: 42 +[pb2.opt_ext_bool]: true +[pb2.opt_ext_enum]: TENTH +[pb2.opt_ext_nested]: { + opt_string: "nested in an extension" + opt_nested: { + opt_string: "another nested in an extension" + } +} +[pb2.opt_ext_string]: "extension field" +`, + }, { + desc: "registered extension but not set", + input: func() proto.Message { + m := &pb2.Extensions{} + setExtension(m, pb2.E_OptExtNested, nil) + return m + }(), + want: "\n", + }, { + desc: "extensions of repeated fields", + input: func() proto.Message { + m := &pb2.Extensions{} + setExtension(m, pb2.E_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST}) + setExtension(m, pb2.E_RptExtFixed32, &[]uint32{42, 47}) + setExtension(m, pb2.E_RptExtNested, &[]*pb2.Nested{ + &pb2.Nested{OptString: scalar.String("one")}, + &pb2.Nested{OptString: scalar.String("two")}, + &pb2.Nested{OptString: scalar.String("three")}, + }) + return m + }(), + want: `[pb2.rpt_ext_enum]: TENTH +[pb2.rpt_ext_enum]: 101 +[pb2.rpt_ext_enum]: FIRST +[pb2.rpt_ext_fixed32]: 42 +[pb2.rpt_ext_fixed32]: 47 +[pb2.rpt_ext_nested]: { + opt_string: "one" +} +[pb2.rpt_ext_nested]: { + opt_string: "two" +} +[pb2.rpt_ext_nested]: { + opt_string: "three" +} +`, + }, { + desc: "extensions of non-repeated fields in another message", + input: func() proto.Message { + m := &pb2.Extensions{} + setExtension(m, pb2.E_ExtensionsContainer_OptExtBool, true) + setExtension(m, pb2.E_ExtensionsContainer_OptExtString, "extension field") + setExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TENTH) + setExtension(m, pb2.E_ExtensionsContainer_OptExtNested, &pb2.Nested{ + OptString: scalar.String("nested in an extension"), + OptNested: &pb2.Nested{ + OptString: scalar.String("another nested in an extension"), + }, + }) + return m + }(), + want: `[pb2.ExtensionsContainer.opt_ext_bool]: true +[pb2.ExtensionsContainer.opt_ext_enum]: TENTH +[pb2.ExtensionsContainer.opt_ext_nested]: { + opt_string: "nested in an extension" + opt_nested: { + opt_string: "another nested in an extension" + } +} +[pb2.ExtensionsContainer.opt_ext_string]: "extension field" +`, + }, { + desc: "extensions of repeated fields in another message", + input: func() proto.Message { + m := &pb2.Extensions{ + OptString: scalar.String("non-extension field"), + OptBool: scalar.Bool(true), + OptInt32: scalar.Int32(42), + } + setExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST}) + setExtension(m, pb2.E_ExtensionsContainer_RptExtString, &[]string{"hello", "world"}) + setExtension(m, pb2.E_ExtensionsContainer_RptExtNested, &[]*pb2.Nested{ + &pb2.Nested{OptString: scalar.String("one")}, + &pb2.Nested{OptString: scalar.String("two")}, + &pb2.Nested{OptString: scalar.String("three")}, + }) + return m + }(), + want: `opt_string: "non-extension field" +opt_bool: true +opt_int32: 42 +[pb2.ExtensionsContainer.rpt_ext_enum]: TENTH +[pb2.ExtensionsContainer.rpt_ext_enum]: 101 +[pb2.ExtensionsContainer.rpt_ext_enum]: FIRST +[pb2.ExtensionsContainer.rpt_ext_nested]: { + opt_string: "one" +} +[pb2.ExtensionsContainer.rpt_ext_nested]: { + opt_string: "two" +} +[pb2.ExtensionsContainer.rpt_ext_nested]: { + opt_string: "three" +} +[pb2.ExtensionsContainer.rpt_ext_string]: "hello" +[pb2.ExtensionsContainer.rpt_ext_string]: "world" +`, + /* TODO: test for MessageSet + }, { + desc: "MessageSet", + input: func() proto.Message { + m := &pb2.MessageSet{} + setExtension(m, pb2.E_MessageSetExtension_MessageSetExtension, &pb2.MessageSetExtension{ + OptString: scalar.String("a messageset extension"), + }) + setExtension(m, pb2.E_MessageSetExtension_NotMessageSetExtension, &pb2.MessageSetExtension{ + OptString: scalar.String("not a messageset extension"), + }) + setExtension(m, pb2.E_MessageSetExtension_ExtNested, &pb2.Nested{ + OptString: scalar.String("just a regular extension"), + }) + return m + }(), + want: `[pb2.MessageSetExtension]: { + opt_string: "a messageset extension" + } + [pb2.MessageSetExtension.ext_nested]: { + opt_string: "just a regular extension" + } + [pb2.MessageSetExtension.not_message_set_extension]: { + opt_string: "not a messageset extension" + } + `, + */ }} for _, tt := range tests { diff --git a/encoding/textpb/testprotos/pb2/test.pb.go b/encoding/textpb/testprotos/pb2/test.pb.go index d731089d..61388ba9 100644 --- a/encoding/textpb/testprotos/pb2/test.pb.go +++ b/encoding/textpb/testprotos/pb2/test.pb.go @@ -1058,7 +1058,6 @@ func (m *Maps) GetStrToOneofs() map[string]*Oneofs { return nil } -// Following messages are for testing required field nested in optional, repeated and map fields. type NestedWithRequired struct { ReqString *string `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -1189,6 +1188,252 @@ func (m *IndirectRequired) GetStrToNested() map[string]*NestedWithRequired { return nil } +type Extensions struct { + OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"` + OptBool *bool `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"` + OptInt32 *int32 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + proto.XXX_InternalExtensions `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +type xxx_Extensions struct{ m *Extensions } + +func (m *Extensions) ProtoReflect() protoreflect.Message { + return xxx_Extensions{m} +} +func (m xxx_Extensions) Type() protoreflect.MessageType { + return xxx_Test_ProtoFile_MessageTypes[11].Type +} +func (m xxx_Extensions) KnownFields() protoreflect.KnownFields { + return xxx_Test_ProtoFile_MessageTypes[11].KnownFieldsOf(m.m) +} +func (m xxx_Extensions) UnknownFields() protoreflect.UnknownFields { + return xxx_Test_ProtoFile_MessageTypes[11].UnknownFieldsOf(m.m) +} +func (m xxx_Extensions) Interface() protoreflect.ProtoMessage { + return m.m +} + +func (m *Extensions) Reset() { *m = Extensions{} } +func (m *Extensions) String() string { return proto.CompactTextString(m) } +func (*Extensions) ProtoMessage() {} +func (*Extensions) Descriptor() ([]byte, []int) { + return fileDescriptor_c8d7acc1bcec9a72, []int{11} +} + +var extRange_Extensions = []proto.ExtensionRange{ + {Start: 20, End: 100}, +} + +func (*Extensions) ExtensionRangeArray() []proto.ExtensionRange { + return extRange_Extensions +} + +func (m *Extensions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Extensions.Unmarshal(m, b) +} +func (m *Extensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Extensions.Marshal(b, m, deterministic) +} +func (m *Extensions) XXX_Merge(src proto.Message) { + xxx_messageInfo_Extensions.Merge(m, src) +} +func (m *Extensions) XXX_Size() int { + return xxx_messageInfo_Extensions.Size(m) +} +func (m *Extensions) XXX_DiscardUnknown() { + xxx_messageInfo_Extensions.DiscardUnknown(m) +} + +var xxx_messageInfo_Extensions proto.InternalMessageInfo + +func (m *Extensions) GetOptString() string { + if m != nil && m.OptString != nil { + return *m.OptString + } + return "" +} + +func (m *Extensions) GetOptBool() bool { + if m != nil && m.OptBool != nil { + return *m.OptBool + } + return false +} + +func (m *Extensions) GetOptInt32() int32 { + if m != nil && m.OptInt32 != nil { + return *m.OptInt32 + } + return 0 +} + +type ExtensionsContainer struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +type xxx_ExtensionsContainer struct{ m *ExtensionsContainer } + +func (m *ExtensionsContainer) ProtoReflect() protoreflect.Message { + return xxx_ExtensionsContainer{m} +} +func (m xxx_ExtensionsContainer) Type() protoreflect.MessageType { + return xxx_Test_ProtoFile_MessageTypes[12].Type +} +func (m xxx_ExtensionsContainer) KnownFields() protoreflect.KnownFields { + return xxx_Test_ProtoFile_MessageTypes[12].KnownFieldsOf(m.m) +} +func (m xxx_ExtensionsContainer) UnknownFields() protoreflect.UnknownFields { + return xxx_Test_ProtoFile_MessageTypes[12].UnknownFieldsOf(m.m) +} +func (m xxx_ExtensionsContainer) Interface() protoreflect.ProtoMessage { + return m.m +} + +func (m *ExtensionsContainer) Reset() { *m = ExtensionsContainer{} } +func (m *ExtensionsContainer) String() string { return proto.CompactTextString(m) } +func (*ExtensionsContainer) ProtoMessage() {} +func (*ExtensionsContainer) Descriptor() ([]byte, []int) { + return fileDescriptor_c8d7acc1bcec9a72, []int{12} +} + +func (m *ExtensionsContainer) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ExtensionsContainer.Unmarshal(m, b) +} +func (m *ExtensionsContainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ExtensionsContainer.Marshal(b, m, deterministic) +} +func (m *ExtensionsContainer) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtensionsContainer.Merge(m, src) +} +func (m *ExtensionsContainer) XXX_Size() int { + return xxx_messageInfo_ExtensionsContainer.Size(m) +} +func (m *ExtensionsContainer) XXX_DiscardUnknown() { + xxx_messageInfo_ExtensionsContainer.DiscardUnknown(m) +} + +var xxx_messageInfo_ExtensionsContainer proto.InternalMessageInfo + +type MessageSet struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + proto.XXX_InternalExtensions `protobuf_messageset:"1" json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +type xxx_MessageSet struct{ m *MessageSet } + +func (m *MessageSet) ProtoReflect() protoreflect.Message { + return xxx_MessageSet{m} +} +func (m xxx_MessageSet) Type() protoreflect.MessageType { + return xxx_Test_ProtoFile_MessageTypes[13].Type +} +func (m xxx_MessageSet) KnownFields() protoreflect.KnownFields { + return xxx_Test_ProtoFile_MessageTypes[13].KnownFieldsOf(m.m) +} +func (m xxx_MessageSet) UnknownFields() protoreflect.UnknownFields { + return xxx_Test_ProtoFile_MessageTypes[13].UnknownFieldsOf(m.m) +} +func (m xxx_MessageSet) Interface() protoreflect.ProtoMessage { + return m.m +} + +func (m *MessageSet) Reset() { *m = MessageSet{} } +func (m *MessageSet) String() string { return proto.CompactTextString(m) } +func (*MessageSet) ProtoMessage() {} +func (*MessageSet) Descriptor() ([]byte, []int) { + return fileDescriptor_c8d7acc1bcec9a72, []int{13} +} + +var extRange_MessageSet = []proto.ExtensionRange{ + {Start: 4, End: 2147483646}, +} + +func (*MessageSet) ExtensionRangeArray() []proto.ExtensionRange { + return extRange_MessageSet +} + +func (m *MessageSet) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MessageSet.Unmarshal(m, b) +} +func (m *MessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MessageSet.Marshal(b, m, deterministic) +} +func (m *MessageSet) XXX_Merge(src proto.Message) { + xxx_messageInfo_MessageSet.Merge(m, src) +} +func (m *MessageSet) XXX_Size() int { + return xxx_messageInfo_MessageSet.Size(m) +} +func (m *MessageSet) XXX_DiscardUnknown() { + xxx_messageInfo_MessageSet.DiscardUnknown(m) +} + +var xxx_messageInfo_MessageSet proto.InternalMessageInfo + +type MessageSetExtension struct { + OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +type xxx_MessageSetExtension struct{ m *MessageSetExtension } + +func (m *MessageSetExtension) ProtoReflect() protoreflect.Message { + return xxx_MessageSetExtension{m} +} +func (m xxx_MessageSetExtension) Type() protoreflect.MessageType { + return xxx_Test_ProtoFile_MessageTypes[14].Type +} +func (m xxx_MessageSetExtension) KnownFields() protoreflect.KnownFields { + return xxx_Test_ProtoFile_MessageTypes[14].KnownFieldsOf(m.m) +} +func (m xxx_MessageSetExtension) UnknownFields() protoreflect.UnknownFields { + return xxx_Test_ProtoFile_MessageTypes[14].UnknownFieldsOf(m.m) +} +func (m xxx_MessageSetExtension) Interface() protoreflect.ProtoMessage { + return m.m +} + +func (m *MessageSetExtension) Reset() { *m = MessageSetExtension{} } +func (m *MessageSetExtension) String() string { return proto.CompactTextString(m) } +func (*MessageSetExtension) ProtoMessage() {} +func (*MessageSetExtension) Descriptor() ([]byte, []int) { + return fileDescriptor_c8d7acc1bcec9a72, []int{14} +} + +func (m *MessageSetExtension) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MessageSetExtension.Unmarshal(m, b) +} +func (m *MessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MessageSetExtension.Marshal(b, m, deterministic) +} +func (m *MessageSetExtension) XXX_Merge(src proto.Message) { + xxx_messageInfo_MessageSetExtension.Merge(m, src) +} +func (m *MessageSetExtension) XXX_Size() int { + return xxx_messageInfo_MessageSetExtension.Size(m) +} +func (m *MessageSetExtension) XXX_DiscardUnknown() { + xxx_messageInfo_MessageSetExtension.DiscardUnknown(m) +} + +var xxx_messageInfo_MessageSetExtension proto.InternalMessageInfo + +func (m *MessageSetExtension) GetOptString() string { + if m != nil && m.OptString != nil { + return *m.OptString + } + return "" +} + // Message contains well-known type fields. type KnownTypes struct { OptBool *wrappers.BoolValue `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"` @@ -1218,13 +1463,13 @@ func (m *KnownTypes) ProtoReflect() protoreflect.Message { return xxx_KnownTypes{m} } func (m xxx_KnownTypes) Type() protoreflect.MessageType { - return xxx_Test_ProtoFile_MessageTypes[11].Type + return xxx_Test_ProtoFile_MessageTypes[15].Type } func (m xxx_KnownTypes) KnownFields() protoreflect.KnownFields { - return xxx_Test_ProtoFile_MessageTypes[11].KnownFieldsOf(m.m) + return xxx_Test_ProtoFile_MessageTypes[15].KnownFieldsOf(m.m) } func (m xxx_KnownTypes) UnknownFields() protoreflect.UnknownFields { - return xxx_Test_ProtoFile_MessageTypes[11].UnknownFieldsOf(m.m) + return xxx_Test_ProtoFile_MessageTypes[15].UnknownFieldsOf(m.m) } func (m xxx_KnownTypes) Interface() protoreflect.ProtoMessage { return m.m @@ -1234,7 +1479,7 @@ func (m *KnownTypes) Reset() { *m = KnownTypes{} } func (m *KnownTypes) String() string { return proto.CompactTextString(m) } func (*KnownTypes) ProtoMessage() {} func (*KnownTypes) Descriptor() ([]byte, []int) { - return fileDescriptor_c8d7acc1bcec9a72, []int{11} + return fileDescriptor_c8d7acc1bcec9a72, []int{15} } func (m *KnownTypes) XXX_Unmarshal(b []byte) error { @@ -1383,13 +1628,13 @@ func (m *Nests_OptGroup) ProtoReflect() protoreflect.Message { return xxx_Nests_OptGroup{m} } func (m xxx_Nests_OptGroup) Type() protoreflect.MessageType { - return xxx_Test_ProtoFile_MessageTypes[12].Type + return xxx_Test_ProtoFile_MessageTypes[16].Type } func (m xxx_Nests_OptGroup) KnownFields() protoreflect.KnownFields { - return xxx_Test_ProtoFile_MessageTypes[12].KnownFieldsOf(m.m) + return xxx_Test_ProtoFile_MessageTypes[16].KnownFieldsOf(m.m) } func (m xxx_Nests_OptGroup) UnknownFields() protoreflect.UnknownFields { - return xxx_Test_ProtoFile_MessageTypes[12].UnknownFieldsOf(m.m) + return xxx_Test_ProtoFile_MessageTypes[16].UnknownFieldsOf(m.m) } func (m xxx_Nests_OptGroup) Interface() protoreflect.ProtoMessage { return m.m @@ -1461,13 +1706,13 @@ func (m *Nests_RptGroup) ProtoReflect() protoreflect.Message { return xxx_Nests_RptGroup{m} } func (m xxx_Nests_RptGroup) Type() protoreflect.MessageType { - return xxx_Test_ProtoFile_MessageTypes[13].Type + return xxx_Test_ProtoFile_MessageTypes[17].Type } func (m xxx_Nests_RptGroup) KnownFields() protoreflect.KnownFields { - return xxx_Test_ProtoFile_MessageTypes[13].KnownFieldsOf(m.m) + return xxx_Test_ProtoFile_MessageTypes[17].KnownFieldsOf(m.m) } func (m xxx_Nests_RptGroup) UnknownFields() protoreflect.UnknownFields { - return xxx_Test_ProtoFile_MessageTypes[13].UnknownFieldsOf(m.m) + return xxx_Test_ProtoFile_MessageTypes[17].UnknownFieldsOf(m.m) } func (m xxx_Nests_RptGroup) Interface() protoreflect.ProtoMessage { return m.m @@ -1520,13 +1765,13 @@ func (m *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message { return xxx_Nests_OptGroup_OptNestedGroup{m} } func (m xxx_Nests_OptGroup_OptNestedGroup) Type() protoreflect.MessageType { - return xxx_Test_ProtoFile_MessageTypes[14].Type + return xxx_Test_ProtoFile_MessageTypes[18].Type } func (m xxx_Nests_OptGroup_OptNestedGroup) KnownFields() protoreflect.KnownFields { - return xxx_Test_ProtoFile_MessageTypes[14].KnownFieldsOf(m.m) + return xxx_Test_ProtoFile_MessageTypes[18].KnownFieldsOf(m.m) } func (m xxx_Nests_OptGroup_OptNestedGroup) UnknownFields() protoreflect.UnknownFields { - return xxx_Test_ProtoFile_MessageTypes[14].UnknownFieldsOf(m.m) + return xxx_Test_ProtoFile_MessageTypes[18].UnknownFieldsOf(m.m) } func (m xxx_Nests_OptGroup_OptNestedGroup) Interface() protoreflect.ProtoMessage { return m.m @@ -1564,6 +1809,159 @@ func (m *Nests_OptGroup_OptNestedGroup) GetOptEnum() Enum { return Enum_UNKNOWN } +var E_OptExtBool = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: (*bool)(nil), + Field: 21, + Name: "pb2.opt_ext_bool", + Tag: "varint,21,opt,name=opt_ext_bool", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_OptExtString = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: (*string)(nil), + Field: 22, + Name: "pb2.opt_ext_string", + Tag: "bytes,22,opt,name=opt_ext_string", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_OptExtEnum = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: (*Enum)(nil), + Field: 23, + Name: "pb2.opt_ext_enum", + Tag: "varint,23,opt,name=opt_ext_enum,enum=pb2.Enum", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_OptExtNested = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: (*Nested)(nil), + Field: 24, + Name: "pb2.opt_ext_nested", + Tag: "bytes,24,opt,name=opt_ext_nested", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_RptExtFixed32 = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: ([]uint32)(nil), + Field: 31, + Name: "pb2.rpt_ext_fixed32", + Tag: "fixed32,31,rep,name=rpt_ext_fixed32", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_RptExtEnum = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: ([]Enum)(nil), + Field: 32, + Name: "pb2.rpt_ext_enum", + Tag: "varint,32,rep,name=rpt_ext_enum,enum=pb2.Enum", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_RptExtNested = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: ([]*Nested)(nil), + Field: 33, + Name: "pb2.rpt_ext_nested", + Tag: "bytes,33,rep,name=rpt_ext_nested", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_ExtensionsContainer_OptExtBool = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: (*bool)(nil), + Field: 51, + Name: "pb2.ExtensionsContainer.opt_ext_bool", + Tag: "varint,51,opt,name=opt_ext_bool", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_ExtensionsContainer_OptExtString = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: (*string)(nil), + Field: 52, + Name: "pb2.ExtensionsContainer.opt_ext_string", + Tag: "bytes,52,opt,name=opt_ext_string", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_ExtensionsContainer_OptExtEnum = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: (*Enum)(nil), + Field: 53, + Name: "pb2.ExtensionsContainer.opt_ext_enum", + Tag: "varint,53,opt,name=opt_ext_enum,enum=pb2.Enum", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_ExtensionsContainer_OptExtNested = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: (*Nested)(nil), + Field: 54, + Name: "pb2.ExtensionsContainer.opt_ext_nested", + Tag: "bytes,54,opt,name=opt_ext_nested", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_ExtensionsContainer_RptExtString = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: ([]string)(nil), + Field: 61, + Name: "pb2.ExtensionsContainer.rpt_ext_string", + Tag: "bytes,61,rep,name=rpt_ext_string", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_ExtensionsContainer_RptExtEnum = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: ([]Enum)(nil), + Field: 62, + Name: "pb2.ExtensionsContainer.rpt_ext_enum", + Tag: "varint,62,rep,name=rpt_ext_enum,enum=pb2.Enum", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_ExtensionsContainer_RptExtNested = &proto.ExtensionDesc{ + ExtendedType: (*Extensions)(nil), + ExtensionType: ([]*Nested)(nil), + Field: 63, + Name: "pb2.ExtensionsContainer.rpt_ext_nested", + Tag: "bytes,63,rep,name=rpt_ext_nested", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_MessageSetExtension_MessageSetExtension = &proto.ExtensionDesc{ + ExtendedType: (*MessageSet)(nil), + ExtensionType: (*MessageSetExtension)(nil), + Field: 10, + Name: "pb2.MessageSetExtension", + Tag: "bytes,10,opt,name=message_set_extension", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_MessageSetExtension_NotMessageSetExtension = &proto.ExtensionDesc{ + ExtendedType: (*MessageSet)(nil), + ExtensionType: (*MessageSetExtension)(nil), + Field: 20, + Name: "pb2.MessageSetExtension.not_message_set_extension", + Tag: "bytes,20,opt,name=not_message_set_extension", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + +var E_MessageSetExtension_ExtNested = &proto.ExtensionDesc{ + ExtendedType: (*MessageSet)(nil), + ExtensionType: (*Nested)(nil), + Field: 30, + Name: "pb2.MessageSetExtension.ext_nested", + Tag: "bytes,30,opt,name=ext_nested", + Filename: "encoding/textpb/testprotos/pb2/test.proto", +} + func init() { proto.RegisterFile("encoding/textpb/testprotos/pb2/test.proto", fileDescriptor_c8d7acc1bcec9a72) proto.RegisterEnum("pb2.Enum", Enum_name, Enum_value) @@ -1586,170 +1984,211 @@ func init() { proto.RegisterType((*NestedWithRequired)(nil), "pb2.NestedWithRequired") proto.RegisterType((*IndirectRequired)(nil), "pb2.IndirectRequired") proto.RegisterMapType((map[string]*NestedWithRequired)(nil), "pb2.IndirectRequired.StrToNestedEntry") + proto.RegisterType((*Extensions)(nil), "pb2.Extensions") + proto.RegisterType((*ExtensionsContainer)(nil), "pb2.ExtensionsContainer") + proto.RegisterType((*MessageSet)(nil), "pb2.MessageSet") + proto.RegisterType((*MessageSetExtension)(nil), "pb2.MessageSetExtension") proto.RegisterType((*KnownTypes)(nil), "pb2.KnownTypes") proto.RegisterType((*Nests_OptGroup)(nil), "pb2.Nests.OptGroup") proto.RegisterType((*Nests_RptGroup)(nil), "pb2.Nests.RptGroup") proto.RegisterType((*Nests_OptGroup_OptNestedGroup)(nil), "pb2.Nests.OptGroup.OptNestedGroup") + proto.RegisterExtension(E_OptExtBool) + proto.RegisterExtension(E_OptExtString) + proto.RegisterExtension(E_OptExtEnum) + proto.RegisterExtension(E_OptExtNested) + proto.RegisterExtension(E_RptExtFixed32) + proto.RegisterExtension(E_RptExtEnum) + proto.RegisterExtension(E_RptExtNested) + proto.RegisterExtension(E_ExtensionsContainer_OptExtBool) + proto.RegisterExtension(E_ExtensionsContainer_OptExtString) + proto.RegisterExtension(E_ExtensionsContainer_OptExtEnum) + proto.RegisterExtension(E_ExtensionsContainer_OptExtNested) + proto.RegisterExtension(E_ExtensionsContainer_RptExtString) + proto.RegisterExtension(E_ExtensionsContainer_RptExtEnum) + proto.RegisterExtension(E_ExtensionsContainer_RptExtNested) + proto.RegisterExtension(E_MessageSetExtension_MessageSetExtension) + proto.RegisterExtension(E_MessageSetExtension_NotMessageSetExtension) + proto.RegisterExtension(E_MessageSetExtension_ExtNested) } var fileDescriptor_c8d7acc1bcec9a72 = []byte{ - // 1629 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xdd, 0x6e, 0xdb, 0x46, - 0x16, 0x0e, 0x49, 0xfd, 0x8e, 0xfc, 0xa3, 0x30, 0xc9, 0xae, 0x2c, 0x27, 0x31, 0x23, 0x64, 0x17, - 0xdc, 0x00, 0x91, 0x00, 0x59, 0x11, 0x8c, 0x75, 0x7e, 0x60, 0xaf, 0xed, 0xc4, 0xc9, 0xd6, 0x2e, - 0x28, 0xb9, 0x01, 0x72, 0x63, 0x48, 0xd6, 0x58, 0x21, 0x2a, 0x71, 0xa8, 0xe1, 0x30, 0x89, 0xde, - 0xa3, 0xcf, 0xd0, 0x3e, 0x44, 0xdf, 0xa4, 0x2f, 0xd1, 0x9b, 0x5e, 0x14, 0xe8, 0x4d, 0x71, 0x66, - 0x38, 0xe4, 0x90, 0x92, 0x0c, 0xdf, 0x71, 0xe6, 0x9c, 0xef, 0x9b, 0x99, 0xf3, 0xab, 0x23, 0xf4, - 0x1f, 0xec, 0x5d, 0x91, 0x91, 0xeb, 0x8d, 0x5b, 0x0c, 0x7f, 0x63, 0xfe, 0xb0, 0xc5, 0x70, 0xc0, - 0x7c, 0x4a, 0x18, 0x09, 0x5a, 0xfe, 0xb0, 0xcd, 0x97, 0x4d, 0xbe, 0x36, 0x0d, 0x7f, 0xd8, 0xae, - 0x6f, 0x8d, 0x09, 0x19, 0x4f, 0x70, 0x8b, 0x6f, 0x0d, 0xc3, 0xeb, 0xd6, 0xc0, 0x9b, 0x0b, 0x79, - 0x7d, 0x3b, 0x2b, 0xc2, 0x53, 0x9f, 0x49, 0xe1, 0xe3, 0xac, 0x70, 0x14, 0xd2, 0x01, 0x73, 0x89, - 0x17, 0xc9, 0x1f, 0x66, 0xe5, 0x01, 0xa3, 0xe1, 0x55, 0x74, 0x74, 0x7d, 0x27, 0x2b, 0x65, 0xee, - 0x14, 0x07, 0x6c, 0x30, 0xf5, 0x57, 0xd1, 0x7f, 0xa5, 0x03, 0xdf, 0xc7, 0x34, 0x10, 0xf2, 0xc6, - 0x6f, 0x06, 0x2a, 0xf6, 0xae, 0x06, 0x93, 0x01, 0x0d, 0xcc, 0x2d, 0x54, 0x22, 0x3e, 0xbb, 0x1c, - 0x12, 0x32, 0xa9, 0x69, 0x96, 0x66, 0x97, 0x9c, 0x22, 0xf1, 0xd9, 0x21, 0x21, 0x13, 0x73, 0x1b, - 0x95, 0x41, 0xe4, 0x7a, 0x6c, 0xb7, 0x5d, 0xd3, 0x2d, 0xcd, 0xce, 0x3b, 0xa0, 0x7b, 0x0a, 0x6b, - 0x45, 0xd8, 0xed, 0xd4, 0x0c, 0x4b, 0xb3, 0x0d, 0x29, 0xec, 0x76, 0xcc, 0x47, 0x08, 0x81, 0x30, - 0x14, 0xd0, 0x9c, 0xa5, 0xd9, 0xeb, 0x0e, 0xa8, 0x5f, 0xf0, 0x0d, 0x55, 0xdc, 0xed, 0xd4, 0xf2, - 0x96, 0x66, 0xe7, 0x62, 0x71, 0x82, 0x0e, 0x04, 0xba, 0x60, 0x69, 0xf6, 0x5d, 0x2e, 0xee, 0xa5, - 0xd0, 0x81, 0x40, 0x17, 0x2d, 0xcd, 0x36, 0x63, 0x71, 0xb7, 0x63, 0xee, 0xa0, 0x0a, 0x88, 0xaf, - 0xdd, 0x6f, 0x78, 0xb4, 0xdb, 0xae, 0x95, 0x2c, 0xcd, 0x2e, 0x3a, 0x80, 0x38, 0x11, 0x3b, 0x29, - 0x85, 0x6e, 0xa7, 0x56, 0xb6, 0x34, 0xbb, 0x90, 0x28, 0x74, 0x3b, 0xe6, 0x13, 0xb4, 0xc6, 0x0f, - 0x90, 0x14, 0xc8, 0xd2, 0xec, 0x4d, 0x07, 0x40, 0xbd, 0x68, 0x2b, 0xad, 0xd2, 0xed, 0xd4, 0x2a, - 0x96, 0x66, 0x57, 0x15, 0x95, 0x6e, 0x47, 0x1a, 0xe8, 0x7a, 0x42, 0x06, 0xac, 0x76, 0xdf, 0xd2, - 0x6c, 0x9d, 0x1b, 0xe8, 0x04, 0xd6, 0xf2, 0x0d, 0x23, 0x12, 0x0e, 0x27, 0xb8, 0xf6, 0xc0, 0xd2, - 0x6c, 0x8d, 0xbf, 0xe1, 0x88, 0x6f, 0x48, 0xec, 0x70, 0xce, 0x70, 0x50, 0xdb, 0xb0, 0x34, 0x7b, - 0x8d, 0x63, 0x0f, 0x61, 0x1d, 0xbf, 0x9f, 0x51, 0xd7, 0x1b, 0xd7, 0xd6, 0x2d, 0xcd, 0x2e, 0x8b, - 0xf7, 0xf3, 0x8d, 0xc6, 0x4f, 0x3a, 0x2a, 0x3a, 0xd8, 0xc7, 0x03, 0xc6, 0x9d, 0x4b, 0x13, 0xe7, - 0x1a, 0xe0, 0x5c, 0x9a, 0x38, 0x97, 0x2a, 0xce, 0x35, 0xc0, 0xb9, 0x54, 0x71, 0x2e, 0x55, 0x9c, - 0x6b, 0x80, 0x73, 0xa9, 0xe2, 0x5c, 0xaa, 0x3a, 0xd7, 0x00, 0xe7, 0x52, 0xd5, 0xb9, 0x54, 0x75, - 0xae, 0x01, 0xce, 0xa5, 0xb1, 0x73, 0x23, 0x6a, 0x61, 0x96, 0x82, 0x65, 0x80, 0x59, 0xa8, 0x62, - 0x16, 0x9a, 0x98, 0xa5, 0x68, 0x19, 0x60, 0x16, 0x1a, 0x9b, 0x25, 0x12, 0x47, 0x2f, 0xdf, 0xb4, - 0x0c, 0x78, 0x39, 0x95, 0x2f, 0x97, 0xd4, 0xd2, 0x6a, 0x06, 0x58, 0x8d, 0x46, 0x56, 0x6b, 0xfc, - 0xa5, 0xa1, 0xfc, 0xb1, 0x17, 0x4e, 0x03, 0xf3, 0xa9, 0x88, 0x78, 0xec, 0x85, 0x53, 0x1e, 0xf1, - 0x1b, 0xed, 0x72, 0xd3, 0x1f, 0xb6, 0x9b, 0x20, 0xe5, 0xc1, 0x0f, 0x1f, 0xa0, 0x45, 0xa5, 0x16, - 0x98, 0x27, 0xad, 0x45, 0x23, 0xad, 0x57, 0x68, 0x13, 0xb8, 0x3c, 0x1c, 0x30, 0x3c, 0x12, 0xca, - 0x06, 0xa7, 0x7c, 0x10, 0x2b, 0x07, 0xcd, 0x33, 0x2e, 0xe5, 0xc0, 0x75, 0xe2, 0xb3, 0x64, 0x09, - 0x70, 0x9a, 0x81, 0xe7, 0xf8, 0x59, 0xab, 0xe0, 0x54, 0x85, 0x37, 0x6c, 0x84, 0x14, 0xb2, 0x22, - 0x32, 0x2e, 0xce, 0xce, 0xab, 0x1a, 0x7c, 0x1c, 0x9d, 0xf7, 0xaa, 0xba, 0x59, 0x42, 0xb9, 0xa3, - 0xd3, 0xe3, 0x4f, 0x55, 0xd4, 0xf8, 0xdd, 0x40, 0x79, 0x50, 0x0d, 0xcc, 0x67, 0x22, 0x7a, 0xc4, - 0x91, 0xfc, 0xfd, 0x95, 0x76, 0x85, 0x9f, 0x26, 0xa8, 0x78, 0x28, 0x89, 0x4f, 0xb3, 0xc5, 0x2d, - 0x35, 0xa6, 0x24, 0xf4, 0x79, 0xfe, 0xa3, 0xf6, 0xbd, 0x58, 0x33, 0x68, 0x9e, 0xfb, 0xec, 0x2d, - 0x88, 0x9c, 0x58, 0x09, 0xc8, 0x93, 0xf7, 0xf0, 0xc0, 0xc9, 0x92, 0x53, 0x95, 0x9c, 0x4a, 0x72, - 0x78, 0x74, 0x9a, 0xdc, 0x89, 0xc9, 0xa5, 0x52, 0xfd, 0x0f, 0x0d, 0x95, 0xe4, 0x99, 0x37, 0x95, - 0xad, 0x74, 0x7e, 0xe8, 0x99, 0xfc, 0xc8, 0x18, 0xc0, 0xb8, 0xd1, 0x00, 0xef, 0xd1, 0x06, 0xf1, - 0x99, 0x50, 0x95, 0x37, 0x05, 0x33, 0x34, 0x96, 0x98, 0x01, 0x3e, 0x04, 0x4c, 0x5c, 0x3c, 0x83, - 0xac, 0x77, 0xd1, 0x46, 0x5a, 0xe3, 0x76, 0x81, 0x58, 0xff, 0x17, 0x2a, 0x39, 0xca, 0xab, 0x57, - 0xe4, 0xb3, 0xb3, 0x41, 0x71, 0x80, 0xe9, 0x17, 0x3c, 0xba, 0xbc, 0x76, 0xf1, 0x64, 0xd4, 0xe8, - 0xa1, 0x42, 0xf4, 0x88, 0xb4, 0x3d, 0xb4, 0x9b, 0xed, 0xa1, 0xdf, 0x64, 0x8f, 0xc6, 0x9f, 0x3a, - 0x2a, 0x3b, 0x78, 0x16, 0xba, 0x14, 0x8f, 0x44, 0x75, 0xc1, 0x33, 0x79, 0x1b, 0x9d, 0xdf, 0x06, - 0xcf, 0xb8, 0x0f, 0x76, 0x50, 0x05, 0x44, 0xb2, 0x82, 0xea, 0x96, 0x0e, 0x45, 0x98, 0xe2, 0x99, - 0x52, 0x84, 0x63, 0x05, 0x5e, 0x63, 0x74, 0x28, 0xc2, 0x52, 0x41, 0x14, 0x61, 0x50, 0x88, 0x8b, - 0x70, 0xce, 0xd2, 0xa1, 0x08, 0x53, 0x3c, 0x53, 0x8b, 0x70, 0xa2, 0xc2, 0x6b, 0x8d, 0x0e, 0x45, - 0x38, 0x56, 0x89, 0xaa, 0x0d, 0x1c, 0x13, 0x55, 0x1b, 0x9d, 0x57, 0x1b, 0x3c, 0x4b, 0xaa, 0x0d, - 0x9e, 0x25, 0xd5, 0x46, 0xe7, 0xd5, 0x06, 0xcf, 0x94, 0x6a, 0x03, 0xf4, 0xc2, 0x6e, 0x25, 0x4b, - 0xe7, 0xd5, 0x06, 0xcf, 0x94, 0x6a, 0x03, 0xaf, 0xe7, 0xd5, 0xa6, 0x6c, 0xe9, 0xbc, 0xda, 0xe0, - 0x99, 0xa8, 0xd1, 0x4f, 0x85, 0x69, 0xb8, 0x6b, 0x91, 0xa5, 0x67, 0xab, 0x07, 0x9e, 0xf1, 0x8c, - 0x7d, 0x26, 0x4e, 0x88, 0x4c, 0x5f, 0xb1, 0xf4, 0xc5, 0x74, 0xc1, 0xb3, 0xc8, 0xf4, 0xe7, 0x68, - 0xf3, 0xfb, 0x01, 0x65, 0xee, 0x60, 0x22, 0x1d, 0x90, 0xb9, 0xa0, 0x96, 0xbd, 0xe0, 0xcd, 0x79, - 0xd0, 0x38, 0x41, 0x85, 0x73, 0x0f, 0x93, 0xeb, 0xc0, 0x34, 0x91, 0x11, 0x30, 0x2a, 0x22, 0xe3, - 0xdd, 0x1d, 0x07, 0x16, 0xe6, 0x0e, 0x32, 0xa6, 0xc1, 0x78, 0x49, 0x38, 0x80, 0xc2, 0x34, 0x18, - 0x1f, 0x16, 0x51, 0x3e, 0xf4, 0x5c, 0xe2, 0x35, 0x7e, 0x2d, 0xa0, 0xdc, 0x77, 0x03, 0x3f, 0x30, - 0xf7, 0xd1, 0x1a, 0xef, 0x00, 0x97, 0x8c, 0x5c, 0x0a, 0x3e, 0x48, 0xff, 0x2d, 0x8e, 0x05, 0x85, - 0x26, 0xef, 0x2d, 0x7d, 0xd2, 0x63, 0xf4, 0xd8, 0x63, 0x74, 0xee, 0x20, 0x37, 0xde, 0x30, 0xdf, - 0xa2, 0xaa, 0xf4, 0x23, 0xe0, 0x79, 0x4c, 0xe9, 0x9c, 0xe0, 0x51, 0x42, 0x20, 0xdd, 0xda, 0x27, - 0x10, 0x64, 0x82, 0x64, 0x23, 0x48, 0x6d, 0x9a, 0x07, 0x68, 0x03, 0xc0, 0x40, 0x12, 0x75, 0x28, - 0x51, 0x86, 0xb6, 0x13, 0x1a, 0xd0, 0xeb, 0x13, 0xd1, 0xae, 0x04, 0xc9, 0xda, 0x50, 0xd9, 0x02, - 0x0a, 0xd1, 0xbd, 0x80, 0x24, 0x2e, 0xca, 0x29, 0x0a, 0xd1, 0xcc, 0xfa, 0x04, 0xdc, 0x18, 0x51, - 0x84, 0xca, 0x96, 0xf9, 0x1a, 0xad, 0x07, 0x8c, 0x02, 0x3e, 0x72, 0x6e, 0x9e, 0x33, 0xd4, 0x95, - 0xb7, 0x30, 0xda, 0x27, 0xb2, 0x7a, 0x03, 0x41, 0x25, 0x48, 0x76, 0x14, 0x3c, 0xe1, 0x3e, 0xe2, - 0x9d, 0x72, 0x11, 0x2f, 0x1c, 0xa8, 0xe2, 0xc5, 0x4e, 0xfd, 0x15, 0xda, 0xcc, 0x58, 0xdb, 0xac, - 0x22, 0xe3, 0x47, 0x3c, 0xe7, 0x5e, 0xce, 0x3b, 0xf0, 0x69, 0xde, 0x47, 0xf9, 0x2f, 0x83, 0x49, - 0x88, 0xa3, 0xd8, 0x10, 0x8b, 0xff, 0xea, 0x7b, 0x5a, 0xfd, 0x00, 0xdd, 0x5b, 0x62, 0x6b, 0x95, - 0xa2, 0xba, 0x84, 0xa2, 0xa4, 0x52, 0xbc, 0x41, 0x77, 0x17, 0xec, 0xac, 0x12, 0x94, 0x96, 0x10, - 0xac, 0xab, 0x04, 0xef, 0xd1, 0xdd, 0x05, 0x2b, 0xab, 0x04, 0x39, 0x41, 0xb0, 0xa3, 0x12, 0xa4, - 0xd2, 0x4c, 0xe1, 0xfa, 0x80, 0xaa, 0x59, 0x7b, 0xab, 0x54, 0x65, 0x41, 0xf5, 0x44, 0xa5, 0xca, - 0x64, 0xe2, 0x12, 0x32, 0xc5, 0xf8, 0xb7, 0x25, 0x13, 0x10, 0x85, 0xac, 0xb1, 0x8b, 0x4c, 0x71, - 0xc2, 0x47, 0x97, 0x7d, 0xbe, 0x65, 0x66, 0x37, 0x7e, 0xd1, 0x51, 0xf5, 0xd4, 0x1b, 0xb9, 0x14, - 0x5f, 0xb1, 0x18, 0xd3, 0x5d, 0xd2, 0xd8, 0xff, 0xa9, 0x3c, 0x41, 0x3d, 0x40, 0xed, 0x71, 0xdd, - 0x54, 0xcf, 0x16, 0x39, 0xb7, 0x1a, 0x47, 0x95, 0xde, 0x98, 0x09, 0x71, 0x91, 0x67, 0xff, 0xe6, - 0xd0, 0xec, 0xed, 0x6e, 0x0e, 0xf7, 0xfa, 0xc7, 0x5b, 0xf9, 0xe7, 0x79, 0xda, 0xa4, 0x2b, 0x2f, - 0xa9, 0x98, 0xf7, 0xe7, 0x22, 0x42, 0x1f, 0x3c, 0xf2, 0xd5, 0xeb, 0xcf, 0x7d, 0x1c, 0x98, 0x2f, - 0x32, 0xbf, 0x1a, 0x20, 0xa3, 0xc4, 0xac, 0xd4, 0x94, 0xb3, 0x12, 0xaf, 0x0e, 0x3f, 0x00, 0x41, - 0xf2, 0x8b, 0x62, 0x2f, 0x3b, 0x08, 0x41, 0x2d, 0xc8, 0xe2, 0x78, 0xbe, 0x09, 0x60, 0x32, 0x25, - 0xed, 0x65, 0xa7, 0xa4, 0x15, 0xc8, 0x6e, 0x27, 0x85, 0xec, 0x76, 0xcc, 0xfd, 0x85, 0x11, 0xaa, - 0xd2, 0x7e, 0xb8, 0x00, 0xbd, 0x50, 0x4e, 0x55, 0x06, 0xac, 0xfd, 0x85, 0x01, 0x6b, 0x15, 0x58, - 0x1e, 0xac, 0x8c, 0x5f, 0x7b, 0xea, 0xe0, 0x52, 0x58, 0x71, 0x67, 0xde, 0x41, 0x93, 0x3b, 0x8b, - 0x86, 0xba, 0x9f, 0x9a, 0x6a, 0x8a, 0x2b, 0x8e, 0x15, 0xed, 0x35, 0x39, 0x36, 0x6a, 0xb7, 0xfb, - 0xa9, 0x76, 0x55, 0x5a, 0x01, 0x16, 0x19, 0x90, 0x80, 0xa3, 0x5e, 0xb7, 0xa7, 0x0e, 0x4c, 0xe5, - 0x15, 0x77, 0xe6, 0xad, 0x39, 0xb9, 0xb3, 0xe8, 0xd4, 0x2f, 0xc5, 0x24, 0x27, 0x07, 0x70, 0x3e, - 0xa9, 0x41, 0xd7, 0x5a, 0xb8, 0x75, 0xa4, 0xc0, 0x87, 0x3c, 0xb9, 0x30, 0xdf, 0x20, 0xf8, 0x45, - 0x7f, 0x19, 0x0f, 0xe0, 0x7c, 0x94, 0x5b, 0x16, 0x55, 0x7d, 0xa9, 0xe1, 0xc0, 0x71, 0xf1, 0x4a, - 0x66, 0xad, 0x98, 0xef, 0x6b, 0x5b, 0x51, 0x60, 0x2f, 0x79, 0x75, 0x78, 0xc5, 0xe4, 0x83, 0xc3, - 0x2b, 0x26, 0x23, 0x79, 0xe2, 0x06, 0xac, 0x56, 0x5f, 0x71, 0xe6, 0xff, 0xdd, 0x80, 0x25, 0x91, - 0x0c, 0x2b, 0x73, 0x57, 0xd8, 0x49, 0xa4, 0xd1, 0x36, 0xc7, 0xfd, 0x63, 0x01, 0x97, 0x98, 0x88, - 0x7f, 0x49, 0x10, 0xff, 0x03, 0xa3, 0xf6, 0x78, 0x05, 0xe8, 0x18, 0xa4, 0x1c, 0xc4, 0xbf, 0xcc, - 0xe7, 0x08, 0x0e, 0xbd, 0x1c, 0x78, 0xf3, 0x9a, 0xc5, 0x21, 0xf7, 0x17, 0x20, 0x07, 0xde, 0xdc, - 0x29, 0x10, 0x9f, 0x1d, 0x78, 0xf3, 0x67, 0x2f, 0x50, 0x8e, 0x37, 0xce, 0x0a, 0x2a, 0x5e, 0x9c, - 0x7d, 0x38, 0x3b, 0xff, 0x78, 0x56, 0xbd, 0x63, 0x96, 0x51, 0xfe, 0xe4, 0xd4, 0xe9, 0xf5, 0xab, - 0x9a, 0x89, 0x50, 0xa1, 0x77, 0xfc, 0xbf, 0xf3, 0xb3, 0xa3, 0xaa, 0x0e, 0xdb, 0xfd, 0xe3, 0xb3, - 0xfe, 0xbb, 0x2a, 0x3a, 0x7c, 0xfd, 0xe9, 0xe5, 0xd8, 0x65, 0x9f, 0xc3, 0x61, 0xf3, 0x8a, 0x4c, - 0x5b, 0x63, 0x32, 0x19, 0x78, 0xe3, 0xe4, 0x6f, 0x8f, 0x2f, 0xed, 0xd6, 0xcd, 0x7f, 0xe8, 0xfc, - 0x1d, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x1a, 0x6e, 0x85, 0xf1, 0x11, 0x00, 0x00, + // 1945 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xdb, 0x6e, 0x1b, 0xc9, + 0x11, 0xdd, 0x99, 0xe1, 0xb5, 0xa9, 0x0b, 0x3d, 0x92, 0xbd, 0x14, 0xbd, 0xbb, 0x1a, 0x13, 0x9b, + 0x80, 0x11, 0xb0, 0x12, 0x32, 0xa2, 0x19, 0x81, 0x5a, 0xdb, 0xb0, 0xd6, 0xf4, 0xae, 0xd7, 0x59, + 0x29, 0x20, 0xe9, 0x18, 0x58, 0x20, 0x10, 0x48, 0xb1, 0xc5, 0x1d, 0x84, 0x9c, 0x1e, 0xf6, 0x34, + 0x6d, 0xe9, 0x3f, 0xf2, 0x0d, 0xc9, 0x1f, 0xe4, 0x21, 0xf9, 0x93, 0xfc, 0x44, 0x5e, 0xf2, 0x10, + 0x20, 0x0f, 0x0e, 0xaa, 0x7a, 0x2e, 0xcd, 0x19, 0xde, 0xde, 0xa6, 0xbb, 0xea, 0x9c, 0xaa, 0xae, + 0xea, 0xae, 0xea, 0x69, 0xf2, 0x1b, 0xea, 0xde, 0xb0, 0xa1, 0xe3, 0x8e, 0x4e, 0x04, 0xbd, 0x13, + 0xde, 0xe0, 0x44, 0x50, 0x5f, 0x78, 0x9c, 0x09, 0xe6, 0x9f, 0x78, 0x03, 0x1b, 0x87, 0xc7, 0x38, + 0x36, 0x0d, 0x6f, 0x60, 0x57, 0x0f, 0x46, 0x8c, 0x8d, 0xc6, 0xf4, 0x04, 0xa7, 0x06, 0xb3, 0xdb, + 0x93, 0xbe, 0x7b, 0x2f, 0xe5, 0xd5, 0xc7, 0x49, 0x11, 0x9d, 0x78, 0x22, 0x14, 0x7e, 0x95, 0x14, + 0x0e, 0x67, 0xbc, 0x2f, 0x1c, 0xe6, 0x06, 0xf2, 0x2f, 0x92, 0x72, 0x5f, 0xf0, 0xd9, 0x4d, 0x60, + 0xba, 0x7a, 0x98, 0x94, 0x0a, 0x67, 0x42, 0x7d, 0xd1, 0x9f, 0x78, 0xcb, 0xe8, 0x3f, 0xf2, 0xbe, + 0xe7, 0x51, 0xee, 0x4b, 0x79, 0xed, 0x5f, 0x06, 0xc9, 0x77, 0x6f, 0xfa, 0xe3, 0x3e, 0xf7, 0xcd, + 0x03, 0x52, 0x60, 0x9e, 0xb8, 0x1e, 0x30, 0x36, 0xae, 0x68, 0x96, 0x56, 0x2f, 0x74, 0xf2, 0xcc, + 0x13, 0x17, 0x8c, 0x8d, 0xcd, 0xc7, 0xa4, 0x08, 0x22, 0xc7, 0x15, 0xa7, 0x76, 0x45, 0xb7, 0xb4, + 0x7a, 0xb6, 0x03, 0xba, 0x6f, 0x60, 0xac, 0x08, 0x9b, 0x8d, 0x8a, 0x61, 0x69, 0x75, 0x23, 0x14, + 0x36, 0x1b, 0xe6, 0x97, 0x84, 0x80, 0x70, 0x26, 0xa1, 0x19, 0x4b, 0xab, 0x6f, 0x77, 0x40, 0xfd, + 0x1d, 0x4e, 0xa8, 0xe2, 0x66, 0xa3, 0x92, 0xb5, 0xb4, 0x7a, 0x26, 0x12, 0xc7, 0x68, 0x5f, 0xa2, + 0x73, 0x96, 0x56, 0x7f, 0x80, 0xe2, 0xee, 0x1c, 0xda, 0x97, 0xe8, 0xbc, 0xa5, 0xd5, 0xcd, 0x48, + 0xdc, 0x6c, 0x98, 0x87, 0xa4, 0x04, 0xe2, 0x5b, 0xe7, 0x8e, 0x0e, 0x4f, 0xed, 0x4a, 0xc1, 0xd2, + 0xea, 0xf9, 0x0e, 0x20, 0x5e, 0xcb, 0x99, 0x39, 0x85, 0x66, 0xa3, 0x52, 0xb4, 0xb4, 0x7a, 0x2e, + 0x56, 0x68, 0x36, 0xcc, 0x27, 0x64, 0x0b, 0x0d, 0x84, 0x14, 0xc4, 0xd2, 0xea, 0xbb, 0x1d, 0x00, + 0x75, 0x83, 0xa9, 0x79, 0x95, 0x66, 0xa3, 0x52, 0xb2, 0xb4, 0x7a, 0x59, 0x51, 0x69, 0x36, 0xc2, + 0x00, 0xdd, 0x8e, 0x59, 0x5f, 0x54, 0xf6, 0x2d, 0xad, 0xae, 0x63, 0x80, 0x5e, 0xc3, 0x38, 0x5c, + 0xc3, 0x90, 0xcd, 0x06, 0x63, 0x5a, 0x79, 0x68, 0x69, 0x75, 0x0d, 0xd7, 0xf0, 0x0a, 0x27, 0x42, + 0xec, 0xe0, 0x5e, 0x50, 0xbf, 0xb2, 0x63, 0x69, 0xf5, 0x2d, 0xc4, 0x5e, 0xc0, 0x38, 0x5a, 0xbf, + 0xe0, 0x8e, 0x3b, 0xaa, 0x6c, 0x5b, 0x5a, 0xbd, 0x28, 0xd7, 0x8f, 0x13, 0xb5, 0xbf, 0xe8, 0x24, + 0xdf, 0xa1, 0x1e, 0xed, 0x0b, 0x4c, 0x2e, 0x8f, 0x93, 0x6b, 0x40, 0x72, 0x79, 0x9c, 0x5c, 0xae, + 0x24, 0xd7, 0x80, 0xe4, 0x72, 0x25, 0xb9, 0x5c, 0x49, 0xae, 0x01, 0xc9, 0xe5, 0x4a, 0x72, 0xb9, + 0x9a, 0x5c, 0x03, 0x92, 0xcb, 0xd5, 0xe4, 0x72, 0x35, 0xb9, 0x06, 0x24, 0x97, 0x47, 0xc9, 0x0d, + 0xa8, 0x65, 0x58, 0x72, 0x96, 0x01, 0x61, 0xe1, 0x4a, 0x58, 0x78, 0x1c, 0x96, 0xbc, 0x65, 0x40, + 0x58, 0x78, 0x14, 0x96, 0x40, 0x1c, 0xac, 0x7c, 0xd7, 0x32, 0x60, 0xe5, 0x3c, 0x5c, 0x79, 0x48, + 0x1d, 0x46, 0xcd, 0x80, 0xa8, 0xf1, 0x20, 0x6a, 0xb5, 0xff, 0x69, 0x24, 0xdb, 0x76, 0x67, 0x13, + 0xdf, 0xfc, 0x5a, 0xee, 0x78, 0xea, 0xce, 0x26, 0xb8, 0xe3, 0x77, 0xec, 0xe2, 0xb1, 0x37, 0xb0, + 0x8f, 0x41, 0x8a, 0x9b, 0x1f, 0x3e, 0x40, 0x8b, 0x87, 0x5a, 0x10, 0x9e, 0x79, 0x2d, 0x1e, 0x68, + 0x3d, 0x23, 0xbb, 0xc0, 0xe5, 0x52, 0x5f, 0xd0, 0xa1, 0x54, 0x36, 0x90, 0xf2, 0x61, 0xa4, 0xec, + 0x1f, 0x5f, 0xa2, 0x14, 0x81, 0xdb, 0xcc, 0x13, 0xf1, 0x10, 0xe0, 0x3c, 0x01, 0xcf, 0xa0, 0xad, + 0x65, 0x70, 0xae, 0xc2, 0x6b, 0x75, 0x42, 0x14, 0xb2, 0x3c, 0x31, 0xde, 0x5d, 0x5e, 0x95, 0x35, + 0xf8, 0x78, 0x75, 0xd5, 0x2d, 0xeb, 0x66, 0x81, 0x64, 0x5e, 0xbd, 0x69, 0xff, 0x5c, 0x26, 0xb5, + 0x7f, 0x1b, 0x24, 0x0b, 0xaa, 0xbe, 0x79, 0x24, 0x77, 0x8f, 0x34, 0x89, 0xeb, 0x2f, 0xd9, 0x25, + 0xb4, 0x26, 0xa9, 0x70, 0x2b, 0xc9, 0x4f, 0xf3, 0x04, 0x23, 0x35, 0xe2, 0x6c, 0xe6, 0xe1, 0xf9, + 0x27, 0xf6, 0x5e, 0xa4, 0xe9, 0x1f, 0x5f, 0x79, 0xe2, 0x7b, 0x10, 0x75, 0x22, 0x25, 0x20, 0x8f, + 0xd7, 0x83, 0x1b, 0x27, 0x49, 0xce, 0x55, 0x72, 0x1e, 0x92, 0xc3, 0xa2, 0xe7, 0xc9, 0x3b, 0x11, + 0x79, 0xa8, 0x54, 0xfd, 0x8f, 0x46, 0x0a, 0xa1, 0xcd, 0x55, 0x65, 0x6b, 0xfe, 0x7c, 0xe8, 0x89, + 0xf3, 0x91, 0x08, 0x80, 0xb1, 0x32, 0x00, 0x3f, 0x92, 0x1d, 0xe6, 0x09, 0xa9, 0x1a, 0x7a, 0x0a, + 0x61, 0xa8, 0x2d, 0x08, 0x03, 0x7c, 0x48, 0x98, 0x74, 0x3c, 0x81, 0xac, 0x36, 0xc9, 0xce, 0xbc, + 0xc6, 0x66, 0x1b, 0xb1, 0xfa, 0x2b, 0x52, 0xe8, 0x28, 0xab, 0x5e, 0x72, 0x9e, 0x3b, 0x3b, 0x9c, + 0xfa, 0x94, 0x7f, 0xa0, 0xc3, 0xeb, 0x5b, 0x87, 0x8e, 0x87, 0xb5, 0x2e, 0xc9, 0x05, 0x8b, 0x98, + 0x8f, 0x87, 0xb6, 0x3a, 0x1e, 0xfa, 0xaa, 0x78, 0xd4, 0xfe, 0xab, 0x93, 0x62, 0x87, 0x4e, 0x67, + 0x0e, 0xa7, 0x43, 0x59, 0x5d, 0xe8, 0x34, 0xf4, 0x46, 0x47, 0x6f, 0xe8, 0x14, 0x73, 0x70, 0x48, + 0x4a, 0x20, 0x0a, 0x2b, 0xa8, 0x6e, 0xe9, 0x50, 0x84, 0x39, 0x9d, 0x2a, 0x45, 0x38, 0x52, 0xc0, + 0x1a, 0xa3, 0x43, 0x11, 0x0e, 0x15, 0x64, 0x11, 0x06, 0x85, 0xa8, 0x08, 0x67, 0x2c, 0x1d, 0x8a, + 0x30, 0xa7, 0x53, 0xb5, 0x08, 0xc7, 0x2a, 0x58, 0x6b, 0x74, 0x28, 0xc2, 0x91, 0x4a, 0x50, 0x6d, + 0xc0, 0x4c, 0x50, 0x6d, 0x74, 0xac, 0x36, 0x74, 0x1a, 0x57, 0x1b, 0x3a, 0x8d, 0xab, 0x8d, 0x8e, + 0xd5, 0x86, 0x4e, 0x95, 0x6a, 0x03, 0xf4, 0x32, 0x6e, 0x05, 0x4b, 0xc7, 0x6a, 0x43, 0xa7, 0x4a, + 0xb5, 0x81, 0xd5, 0x63, 0xb5, 0x29, 0x5a, 0x3a, 0x56, 0x1b, 0x3a, 0x95, 0x35, 0xfa, 0x6b, 0x19, + 0x1a, 0x4c, 0x2d, 0xb1, 0xf4, 0x64, 0xf5, 0xa0, 0x53, 0x3c, 0xb1, 0x47, 0xd2, 0x42, 0x10, 0xfa, + 0x92, 0xa5, 0xa7, 0x8f, 0x0b, 0x9d, 0x06, 0xa1, 0xbf, 0x22, 0xbb, 0x7f, 0xe8, 0x73, 0xe1, 0xf4, + 0xc7, 0x61, 0x02, 0x12, 0x0e, 0x6a, 0x49, 0x07, 0x57, 0x9f, 0x83, 0xda, 0x6b, 0x92, 0xbb, 0x72, + 0x29, 0xbb, 0xf5, 0x4d, 0x93, 0x18, 0xbe, 0xe0, 0x72, 0x67, 0xfc, 0xf0, 0x59, 0x07, 0x06, 0xe6, + 0x21, 0x31, 0x26, 0xfe, 0x68, 0xc1, 0x76, 0x00, 0x85, 0x89, 0x3f, 0xba, 0xc8, 0x93, 0xec, 0xcc, + 0x75, 0x98, 0x5b, 0xfb, 0x67, 0x8e, 0x64, 0x7e, 0xea, 0x7b, 0xbe, 0x79, 0x4e, 0xb6, 0xb0, 0x03, + 0x5c, 0x0b, 0x76, 0x2d, 0xf9, 0xe0, 0xf8, 0x1f, 0x20, 0x16, 0x14, 0x8e, 0xb1, 0xb7, 0xf4, 0x58, + 0x57, 0xf0, 0xb6, 0x2b, 0xf8, 0x7d, 0x87, 0x38, 0xd1, 0x84, 0xf9, 0x3d, 0x29, 0x87, 0x79, 0x04, + 0x3c, 0xee, 0x29, 0x1d, 0x09, 0xbe, 0x8c, 0x09, 0xc2, 0xb4, 0xf6, 0x18, 0x6c, 0x32, 0x49, 0xb2, + 0xe3, 0xcf, 0x4d, 0x9a, 0x2f, 0xc9, 0x0e, 0x80, 0x81, 0x24, 0xe8, 0x50, 0xb2, 0x0c, 0x3d, 0x8e, + 0x69, 0x40, 0xaf, 0xc7, 0x64, 0xbb, 0x92, 0x24, 0x5b, 0x03, 0x65, 0x0a, 0x28, 0x64, 0xf7, 0x02, + 0x92, 0xa8, 0x28, 0xcf, 0x51, 0xc8, 0x66, 0xd6, 0x63, 0x90, 0xc6, 0x80, 0x62, 0xa6, 0x4c, 0x99, + 0xcf, 0xc9, 0xb6, 0x2f, 0x38, 0xe0, 0x83, 0xe4, 0x66, 0x91, 0xa1, 0xaa, 0xac, 0x45, 0xf0, 0x1e, + 0x0b, 0xab, 0x37, 0x10, 0x94, 0xfc, 0x78, 0x46, 0xc1, 0x33, 0xcc, 0x11, 0x76, 0xca, 0x34, 0x5e, + 0x26, 0x50, 0xc5, 0xcb, 0x99, 0xea, 0x33, 0xb2, 0x9b, 0x88, 0xb6, 0x59, 0x26, 0xc6, 0x9f, 0xe9, + 0x3d, 0x66, 0x39, 0xdb, 0x81, 0x4f, 0x73, 0x9f, 0x64, 0x3f, 0xf4, 0xc7, 0x33, 0x1a, 0xec, 0x0d, + 0x39, 0x68, 0xe9, 0x67, 0x5a, 0xf5, 0x25, 0xd9, 0x5b, 0x10, 0x6b, 0x95, 0xa2, 0xbc, 0x80, 0xa2, + 0xa0, 0x52, 0xbc, 0x20, 0x0f, 0x52, 0x71, 0x56, 0x09, 0x0a, 0x0b, 0x08, 0xb6, 0x55, 0x82, 0x1f, + 0xc9, 0x83, 0x54, 0x94, 0x55, 0x82, 0x8c, 0x24, 0x38, 0x54, 0x09, 0xe6, 0x8e, 0x99, 0xc2, 0xf5, + 0x96, 0x94, 0x93, 0xf1, 0x56, 0xa9, 0x8a, 0x92, 0xea, 0x89, 0x4a, 0x95, 0x38, 0x89, 0x0b, 0xc8, + 0x94, 0xe0, 0x6f, 0x4a, 0x26, 0x21, 0x0a, 0x59, 0xed, 0x94, 0x98, 0xd2, 0xc2, 0x7b, 0x47, 0xfc, + 0xb2, 0xe1, 0xc9, 0xae, 0xfd, 0x4d, 0x27, 0xe5, 0x37, 0xee, 0xd0, 0xe1, 0xf4, 0x46, 0x44, 0x98, + 0xe6, 0x82, 0xc6, 0xfe, 0xb9, 0xb2, 0x04, 0xd5, 0x80, 0xda, 0xe3, 0x9a, 0x73, 0x3d, 0x5b, 0x9e, + 0xb9, 0xe5, 0x38, 0xae, 0xf4, 0xc6, 0xc4, 0x16, 0x97, 0xe7, 0xec, 0xd7, 0x08, 0x4d, 0x7a, 0xb7, + 0x7a, 0xbb, 0x57, 0xdf, 0x6f, 0x94, 0x9f, 0x6f, 0xe6, 0x43, 0xba, 0xd4, 0x49, 0x25, 0xbc, 0x0e, + 0x21, 0xed, 0x3b, 0x41, 0x5d, 0xdf, 0x61, 0xae, 0xbf, 0xae, 0x13, 0xaa, 0x77, 0x0a, 0xba, 0xf9, + 0xaf, 0xd0, 0x51, 0xa6, 0xb0, 0x5f, 0xa6, 0xb5, 0x7f, 0x18, 0x64, 0x2f, 0xb6, 0xf5, 0x1d, 0x73, + 0x45, 0xdf, 0x71, 0x29, 0xb7, 0x7f, 0x2b, 0x7f, 0x15, 0xe8, 0x9d, 0x64, 0x36, 0x77, 0xe5, 0x0e, + 0x8d, 0x34, 0x2b, 0xa7, 0x68, 0x0a, 0x3c, 0x6b, 0xdf, 0xa1, 0x35, 0xfb, 0x29, 0x5e, 0x3b, 0x10, + 0x22, 0x7d, 0x4d, 0x83, 0x1a, 0xe8, 0xfc, 0x96, 0x04, 0x49, 0xff, 0xed, 0x6f, 0x63, 0x4b, 0x50, + 0xb5, 0xd2, 0xa0, 0xa7, 0xc9, 0x23, 0x12, 0x18, 0x85, 0x6f, 0xfb, 0x22, 0x36, 0x2a, 0x13, 0x9a, + 0xc6, 0x37, 0xd3, 0xe7, 0x22, 0xf0, 0x40, 0x8e, 0xc0, 0x71, 0xbe, 0xc6, 0xf1, 0x67, 0x78, 0x6b, + 0xdf, 0xe2, 0x09, 0xc7, 0xf9, 0x4a, 0xc7, 0x9f, 0x27, 0x2f, 0xe0, 0x84, 0xcf, 0x39, 0xce, 0xd7, + 0x38, 0xfe, 0x22, 0x7d, 0x13, 0x0d, 0x3c, 0x08, 0xba, 0x6b, 0x95, 0x90, 0x9f, 0xa8, 0xef, 0xf7, + 0x47, 0xb4, 0x4b, 0xc5, 0x51, 0xa1, 0x90, 0x29, 0x7f, 0xfa, 0xf4, 0xe9, 0x53, 0xbe, 0xa5, 0x17, + 0xb4, 0xda, 0xdf, 0x75, 0xb2, 0x17, 0x0b, 0x23, 0xd6, 0x35, 0xbb, 0xc9, 0xfe, 0x13, 0x79, 0x38, + 0x91, 0xa8, 0x6b, 0x9f, 0xa2, 0x7b, 0x01, 0x4e, 0x7a, 0x17, 0x33, 0xe2, 0xff, 0x65, 0xc9, 0xae, + 0x24, 0xa6, 0x23, 0x43, 0x9d, 0xbd, 0x49, 0x7a, 0xd2, 0x1e, 0x92, 0x03, 0x97, 0x89, 0xeb, 0x0d, + 0x4d, 0xec, 0xaf, 0x31, 0xf1, 0xc8, 0x65, 0x62, 0xc1, 0xbc, 0x7d, 0x4e, 0x48, 0x2a, 0xae, 0x0a, + 0xed, 0x57, 0x0b, 0x6e, 0x8b, 0x34, 0x0a, 0xea, 0x5f, 0xf3, 0x84, 0xbc, 0x75, 0xd9, 0x47, 0xb7, + 0x77, 0xef, 0x51, 0xdf, 0x7c, 0x9a, 0xb8, 0xb2, 0x43, 0x3b, 0x93, 0x0f, 0x15, 0xc7, 0xe1, 0x43, + 0x05, 0xb6, 0xe6, 0x3f, 0xc2, 0xe9, 0x8d, 0x8f, 0xde, 0x59, 0xf2, 0xe8, 0x41, 0x23, 0x4e, 0xe2, + 0xf0, 0x20, 0x4a, 0x60, 0xfc, 0x44, 0x71, 0x96, 0x7c, 0xa2, 0x58, 0x82, 0x6c, 0x36, 0xe6, 0x90, + 0xcd, 0x86, 0x79, 0x9e, 0x7a, 0xbf, 0x28, 0xd9, 0x5f, 0xa4, 0xa0, 0xef, 0x14, 0xab, 0xca, 0xeb, + 0xc6, 0x79, 0xea, 0x75, 0x63, 0x19, 0x38, 0x34, 0xac, 0xbc, 0x7d, 0x9c, 0xa9, 0xaf, 0x06, 0xb9, + 0x25, 0x3e, 0xe3, 0xf5, 0x35, 0xf6, 0x59, 0xde, 0x66, 0xcf, 0xe7, 0x9e, 0x14, 0xf2, 0x4b, 0xcc, + 0xca, 0xbb, 0x6d, 0x6c, 0x36, 0xb8, 0xeb, 0x9e, 0xcf, 0xed, 0xe5, 0xc2, 0x12, 0xb0, 0xdc, 0xd9, + 0x31, 0x38, 0xa8, 0x9b, 0x67, 0xea, 0x6b, 0x45, 0x71, 0x89, 0xcf, 0x78, 0x2f, 0x8e, 0x7d, 0x96, + 0xd7, 0xe4, 0xa0, 0x62, 0x85, 0xaf, 0x5f, 0xc1, 0x36, 0x3d, 0x48, 0x7b, 0x1d, 0x28, 0xe0, 0x0b, + 0x4b, 0x38, 0x30, 0x5f, 0x10, 0xf8, 0x9d, 0xbe, 0x8e, 0x5e, 0xbf, 0xf0, 0x1d, 0x65, 0xd1, 0xae, + 0xea, 0x85, 0x1a, 0x58, 0xae, 0xa2, 0x51, 0xd8, 0x32, 0xe5, 0xe3, 0x5a, 0xe5, 0x20, 0xe8, 0x2a, + 0x0b, 0x56, 0x3d, 0xbb, 0x11, 0xe1, 0x82, 0x67, 0x37, 0x22, 0xdc, 0xc9, 0x63, 0xc7, 0x17, 0x95, + 0xea, 0x12, 0x9b, 0xbf, 0x77, 0x7c, 0x11, 0xef, 0x64, 0x18, 0x99, 0xa7, 0x32, 0x4e, 0xb2, 0x87, + 0x3d, 0x46, 0xdc, 0xa3, 0x14, 0x2e, 0x0e, 0x11, 0x7e, 0x85, 0x20, 0x7c, 0x3d, 0x0c, 0xce, 0x5b, + 0x1a, 0xd4, 0x06, 0x29, 0x82, 0xf0, 0xcb, 0xfc, 0x86, 0x80, 0xd1, 0xeb, 0xbe, 0x7b, 0x5f, 0xb1, + 0x10, 0xb2, 0x9f, 0x82, 0xbc, 0x74, 0xef, 0x3b, 0x39, 0xe6, 0x89, 0x97, 0xee, 0xfd, 0xd1, 0x53, + 0x92, 0xc1, 0x5b, 0x6b, 0x89, 0xe4, 0xdf, 0x5d, 0xbe, 0xbd, 0xbc, 0x7a, 0x7f, 0x59, 0xfe, 0xcc, + 0x2c, 0x92, 0xec, 0xeb, 0x37, 0x9d, 0x6e, 0xaf, 0xac, 0x99, 0x84, 0xe4, 0xba, 0xed, 0xef, 0xae, + 0x2e, 0x5f, 0x95, 0x75, 0x98, 0xee, 0xb5, 0x2f, 0x7b, 0x3f, 0x94, 0x49, 0x6b, 0x6d, 0x67, 0x7b, + 0x98, 0xec, 0x6c, 0xad, 0x0d, 0x3a, 0xdb, 0xa3, 0x74, 0x67, 0x6b, 0xad, 0xed, 0x6c, 0x9f, 0xaf, + 0xe8, 0x6c, 0xad, 0x0d, 0x3a, 0x5b, 0x65, 0x4d, 0x67, 0x6b, 0xfd, 0x4e, 0xbe, 0xd4, 0x00, 0x47, + 0xf8, 0xfb, 0x99, 0x22, 0x39, 0xb4, 0x8c, 0x7a, 0x1e, 0xdf, 0x68, 0xda, 0x77, 0xe1, 0x6b, 0x63, + 0x6b, 0x6d, 0x6f, 0xb3, 0x56, 0xf4, 0xb6, 0xd6, 0x06, 0xbd, 0xed, 0xc9, 0x9a, 0xde, 0x76, 0xf1, + 0xfc, 0xe7, 0x6f, 0x47, 0x8e, 0xf8, 0x65, 0x36, 0x38, 0xbe, 0x61, 0x93, 0x93, 0x11, 0x1b, 0xf7, + 0xdd, 0x51, 0xfc, 0x34, 0xfc, 0xc1, 0x3e, 0x59, 0xfd, 0xe8, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x59, 0x20, 0x4f, 0x36, 0x15, 0x17, 0x00, 0x00, } func init() { xxx_Test_ProtoFile_FileDesc.Enums = xxx_Test_ProtoFile_EnumDescs[0:1] - xxx_Test_ProtoFile_FileDesc.Messages = xxx_Test_ProtoFile_MessageDescs[0:12] + xxx_Test_ProtoFile_FileDesc.Messages = xxx_Test_ProtoFile_MessageDescs[0:16] xxx_Test_ProtoFile_MessageDescs[2].Enums = xxx_Test_ProtoFile_EnumDescs[1:2] - xxx_Test_ProtoFile_MessageDescs[3].Messages = xxx_Test_ProtoFile_MessageDescs[12:14] - xxx_Test_ProtoFile_MessageDescs[8].Messages = xxx_Test_ProtoFile_MessageDescs[15:21] - xxx_Test_ProtoFile_MessageDescs[10].Messages = xxx_Test_ProtoFile_MessageDescs[21:22] - xxx_Test_ProtoFile_MessageDescs[12].Messages = xxx_Test_ProtoFile_MessageDescs[14:15] + xxx_Test_ProtoFile_MessageDescs[3].Messages = xxx_Test_ProtoFile_MessageDescs[16:18] + xxx_Test_ProtoFile_MessageDescs[8].Messages = xxx_Test_ProtoFile_MessageDescs[19:25] + xxx_Test_ProtoFile_MessageDescs[10].Messages = xxx_Test_ProtoFile_MessageDescs[25:26] + xxx_Test_ProtoFile_MessageDescs[16].Messages = xxx_Test_ProtoFile_MessageDescs[18:19] xxx_Test_ProtoFile_MessageDescs[2].Fields[0].EnumType = xxx_Test_ProtoFile_EnumTypes[0] xxx_Test_ProtoFile_MessageDescs[2].Fields[1].EnumType = xxx_Test_ProtoFile_EnumTypes[0] xxx_Test_ProtoFile_MessageDescs[2].Fields[2].EnumType = xxx_Test_ProtoFile_EnumTypes[1] xxx_Test_ProtoFile_MessageDescs[2].Fields[3].EnumType = xxx_Test_ProtoFile_EnumTypes[1] xxx_Test_ProtoFile_MessageDescs[3].Fields[0].MessageType = xxx_Test_ProtoFile_MessageTypes[4].Type - xxx_Test_ProtoFile_MessageDescs[3].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[12].Type + xxx_Test_ProtoFile_MessageDescs[3].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[16].Type xxx_Test_ProtoFile_MessageDescs[3].Fields[2].MessageType = xxx_Test_ProtoFile_MessageTypes[4].Type - xxx_Test_ProtoFile_MessageDescs[3].Fields[3].MessageType = xxx_Test_ProtoFile_MessageTypes[13].Type + xxx_Test_ProtoFile_MessageDescs[3].Fields[3].MessageType = xxx_Test_ProtoFile_MessageTypes[17].Type xxx_Test_ProtoFile_MessageDescs[4].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[4].Type xxx_Test_ProtoFile_MessageDescs[5].Fields[9].EnumType = xxx_Test_ProtoFile_EnumTypes[0] xxx_Test_ProtoFile_MessageDescs[5].Fields[10].MessageType = xxx_Test_ProtoFile_MessageTypes[4].Type xxx_Test_ProtoFile_MessageDescs[7].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[4].Type - xxx_Test_ProtoFile_MessageDescs[8].Fields[0].MessageType = xxx_Test_ProtoFile_MessageDescs[15].Reference() - xxx_Test_ProtoFile_MessageDescs[8].Fields[1].MessageType = xxx_Test_ProtoFile_MessageDescs[16].Reference() - xxx_Test_ProtoFile_MessageDescs[8].Fields[2].MessageType = xxx_Test_ProtoFile_MessageDescs[17].Reference() - xxx_Test_ProtoFile_MessageDescs[8].Fields[3].MessageType = xxx_Test_ProtoFile_MessageDescs[18].Reference() - xxx_Test_ProtoFile_MessageDescs[8].Fields[4].MessageType = xxx_Test_ProtoFile_MessageDescs[19].Reference() - xxx_Test_ProtoFile_MessageDescs[8].Fields[5].MessageType = xxx_Test_ProtoFile_MessageDescs[20].Reference() + xxx_Test_ProtoFile_MessageDescs[8].Fields[0].MessageType = xxx_Test_ProtoFile_MessageDescs[19].Reference() + xxx_Test_ProtoFile_MessageDescs[8].Fields[1].MessageType = xxx_Test_ProtoFile_MessageDescs[20].Reference() + xxx_Test_ProtoFile_MessageDescs[8].Fields[2].MessageType = xxx_Test_ProtoFile_MessageDescs[21].Reference() + xxx_Test_ProtoFile_MessageDescs[8].Fields[3].MessageType = xxx_Test_ProtoFile_MessageDescs[22].Reference() + xxx_Test_ProtoFile_MessageDescs[8].Fields[4].MessageType = xxx_Test_ProtoFile_MessageDescs[23].Reference() + xxx_Test_ProtoFile_MessageDescs[8].Fields[5].MessageType = xxx_Test_ProtoFile_MessageDescs[24].Reference() xxx_Test_ProtoFile_MessageDescs[10].Fields[0].MessageType = xxx_Test_ProtoFile_MessageTypes[9].Type xxx_Test_ProtoFile_MessageDescs[10].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[9].Type - xxx_Test_ProtoFile_MessageDescs[10].Fields[2].MessageType = xxx_Test_ProtoFile_MessageDescs[21].Reference() - xxx_Test_ProtoFile_MessageDescs[11].Fields[0].MessageType = protoimpl.X.MessageTypeOf((*wrappers.BoolValue)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[1].MessageType = protoimpl.X.MessageTypeOf((*wrappers.Int32Value)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[2].MessageType = protoimpl.X.MessageTypeOf((*wrappers.Int64Value)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[3].MessageType = protoimpl.X.MessageTypeOf((*wrappers.UInt32Value)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[4].MessageType = protoimpl.X.MessageTypeOf((*wrappers.UInt64Value)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[5].MessageType = protoimpl.X.MessageTypeOf((*wrappers.FloatValue)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[6].MessageType = protoimpl.X.MessageTypeOf((*wrappers.DoubleValue)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[7].MessageType = protoimpl.X.MessageTypeOf((*wrappers.StringValue)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[8].MessageType = protoimpl.X.MessageTypeOf((*wrappers.BytesValue)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[9].MessageType = protoimpl.X.MessageTypeOf((*duration.Duration)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[10].MessageType = protoimpl.X.MessageTypeOf((*timestamp.Timestamp)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[11].MessageType = protoimpl.X.MessageTypeOf((*_struct.Struct)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[12].MessageType = protoimpl.X.MessageTypeOf((*_struct.ListValue)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[13].MessageType = protoimpl.X.MessageTypeOf((*_struct.Value)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[14].MessageType = protoimpl.X.MessageTypeOf((*empty.Empty)(nil)) - xxx_Test_ProtoFile_MessageDescs[11].Fields[15].MessageType = protoimpl.X.MessageTypeOf((*any.Any)(nil)) - xxx_Test_ProtoFile_MessageDescs[12].Fields[2].MessageType = xxx_Test_ProtoFile_MessageTypes[4].Type - xxx_Test_ProtoFile_MessageDescs[12].Fields[3].MessageType = xxx_Test_ProtoFile_MessageTypes[14].Type - xxx_Test_ProtoFile_MessageDescs[14].Fields[0].EnumType = xxx_Test_ProtoFile_EnumTypes[0] - xxx_Test_ProtoFile_MessageDescs[18].Fields[1].EnumType = xxx_Test_ProtoFile_EnumTypes[0] - xxx_Test_ProtoFile_MessageDescs[19].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[4].Type - xxx_Test_ProtoFile_MessageDescs[20].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[7].Type - xxx_Test_ProtoFile_MessageDescs[21].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[9].Type + xxx_Test_ProtoFile_MessageDescs[10].Fields[2].MessageType = xxx_Test_ProtoFile_MessageDescs[25].Reference() + xxx_Test_ProtoFile_MessageDescs[15].Fields[0].MessageType = protoimpl.X.MessageTypeOf((*wrappers.BoolValue)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[1].MessageType = protoimpl.X.MessageTypeOf((*wrappers.Int32Value)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[2].MessageType = protoimpl.X.MessageTypeOf((*wrappers.Int64Value)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[3].MessageType = protoimpl.X.MessageTypeOf((*wrappers.UInt32Value)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[4].MessageType = protoimpl.X.MessageTypeOf((*wrappers.UInt64Value)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[5].MessageType = protoimpl.X.MessageTypeOf((*wrappers.FloatValue)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[6].MessageType = protoimpl.X.MessageTypeOf((*wrappers.DoubleValue)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[7].MessageType = protoimpl.X.MessageTypeOf((*wrappers.StringValue)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[8].MessageType = protoimpl.X.MessageTypeOf((*wrappers.BytesValue)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[9].MessageType = protoimpl.X.MessageTypeOf((*duration.Duration)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[10].MessageType = protoimpl.X.MessageTypeOf((*timestamp.Timestamp)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[11].MessageType = protoimpl.X.MessageTypeOf((*_struct.Struct)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[12].MessageType = protoimpl.X.MessageTypeOf((*_struct.ListValue)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[13].MessageType = protoimpl.X.MessageTypeOf((*_struct.Value)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[14].MessageType = protoimpl.X.MessageTypeOf((*empty.Empty)(nil)) + xxx_Test_ProtoFile_MessageDescs[15].Fields[15].MessageType = protoimpl.X.MessageTypeOf((*any.Any)(nil)) + xxx_Test_ProtoFile_MessageDescs[16].Fields[2].MessageType = xxx_Test_ProtoFile_MessageTypes[4].Type + xxx_Test_ProtoFile_MessageDescs[16].Fields[3].MessageType = xxx_Test_ProtoFile_MessageTypes[18].Type + xxx_Test_ProtoFile_MessageDescs[18].Fields[0].EnumType = xxx_Test_ProtoFile_EnumTypes[0] + xxx_Test_ProtoFile_MessageDescs[22].Fields[1].EnumType = xxx_Test_ProtoFile_EnumTypes[0] + xxx_Test_ProtoFile_MessageDescs[23].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[4].Type + xxx_Test_ProtoFile_MessageDescs[24].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[7].Type + xxx_Test_ProtoFile_MessageDescs[25].Fields[1].MessageType = xxx_Test_ProtoFile_MessageTypes[9].Type var err error Test_ProtoFile, err = prototype.NewFile(&xxx_Test_ProtoFile_FileDesc) if err != nil { @@ -1807,7 +2246,7 @@ var xxx_Test_ProtoFile_EnumDescs = [2]prototype.Enum{ }, }, } -var xxx_Test_ProtoFile_MessageTypes = [22]protoimpl.MessageType{ +var xxx_Test_ProtoFile_MessageTypes = [26]protoimpl.MessageType{ {Type: prototype.GoMessage( xxx_Test_ProtoFile_MessageDescs[0].Reference(), func(protoreflect.MessageType) protoreflect.ProtoMessage { @@ -1877,23 +2316,47 @@ var xxx_Test_ProtoFile_MessageTypes = [22]protoimpl.MessageType{ {Type: prototype.GoMessage( xxx_Test_ProtoFile_MessageDescs[11].Reference(), func(protoreflect.MessageType) protoreflect.ProtoMessage { - return new(KnownTypes) + return new(Extensions) }, )}, {Type: prototype.GoMessage( xxx_Test_ProtoFile_MessageDescs[12].Reference(), func(protoreflect.MessageType) protoreflect.ProtoMessage { - return new(Nests_OptGroup) + return new(ExtensionsContainer) }, )}, {Type: prototype.GoMessage( xxx_Test_ProtoFile_MessageDescs[13].Reference(), func(protoreflect.MessageType) protoreflect.ProtoMessage { - return new(Nests_RptGroup) + return new(MessageSet) }, )}, {Type: prototype.GoMessage( xxx_Test_ProtoFile_MessageDescs[14].Reference(), + func(protoreflect.MessageType) protoreflect.ProtoMessage { + return new(MessageSetExtension) + }, + )}, + {Type: prototype.GoMessage( + xxx_Test_ProtoFile_MessageDescs[15].Reference(), + func(protoreflect.MessageType) protoreflect.ProtoMessage { + return new(KnownTypes) + }, + )}, + {Type: prototype.GoMessage( + xxx_Test_ProtoFile_MessageDescs[16].Reference(), + func(protoreflect.MessageType) protoreflect.ProtoMessage { + return new(Nests_OptGroup) + }, + )}, + {Type: prototype.GoMessage( + xxx_Test_ProtoFile_MessageDescs[17].Reference(), + func(protoreflect.MessageType) protoreflect.ProtoMessage { + return new(Nests_RptGroup) + }, + )}, + {Type: prototype.GoMessage( + xxx_Test_ProtoFile_MessageDescs[18].Reference(), func(protoreflect.MessageType) protoreflect.ProtoMessage { return new(Nests_OptGroup_OptNestedGroup) }, @@ -1906,7 +2369,7 @@ var xxx_Test_ProtoFile_MessageTypes = [22]protoimpl.MessageType{ { /* no message type for Maps_StrToOneofsEntry */ }, { /* no message type for IndirectRequired_StrToNestedEntry */ }, } -var xxx_Test_ProtoFile_MessageDescs = [22]prototype.Message{ +var xxx_Test_ProtoFile_MessageDescs = [26]prototype.Message{ { Name: "Scalars", Fields: []prototype.Field{ @@ -2440,6 +2903,56 @@ var xxx_Test_ProtoFile_MessageDescs = [22]prototype.Message{ }, }, }, + { + Name: "Extensions", + Fields: []prototype.Field{ + { + Name: "opt_string", + Number: 1, + Cardinality: protoreflect.Optional, + Kind: protoreflect.StringKind, + JSONName: "optString", + IsPacked: prototype.False, + }, + { + Name: "opt_bool", + Number: 101, + Cardinality: protoreflect.Optional, + Kind: protoreflect.BoolKind, + JSONName: "optBool", + IsPacked: prototype.False, + }, + { + Name: "opt_int32", + Number: 2, + Cardinality: protoreflect.Optional, + Kind: protoreflect.Int32Kind, + JSONName: "optInt32", + IsPacked: prototype.False, + }, + }, + ExtensionRanges: [][2]protoreflect.FieldNumber{{20, 101}}, + }, + { + Name: "ExtensionsContainer", + }, + { + Name: "MessageSet", + ExtensionRanges: [][2]protoreflect.FieldNumber{{4, 2147483647}}, + }, + { + Name: "MessageSetExtension", + Fields: []prototype.Field{ + { + Name: "opt_string", + Number: 1, + Cardinality: protoreflect.Optional, + Kind: protoreflect.StringKind, + JSONName: "optString", + IsPacked: prototype.False, + }, + }, + }, { Name: "KnownTypes", Fields: []prototype.Field{ diff --git a/encoding/textpb/testprotos/pb2/test.proto b/encoding/textpb/testprotos/pb2/test.proto index 35f585b0..861dd24f 100644 --- a/encoding/textpb/testprotos/pb2/test.proto +++ b/encoding/textpb/testprotos/pb2/test.proto @@ -138,6 +138,7 @@ message Maps { } // Following messages are for testing required field nested in optional, repeated and map fields. + message NestedWithRequired { required string req_string = 1; } @@ -148,6 +149,57 @@ message IndirectRequired { map str_to_nested = 3; } +// Following messages are for testing extensions. + +message Extensions { + optional string opt_string = 1; + extensions 20 to 100; + optional bool opt_bool = 101; + optional int32 opt_int32 = 2; +} + +extend Extensions { + optional bool opt_ext_bool = 21; + optional string opt_ext_string = 22; + optional Enum opt_ext_enum = 23; + optional Nested opt_ext_nested = 24; + + repeated fixed32 rpt_ext_fixed32 = 31; + repeated Enum rpt_ext_enum = 32; + repeated Nested rpt_ext_nested = 33; +} + +message ExtensionsContainer { + extend Extensions { + optional bool opt_ext_bool = 51; + optional string opt_ext_string = 52; + optional Enum opt_ext_enum = 53; + optional Nested opt_ext_nested = 54; + + repeated string rpt_ext_string = 61; + repeated Enum rpt_ext_enum = 62; + repeated Nested rpt_ext_nested = 63; + } +} + +// Following messages are for testing MessageSet. + +message MessageSet { + option message_set_wire_format = true; + + extensions 4 to max; +} + +message MessageSetExtension { + optional string opt_string = 1; + + extend MessageSet { + optional MessageSetExtension message_set_extension = 10; + optional MessageSetExtension not_message_set_extension = 20; + optional Nested ext_nested = 30; + } +} + // Message contains well-known type fields. message KnownTypes { optional google.protobuf.BoolValue opt_bool = 1;