// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.25.0-devel
// 	protoc        v3.12.0
// source: desc_test_complex.proto

package testprotos

import (
	context "context"
	proto "github.com/golang/protobuf/proto"
	descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoiface "google.golang.org/protobuf/runtime/protoiface"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

type EnumWithReservations int32

const (
	EnumWithReservations_X EnumWithReservations = 2
	EnumWithReservations_Y EnumWithReservations = 3
	EnumWithReservations_Z EnumWithReservations = 4
)

// Enum value maps for EnumWithReservations.
var (
	EnumWithReservations_name = map[int32]string{
		2: "X",
		3: "Y",
		4: "Z",
	}
	EnumWithReservations_value = map[string]int32{
		"X": 2,
		"Y": 3,
		"Z": 4,
	}
)

func (x EnumWithReservations) Enum() *EnumWithReservations {
	p := new(EnumWithReservations)
	*p = x
	return p
}

func (x EnumWithReservations) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (EnumWithReservations) Descriptor() protoreflect.EnumDescriptor {
	return file_desc_test_complex_proto_enumTypes[0].Descriptor()
}

func (EnumWithReservations) Type() protoreflect.EnumType {
	return &file_desc_test_complex_proto_enumTypes[0]
}

func (x EnumWithReservations) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *EnumWithReservations) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = EnumWithReservations(num)
	return nil
}

// Deprecated: Use EnumWithReservations.Descriptor instead.
func (EnumWithReservations) EnumDescriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{0}
}

type Test_Nested_XNestedNested_EEE int32

const (
	Test_Nested_XNestedNested_OK Test_Nested_XNestedNested_EEE = 0
	Test_Nested_XNestedNested_V1 Test_Nested_XNestedNested_EEE = 1
	Test_Nested_XNestedNested_V2 Test_Nested_XNestedNested_EEE = 2
	Test_Nested_XNestedNested_V3 Test_Nested_XNestedNested_EEE = 3
	Test_Nested_XNestedNested_V4 Test_Nested_XNestedNested_EEE = 4
	Test_Nested_XNestedNested_V5 Test_Nested_XNestedNested_EEE = 5
	Test_Nested_XNestedNested_V6 Test_Nested_XNestedNested_EEE = 6
)

// Enum value maps for Test_Nested_XNestedNested_EEE.
var (
	Test_Nested_XNestedNested_EEE_name = map[int32]string{
		0: "OK",
		1: "V1",
		2: "V2",
		3: "V3",
		4: "V4",
		5: "V5",
		6: "V6",
	}
	Test_Nested_XNestedNested_EEE_value = map[string]int32{
		"OK": 0,
		"V1": 1,
		"V2": 2,
		"V3": 3,
		"V4": 4,
		"V5": 5,
		"V6": 6,
	}
)

func (x Test_Nested_XNestedNested_EEE) Enum() *Test_Nested_XNestedNested_EEE {
	p := new(Test_Nested_XNestedNested_EEE)
	*p = x
	return p
}

func (x Test_Nested_XNestedNested_EEE) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Test_Nested_XNestedNested_EEE) Descriptor() protoreflect.EnumDescriptor {
	return file_desc_test_complex_proto_enumTypes[1].Descriptor()
}

func (Test_Nested_XNestedNested_EEE) Type() protoreflect.EnumType {
	return &file_desc_test_complex_proto_enumTypes[1]
}

func (x Test_Nested_XNestedNested_EEE) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *Test_Nested_XNestedNested_EEE) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = Test_Nested_XNestedNested_EEE(num)
	return nil
}

// Deprecated: Use Test_Nested_XNestedNested_EEE.Descriptor instead.
func (Test_Nested_XNestedNested_EEE) EnumDescriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{1, 1, 0, 0}
}

type Validator_Action int32

const (
	Validator_LOGIN Validator_Action = 0
	Validator_READ  Validator_Action = 1
	Validator_WRITE Validator_Action = 2
)

// Enum value maps for Validator_Action.
var (
	Validator_Action_name = map[int32]string{
		0: "LOGIN",
		1: "READ",
		2: "WRITE",
	}
	Validator_Action_value = map[string]int32{
		"LOGIN": 0,
		"READ":  1,
		"WRITE": 2,
	}
)

func (x Validator_Action) Enum() *Validator_Action {
	p := new(Validator_Action)
	*p = x
	return p
}

func (x Validator_Action) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Validator_Action) Descriptor() protoreflect.EnumDescriptor {
	return file_desc_test_complex_proto_enumTypes[2].Descriptor()
}

func (Validator_Action) Type() protoreflect.EnumType {
	return &file_desc_test_complex_proto_enumTypes[2]
}

func (x Validator_Action) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *Validator_Action) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = Validator_Action(num)
	return nil
}

// Deprecated: Use Validator_Action.Descriptor instead.
func (Validator_Action) EnumDescriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{5, 0}
}

type Simple struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Id   *uint64 `protobuf:"varint,2,opt,name=id" json:"id,omitempty"`
}

func (x *Simple) Reset() {
	*x = Simple{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Simple) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Simple) ProtoMessage() {}

func (x *Simple) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Simple.ProtoReflect.Descriptor instead.
func (*Simple) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{0}
}

func (x *Simple) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *Simple) GetId() uint64 {
	if x != nil && x.Id != nil {
		return *x.Id
	}
	return 0
}

type Test struct {
	state           protoimpl.MessageState
	sizeCache       protoimpl.SizeCache
	unknownFields   protoimpl.UnknownFields
	extensionFields protoimpl.ExtensionFields

	Foo   *string          `protobuf:"bytes,1,opt,name=foo,json=|foo|" json:"foo,omitempty"`
	Array []int32          `protobuf:"varint,2,rep,name=array" json:"array,omitempty"`
	S     *Simple          `protobuf:"bytes,3,opt,name=s" json:"s,omitempty"`
	R     []*Simple        `protobuf:"bytes,4,rep,name=r" json:"r,omitempty"`
	M     map[string]int32 `protobuf:"bytes,5,rep,name=m" json:"m,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	B     []byte           `protobuf:"bytes,6,opt,name=b,def=\\000\\001\\002\\003\\004\\005\\006\\007fubar!" json:"b,omitempty"`
}

// Default values for Test fields.
var (
	Default_Test_B = []byte("\x00\x01\x02\x03\x04\x05\x06\afubar!")
)

func (x *Test) Reset() {
	*x = Test{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Test) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Test) ProtoMessage() {}

func (x *Test) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Test.ProtoReflect.Descriptor instead.
func (*Test) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{1}
}

var extRange_Test = []protoiface.ExtensionRangeV1{
	{Start: 100, End: 200},
	{Start: 249, End: 249},
	{Start: 300, End: 350},
	{Start: 500, End: 550},
	{Start: 20000, End: 536870911},
}

// Deprecated: Use Test.ProtoReflect.Descriptor.ExtensionRanges instead.
func (*Test) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
	return extRange_Test
}

func (x *Test) GetFoo() string {
	if x != nil && x.Foo != nil {
		return *x.Foo
	}
	return ""
}

func (x *Test) GetArray() []int32 {
	if x != nil {
		return x.Array
	}
	return nil
}

func (x *Test) GetS() *Simple {
	if x != nil {
		return x.S
	}
	return nil
}

func (x *Test) GetR() []*Simple {
	if x != nil {
		return x.R
	}
	return nil
}

func (x *Test) GetM() map[string]int32 {
	if x != nil {
		return x.M
	}
	return nil
}

func (x *Test) GetB() []byte {
	if x != nil && x.B != nil {
		return x.B
	}
	return append([]byte(nil), Default_Test_B...)
}

type MessageWithReservations struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *MessageWithReservations) Reset() {
	*x = MessageWithReservations{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageWithReservations) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageWithReservations) ProtoMessage() {}

func (x *MessageWithReservations) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MessageWithReservations.ProtoReflect.Descriptor instead.
func (*MessageWithReservations) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{2}
}

type MessageWithMap struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Vals map[string]*Simple `protobuf:"bytes,1,rep,name=vals" json:"vals,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}

func (x *MessageWithMap) Reset() {
	*x = MessageWithMap{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageWithMap) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageWithMap) ProtoMessage() {}

func (x *MessageWithMap) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MessageWithMap.ProtoReflect.Descriptor instead.
func (*MessageWithMap) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{3}
}

func (x *MessageWithMap) GetVals() map[string]*Simple {
	if x != nil {
		return x.Vals
	}
	return nil
}

type Another struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Test *Test                          `protobuf:"bytes,1,opt,name=test" json:"test,omitempty"`
	Fff  *Test_Nested_XNestedNested_EEE `protobuf:"varint,2,opt,name=fff,enum=foo.bar.Test_Nested_XNestedNested_EEE,def=1" json:"fff,omitempty"`
}

// Default values for Another fields.
const (
	Default_Another_Fff = Test_Nested_XNestedNested_V1
)

func (x *Another) Reset() {
	*x = Another{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Another) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Another) ProtoMessage() {}

func (x *Another) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Another.ProtoReflect.Descriptor instead.
func (*Another) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{4}
}

func (x *Another) GetTest() *Test {
	if x != nil {
		return x.Test
	}
	return nil
}

func (x *Another) GetFff() Test_Nested_XNestedNested_EEE {
	if x != nil && x.Fff != nil {
		return *x.Fff
	}
	return Default_Another_Fff
}

type Validator struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Authenticated *bool                   `protobuf:"varint,1,opt,name=authenticated" json:"authenticated,omitempty"`
	Permission    []*Validator_Permission `protobuf:"bytes,2,rep,name=permission" json:"permission,omitempty"`
}

func (x *Validator) Reset() {
	*x = Validator{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Validator) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Validator) ProtoMessage() {}

