encoding/text: marshal extensions

Change-Id: Ic4a0c5909fb6eca76d22053b143be58c60b67b34
Reviewed-on: https://go-review.googlesource.com/c/154657
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
This commit is contained in:
Herbie Ong 2018-12-17 17:13:07 -08:00
parent 2b0bba88b8
commit cf25308dea
4 changed files with 977 additions and 190 deletions

View File

@ -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 {

View File

@ -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 {

View File

@ -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{

View File

@ -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<string, NestedWithRequired> 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;