// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.0
// 	protoc        v3.21.3
// source: echo.proto

package fastpb_gen

import (
	nested "github.com/cloudwego/fastpb/examples/fastpb_gen/nested"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	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)
)

type MsgEnum int32

const (
	MsgEnum_ENUM0 MsgEnum = 0
	MsgEnum_ENUM1 MsgEnum = 1
	MsgEnum_ENUM2 MsgEnum = 2
)

// Enum value maps for MsgEnum.
var (
	MsgEnum_name = map[int32]string{
		0: "ENUM0",
		1: "ENUM1",
		2: "ENUM2",
	}
	MsgEnum_value = map[string]int32{
		"ENUM0": 0,
		"ENUM1": 1,
		"ENUM2": 2,
	}
)

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

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

func (MsgEnum) Descriptor() protoreflect.EnumDescriptor {
	return file_echo_proto_enumTypes[0].Descriptor()
}

func (MsgEnum) Type() protoreflect.EnumType {
	return &file_echo_proto_enumTypes[0]
}

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

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

type Message_Enum int32

const (
	Message_ENUM0 Message_Enum = 0
	Message_ENUM1 Message_Enum = 1
	Message_ENUM2 Message_Enum = 2
)

// Enum value maps for Message_Enum.
var (
	Message_Enum_name = map[int32]string{
		0: "ENUM0",
		1: "ENUM1",
		2: "ENUM2",
	}
	Message_Enum_value = map[string]int32{
		"ENUM0": 0,
		"ENUM1": 1,
		"ENUM2": 2,
	}
)

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

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

func (Message_Enum) Descriptor() protoreflect.EnumDescriptor {
	return file_echo_proto_enumTypes[1].Descriptor()
}