func (x *Validator) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Validator.ProtoReflect.Descriptor instead.
func (*Validator) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{5}
}

func (x *Validator) GetAuthenticated() bool {
	if x != nil && x.Authenticated != nil {
		return *x.Authenticated
	}
	return false
}

func (x *Validator) GetPermission() []*Validator_Permission {
	if x != nil {
		return x.Permission
	}
	return nil
}

type Rule struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Rule:
	//	*Rule_String_
	//	*Rule_Repeated
	//	*Rule_Int
	//	*Rule_Floatrule
	Rule isRule_Rule `protobuf_oneof:"rule"`
}

func (x *Rule) Reset() {
	*x = Rule{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Rule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Rule) ProtoMessage() {}

func (x *Rule) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Rule.ProtoReflect.Descriptor instead.
func (*Rule) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{6}
}

func (m *Rule) GetRule() isRule_Rule {
	if m != nil {
		return m.Rule
	}
	return nil
}

func (x *Rule) GetString_() *Rule_StringRule {
	if x, ok := x.GetRule().(*Rule_String_); ok {
		return x.String_
	}
	return nil
}

func (x *Rule) GetRepeated() *Rule_RepeatedRule {
	if x, ok := x.GetRule().(*Rule_Repeated); ok {
		return x.Repeated
	}
	return nil
}

func (x *Rule) GetInt() *Rule_IntRule {
	if x, ok := x.GetRule().(*Rule_Int); ok {
		return x.Int
	}
	return nil
}

func (x *Rule) GetFloatrule() *Rule_FloatRule {
	if x, ok := x.GetRule().(*Rule_Floatrule); ok {
		return x.Floatrule
	}
	return nil
}

type isRule_Rule interface {
	isRule_Rule()
}

type Rule_String_ struct {
	String_ *Rule_StringRule `protobuf:"bytes,1,opt,name=string,oneof"`
}

type Rule_Repeated struct {
	Repeated *Rule_RepeatedRule `protobuf:"bytes,2,opt,name=repeated,oneof"`
}

type Rule_Int struct {
	Int *Rule_IntRule `protobuf:"bytes,3,opt,name=int,oneof"`
}

type Rule_Floatrule struct {
	Floatrule *Rule_FloatRule `protobuf:"group,4,opt,name=FloatRule,json=floatrule,oneof"`
}

func (*Rule_String_) isRule_Rule() {}

func (*Rule_Repeated) isRule_Rule() {}

func (*Rule_Int) isRule_Rule() {}

func (*Rule_Floatrule) isRule_Rule() {}

type IsAuthorizedReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Subjects []string `protobuf:"bytes,1,rep,name=subjects" json:"subjects,omitempty"`
}

func (x *IsAuthorizedReq) Reset() {
	*x = IsAuthorizedReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IsAuthorizedReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsAuthorizedReq) ProtoMessage() {}

func (x *IsAuthorizedReq) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IsAuthorizedReq.ProtoReflect.Descriptor instead.
func (*IsAuthorizedReq) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{7}
}

func (x *IsAuthorizedReq) GetSubjects() []string {
	if x != nil {
		return x.Subjects
	}
	return nil
}

type KeywordCollisions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Syntax     *bool    `protobuf:"varint,1,opt,name=syntax" json:"syntax,omitempty"`
	Import     *bool    `protobuf:"varint,2,opt,name=import" json:"import,omitempty"`
	Public     *bool    `protobuf:"varint,3,opt,name=public" json:"public,omitempty"`
	Weak       *bool    `protobuf:"varint,4,opt,name=weak" json:"weak,omitempty"`
	Package    *bool    `protobuf:"varint,5,opt,name=package" json:"package,omitempty"`
	String_    *string  `protobuf:"bytes,6,opt,name=string" json:"string,omitempty"`
	Bytes      []byte   `protobuf:"bytes,7,opt,name=bytes" json:"bytes,omitempty"`
	Int32      *int32   `protobuf:"varint,8,opt,name=int32" json:"int32,omitempty"`
	Int64      *int64   `protobuf:"varint,9,opt,name=int64" json:"int64,omitempty"`
	Uint32     *uint32  `protobuf:"varint,10,opt,name=uint32" json:"uint32,omitempty"`
	Uint64     *uint64  `protobuf:"varint,11,opt,name=uint64" json:"uint64,omitempty"`
	Sint32     *int32   `protobuf:"zigzag32,12,opt,name=sint32" json:"sint32,omitempty"`
	Sint64     *int64   `protobuf:"zigzag64,13,opt,name=sint64" json:"sint64,omitempty"`
	Fixed32    *uint32  `protobuf:"fixed32,14,opt,name=fixed32" json:"fixed32,omitempty"`
	Fixed64    *uint64  `protobuf:"fixed64,15,opt,name=fixed64" json:"fixed64,omitempty"`
	Sfixed32   *int32   `protobuf:"fixed32,16,opt,name=sfixed32" json:"sfixed32,omitempty"`
	Sfixed64   *int64   `protobuf:"fixed64,17,opt,name=sfixed64" json:"sfixed64,omitempty"`
	Bool       *bool    `protobuf:"varint,18,opt,name=bool" json:"bool,omitempty"`
	Float      *float32 `protobuf:"fixed32,19,opt,name=float" json:"float,omitempty"`
	Double     *float64 `protobuf:"fixed64,20,opt,name=double" json:"double,omitempty"`
	Optional   *bool    `protobuf:"varint,21,opt,name=optional" json:"optional,omitempty"`
	Repeated   *bool    `protobuf:"varint,22,opt,name=repeated" json:"repeated,omitempty"`
	Required   *bool    `protobuf:"varint,23,opt,name=required" json:"required,omitempty"`
	Message    *bool    `protobuf:"varint,24,opt,name=message" json:"message,omitempty"`
	Enum       *bool    `protobuf:"varint,25,opt,name=enum" json:"enum,omitempty"`
	Service    *bool    `protobuf:"varint,26,opt,name=service" json:"service,omitempty"`
	Rpc        *bool    `protobuf:"varint,27,opt,name=rpc" json:"rpc,omitempty"`
	Option     *bool    `protobuf:"varint,28,opt,name=option" json:"option,omitempty"`
	Extend     *bool    `protobuf:"varint,29,opt,name=extend" json:"extend,omitempty"`
	Extensions *bool    `protobuf:"varint,30,opt,name=extensions" json:"extensions,omitempty"`
	Reserved   *bool    `protobuf:"varint,31,opt,name=reserved" json:"reserved,omitempty"`
	To         *bool    `protobuf:"varint,32,opt,name=to" json:"to,omitempty"`
	True       *int32   `protobuf:"varint,33,opt,name=true" json:"true,omitempty"`
	False      *int32   `protobuf:"varint,34,opt,name=false" json:"false,omitempty"`
	Default    *int32   `protobuf:"varint,35,opt,name=default" json:"default,omitempty"`
}

func (x *KeywordCollisions) Reset() {
	*x = KeywordCollisions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *KeywordCollisions) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*KeywordCollisions) ProtoMessage() {}

func (x *KeywordCollisions) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use KeywordCollisions.ProtoReflect.Descriptor instead.
func (*KeywordCollisions) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{8}
}

func (x *KeywordCollisions) GetSyntax() bool {
	if x != nil && x.Syntax != nil {
		return *x.Syntax
	}
	return false
}

func (x *KeywordCollisions) GetImport() bool {
	if x != nil && x.Import != nil {
		return *x.Import
	}
	return false
}

func (x *KeywordCollisions) GetPublic() bool {
	if x != nil && x.Public != nil {
		return *x.Public
	}
	return false
}

func (x *KeywordCollisions) GetWeak() bool {
	if x != nil && x.Weak != nil {
		return *x.Weak
	}
	return false
}

func (x *KeywordCollisions) GetPackage() bool {
	if x != nil && x.Package != nil {
		return *x.Package
	}
	return false
}

func (x *KeywordCollisions) GetString_() string {
	if x != nil && x.String_ != nil {
		return *x.String_
	}
	return ""
}

func (x *KeywordCollisions) GetBytes() []byte {
	if x != nil {
		return x.Bytes
	}
	return nil
}

func (x *KeywordCollisions) GetInt32() int32 {
	if x != nil && x.Int32 != nil {
		return *x.Int32
	}
	return 0
}

func (x *KeywordCollisions) GetInt64() int64 {
	if x != nil && x.Int64 != nil {
		return *x.Int64
	}
	return 0
}

func (x *KeywordCollisions) GetUint32() uint32 {
	if x != nil && x.Uint32 != nil {
		return *x.Uint32
	}
	return 0
}

func (x *KeywordCollisions) GetUint64() uint64 {
	if x != nil && x.Uint64 != nil {
		return *x.Uint64
	}
	return 0
}

func (x *KeywordCollisions) GetSint32() int32 {
	if x != nil && x.Sint32 != nil {
		return *x.Sint32
	}
	return 0
}

func (x *KeywordCollisions) GetSint64() int64 {
	if x != nil && x.Sint64 != nil {
		return *x.Sint64
	}
	return 0
}

func (x *KeywordCollisions) GetFixed32() uint32 {
	if x != nil && x.Fixed32 != nil {
		return *x.Fixed32
	}
	return 0
}

func (x *KeywordCollisions) GetFixed64() uint64 {
	if x != nil && x.Fixed64 != nil {
		return *x.Fixed64
	}
	return 0
}

func (x *KeywordCollisions) GetSfixed32() int32 {
	if x != nil && x.Sfixed32 != nil {
		return *x.Sfixed32
	}
	return 0
}

func (x *KeywordCollisions) GetSfixed64() int64 {
	if x != nil && x.Sfixed64 != nil {
		return *x.Sfixed64
	}
	return 0
}