func (Message_Enum) Type() protoreflect.EnumType {
	return &file_echo_proto_enumTypes[1]
}

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

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

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

	Field3  int32                    `protobuf:"varint,3,opt,name=field3,proto3" json:"field3,omitempty"`                                                                                                                      // int32 = varint; int32
	Field4  int64                    `protobuf:"varint,4,opt,name=field4,proto3" json:"field4,omitempty"`                                                                                                                      // int64 = varint; int64
	Field5  uint32                   `protobuf:"varint,5,opt,name=field5,proto3" json:"field5,omitempty"`                                                                                                                      // uint32 = varint; uint32
	Field6  uint64                   `protobuf:"varint,6,opt,name=field6,proto3" json:"field6,omitempty"`                                                                                                                      // uint64 = varint; uint64
	Field7  int32                    `protobuf:"zigzag32,7,opt,name=field7,proto3" json:"field7,omitempty"`                                                                                                                    // sint32 = zigzag32; int32
	Field8  int64                    `protobuf:"zigzag64,8,opt,name=field8,proto3" json:"field8,omitempty"`                                                                                                                    // sint64 = zigzag64; int64
	Field13 bool                     `protobuf:"varint,13,opt,name=field13,proto3" json:"field13,omitempty"`                                                                                                                   // bool = varint; bool
	Field2  float32                  `protobuf:"fixed32,2,opt,name=field2,proto3" json:"field2,omitempty"`                                                                                                                     // float = fixed32; float32
	Field1  float64                  `protobuf:"fixed64,1,opt,name=field1,proto3" json:"field1,omitempty"`                                                                                                                     // double = fixed64; float64
	Field9  uint32                   `protobuf:"fixed32,9,opt,name=field9,proto3" json:"field9,omitempty"`                                                                                                                     // fixed32 = fixed32; uint32
	Field10 uint64                   `protobuf:"fixed64,10,opt,name=field10,proto3" json:"field10,omitempty"`                                                                                                                  // fixed64 = fixed64; uint64
	Field11 int32                    `protobuf:"fixed32,11,opt,name=field11,proto3" json:"field11,omitempty"`                                                                                                                  // sfixed32 = fixed32; int32
	Field12 int64                    `protobuf:"fixed64,12,opt,name=field12,proto3" json:"field12,omitempty"`                                                                                                                  // sfixed64 = fixed64; int64
	Field14 string                   `protobuf:"bytes,14,opt,name=field14,proto3" json:"field14,omitempty"`                                                                                                                    // string = bytes; string
	Field15 []byte                   `protobuf:"bytes,15,opt,name=field15,proto3" json:"field15,omitempty"`                                                                                                                    // []byte = bytes; []byte
	Field16 *Message                 `protobuf:"bytes,16,opt,name=field16,proto3" json:"field16,omitempty"`                                                                                                                    // *struct = bytes; *struct
	Field20 []string                 `protobuf:"bytes,20,rep,name=field20,proto3" json:"field20,omitempty"`                                                                                                                    // []list = bytes; []list
	Field21 []*Message               `protobuf:"bytes,21,rep,name=field21,proto3" json:"field21,omitempty"`                                                                                                                    // []list = bytes; []list
	Field22 map[int32]string         `protobuf:"bytes,22,rep,name=field22,proto3" json:"field22,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`                           // map[] = bytes; map[]
	Field23 map[string]*Message      `protobuf:"bytes,23,rep,name=field23,proto3" json:"field23,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`                            // map[] = bytes; map[]
	Field24 map[string]*Base         `protobuf:"bytes,24,rep,name=field24,proto3" json:"field24,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`                            // map[] = bytes; map[]
	Field27 Enum                     `protobuf:"varint,27,opt,name=field27,proto3,enum=base.Enum" json:"field27,omitempty"`                                                                                                    // int32
	Field28 []Enum                   `protobuf:"varint,28,rep,packed,name=field28,proto3,enum=base.Enum" json:"field28,omitempty"`                                                                                             // []list = bytes; []list
	Field29 map[int32]Enum           `protobuf:"bytes,29,rep,name=field29,proto3" json:"field29,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=base.Enum"`           // map[] = bytes; map[]
	Field30 nested.MsgEnum           `protobuf:"varint,30,opt,name=field30,proto3,enum=nested.echo.MsgEnum" json:"field30,omitempty"`                                                                                          // int32
	Field31 []nested.MsgEnum         `protobuf:"varint,31,rep,packed,name=field31,proto3,enum=nested.echo.MsgEnum" json:"field31,omitempty"`                                                                                   // []list = bytes; []list
	Field32 map[int32]nested.MsgEnum `protobuf:"bytes,32,rep,name=field32,proto3" json:"field32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=nested.echo.MsgEnum"` // map[] = bytes; map[]
	Field33 Message_Enum             `protobuf:"varint,33,opt,name=field33,proto3,enum=echo.Message_Enum" json:"field33,omitempty"`                                                                                            // int32
	Field34 []Message_Enum           `protobuf:"varint,34,rep,packed,name=field34,proto3,enum=echo.Message_Enum" json:"field34,omitempty"`                                                                                     // []list = bytes; []list
	Field35 map[int32]Message_Enum   `protobuf:"bytes,35,rep,name=field35,proto3" json:"field35,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=echo.Message_Enum"`   // map[] = bytes; map[]
	Field36 MsgEnum                  `protobuf:"varint,36,opt,name=field36,proto3,enum=echo.MsgEnum" json:"field36,omitempty"`                                                                                                 // int32
	Field37 []MsgEnum                `protobuf:"varint,37,rep,packed,name=field37,proto3,enum=echo.MsgEnum" json:"field37,omitempty"`                                                                                          // []list = bytes; []list
	Field38 map[int32]MsgEnum        `protobuf:"bytes,38,rep,name=field38,proto3" json:"field38,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=echo.MsgEnum"`        // map[] = bytes; map[]
	// Types that are assignable to Field40:
	//
	//	*Message_Field41
	//	*Message_Field42
	//	*Message_Field43
	//	*Message_Field44
	//	*Message_Field45
	Field40 isMessage_Field40  `protobuf_oneof:"field40"`
	Field50 *Message_Condition `protobuf:"bytes,50,opt,name=field50,proto3" json:"field50,omitempty"`
	Field51 *int32             `protobuf:"varint,51,opt,name=field51,proto3,oneof" json:"field51,omitempty"`   // int32 = varint; int32
	Field52 *int64             `protobuf:"varint,52,opt,name=field52,proto3,oneof" json:"field52,omitempty"`   // int64 = varint; int64
	Field53 *uint32            `protobuf:"varint,53,opt,name=field53,proto3,oneof" json:"field53,omitempty"`   // uint32 = varint; uint32
	Field54 *uint64            `protobuf:"varint,54,opt,name=field54,proto3,oneof" json:"field54,omitempty"`   // uint64 = varint; uint64
	Field55 *int32             `protobuf:"zigzag32,55,opt,name=field55,proto3,oneof" json:"field55,omitempty"` // sint32 = zigzag32; int32
	Field56 *int64             `protobuf:"zigzag64,56,opt,name=field56,proto3,oneof" json:"field56,omitempty"` // sint64 = zigzag64; int64
	Field57 *bool              `protobuf:"varint,57,opt,name=field57,proto3,oneof" json:"field57,omitempty"`   // bool = varint; bool
	Field58 *string            `protobuf:"bytes,58,opt,name=field58,proto3,oneof" json:"field58,omitempty"`    // []list = bytes; []list
	Field59 *Message           `protobuf:"bytes,59,opt,name=field59,proto3,oneof" json:"field59,omitempty"`    // []list = bytes; []list
}

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

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