func (x *KeywordCollisions) GetBool() bool {
	if x != nil && x.Bool != nil {
		return *x.Bool
	}
	return false
}

func (x *KeywordCollisions) GetFloat() float32 {
	if x != nil && x.Float != nil {
		return *x.Float
	}
	return 0
}

func (x *KeywordCollisions) GetDouble() float64 {
	if x != nil && x.Double != nil {
		return *x.Double
	}
	return 0
}

func (x *KeywordCollisions) GetOptional() bool {
	if x != nil && x.Optional != nil {
		return *x.Optional
	}
	return false
}

func (x *KeywordCollisions) GetRepeated() bool {
	if x != nil && x.Repeated != nil {
		return *x.Repeated
	}
	return false
}

func (x *KeywordCollisions) GetRequired() bool {
	if x != nil && x.Required != nil {
		return *x.Required
	}
	return false
}

func (x *KeywordCollisions) GetMessage() bool {
	if x != nil && x.Message != nil {
		return *x.Message
	}
	return false
}

func (x *KeywordCollisions) GetEnum() bool {
	if x != nil && x.Enum != nil {
		return *x.Enum
	}
	return false
}

func (x *KeywordCollisions) GetService() bool {
	if x != nil && x.Service != nil {
		return *x.Service
	}
	return false
}

func (x *KeywordCollisions) GetRpc() bool {
	if x != nil && x.Rpc != nil {
		return *x.Rpc
	}
	return false
}

func (x *KeywordCollisions) GetOption() bool {
	if x != nil && x.Option != nil {
		return *x.Option
	}
	return false
}

func (x *KeywordCollisions) GetExtend() bool {
	if x != nil && x.Extend != nil {
		return *x.Extend
	}
	return false
}

func (x *KeywordCollisions) GetExtensions() bool {
	if x != nil && x.Extensions != nil {
		return *x.Extensions
	}
	return false
}

func (x *KeywordCollisions) GetReserved() bool {
	if x != nil && x.Reserved != nil {
		return *x.Reserved
	}
	return false
}

func (x *KeywordCollisions) GetTo() bool {
	if x != nil && x.To != nil {
		return *x.To
	}
	return false
}

func (x *KeywordCollisions) GetTrue() int32 {
	if x != nil && x.True != nil {
		return *x.True
	}
	return 0
}

func (x *KeywordCollisions) GetFalse() int32 {
	if x != nil && x.False != nil {
		return *x.False
	}
	return 0
}

func (x *KeywordCollisions) GetDefault() int32 {
	if x != nil && x.Default != nil {
		return *x.Default
	}
	return 0
}

type KeywordCollisionOptions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id   *uint64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
}

func (x *KeywordCollisionOptions) Reset() {
	*x = KeywordCollisionOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *KeywordCollisionOptions) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*KeywordCollisionOptions) ProtoMessage() {}

func (x *KeywordCollisionOptions) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use KeywordCollisionOptions.ProtoReflect.Descriptor instead.
func (*KeywordCollisionOptions) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{9}
}

func (x *KeywordCollisionOptions) GetId() uint64 {
	if x != nil && x.Id != nil {
		return *x.Id
	}
	return 0
}

func (x *KeywordCollisionOptions) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

type Test_Nested struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Test_Nested) Reset() {
	*x = Test_Nested{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Test_Nested) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Test_Nested) ProtoMessage() {}

func (x *Test_Nested) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Test_Nested.ProtoReflect.Descriptor instead.
func (*Test_Nested) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{1, 1}
}

type Test_Nested_XNestedNested struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Test_Nested_XNestedNested) Reset() {
	*x = Test_Nested_XNestedNested{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Test_Nested_XNestedNested) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Test_Nested_XNestedNested) ProtoMessage() {}

func (x *Test_Nested_XNestedNested) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Test_Nested_XNestedNested.ProtoReflect.Descriptor instead.
func (*Test_Nested_XNestedNested) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{1, 1, 0}
}

type Test_Nested_XNestedNested_NestedNestedNested struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Test *Test `protobuf:"bytes,1,opt,name=Test" json:"Test,omitempty"`
}

func (x *Test_Nested_XNestedNested_NestedNestedNested) Reset() {
	*x = Test_Nested_XNestedNested_NestedNestedNested{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Test_Nested_XNestedNested_NestedNestedNested) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Test_Nested_XNestedNested_NestedNestedNested) ProtoMessage() {}

func (x *Test_Nested_XNestedNested_NestedNestedNested) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Test_Nested_XNestedNested_NestedNestedNested.ProtoReflect.Descriptor instead.
func (*Test_Nested_XNestedNested_NestedNestedNested) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{1, 1, 0, 0}
}

func (x *Test_Nested_XNestedNested_NestedNestedNested) GetTest() *Test {
	if x != nil {
		return x.Test
	}
	return nil
}

type Validator_Permission struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Action *Validator_Action `protobuf:"varint,1,opt,name=action,enum=foo.bar.Validator_Action" json:"action,omitempty"`
	Entity *string           `protobuf:"bytes,2,opt,name=entity" json:"entity,omitempty"`
}

func (x *Validator_Permission) Reset() {
	*x = Validator_Permission{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Validator_Permission) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Validator_Permission) ProtoMessage() {}

func (x *Validator_Permission) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Validator_Permission.ProtoReflect.Descriptor instead.
func (*Validator_Permission) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{5, 0}
}

func (x *Validator_Permission) GetAction() Validator_Action {
	if x != nil && x.Action != nil {
		return *x.Action
	}
	return Validator_LOGIN
}

func (x *Validator_Permission) GetEntity() string {
	if x != nil && x.Entity != nil {
		return *x.Entity
	}
	return ""
}

type Rule_StringRule struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pattern    *string `protobuf:"bytes,1,opt,name=pattern" json:"pattern,omitempty"`
	AllowEmpty *bool   `protobuf:"varint,2,opt,name=allow_empty,json=allowEmpty" json:"allow_empty,omitempty"`
	MinLen     *int32  `protobuf:"varint,3,opt,name=min_len,json=minLen" json:"min_len,omitempty"`
	MaxLen     *int32  `protobuf:"varint,4,opt,name=max_len,json=maxLen" json:"max_len,omitempty"`
}

func (x *Rule_StringRule) Reset() {
	*x = Rule_StringRule{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Rule_StringRule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Rule_StringRule) ProtoMessage() {}

func (x *Rule_StringRule) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Rule_StringRule.ProtoReflect.Descriptor instead.
func (*Rule_StringRule) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{6, 0}
}

func (x *Rule_StringRule) GetPattern() string {
	if x != nil && x.Pattern != nil {
		return *x.Pattern
	}
	return ""
}

func (x *Rule_StringRule) GetAllowEmpty() bool {
	if x != nil && x.AllowEmpty != nil {
		return *x.AllowEmpty
	}
	return false
}

func (x *Rule_StringRule) GetMinLen() int32 {
	if x != nil && x.MinLen != nil {
		return *x.MinLen
	}
	return 0
}

func (x *Rule_StringRule) GetMaxLen() int32 {
	if x != nil && x.MaxLen != nil {
		return *x.MaxLen
	}
	return 0
}

type Rule_IntRule struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MinVal *int64  `protobuf:"varint,1,opt,name=min_val,json=minVal" json:"min_val,omitempty"`
	MaxVal *uint64 `protobuf:"varint,2,opt,name=max_val,json=maxVal" json:"max_val,omitempty"`
}

func (x *Rule_IntRule) Reset() {
	*x = Rule_IntRule{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Rule_IntRule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Rule_IntRule) ProtoMessage() {}

func (x *Rule_IntRule) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Rule_IntRule.ProtoReflect.Descriptor instead.
func (*Rule_IntRule) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{6, 1}
}

func (x *Rule_IntRule) GetMinVal() int64 {
	if x != nil && x.MinVal != nil {
		return *x.MinVal
	}
	return 0
}

func (x *Rule_IntRule) GetMaxVal() uint64 {
	if x != nil && x.MaxVal != nil {
		return *x.MaxVal
	}
	return 0
}

type Rule_RepeatedRule struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AllowEmpty *bool  `protobuf:"varint,1,opt,name=allow_empty,json=allowEmpty" json:"allow_empty,omitempty"`
	MinItems   *int32 `protobuf:"varint,2,opt,name=min_items,json=minItems" json:"min_items,omitempty"`
	MaxItems   *int32 `protobuf:"varint,3,opt,name=max_items,json=maxItems" json:"max_items,omitempty"`
	Items      *Rule  `protobuf:"bytes,4,opt,name=items" json:"items,omitempty"`
}

func (x *Rule_RepeatedRule) Reset() {
	*x = Rule_RepeatedRule{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Rule_RepeatedRule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Rule_RepeatedRule) ProtoMessage() {}

func (x *Rule_RepeatedRule) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Rule_RepeatedRule.ProtoReflect.Descriptor instead.
func (*Rule_RepeatedRule) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{6, 2}
}

func (x *Rule_RepeatedRule) GetAllowEmpty() bool {
	if x != nil && x.AllowEmpty != nil {
		return *x.AllowEmpty
	}
	return false
}

func (x *Rule_RepeatedRule) GetMinItems() int32 {
	if x != nil && x.MinItems != nil {
		return *x.MinItems
	}
	return 0
}

func (x *Rule_RepeatedRule) GetMaxItems() int32 {
	if x != nil && x.MaxItems != nil {
		return *x.MaxItems
	}
	return 0
}

func (x *Rule_RepeatedRule) GetItems() *Rule {
	if x != nil {
		return x.Items
	}
	return nil
}

type Rule_FloatRule struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MinVal *float64 `protobuf:"fixed64,1,opt,name=min_val,json=minVal" json:"min_val,omitempty"`
	MaxVal *float64 `protobuf:"fixed64,2,opt,name=max_val,json=maxVal" json:"max_val,omitempty"`
}

func (x *Rule_FloatRule) Reset() {
	*x = Rule_FloatRule{}
	if protoimpl.UnsafeEnabled {
		mi := &file_desc_test_complex_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Rule_FloatRule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Rule_FloatRule) ProtoMessage() {}

func (x *Rule_FloatRule) ProtoReflect() protoreflect.Message {
	mi := &file_desc_test_complex_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Rule_FloatRule.ProtoReflect.Descriptor instead.
func (*Rule_FloatRule) Descriptor() ([]byte, []int) {
	return file_desc_test_complex_proto_rawDescGZIP(), []int{6, 3}
}

func (x *Rule_FloatRule) GetMinVal() float64 {
	if x != nil && x.MinVal != nil {
		return *x.MinVal
	}
	return 0
}

func (x *Rule_FloatRule) GetMaxVal() float64 {
	if x != nil && x.MaxVal != nil {
		return *x.MaxVal
	}
	return 0
}

var file_desc_test_complex_proto_extTypes = []protoimpl.ExtensionInfo{
	{
		ExtendedType:  (*descriptor.ExtensionRangeOptions)(nil),
		ExtensionType: (*string)(nil),
		Field:         20000,
		Name:          "foo.bar.label",
		Tag:           "bytes,20000,opt,name=label",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.MessageOptions)(nil),
		ExtensionType: ([]*Test)(nil),
		Field:         20002,
		Name:          "foo.bar.rept",
		Tag:           "bytes,20002,rep,name=rept",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.MessageOptions)(nil),
		ExtensionType: (*Test_Nested_XNestedNested_EEE)(nil),
		Field:         20010,
		Name:          "foo.bar.eee",
		Tag:           "varint,20010,opt,name=eee,enum=foo.bar.Test_Nested_XNestedNested_EEE",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.MessageOptions)(nil),
		ExtensionType: (*Another)(nil),
		Field:         20020,
		Name:          "foo.bar.a",
		Tag:           "bytes,20020,opt,name=a",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.MessageOptions)(nil),
		ExtensionType: (*MessageWithMap)(nil),
		Field:         20030,
		Name:          "foo.bar.map_vals",
		Tag:           "bytes,20030,opt,name=map_vals",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.MethodOptions)(nil),
		ExtensionType: (*Validator)(nil),
		Field:         12345,
		Name:          "foo.bar.validator",
		Tag:           "bytes,12345,opt,name=validator",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*Rule)(nil),
		Field:         1234,
		Name:          "foo.bar.rules",
		Tag:           "bytes,1234,opt,name=rules",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20001,
		Name:          "foo.bar.syntax",
		Tag:           "varint,20001,opt,name=syntax",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20002,
		Name:          "foo.bar.import",
		Tag:           "varint,20002,opt,name=import",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20003,
		Name:          "foo.bar.public",
		Tag:           "varint,20003,opt,name=public",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20004,
		Name:          "foo.bar.weak",
		Tag:           "varint,20004,opt,name=weak",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20005,
		Name:          "foo.bar.package",
		Tag:           "varint,20005,opt,name=package",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*string)(nil),
		Field:         20006,
		Name:          "foo.bar.string",
		Tag:           "bytes,20006,opt,name=string",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: ([]byte)(nil),
		Field:         20007,
		Name:          "foo.bar.bytes",
		Tag:           "bytes,20007,opt,name=bytes",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         20008,
		Name:          "foo.bar.int32",
		Tag:           "varint,20008,opt,name=int32",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         20009,
		Name:          "foo.bar.int64",
		Tag:           "varint,20009,opt,name=int64",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         20010,
		Name:          "foo.bar.uint32",
		Tag:           "varint,20010,opt,name=uint32",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         20011,
		Name:          "foo.bar.uint64",
		Tag:           "varint,20011,opt,name=uint64",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         20012,
		Name:          "foo.bar.sint32",
		Tag:           "zigzag32,20012,opt,name=sint32",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         20013,
		Name:          "foo.bar.sint64",
		Tag:           "zigzag64,20013,opt,name=sint64",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         20014,
		Name:          "foo.bar.fixed32",
		Tag:           "fixed32,20014,opt,name=fixed32",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         20015,
		Name:          "foo.bar.fixed64",
		Tag:           "fixed64,20015,opt,name=fixed64",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         20016,
		Name:          "foo.bar.sfixed32",
		Tag:           "fixed32,20016,opt,name=sfixed32",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         20017,
		Name:          "foo.bar.sfixed64",
		Tag:           "fixed64,20017,opt,name=sfixed64",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20018,
		Name:          "foo.bar.bool",
		Tag:           "varint,20018,opt,name=bool",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*float32)(nil),
		Field:         20019,
		Name:          "foo.bar.float",
		Tag:           "fixed32,20019,opt,name=float",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*float64)(nil),
		Field:         20020,
		Name:          "foo.bar.double",
		Tag:           "fixed64,20020,opt,name=double",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20021,
		Name:          "foo.bar.optional",
		Tag:           "varint,20021,opt,name=optional",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20022,
		Name:          "foo.bar.repeated",
		Tag:           "varint,20022,opt,name=repeated",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20023,
		Name:          "foo.bar.required",
		Tag:           "varint,20023,opt,name=required",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20024,
		Name:          "foo.bar.message",
		Tag:           "varint,20024,opt,name=message",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20025,
		Name:          "foo.bar.enum",
		Tag:           "varint,20025,opt,name=enum",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20026,
		Name:          "foo.bar.service",
		Tag:           "varint,20026,opt,name=service",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20027,
		Name:          "foo.bar.rpc",
		Tag:           "varint,20027,opt,name=rpc",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20028,
		Name:          "foo.bar.option",
		Tag:           "varint,20028,opt,name=option",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20029,
		Name:          "foo.bar.extend",
		Tag:           "varint,20029,opt,name=extend",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20030,
		Name:          "foo.bar.extensions",
		Tag:           "varint,20030,opt,name=extensions",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20031,
		Name:          "foo.bar.reserved",
		Tag:           "varint,20031,opt,name=reserved",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         20032,
		Name:          "foo.bar.to",
		Tag:           "varint,20032,opt,name=to",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         20033,
		Name:          "foo.bar.true",
		Tag:           "varint,20033,opt,name=true",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         20034,
		Name:          "foo.bar.false",
		Tag:           "varint,20034,opt,name=false",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         20035,
		Name:          "foo.bar.default",
		Tag:           "varint,20035,opt,name=default",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.FieldOptions)(nil),
		ExtensionType: (*KeywordCollisions)(nil),
		Field:         20036,
		Name:          "foo.bar.boom",
		Tag:           "bytes,20036,opt,name=boom",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*descriptor.MessageOptions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         20003,
		Name:          "foo.bar.Test.Nested.fooblez",
		Tag:           "varint,20003,opt,name=fooblez",
		Filename:      "desc_test_complex.proto",
	},
	{
		ExtendedType:  (*Test)(nil),
		ExtensionType: (*string)(nil),
		Field:         100,
		Name:          "foo.bar.Test.Nested._NestedNested._garblez",
		Tag:           "bytes,100,opt,name=_garblez",
		Filename:      "desc_test_complex.proto",
	},
}

// Extension fields to descriptor.ExtensionRangeOptions.
var (
	// optional string label = 20000;
	E_Label = &file_desc_test_complex_proto_extTypes[0]
)

// Extension fields to descriptor.MessageOptions.
var (
	// repeated foo.bar.Test rept = 20002;
	E_Rept = &file_desc_test_complex_proto_extTypes[1]
	// optional foo.bar.Test.Nested._NestedNested.EEE eee = 20010;
	E_Eee = &file_desc_test_complex_proto_extTypes[2]
	// optional foo.bar.Another a = 20020;
	E_A = &file_desc_test_complex_proto_extTypes[3]
	// optional foo.bar.MessageWithMap map_vals = 20030;
	E_MapVals = &file_desc_test_complex_proto_extTypes[4]
	// optional int32 fooblez = 20003;
	E_Test_Nested_Fooblez = &file_desc_test_complex_proto_extTypes[43]
)

// Extension fields to descriptor.MethodOptions.
var (
	// optional foo.bar.Validator validator = 12345;
	E_Validator = &file_desc_test_complex_proto_extTypes[5]
)