func (*Message) ProtoMessage() {}

func (x *Message) ProtoReflect() protoreflect.Message {
	mi := &file_echo_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 Message.ProtoReflect.Descriptor instead.
func (*Message) Descriptor() ([]byte, []int) {
	return file_echo_proto_rawDescGZIP(), []int{0}
}

func (x *Message) GetField3() int32 {
	if x != nil {
		return x.Field3
	}
	return 0
}

func (x *Message) GetField4() int64 {
	if x != nil {
		return x.Field4
	}
	return 0
}

func (x *Message) GetField5() uint32 {
	if x != nil {
		return x.Field5
	}
	return 0
}

func (x *Message) GetField6() uint64 {
	if x != nil {
		return x.Field6
	}
	return 0
}

func (x *Message) GetField7() int32 {
	if x != nil {
		return x.Field7
	}
	return 0
}

func (x *Message) GetField8() int64 {
	if x != nil {
		return x.Field8
	}
	return 0
}

func (x *Message) GetField13() bool {
	if x != nil {
		return x.Field13
	}
	return false
}

func (x *Message) GetField2() float32 {
	if x != nil {
		return x.Field2
	}
	return 0
}

func (x *Message) GetField1() float64 {
	if x != nil {
		return x.Field1
	}
	return 0
}

func (x *Message) GetField9() uint32 {
	if x != nil {
		return x.Field9
	}
	return 0
}

func (x *Message) GetField10() uint64 {
	if x != nil {
		return x.Field10
	}
	return 0
}

func (x *Message) GetField11() int32 {
	if x != nil {
		return x.Field11
	}
	return 0
}

func (x *Message) GetField12() int64 {
	if x != nil {
		return x.Field12
	}
	return 0
}

func (x *Message) GetField14() string {
	if x != nil {
		return x.Field14
	}
	return ""
}

func (x *Message) GetField15() []byte {
	if x != nil {
		return x.Field15
	}
	return nil
}

func (x *Message) GetField16() *Message {
	if x != nil {
		return x.Field16
	}
	return nil
}

func (x *Message) GetField20() []string {
	if x != nil {
		return x.Field20
	}
	return nil
}

func (x *Message) GetField21() []*Message {
	if x != nil {
		return x.Field21
	}
	return nil
}

func (x *Message) GetField22() map[int32]string {
	if x != nil {
		return x.Field22
	}
	return nil
}

func (x *Message) GetField23() map[string]*Message {
	if x != nil {
		return x.Field23
	}
	return nil
}

func (x *Message) GetField24() map[string]*Base {
	if x != nil {
		return x.Field24
	}
	return nil
}

func (x *Message) GetField27() Enum {
	if x != nil {
		return x.Field27
	}
	return Enum_ENUM0
}

func (x *Message) GetField28() []Enum {
	if x != nil {
		return x.Field28
	}
	return nil
}

func (x *Message) GetField29() map[int32]Enum {
	if x != nil {
		return x.Field29
	}
	return nil
}

func (x *Message) GetField30() nested.MsgEnum {
	if x != nil {
		return x.Field30
	}
	return nested.MsgEnum_ENUM0
}

func (x *Message) GetField31() []nested.MsgEnum {
	if x != nil {
		return x.Field31
	}
	return nil
}

func (x *Message) GetField32() map[int32]nested.MsgEnum {
	if x != nil {
		return x.Field32
	}
	return nil
}

func (x *Message) GetField33() Message_Enum {
	if x != nil {
		return x.Field33
	}
	return Message_ENUM0
}

func (x *Message) GetField34() []Message_Enum {
	if x != nil {
		return x.Field34
	}
	return nil
}

func (x *Message) GetField35() map[int32]Message_Enum {
	if x != nil {
		return x.Field35
	}
	return nil
}

func (x *Message) GetField36() MsgEnum {
	if x != nil {
		return x.Field36
	}
	return MsgEnum_ENUM0
}

func (x *Message) GetField37() []MsgEnum {
	if x != nil {
		return x.Field37
	}
	return nil
}

func (x *Message) GetField38() map[int32]MsgEnum {
	if x != nil {
		return x.Field38
	}
	return nil
}

func (m *Message) GetField40() isMessage_Field40 {
	if m != nil {
		return m.Field40
	}
	return nil
}

func (x *Message) GetField41() int64 {
	if x, ok := x.GetField40().(*Message_Field41); ok {
		return x.Field41
	}
	return 0
}

func (x *Message) GetField42() bool {
	if x, ok := x.GetField40().(*Message_Field42); ok {
		return x.Field42
	}
	return false
}

func (x *Message) GetField43() *Message {
	if x, ok := x.GetField40().(*Message_Field43); ok {
		return x.Field43
	}
	return nil
}

func (x *Message) GetField44() Enum {
	if x, ok := x.GetField40().(*Message_Field44); ok {
		return x.Field44
	}
	return Enum_ENUM0
}

func (x *Message) GetField45() *Base {
	if x, ok := x.GetField40().(*Message_Field45); ok {
		return x.Field45
	}
	return nil
}

func (x *Message) GetField50() *Message_Condition {
	if x != nil {
		return x.Field50
	}
	return nil
}

func (x *Message) GetField51() int32 {
	if x != nil && x.Field51 != nil {
		return *x.Field51
	}
	return 0
}

func (x *Message) GetField52() int64 {
	if x != nil && x.Field52 != nil {
		return *x.Field52
	}
	return 0
}

func (x *Message) GetField53() uint32 {
	if x != nil && x.Field53 != nil {
		return *x.Field53
	}
	return 0
}

func (x *Message) GetField54() uint64 {
	if x != nil && x.Field54 != nil {
		return *x.Field54
	}
	return 0
}

func (x *Message) GetField55() int32 {
	if x != nil && x.Field55 != nil {
		return *x.Field55
	}
	return 0
}

func (x *Message) GetField56() int64 {
	if x != nil && x.Field56 != nil {
		return *x.Field56
	}
	return 0
}

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

func (x *Message) GetField58() string {
	if x != nil && x.Field58 != nil {
		return *x.Field58
	}
	return ""
}

func (x *Message) GetField59() *Message {
	if x != nil {
		return x.Field59
	}
	return nil
}

type isMessage_Field40 interface {
	isMessage_Field40()
}

type Message_Field41 struct {
	Field41 int64 `protobuf:"varint,41,opt,name=field41,proto3,oneof"`
}

type Message_Field42 struct {
	Field42 bool `protobuf:"varint,42,opt,name=field42,proto3,oneof"`
}

type Message_Field43 struct {
	Field43 *Message `protobuf:"bytes,43,opt,name=field43,proto3,oneof"`
}

type Message_Field44 struct {
	Field44 Enum `protobuf:"varint,44,opt,name=field44,proto3,enum=base.Enum,oneof"` // int32
}

type Message_Field45 struct {
	Field45 *Base `protobuf:"bytes,45,opt,name=field45,proto3,oneof"`
}

func (*Message_Field41) isMessage_Field40() {}

func (*Message_Field42) isMessage_Field40() {}

func (*Message_Field43) isMessage_Field40() {}

func (*Message_Field44) isMessage_Field40() {}

func (*Message_Field45) isMessage_Field40() {}

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

	Message *Message `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
	Req     *Request `protobuf:"bytes,2,opt,name=req,proto3" json:"req,omitempty"`
	Base    *Base    `protobuf:"bytes,255,opt,name=Base,proto3" json:"Base,omitempty"`
}

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

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

func (*Request) ProtoMessage() {}

func (x *Request) ProtoReflect() protoreflect.Message {
	mi := &file_echo_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 Request.ProtoReflect.Descriptor instead.
func (*Request) Descriptor() ([]byte, []int) {
	return file_echo_proto_rawDescGZIP(), []int{1}
}

func (x *Request) GetMessage() *Message {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *Request) GetReq() *Request {
	if x != nil {
		return x.Req
	}
	return nil
}

func (x *Request) GetBase() *Base {
	if x != nil {
		return x.Base
	}
	return nil
}

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

	Action   string    `protobuf:"bytes,1,opt,name=Action,proto3" json:"Action,omitempty"`
	Msg      string    `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"`
	BaseResp *BaseResp `protobuf:"bytes,255,opt,name=BaseResp,proto3" json:"BaseResp,omitempty"`
}

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

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