// Extension fields to descriptor.FieldOptions.
var (
	// optional foo.bar.Rule rules = 1234;
	E_Rules = &file_desc_test_complex_proto_extTypes[6]
	// optional bool syntax = 20001;
	E_Syntax = &file_desc_test_complex_proto_extTypes[7]
	// optional bool import = 20002;
	E_Import = &file_desc_test_complex_proto_extTypes[8]
	// optional bool public = 20003;
	E_Public = &file_desc_test_complex_proto_extTypes[9]
	// optional bool weak = 20004;
	E_Weak = &file_desc_test_complex_proto_extTypes[10]
	// optional bool package = 20005;
	E_Package = &file_desc_test_complex_proto_extTypes[11]
	// optional string string = 20006;
	E_String = &file_desc_test_complex_proto_extTypes[12]
	// optional bytes bytes = 20007;
	E_Bytes = &file_desc_test_complex_proto_extTypes[13]
	// optional int32 int32 = 20008;
	E_Int32 = &file_desc_test_complex_proto_extTypes[14]
	// optional int64 int64 = 20009;
	E_Int64 = &file_desc_test_complex_proto_extTypes[15]
	// optional uint32 uint32 = 20010;
	E_Uint32 = &file_desc_test_complex_proto_extTypes[16]
	// optional uint64 uint64 = 20011;
	E_Uint64 = &file_desc_test_complex_proto_extTypes[17]
	// optional sint32 sint32 = 20012;
	E_Sint32 = &file_desc_test_complex_proto_extTypes[18]
	// optional sint64 sint64 = 20013;
	E_Sint64 = &file_desc_test_complex_proto_extTypes[19]
	// optional fixed32 fixed32 = 20014;
	E_Fixed32 = &file_desc_test_complex_proto_extTypes[20]
	// optional fixed64 fixed64 = 20015;
	E_Fixed64 = &file_desc_test_complex_proto_extTypes[21]
	// optional sfixed32 sfixed32 = 20016;
	E_Sfixed32 = &file_desc_test_complex_proto_extTypes[22]
	// optional sfixed64 sfixed64 = 20017;
	E_Sfixed64 = &file_desc_test_complex_proto_extTypes[23]
	// optional bool bool = 20018;
	E_Bool = &file_desc_test_complex_proto_extTypes[24]
	// optional float float = 20019;
	E_Float = &file_desc_test_complex_proto_extTypes[25]
	// optional double double = 20020;
	E_Double = &file_desc_test_complex_proto_extTypes[26]
	// optional bool optional = 20021;
	E_Optional = &file_desc_test_complex_proto_extTypes[27]
	// optional bool repeated = 20022;
	E_Repeated = &file_desc_test_complex_proto_extTypes[28]
	// optional bool required = 20023;
	E_Required = &file_desc_test_complex_proto_extTypes[29]
	// optional bool message = 20024;
	E_Message = &file_desc_test_complex_proto_extTypes[30]
	// optional bool enum = 20025;
	E_Enum = &file_desc_test_complex_proto_extTypes[31]
	// optional bool service = 20026;
	E_Service = &file_desc_test_complex_proto_extTypes[32]
	// optional bool rpc = 20027;
	E_Rpc = &file_desc_test_complex_proto_extTypes[33]
	// optional bool option = 20028;
	E_Option = &file_desc_test_complex_proto_extTypes[34]
	// optional bool extend = 20029;
	E_Extend = &file_desc_test_complex_proto_extTypes[35]
	// optional bool extensions = 20030;
	E_Extensions = &file_desc_test_complex_proto_extTypes[36]
	// optional bool reserved = 20031;
	E_Reserved = &file_desc_test_complex_proto_extTypes[37]
	// optional bool to = 20032;
	E_To = &file_desc_test_complex_proto_extTypes[38]
	// optional int32 true = 20033;
	E_True = &file_desc_test_complex_proto_extTypes[39]
	// optional int32 false = 20034;
	E_False = &file_desc_test_complex_proto_extTypes[40]
	// optional int32 default = 20035;
	E_Default = &file_desc_test_complex_proto_extTypes[41]
	// optional foo.bar.KeywordCollisions boom = 20036;
	E_Boom = &file_desc_test_complex_proto_extTypes[42]
)

// Extension fields to Test.
var (
	// optional string _garblez = 100;
	E_Test_Nested_XNestedNested_XGarblez = &file_desc_test_complex_proto_extTypes[44]
)

var File_desc_test_complex_proto protoreflect.FileDescriptor

var file_desc_test_complex_proto_rawDesc = []byte{
	0x0a, 0x17, 0x64, 0x65, 0x73, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70,
	0x6c, 0x65, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x66, 0x6f, 0x6f, 0x2e, 0x62,
	0x61, 0x72, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2c, 0x0a, 0x06, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x12,
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02,
	0x69, 0x64, 0x22, 0xf5, 0x04, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x66,
	0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x7c, 0x66, 0x6f, 0x6f, 0x7c, 0x12,
	0x14, 0x0a, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05,
	0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x1d, 0x0a, 0x01, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0f, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c,
	0x65, 0x52, 0x01, 0x73, 0x12, 0x1d, 0x0a, 0x01, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x0f, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
	0x52, 0x01, 0x72, 0x12, 0x22, 0x0a, 0x01, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
	0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x01, 0x6d, 0x12, 0x34, 0x0a, 0x01, 0x62, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x0c, 0x3a, 0x26, 0x5c, 0x30, 0x30, 0x30, 0x5c, 0x30, 0x30, 0x31, 0x5c, 0x30, 0x30, 0x32,
	0x5c, 0x30, 0x30, 0x33, 0x5c, 0x30, 0x30, 0x34, 0x5c, 0x30, 0x30, 0x35, 0x5c, 0x30, 0x30, 0x36,
	0x5c, 0x30, 0x30, 0x37, 0x66, 0x75, 0x62, 0x61, 0x72, 0x21, 0x52, 0x01, 0x62, 0x1a, 0x34, 0x0a,
	0x06, 0x4d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x1a, 0xa1, 0x02, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0xd9,
	0x01, 0x0a, 0x0d, 0x5f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
	0x1a, 0x49, 0x0a, 0x12, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x54,
	0x65, 0x73, 0x74, 0x52, 0x04, 0x54, 0x65, 0x73, 0x74, 0x3a, 0x10, 0x92, 0xe2, 0x09, 0x0c, 0x0a,
	0x03, 0x68, 0x6f, 0x6f, 0xa2, 0x06, 0x04, 0x73, 0x70, 0x6f, 0x6f, 0x22, 0x3d, 0x0a, 0x03, 0x45,
	0x45, 0x45, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x31,
	0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x32, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x33,
	0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x34, 0x10, 0x04, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x35,
	0x10, 0x05, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x36, 0x10, 0x06, 0x32, 0x28, 0x0a, 0x08, 0x5f, 0x67,
	0x61, 0x72, 0x62, 0x6c, 0x65, 0x7a, 0x12, 0x0d, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72,
	0x2e, 0x54, 0x65, 0x73, 0x74, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x72,
	0x62, 0x6c, 0x65, 0x7a, 0x3a, 0x14, 0x98, 0xe2, 0x09, 0xf5, 0x4e, 0x92, 0xe2, 0x09, 0x0b, 0x0a,
	0x03, 0x67, 0x6f, 0x6f, 0xa2, 0x06, 0x03, 0x62, 0x6f, 0x6f, 0x32, 0x3b, 0x0a, 0x07, 0x66, 0x6f,
	0x6f, 0x62, 0x6c, 0x65, 0x7a, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
	0x66, 0x6f, 0x6f, 0x62, 0x6c, 0x65, 0x7a, 0x2a, 0x05, 0x08, 0x64, 0x10, 0xc9, 0x01, 0x2a, 0x10,
	0x08, 0xf9, 0x01, 0x10, 0xfa, 0x01, 0x1a, 0x08, 0x82, 0xe2, 0x09, 0x04, 0x6a, 0x61, 0x7a, 0x7a,
	0x2a, 0x10, 0x08, 0xac, 0x02, 0x10, 0xdf, 0x02, 0x1a, 0x08, 0x82, 0xe2, 0x09, 0x04, 0x6a, 0x61,
	0x7a, 0x7a, 0x2a, 0x10, 0x08, 0xf4, 0x03, 0x10, 0xa7, 0x04, 0x1a, 0x08, 0x82, 0xe2, 0x09, 0x04,
	0x6a, 0x61, 0x7a, 0x7a, 0x2a, 0x14, 0x08, 0xa0, 0x9c, 0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02,
	0x1a, 0x08, 0x82, 0xe2, 0x09, 0x04, 0x6a, 0x61, 0x7a, 0x7a, 0x22, 0x3f, 0x0a, 0x17, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0c, 0x10,
	0x10, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x4a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80,
	0x80, 0x02, 0x52, 0x01, 0x41, 0x52, 0x01, 0x42, 0x52, 0x01, 0x43, 0x22, 0x91, 0x01, 0x0a, 0x0e,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x61, 0x70, 0x12, 0x35,
	0x0a, 0x04, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66,
	0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x69,
	0x74, 0x68, 0x4d, 0x61, 0x70, 0x2e, 0x56, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x04, 0x76, 0x61, 0x6c, 0x73, 0x1a, 0x48, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x53, 0x69,
	0x6d, 0x70, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
	0xd0, 0x02, 0x0a, 0x07, 0x41, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x74,
	0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x66, 0x6f, 0x6f, 0x2e,
	0x62, 0x61, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x04, 0x74, 0x65, 0x73, 0x74, 0x12, 0x3c,
	0x0a, 0x03, 0x66, 0x66, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x66, 0x6f,
	0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
	0x64, 0x2e, 0x5f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e,
	0x45, 0x45, 0x45, 0x3a, 0x02, 0x56, 0x31, 0x52, 0x03, 0x66, 0x66, 0x66, 0x3a, 0xe3, 0x01, 0x92,
	0xe2, 0x09, 0x23, 0x0a, 0x03, 0x61, 0x62, 0x63, 0x10, 0x01, 0x10, 0x02, 0x10, 0x03, 0x1a, 0x07,
	0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x10, 0x7b, 0x22, 0x03, 0x0a, 0x01, 0x66, 0x22, 0x03, 0x0a, 0x01,
	0x73, 0x22, 0x03, 0x10, 0xc8, 0x03, 0x92, 0xe2, 0x09, 0x1f, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x10,
	0x03, 0x10, 0x02, 0x10, 0x01, 0x1a, 0x08, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x10, 0xc1, 0x02, 0x22,
	0x03, 0x0a, 0x01, 0x67, 0x22, 0x03, 0x0a, 0x01, 0x73, 0x92, 0xe2, 0x09, 0x05, 0x0a, 0x03, 0x64,
	0x65, 0x66, 0xd0, 0xe2, 0x09, 0x01, 0xa2, 0xe3, 0x09, 0x02, 0x10, 0x00, 0xa2, 0xe3, 0x09, 0x15,
	0x0a, 0x13, 0x2a, 0x07, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x10, 0x64, 0x2a, 0x08, 0x0a, 0x03, 0x62,
	0x61, 0x72, 0x10, 0xc8, 0x01, 0xa2, 0xe3, 0x09, 0x07, 0x0a, 0x05, 0x0a, 0x03, 0x6d, 0x26, 0x6d,
	0xa2, 0xe3, 0x09, 0x0a, 0x0a, 0x08, 0x1a, 0x06, 0x0a, 0x04, 0x79, 0x6f, 0x6c, 0x6f, 0xa2, 0xe3,
	0x09, 0x08, 0x0a, 0x06, 0x1a, 0x04, 0x10, 0xcd, 0x83, 0x06, 0xa2, 0xe3, 0x09, 0x04, 0x0a, 0x02,
	0x10, 0x01, 0xa2, 0xe3, 0x09, 0x04, 0x0a, 0x02, 0x10, 0x02, 0xa2, 0xe3, 0x09, 0x0b, 0x0a, 0x09,
	0xa2, 0x06, 0x06, 0x77, 0x68, 0x6f, 0x61, 0x68, 0x21, 0xf2, 0xe3, 0x09, 0x06, 0x0a, 0x04, 0x0a,
	0x00, 0x12, 0x00, 0xf2, 0xe3, 0x09, 0x09, 0x0a, 0x07, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x00,
	0xf2, 0xe3, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x12, 0x05, 0x0a, 0x03, 0x62,
	0x61, 0x7a, 0x22, 0xf3, 0x01, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
	0x12, 0x24, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74,
	0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x6f,
	0x2e, 0x62, 0x61, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x50,
	0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x57, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x28,
	0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x4f, 0x47, 0x49,
	0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a,
	0x05, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x22, 0xe8, 0x04, 0x0a, 0x04, 0x52, 0x75, 0x6c,
	0x65, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x52, 0x75, 0x6c, 0x65,
	0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61,
	0x72, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52,
	0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12,
	0x29, 0x0a, 0x03, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66,
	0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x52,
	0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x03, 0x69, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x66, 0x6c,
	0x6f, 0x61, 0x74, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x17, 0x2e,
	0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x46, 0x6c, 0x6f,
	0x61, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x72,
	0x75, 0x6c, 0x65, 0x1a, 0x79, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c,
	0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x61,
	0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07,
	0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d,
	0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x1a, 0x3b,
	0x0a, 0x07, 0x49, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e,
	0x5f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x56,
	0x61, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x1a, 0x8e, 0x01, 0x0a, 0x0c,
	0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
	0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x1b, 0x0a,
	0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61,
	0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d,
	0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x23, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72,
	0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x3d, 0x0a, 0x09,
	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e,
	0x5f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x56,
	0x61, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x72,
	0x75, 0x6c, 0x65, 0x22, 0x6d, 0x0a, 0x0f, 0x49, 0x73, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
	0x7a, 0x65, 0x64, 0x52, 0x65, 0x71, 0x12, 0x5a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
	0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x3e, 0x92, 0x4d, 0x3b, 0x12, 0x39, 0x10,
	0x01, 0x22, 0x35, 0x0a, 0x33, 0x0a, 0x31, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x74, 0x65,
	0x61, 0x6d, 0x3a, 0x28, 0x3f, 0x3a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x7c, 0x6c, 0x64, 0x61, 0x70,
	0x29, 0x29, 0x7c, 0x75, 0x73, 0x65, 0x72, 0x29, 0x3a, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75,
	0x6d, 0x3a, 0x5d, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
	0x74, 0x73, 0x22, 0xdf, 0x06, 0x0a, 0x11, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x6f,
	0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74,
	0x61, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78,
	0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x06, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c,
	0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x12, 0x12, 0x0a, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,
	0x77, 0x65, 0x61, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x16,
	0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05,
	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x74,
	0x33, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74,
	0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
	0x12, 0x16, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x74,
	0x33, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12,
	0x52, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x78, 0x65,
	0x64, 0x33, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x07, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64,
	0x33, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0f, 0x20,
	0x01, 0x28, 0x06, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1a, 0x0a, 0x08,
	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x08,
	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x66, 0x69, 0x78,
	0x65, 0x64, 0x36, 0x34, 0x18, 0x11, 0x20, 0x01, 0x28, 0x10, 0x52, 0x08, 0x73, 0x66, 0x69, 0x78,
	0x65, 0x64, 0x36, 0x34, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x12, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61,
	0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x16,
	0x0a, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06,
	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x61, 0x6c, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x16,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1a,
	0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x19, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69,
	0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x03, 0x72, 0x70, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1c,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06,
	0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78,
	0x74, 0x65, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
	0x6e, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
	0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
	0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x74, 0x6f,
	0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
	0x74, 0x72, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x18, 0x22, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65,
	0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, 0x65, 0x66,
	0x61, 0x75, 0x6c, 0x74, 0x22, 0x9a, 0x03, 0x0a, 0x17, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64,
	0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0xd2, 0x01, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0xc1, 0x01,
	0x88, 0xe2, 0x09, 0x01, 0x90, 0xe2, 0x09, 0x01, 0x98, 0xe2, 0x09, 0x01, 0xa0, 0xe2, 0x09, 0x01,
	0xa8, 0xe2, 0x09, 0x01, 0xb2, 0xe2, 0x09, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0xba, 0xe2,
	0x09, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x90, 0xe3, 0x09, 0x01, 0x9d, 0xe3, 0x09, 0xc3, 0xf5,
	0x48, 0x40, 0xa1, 0xe3, 0x09, 0x6e, 0x86, 0x1b, 0xf0, 0xf9, 0x21, 0x09, 0x40, 0xc0, 0xe2, 0x09,
	0x20, 0xc8, 0xe2, 0x09, 0x40, 0xd0, 0xe2, 0x09, 0x80, 0x19, 0xd8, 0xe2, 0x09, 0x80, 0x32, 0xe0,
	0xe2, 0x09, 0x3f, 0xe8, 0xe2, 0x09, 0x7f, 0xf5, 0xe2, 0x09, 0xa0, 0x0c, 0x00, 0x00, 0xf9, 0xe2,
	0x09, 0x40, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xe3, 0x09, 0x60, 0xf3, 0xff, 0xff,
	0x89, 0xe3, 0x09, 0xc0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa8, 0xe3, 0x09, 0x01, 0xb0,
	0xe3, 0x09, 0x01, 0xb8, 0xe3, 0x09, 0x01, 0xc0, 0xe3, 0x09, 0x01, 0xc8, 0xe3, 0x09, 0x01, 0xd0,
	0xe3, 0x09, 0x01, 0xd8, 0xe3, 0x09, 0x01, 0xe0, 0xe3, 0x09, 0x01, 0xe8, 0xe3, 0x09, 0x01, 0xf0,
	0xe3, 0x09, 0x01, 0xf8, 0xe3, 0x09, 0x01, 0x80, 0xe4, 0x09, 0x01, 0x88, 0xe4, 0x09, 0x6f, 0x90,
	0xe4, 0x09, 0x91, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x98, 0xe4, 0x09, 0xde,
	0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0xa9, 0x01, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x94, 0x01, 0xa2, 0xe4, 0x09, 0x8f, 0x01, 0x08, 0x01, 0x10, 0x01,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x32, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x05,
	0x62, 0x79, 0x74, 0x65, 0x73, 0x40, 0x20, 0x48, 0x40, 0x50, 0x80, 0x19, 0x58, 0x80, 0x32, 0x60,
	0x3f, 0x68, 0x7f, 0x75, 0xa0, 0x0c, 0x00, 0x00, 0x79, 0x40, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x85, 0x01, 0x60, 0xf3, 0xff, 0xff, 0x89, 0x01, 0xc0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0x90, 0x01, 0x01, 0x9d, 0x01, 0xc3, 0xf5, 0x48, 0x40, 0xa1, 0x01, 0x6e, 0x86, 0x1b, 0xf0,
	0xf9, 0x21, 0x09, 0x40, 0xa8, 0x01, 0x01, 0xb0, 0x01, 0x01, 0xb8, 0x01, 0x01, 0xc0, 0x01, 0x01,
	0xc8, 0x01, 0x01, 0xd0, 0x01, 0x01, 0xd8, 0x01, 0x01, 0xe0, 0x01, 0x01, 0xe8, 0x01, 0x01, 0xf0,
	0x01, 0x01, 0xf8, 0x01, 0x01, 0x80, 0x02, 0x01, 0x88, 0x02, 0x6f, 0x90, 0x02, 0x91, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x98, 0x02, 0xde, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x2a, 0x78, 0x0a, 0x14, 0x45, 0x6e, 0x75, 0x6d, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x73,
	0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x05, 0x0a, 0x01, 0x58, 0x10, 0x02,
	0x12, 0x05, 0x0a, 0x01, 0x59, 0x10, 0x03, 0x12, 0x05, 0x0a, 0x01, 0x5a, 0x10, 0x04, 0x22, 0x09,
	0x08, 0xe8, 0x07, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x22, 0x0d, 0x08, 0xfe, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x10, 0x01, 0x22, 0x04, 0x08, 0x05, 0x10, 0x0a, 0x22, 0x04,
	0x08, 0x0c, 0x10, 0x0f, 0x22, 0x04, 0x08, 0x12, 0x10, 0x12, 0x22, 0x16, 0x08, 0xfb, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x10, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0x01, 0x2a, 0x01, 0x43, 0x2a, 0x01, 0x42, 0x2a, 0x01, 0x41, 0x32, 0x86, 0x01, 0x0a, 0x0f,
	0x54, 0x65, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
	0x3c, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x12, 0x0d, 0x2e, 0x66, 0x6f,
	0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x66, 0x6f, 0x6f,
	0x2e, 0x62, 0x61, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x22, 0x12, 0xca, 0x83, 0x06, 0x0e, 0x08,
	0x01, 0x12, 0x0a, 0x08, 0x00, 0x12, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a,
	0x03, 0x47, 0x65, 0x74, 0x12, 0x0d, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x54,
	0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x54, 0x65,
	0x73, 0x74, 0x22, 0x10, 0xca, 0x83, 0x06, 0x0c, 0x08, 0x01, 0x12, 0x08, 0x08, 0x01, 0x12, 0x04,
	0x75, 0x73, 0x65, 0x72, 0x3a, 0x3e, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x26, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa0, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c,
	0x61, 0x62, 0x65, 0x6c, 0x3a, 0x44, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x74, 0x12, 0x1f, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa2, 0x9c,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e,
	0x54, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x70, 0x74, 0x3a, 0x5b, 0x0a, 0x03, 0x65, 0x65,
	0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x18, 0xaa, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x66, 0x6f, 0x6f,
	0x2e, 0x62, 0x61, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
	0x2e, 0x5f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x45,
	0x45, 0x45, 0x52, 0x03, 0x65, 0x65, 0x65, 0x3a, 0x41, 0x0a, 0x01, 0x61, 0x12, 0x1f, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb4, 0x9c,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e,
	0x41, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x52, 0x01, 0x61, 0x3a, 0x55, 0x0a, 0x08, 0x6d, 0x61,
	0x70, 0x5f, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xbe, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x61, 0x70, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x56, 0x61, 0x6c,
	0x73, 0x3a, 0x51, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb9,
	0x60, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x3a, 0x43, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1d, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd2, 0x09, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61, 0x72, 0x2e, 0x52, 0x75,
	0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x37, 0x0a, 0x06, 0x73, 0x79, 0x6e,
	0x74, 0x61, 0x78, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x18, 0xa1, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74,
	0x61, 0x78, 0x3a, 0x37, 0x0a, 0x06, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1d, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa2, 0x9c, 0x01, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x37, 0x0a, 0x06, 0x70,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x3a, 0x33, 0x0a, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x1d, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x9c, 0x01, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x3a, 0x39, 0x0a, 0x07, 0x70, 0x61, 0x63,
	0x6b, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0xa5, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x61, 0x63,
	0x6b, 0x61, 0x67, 0x65, 0x3a, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa6, 0x9c,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x35, 0x0a,
	0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa7, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62,
	0x79, 0x74, 0x65, 0x73, 0x3a, 0x35, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa8, 0x9c, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x35, 0x0a, 0x05, 0x69,
	0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0xa9, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x74,
	0x36, 0x34, 0x3a, 0x37, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xaa, 0x9c, 0x01, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x37, 0x0a, 0x06, 0x75,
	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0xab, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x69,
	0x6e, 0x74, 0x36, 0x34, 0x3a, 0x37, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xac, 0x9c,
	0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x37, 0x0a,
	0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xad, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06,
	0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x39, 0x0a, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
	0x32, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x18, 0xae, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
	0x32, 0x3a, 0x39, 0x0a, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xaf, 0x9c, 0x01, 0x20,
	0x01, 0x28, 0x06, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x3b, 0x0a, 0x08,
	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb0, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52,
	0x08, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x3b, 0x0a, 0x08, 0x73, 0x66, 0x69,
	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb1, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x10, 0x52, 0x08, 0x73, 0x66,
	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x33, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x1d,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb2, 0x9c,
	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x3a, 0x35, 0x0a, 0x05, 0x66,
	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0xb3, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x66, 0x6c, 0x6f,
	0x61, 0x74, 0x3a, 0x37, 0x0a, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb4, 0x9c, 0x01, 0x20,
	0x01, 0x28, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x3b, 0x0a, 0x08, 0x6f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb5, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x3a, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65,
	0x61, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0xb6, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70,
	0x65, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
	0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x18, 0xb7, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
	0x65, 0x64, 0x3a, 0x39, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb8, 0x9c, 0x01,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x33, 0x0a,
	0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb9, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x65, 0x6e,
	0x75, 0x6d, 0x3a, 0x39, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xba, 0x9c, 0x01,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x31, 0x0a,
	0x03, 0x72, 0x70, 0x63, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0xbb, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x72, 0x70, 0x63,
	0x3a, 0x37, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
	0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xbc, 0x9c, 0x01, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x37, 0x0a, 0x06, 0x65, 0x78, 0x74,
	0x65, 0x6e, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x18, 0xbd, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x74, 0x65,
	0x6e, 0x64, 0x3a, 0x3f, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
	0xbe, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
	0x6f, 0x6e, 0x73, 0x3a, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12,
	0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xbf,
	0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
	0x3a, 0x2f, 0x0a, 0x02, 0x74, 0x6f, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xc0, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x74,
	0x6f, 0x3a, 0x33, 0x0a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c,
	0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xc1, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x04, 0x74, 0x72, 0x75, 0x65, 0x3a, 0x35, 0x0a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x12,
	0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xc2,
	0x9c, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3a, 0x39, 0x0a,
	0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xc3, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x4f, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6d,
	0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
	0xc4, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6f, 0x6f, 0x2e, 0x62, 0x61,
	0x72, 0x2e, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x73, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6d, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74,
	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x68, 0x75, 0x6d, 0x70, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72,
	0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
}