func (*Response) ProtoMessage() {}

func (x *Response) ProtoReflect() protoreflect.Message {
	mi := &file_echo_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 Response.ProtoReflect.Descriptor instead.
func (*Response) Descriptor() ([]byte, []int) {
	return file_echo_proto_rawDescGZIP(), []int{2}
}

func (x *Response) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

func (x *Response) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

func (x *Response) GetBaseResp() *BaseResp {
	if x != nil {
		return x.BaseResp
	}
	return nil
}

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

	// Types that are assignable to Field1:
	//
	//	*Message_Condition_Field2
	//	*Message_Condition_Field3
	Field1 isMessage_Condition_Field1 `protobuf_oneof:"field1"`
	Field4 bool                       `protobuf:"varint,4,opt,name=field4,proto3" json:"field4,omitempty"`
}

func (x *Message_Condition) Reset() {
	*x = Message_Condition{}
	if protoimpl.UnsafeEnabled {
		mi := &file_echo_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Message_Condition) ProtoMessage() {}

func (x *Message_Condition) ProtoReflect() protoreflect.Message {
	mi := &file_echo_proto_msgTypes[10]
	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 Message_Condition.ProtoReflect.Descriptor instead.
func (*Message_Condition) Descriptor() ([]byte, []int) {
	return file_echo_proto_rawDescGZIP(), []int{0, 7}
}

func (m *Message_Condition) GetField1() isMessage_Condition_Field1 {
	if m != nil {
		return m.Field1
	}
	return nil
}

func (x *Message_Condition) GetField2() int64 {
	if x, ok := x.GetField1().(*Message_Condition_Field2); ok {
		return x.Field2
	}
	return 0
}

func (x *Message_Condition) GetField3() *Message_ConditionTree {
	if x, ok := x.GetField1().(*Message_Condition_Field3); ok {
		return x.Field3
	}
	return nil
}

func (x *Message_Condition) GetField4() bool {
	if x != nil {
		return x.Field4
	}
	return false
}

type isMessage_Condition_Field1 interface {
	isMessage_Condition_Field1()
}

type Message_Condition_Field2 struct {
	Field2 int64 `protobuf:"varint,2,opt,name=field2,proto3,oneof"`
}

type Message_Condition_Field3 struct {
	Field3 *Message_ConditionTree `protobuf:"bytes,3,opt,name=field3,proto3,oneof"`
}

func (*Message_Condition_Field2) isMessage_Condition_Field1() {}

func (*Message_Condition_Field3) isMessage_Condition_Field1() {}

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

	Field1 map[int32]Enum       `protobuf:"bytes,1,rep,name=field1,proto3" json:"field1,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=base.Enum"`
	Field2 []*Message_Condition `protobuf:"bytes,2,rep,name=field2,proto3" json:"field2,omitempty"`
}

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

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

func (*Message_ConditionTree) ProtoMessage() {}

func (x *Message_ConditionTree) ProtoReflect() protoreflect.Message {
	mi := &file_echo_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 Message_ConditionTree.ProtoReflect.Descriptor instead.
func (*Message_ConditionTree) Descriptor() ([]byte, []int) {
	return file_echo_proto_rawDescGZIP(), []int{0, 8}
}

func (x *Message_ConditionTree) GetField1() map[int32]Enum {
	if x != nil {
		return x.Field1
	}
	return nil
}

func (x *Message_ConditionTree) GetField2() []*Message_Condition {
	if x != nil {
		return x.Field2
	}
	return nil
}

var File_echo_proto protoreflect.FileDescriptor

var file_echo_proto_rawDesc = []byte{
	0x0a, 0x0a, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x65, 0x63,
	0x68, 0x6f, 0x1a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c,
	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x15, 0x0a,
	0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
	0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35,
	0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
	0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12,
	0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x31, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x31, 0x33, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x02, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x07, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x31, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x06, 0x52, 0x07, 0x66, 0x69, 0x65,
	0x6c, 0x64, 0x31, 0x30, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x18,
	0x0b, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x12, 0x18,
	0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x10, 0x52,
	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x31, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x31, 0x34, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x18, 0x0f, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x12, 0x27, 0x0a, 0x07,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
	0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x31, 0x36, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30,
	0x18, 0x14, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x12,
	0x27, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x0d, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x12, 0x34, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x32, 0x32, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x63, 0x68, 0x6f,
	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x12, 0x34,
	0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x65,
	0x6c, 0x64, 0x32, 0x33, 0x12, 0x34, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x18,
	0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x12, 0x24, 0x0a, 0x07, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x32, 0x37, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x61,
	0x73, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37,
	0x12, 0x24, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x38, 0x18, 0x1c, 0x20, 0x03, 0x28,
	0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x66,
	0x69, 0x65, 0x6c, 0x64, 0x32, 0x38, 0x12, 0x34, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
	0x39, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x39, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x39, 0x12, 0x2e, 0x0a, 0x07,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e,
	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x73, 0x67, 0x45,
	0x6e, 0x75, 0x6d, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x12, 0x2e, 0x0a, 0x07,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x31, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e,
	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x73, 0x67, 0x45,
	0x6e, 0x75, 0x6d, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x31, 0x12, 0x34, 0x0a, 0x07,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46, 0x69, 0x65,
	0x6c, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x33, 0x32, 0x12, 0x2c, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x18, 0x21, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
	0x12, 0x2c, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x18, 0x22, 0x20, 0x03, 0x28,
	0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x12, 0x34,
	0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x65,
	0x6c, 0x64, 0x33, 0x35, 0x12, 0x27, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x18,
	0x24, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x73, 0x67,
	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x12, 0x27, 0x0a,
	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x18, 0x25, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x0d,
	0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x66,
	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x12, 0x34, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
	0x38, 0x18, 0x26, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x12, 0x1a, 0x0a, 0x07,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x18, 0x29, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52,
	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x12, 0x1a, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x34, 0x32, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x66, 0x69, 0x65,
	0x6c, 0x64, 0x34, 0x32, 0x12, 0x29, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x18,
	0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x12,
	0x26, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x07,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x12, 0x26, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x34, 0x35, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e,
	0x42, 0x61, 0x73, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35, 0x12,
	0x31, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x30, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x17, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
	0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x35, 0x30, 0x12, 0x1d, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x31, 0x18, 0x33, 0x20,
	0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x31, 0x88, 0x01,
	0x01, 0x12, 0x1d, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x32, 0x18, 0x34, 0x20, 0x01,
	0x28, 0x03, 0x48, 0x02, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x32, 0x88, 0x01, 0x01,
	0x12, 0x1d, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x33, 0x18, 0x35, 0x20, 0x01, 0x28,
	0x0d, 0x48, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x33, 0x88, 0x01, 0x01, 0x12,
	0x1d, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x34, 0x18, 0x36, 0x20, 0x01, 0x28, 0x04,
	0x48, 0x04, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x34, 0x88, 0x01, 0x01, 0x12, 0x1d,
	0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x35, 0x18, 0x37, 0x20, 0x01, 0x28, 0x11, 0x48,
	0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x35, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a,
	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x36, 0x18, 0x38, 0x20, 0x01, 0x28, 0x12, 0x48, 0x06,
	0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x36, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x37, 0x18, 0x39, 0x20, 0x01, 0x28, 0x08, 0x48, 0x07, 0x52,
	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x37, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x66,
	0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x07,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x07, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x35, 0x39, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x65, 0x63,
	0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x09, 0x52, 0x07, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x35, 0x39, 0x88, 0x01, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c,
	0x64, 0x32, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x46, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64,
	0x32, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e,
	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x50, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x14, 0x2e, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d,
	0x73, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x1a, 0x4e, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x6e, 0x75,
	0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7e, 0x0a, 0x09,
	0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x06, 0x66, 0x69, 0x65,
	0x6c, 0x64, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x65,
	0x6c, 0x64, 0x32, 0x12, 0x35, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x65, 0x65,
	0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x34, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x1a, 0xc8, 0x01, 0x0a,
	0x0d, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x65, 0x65, 0x12, 0x3f,
	0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
	0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f,
	0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x65, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c,
	0x64, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12,
	0x2f, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43,
	0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
	0x1a, 0x45, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x27, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12,
	0x09, 0x0a, 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x30, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e,
	0x55, 0x4d, 0x31, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x32, 0x10, 0x02,
	0x42, 0x09, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x31, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x35, 0x32, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x33, 0x42,
	0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x34, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x35, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x65, 0x6c,
	0x64, 0x35, 0x36, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x37, 0x42,
	0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x22, 0x74, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x03, 0x72,
	0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x03, 0x72, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x04,
	0x42, 0x61, 0x73, 0x65, 0x18, 0xff, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x62, 0x61,
	0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x04, 0x42, 0x61, 0x73, 0x65, 0x22, 0x61, 0x0a,
	0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18,
	0xff, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61,
	0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x2a, 0x2a, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x09, 0x0a, 0x05, 0x45,
	0x4e, 0x55, 0x4d, 0x30, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x31, 0x10,
	0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x32, 0x10, 0x02, 0x32, 0x2c, 0x0a, 0x04,
	0x45, 0x63, 0x68, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x12, 0x0a, 0x2e, 0x62,
	0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x1a, 0x0e, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69,
	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x77, 0x65,
	0x67, 0x6f, 0x2f, 0x66, 0x61, 0x73, 0x74, 0x70, 0x62, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c,
	0x65, 0x73, 0x2f, 0x66, 0x61, 0x73, 0x74, 0x70, 0x62, 0x5f, 0x67, 0x65, 0x6e, 0x62, 0x06, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_echo_proto_rawDescOnce sync.Once
	file_echo_proto_rawDescData = file_echo_proto_rawDesc
)

func file_echo_proto_rawDescGZIP() []byte {
	file_echo_proto_rawDescOnce.Do(func() {
		file_echo_proto_rawDescData = protoimpl.X.CompressGZIP(file_echo_proto_rawDescData)
	})
	return file_echo_proto_rawDescData
}

var file_echo_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_echo_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_echo_proto_goTypes = []interface{}{
	(MsgEnum)(0),                  // 0: echo.MsgEnum
	(Message_Enum)(0),             // 1: echo.Message.Enum
	(*Message)(nil),               // 2: echo.Message
	(*Request)(nil),               // 3: echo.Request
	(*Response)(nil),              // 4: echo.Response
	nil,                           // 5: echo.Message.Field22Entry
	nil,                           // 6: echo.Message.Field23Entry
	nil,                           // 7: echo.Message.Field24Entry
	nil,                           // 8: echo.Message.Field29Entry
	nil,                           // 9: echo.Message.Field32Entry
	nil,                           // 10: echo.Message.Field35Entry
	nil,                           // 11: echo.Message.Field38Entry
	(*Message_Condition)(nil),     // 12: echo.Message.Condition
	(*Message_ConditionTree)(nil), // 13: echo.Message.ConditionTree
	nil,                           // 14: echo.Message.ConditionTree.Field1Entry
	(Enum)(0),                     // 15: base.Enum
	(nested.MsgEnum)(0),           // 16: nested.echo.MsgEnum
	(*Base)(nil),                  // 17: base.Base
	(*BaseResp)(nil),              // 18: base.BaseResp
}
var file_echo_proto_depIdxs = []int32{
	2,  // 0: echo.Message.field16:type_name -> echo.Message
	2,  // 1: echo.Message.field21:type_name -> echo.Message
	5,  // 2: echo.Message.field22:type_name -> echo.Message.Field22Entry
	6,  // 3: echo.Message.field23:type_name -> echo.Message.Field23Entry
	7,  // 4: echo.Message.field24:type_name -> echo.Message.Field24Entry
	15, // 5: echo.Message.field27:type_name -> base.Enum
	15, // 6: echo.Message.field28:type_name -> base.Enum
	8,  // 7: echo.Message.field29:type_name -> echo.Message.Field29Entry
	16, // 8: echo.Message.field30:type_name -> nested.echo.MsgEnum
	16, // 9: echo.Message.field31:type_name -> nested.echo.MsgEnum
	9,  // 10: echo.Message.field32:type_name -> echo.Message.Field32Entry
	1,  // 11: echo.Message.field33:type_name -> echo.Message.Enum
	1,  // 12: echo.Message.field34:type_name -> echo.Message.Enum
	10, // 13: echo.Message.field35:type_name -> echo.Message.Field35Entry
	0,  // 14: echo.Message.field36:type_name -> echo.MsgEnum
	0,  // 15: echo.Message.field37:type_name -> echo.MsgEnum
	11, // 16: echo.Message.field38:type_name -> echo.Message.Field38Entry
	2,  // 17: echo.Message.field43:type_name -> echo.Message
	15, // 18: echo.Message.field44:type_name -> base.Enum
	17, // 19: echo.Message.field45:type_name -> base.Base
	12, // 20: echo.Message.field50:type_name -> echo.Message.Condition
	2,  // 21: echo.Message.field59:type_name -> echo.Message
	2,  // 22: echo.Request.message:type_name -> echo.Message
	3,  // 23: echo.Request.req:type_name -> echo.Request
	17, // 24: echo.Request.Base:type_name -> base.Base
	18, // 25: echo.Response.BaseResp:type_name -> base.BaseResp
	2,  // 26: echo.Message.Field23Entry.value:type_name -> echo.Message
	17, // 27: echo.Message.Field24Entry.value:type_name -> base.Base
	15, // 28: echo.Message.Field29Entry.value:type_name -> base.Enum
	16, // 29: echo.Message.Field32Entry.value:type_name -> nested.echo.MsgEnum
	1,  // 30: echo.Message.Field35Entry.value:type_name -> echo.Message.Enum
	0,  // 31: echo.Message.Field38Entry.value:type_name -> echo.MsgEnum
	13, // 32: echo.Message.Condition.field3:type_name -> echo.Message.ConditionTree
	14, // 33: echo.Message.ConditionTree.field1:type_name -> echo.Message.ConditionTree.Field1Entry
	12, // 34: echo.Message.ConditionTree.field2:type_name -> echo.Message.Condition
	15, // 35: echo.Message.ConditionTree.Field1Entry.value:type_name -> base.Enum
	17, // 36: echo.Echo.echo:input_type -> base.Base
	4,  // 37: echo.Echo.echo:output_type -> echo.Response
	37, // [37:38] is the sub-list for method output_type
	36, // [36:37] is the sub-list for method input_type
	36, // [36:36] is the sub-list for extension type_name
	36, // [36:36] is the sub-list for extension extendee
	0,  // [0:36] is the sub-list for field type_name
}

func init() { file_echo_proto_init() }
func file_echo_proto_init() {
	if File_echo_proto != nil {
		return
	}
	file_base_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_echo_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Message); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_echo_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Request); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_echo_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Response); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_echo_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Message_Condition); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_echo_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Message_ConditionTree); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_echo_proto_msgTypes[0].OneofWrappers = []interface{}{
		(*Message_Field41)(nil),
		(*Message_Field42)(nil),
		(*Message_Field43)(nil),
		(*Message_Field44)(nil),
		(*Message_Field45)(nil),
	}
	file_echo_proto_msgTypes[10].OneofWrappers = []interface{}{
		(*Message_Condition_Field2)(nil),
		(*Message_Condition_Field3)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_echo_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   13,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_echo_proto_goTypes,
		DependencyIndexes: file_echo_proto_depIdxs,
		EnumInfos:         file_echo_proto_enumTypes,
		MessageInfos:      file_echo_proto_msgTypes,
	}.Build()
	File_echo_proto = out.File
	file_echo_proto_rawDesc = nil
	file_echo_proto_goTypes = nil
	file_echo_proto_depIdxs = nil
}