var (
	file_desc_test_complex_proto_rawDescOnce sync.Once
	file_desc_test_complex_proto_rawDescData = file_desc_test_complex_proto_rawDesc
)

func file_desc_test_complex_proto_rawDescGZIP() []byte {
	file_desc_test_complex_proto_rawDescOnce.Do(func() {
		file_desc_test_complex_proto_rawDescData = protoimpl.X.CompressGZIP(file_desc_test_complex_proto_rawDescData)
	})
	return file_desc_test_complex_proto_rawDescData
}

var file_desc_test_complex_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_desc_test_complex_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_desc_test_complex_proto_goTypes = []interface{}{
	(EnumWithReservations)(0),          // 0: foo.bar.EnumWithReservations
	(Test_Nested_XNestedNested_EEE)(0), // 1: foo.bar.Test.Nested._NestedNested.EEE
	(Validator_Action)(0),              // 2: foo.bar.Validator.Action
	(*Simple)(nil),                     // 3: foo.bar.Simple
	(*Test)(nil),                       // 4: foo.bar.Test
	(*MessageWithReservations)(nil),    // 5: foo.bar.MessageWithReservations
	(*MessageWithMap)(nil),             // 6: foo.bar.MessageWithMap
	(*Another)(nil),                    // 7: foo.bar.Another
	(*Validator)(nil),                  // 8: foo.bar.Validator
	(*Rule)(nil),                       // 9: foo.bar.Rule
	(*IsAuthorizedReq)(nil),            // 10: foo.bar.IsAuthorizedReq
	(*KeywordCollisions)(nil),          // 11: foo.bar.KeywordCollisions
	(*KeywordCollisionOptions)(nil),    // 12: foo.bar.KeywordCollisionOptions
	nil,                                // 13: foo.bar.Test.MEntry
	(*Test_Nested)(nil),                // 14: foo.bar.Test.Nested
	(*Test_Nested_XNestedNested)(nil),  // 15: foo.bar.Test.Nested._NestedNested
	(*Test_Nested_XNestedNested_NestedNestedNested)(nil), // 16: foo.bar.Test.Nested._NestedNested.NestedNestedNested
	nil,                                      // 17: foo.bar.MessageWithMap.ValsEntry
	(*Validator_Permission)(nil),             // 18: foo.bar.Validator.Permission
	(*Rule_StringRule)(nil),                  // 19: foo.bar.Rule.StringRule
	(*Rule_IntRule)(nil),                     // 20: foo.bar.Rule.IntRule
	(*Rule_RepeatedRule)(nil),                // 21: foo.bar.Rule.RepeatedRule
	(*Rule_FloatRule)(nil),                   // 22: foo.bar.Rule.FloatRule
	(*descriptor.ExtensionRangeOptions)(nil), // 23: google.protobuf.ExtensionRangeOptions
	(*descriptor.MessageOptions)(nil),        // 24: google.protobuf.MessageOptions
	(*descriptor.MethodOptions)(nil),         // 25: google.protobuf.MethodOptions
	(*descriptor.FieldOptions)(nil),          // 26: google.protobuf.FieldOptions
}
var file_desc_test_complex_proto_depIdxs = []int32{
	3,  // 0: foo.bar.Test.s:type_name -> foo.bar.Simple
	3,  // 1: foo.bar.Test.r:type_name -> foo.bar.Simple
	13, // 2: foo.bar.Test.m:type_name -> foo.bar.Test.MEntry
	17, // 3: foo.bar.MessageWithMap.vals:type_name -> foo.bar.MessageWithMap.ValsEntry
	4,  // 4: foo.bar.Another.test:type_name -> foo.bar.Test
	1,  // 5: foo.bar.Another.fff:type_name -> foo.bar.Test.Nested._NestedNested.EEE
	18, // 6: foo.bar.Validator.permission:type_name -> foo.bar.Validator.Permission
	19, // 7: foo.bar.Rule.string:type_name -> foo.bar.Rule.StringRule
	21, // 8: foo.bar.Rule.repeated:type_name -> foo.bar.Rule.RepeatedRule
	20, // 9: foo.bar.Rule.int:type_name -> foo.bar.Rule.IntRule
	22, // 10: foo.bar.Rule.floatrule:type_name -> foo.bar.Rule.FloatRule
	4,  // 11: foo.bar.Test.Nested._NestedNested.NestedNestedNested.Test:type_name -> foo.bar.Test
	3,  // 12: foo.bar.MessageWithMap.ValsEntry.value:type_name -> foo.bar.Simple
	2,  // 13: foo.bar.Validator.Permission.action:type_name -> foo.bar.Validator.Action
	9,  // 14: foo.bar.Rule.RepeatedRule.items:type_name -> foo.bar.Rule
	23, // 15: foo.bar.label:extendee -> google.protobuf.ExtensionRangeOptions
	24, // 16: foo.bar.rept:extendee -> google.protobuf.MessageOptions
	24, // 17: foo.bar.eee:extendee -> google.protobuf.MessageOptions
	24, // 18: foo.bar.a:extendee -> google.protobuf.MessageOptions
	24, // 19: foo.bar.map_vals:extendee -> google.protobuf.MessageOptions
	25, // 20: foo.bar.validator:extendee -> google.protobuf.MethodOptions
	26, // 21: foo.bar.rules:extendee -> google.protobuf.FieldOptions
	26, // 22: foo.bar.syntax:extendee -> google.protobuf.FieldOptions
	26, // 23: foo.bar.import:extendee -> google.protobuf.FieldOptions
	26, // 24: foo.bar.public:extendee -> google.protobuf.FieldOptions
	26, // 25: foo.bar.weak:extendee -> google.protobuf.FieldOptions
	26, // 26: foo.bar.package:extendee -> google.protobuf.FieldOptions
	26, // 27: foo.bar.string:extendee -> google.protobuf.FieldOptions
	26, // 28: foo.bar.bytes:extendee -> google.protobuf.FieldOptions
	26, // 29: foo.bar.int32:extendee -> google.protobuf.FieldOptions
	26, // 30: foo.bar.int64:extendee -> google.protobuf.FieldOptions
	26, // 31: foo.bar.uint32:extendee -> google.protobuf.FieldOptions
	26, // 32: foo.bar.uint64:extendee -> google.protobuf.FieldOptions
	26, // 33: foo.bar.sint32:extendee -> google.protobuf.FieldOptions
	26, // 34: foo.bar.sint64:extendee -> google.protobuf.FieldOptions
	26, // 35: foo.bar.fixed32:extendee -> google.protobuf.FieldOptions
	26, // 36: foo.bar.fixed64:extendee -> google.protobuf.FieldOptions
	26, // 37: foo.bar.sfixed32:extendee -> google.protobuf.FieldOptions
	26, // 38: foo.bar.sfixed64:extendee -> google.protobuf.FieldOptions
	26, // 39: foo.bar.bool:extendee -> google.protobuf.FieldOptions
	26, // 40: foo.bar.float:extendee -> google.protobuf.FieldOptions
	26, // 41: foo.bar.double:extendee -> google.protobuf.FieldOptions
	26, // 42: foo.bar.optional:extendee -> google.protobuf.FieldOptions
	26, // 43: foo.bar.repeated:extendee -> google.protobuf.FieldOptions
	26, // 44: foo.bar.required:extendee -> google.protobuf.FieldOptions
	26, // 45: foo.bar.message:extendee -> google.protobuf.FieldOptions
	26, // 46: foo.bar.enum:extendee -> google.protobuf.FieldOptions
	26, // 47: foo.bar.service:extendee -> google.protobuf.FieldOptions
	26, // 48: foo.bar.rpc:extendee -> google.protobuf.FieldOptions
	26, // 49: foo.bar.option:extendee -> google.protobuf.FieldOptions
	26, // 50: foo.bar.extend:extendee -> google.protobuf.FieldOptions
	26, // 51: foo.bar.extensions:extendee -> google.protobuf.FieldOptions
	26, // 52: foo.bar.reserved:extendee -> google.protobuf.FieldOptions
	26, // 53: foo.bar.to:extendee -> google.protobuf.FieldOptions
	26, // 54: foo.bar.true:extendee -> google.protobuf.FieldOptions
	26, // 55: foo.bar.false:extendee -> google.protobuf.FieldOptions
	26, // 56: foo.bar.default:extendee -> google.protobuf.FieldOptions
	26, // 57: foo.bar.boom:extendee -> google.protobuf.FieldOptions
	24, // 58: foo.bar.Test.Nested.fooblez:extendee -> google.protobuf.MessageOptions
	4,  // 59: foo.bar.Test.Nested._NestedNested._garblez:extendee -> foo.bar.Test
	4,  // 60: foo.bar.rept:type_name -> foo.bar.Test
	1,  // 61: foo.bar.eee:type_name -> foo.bar.Test.Nested._NestedNested.EEE
	7,  // 62: foo.bar.a:type_name -> foo.bar.Another
	6,  // 63: foo.bar.map_vals:type_name -> foo.bar.MessageWithMap
	8,  // 64: foo.bar.validator:type_name -> foo.bar.Validator
	9,  // 65: foo.bar.rules:type_name -> foo.bar.Rule
	11, // 66: foo.bar.boom:type_name -> foo.bar.KeywordCollisions
	4,  // 67: foo.bar.TestTestService.UserAuth:input_type -> foo.bar.Test
	4,  // 68: foo.bar.TestTestService.Get:input_type -> foo.bar.Test
	4,  // 69: foo.bar.TestTestService.UserAuth:output_type -> foo.bar.Test
	4,  // 70: foo.bar.TestTestService.Get:output_type -> foo.bar.Test
	69, // [69:71] is the sub-list for method output_type
	67, // [67:69] is the sub-list for method input_type
	60, // [60:67] is the sub-list for extension type_name
	15, // [15:60] is the sub-list for extension extendee
	0,  // [0:15] is the sub-list for field type_name
}

func init() { file_desc_test_complex_proto_init() }
func file_desc_test_complex_proto_init() {
	if File_desc_test_complex_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_desc_test_complex_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Simple); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Test); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			case 3:
				return &v.extensionFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageWithReservations); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageWithMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Another); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Validator); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Rule); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IsAuthorizedReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeywordCollisions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeywordCollisionOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Test_Nested); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Test_Nested_XNestedNested); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Test_Nested_XNestedNested_NestedNestedNested); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Validator_Permission); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Rule_StringRule); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Rule_IntRule); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Rule_RepeatedRule); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_desc_test_complex_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Rule_FloatRule); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_desc_test_complex_proto_msgTypes[6].OneofWrappers = []interface{}{
		(*Rule_String_)(nil),
		(*Rule_Repeated)(nil),
		(*Rule_Int)(nil),
		(*Rule_Floatrule)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_desc_test_complex_proto_rawDesc,
			NumEnums:      3,
			NumMessages:   20,
			NumExtensions: 45,
			NumServices:   1,
		},
		GoTypes:           file_desc_test_complex_proto_goTypes,
		DependencyIndexes: file_desc_test_complex_proto_depIdxs,
		EnumInfos:         file_desc_test_complex_proto_enumTypes,
		MessageInfos:      file_desc_test_complex_proto_msgTypes,
		ExtensionInfos:    file_desc_test_complex_proto_extTypes,
	}.Build()
	File_desc_test_complex_proto = out.File
	file_desc_test_complex_proto_rawDesc = nil
	file_desc_test_complex_proto_goTypes = nil
	file_desc_test_complex_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// TestTestServiceClient is the client API for TestTestService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type TestTestServiceClient interface {
	UserAuth(ctx context.Context, in *Test, opts ...grpc.CallOption) (*Test, error)
	Get(ctx context.Context, in *Test, opts ...grpc.CallOption) (*Test, error)
}

type testTestServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewTestTestServiceClient(cc grpc.ClientConnInterface) TestTestServiceClient {
	return &testTestServiceClient{cc}
}

func (c *testTestServiceClient) UserAuth(ctx context.Context, in *Test, opts ...grpc.CallOption) (*Test, error) {
	out := new(Test)
	err := c.cc.Invoke(ctx, "/foo.bar.TestTestService/UserAuth", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *testTestServiceClient) Get(ctx context.Context, in *Test, opts ...grpc.CallOption) (*Test, error) {
	out := new(Test)
	err := c.cc.Invoke(ctx, "/foo.bar.TestTestService/Get", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// TestTestServiceServer is the server API for TestTestService service.
type TestTestServiceServer interface {
	UserAuth(context.Context, *Test) (*Test, error)
	Get(context.Context, *Test) (*Test, error)
}

// UnimplementedTestTestServiceServer can be embedded to have forward compatible implementations.
type UnimplementedTestTestServiceServer struct {
}

func (*UnimplementedTestTestServiceServer) UserAuth(context.Context, *Test) (*Test, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UserAuth not implemented")
}
func (*UnimplementedTestTestServiceServer) Get(context.Context, *Test) (*Test, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Get not implemented")
}

func RegisterTestTestServiceServer(s *grpc.Server, srv TestTestServiceServer) {
	s.RegisterService(&_TestTestService_serviceDesc, srv)
}

func _TestTestService_UserAuth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Test)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TestTestServiceServer).UserAuth(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/foo.bar.TestTestService/UserAuth",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TestTestServiceServer).UserAuth(ctx, req.(*Test))
	}
	return interceptor(ctx, in, info, handler)
}

func _TestTestService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Test)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TestTestServiceServer).Get(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/foo.bar.TestTestService/Get",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TestTestServiceServer).Get(ctx, req.(*Test))
	}
	return interceptor(ctx, in, info, handler)
}

var _TestTestService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "foo.bar.TestTestService",
	HandlerType: (*TestTestServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "UserAuth",
			Handler:    _TestTestService_UserAuth_Handler,
		},
		{
			MethodName: "Get",
			Handler:    _TestTestService_Get_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "desc_test_complex.proto",
}
