// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.23.0
// 	protoc        v3.9.1
// source: relayer.proto

package types

import (
	proto "github.com/golang/protobuf/proto"
	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)
)

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

//以太坊账户信息
// 	 privkey : 账户地址对应的私钥
//	 addr :账户地址
type Account4Relayer struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Privkey []byte `protobuf:"bytes,1,opt,name=privkey,proto3" json:"privkey,omitempty"`
	Addr    string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
}

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

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

func (*Account4Relayer) ProtoMessage() {}

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

func (x *Account4Relayer) GetPrivkey() []byte {
	if x != nil {
		return x.Privkey
	}
	return nil
}

func (x *Account4Relayer) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

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

	EthereumValidator string `protobuf:"bytes,1,opt,name=ethereumValidator,proto3" json:"ethereumValidator,omitempty"`
}

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

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

func (*ValidatorAddr4EthRelayer) ProtoMessage() {}

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

func (x *ValidatorAddr4EthRelayer) GetEthereumValidator() string {
	if x != nil {
		return x.EthereumValidator
	}
	return ""
}

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

	Txhash []string `protobuf:"bytes,1,rep,name=txhash,proto3" json:"txhash,omitempty"`
}

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

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

func (*Txhashes) ProtoMessage() {}

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

func (x *Txhashes) GetTxhash() []string {
	if x != nil {
		return x.Txhash
	}
	return nil
}

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

	OldPassphase string `protobuf:"bytes,1,opt,name=oldPassphase,proto3" json:"oldPassphase,omitempty"`
	NewPassphase string `protobuf:"bytes,2,opt,name=newPassphase,proto3" json:"newPassphase,omitempty"`
}

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

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

func (*ReqChangePasswd) ProtoMessage() {}

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

func (x *ReqChangePasswd) GetOldPassphase() string {
	if x != nil {
		return x.OldPassphase
	}
	return ""
}

func (x *ReqChangePasswd) GetNewPassphase() string {
	if x != nil {
		return x.NewPassphase
	}
	return ""
}

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

	Passphase string `protobuf:"bytes,1,opt,name=Passphase,proto3" json:"Passphase,omitempty"`
}

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

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

func (*ReqSetPasswd) ProtoMessage() {}

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

func (x *ReqSetPasswd) GetPassphase() string {
	if x != nil {
		return x.Passphase
	}
	return ""
}

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

	Privkey string `protobuf:"bytes,1,opt,name=privkey,proto3" json:"privkey,omitempty"`
	Addr    string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
}

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

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

func (*Account4Show) ProtoMessage() {}

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

func (x *Account4Show) GetPrivkey() string {
	if x != nil {
		return x.Privkey
	}
	return ""
}

func (x *Account4Show) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

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

	Chain         string `protobuf:"bytes,1,opt,name=chain,proto3" json:"chain,omitempty"`
	IssueContract string `protobuf:"bytes,2,opt,name=issueContract,proto3" json:"issueContract,omitempty"`
	Symbol        string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"`
}

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

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

func (*AssetType) ProtoMessage() {}

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

func (x *AssetType) GetChain() string {
	if x != nil {
		return x.Chain
	}
	return ""
}

func (x *AssetType) GetIssueContract() string {
	if x != nil {
		return x.IssueContract
	}
	return ""
}

func (x *AssetType) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

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

	EthereumChainID int64  `protobuf:"varint,1,opt,name=ethereumChainID,proto3" json:"ethereumChainID,omitempty"`
	BridgeBrankAddr string `protobuf:"bytes,2,opt,name=bridgeBrankAddr,proto3" json:"bridgeBrankAddr,omitempty"`
	Nonce           int64  `protobuf:"varint,3,opt,name=nonce,proto3" json:"nonce,omitempty"`
	TokenAddr       string `protobuf:"bytes,4,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
	Symbol          string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"`
	EthereumSender  string `protobuf:"bytes,6,opt,name=ethereumSender,proto3" json:"ethereumSender,omitempty"`
	Chain33Receiver string `protobuf:"bytes,7,opt,name=chain33Receiver,proto3" json:"chain33Receiver,omitempty"`
	//因为考虑到eth是以wei单位的，需要更大的计数范围，所以使用string类型
	Amount    string `protobuf:"bytes,9,opt,name=amount,proto3" json:"amount,omitempty"`
	ClaimType int32  `protobuf:"varint,10,opt,name=claimType,proto3" json:"claimType,omitempty"`
	ChainName string `protobuf:"bytes,11,opt,name=chainName,proto3" json:"chainName,omitempty"`
	Decimal   int64  `protobuf:"varint,12,opt,name=decimal,proto3" json:"decimal,omitempty"`
	EthTxHash string `protobuf:"bytes,13,opt,name=ethTxHash,proto3" json:"ethTxHash,omitempty"`
}

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

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

func (*EthBridgeClaim) ProtoMessage() {}

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

func (x *EthBridgeClaim) GetEthereumChainID() int64 {
	if x != nil {
		return x.EthereumChainID
	}
	return 0
}

func (x *EthBridgeClaim) GetBridgeBrankAddr() string {
	if x != nil {
		return x.BridgeBrankAddr
	}
	return ""
}

func (x *EthBridgeClaim) GetNonce() int64 {
	if x != nil {
		return x.Nonce
	}
	return 0
}

func (x *EthBridgeClaim) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

func (x *EthBridgeClaim) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *EthBridgeClaim) GetEthereumSender() string {
	if x != nil {
		return x.EthereumSender
	}
	return ""
}

func (x *EthBridgeClaim) GetChain33Receiver() string {
	if x != nil {
		return x.Chain33Receiver
	}
	return ""
}

func (x *EthBridgeClaim) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *EthBridgeClaim) GetClaimType() int32 {
	if x != nil {
		return x.ClaimType
	}
	return 0
}

func (x *EthBridgeClaim) GetChainName() string {
	if x != nil {
		return x.ChainName
	}
	return ""
}

func (x *EthBridgeClaim) GetDecimal() int64 {
	if x != nil {
		return x.Decimal
	}
	return 0
}

func (x *EthBridgeClaim) GetEthTxHash() string {
	if x != nil {
		return x.EthTxHash
	}
	return ""
}

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

	PrivateKey string `protobuf:"bytes,1,opt,name=privateKey,proto3" json:"privateKey,omitempty"`
}

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

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

func (*ImportKeyReq) ProtoMessage() {}

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

func (x *ImportKeyReq) GetPrivateKey() string {
	if x != nil {
		return x.PrivateKey
	}
	return ""
}

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

	Status  int32  `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Details string `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"`
}

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

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

func (*RelayerRunStatus) ProtoMessage() {}

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

func (x *RelayerRunStatus) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *RelayerRunStatus) GetDetails() string {
	if x != nil {
		return x.Details
	}
	return ""
}

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

	ClaimType     uint32 `protobuf:"varint,1,opt,name=claimType,proto3" json:"claimType,omitempty"`
	Chain33Sender string `protobuf:"bytes,2,opt,name=chain33Sender,proto3" json:"chain33Sender,omitempty"`
	TokenAddr     string `protobuf:"bytes,3,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
	Symbol        string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"`
	EthReceiver   string `protobuf:"bytes,5,opt,name=ethReceiver,proto3" json:"ethReceiver,omitempty"`
	Amount        string `protobuf:"bytes,6,opt,name=amount,proto3" json:"amount,omitempty"`
	TxHash        string `protobuf:"bytes,7,opt,name=txHash,proto3" json:"txHash,omitempty"`
}

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

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

func (*NewProphecyClaim) ProtoMessage() {}

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

func (x *NewProphecyClaim) GetClaimType() uint32 {
	if x != nil {
		return x.ClaimType
	}
	return 0
}

func (x *NewProphecyClaim) GetChain33Sender() string {
	if x != nil {
		return x.Chain33Sender
	}
	return ""
}

func (x *NewProphecyClaim) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

func (x *NewProphecyClaim) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *NewProphecyClaim) GetEthReceiver() string {
	if x != nil {
		return x.EthReceiver
	}
	return ""
}

func (x *NewProphecyClaim) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *NewProphecyClaim) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

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

	Owner     string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"`
	TokenAddr string `protobuf:"bytes,2,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
}

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

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

func (*BalanceAddr) ProtoMessage() {}

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

func (x *BalanceAddr) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *BalanceAddr) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

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

	Owner     string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"`
	TokenAddr string `protobuf:"bytes,2,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
	Amount    string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"`
}

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

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

func (*MintToken) ProtoMessage() {}

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

func (x *MintToken) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *MintToken) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

func (x *MintToken) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

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

	OwnerKey  string `protobuf:"bytes,1,opt,name=ownerKey,proto3" json:"ownerKey,omitempty"`
	TokenAddr string `protobuf:"bytes,2,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
	Amount    string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"`
}

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

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

func (*ApproveAllowance) ProtoMessage() {}

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

func (x *ApproveAllowance) GetOwnerKey() string {
	if x != nil {
		return x.OwnerKey
	}
	return ""
}

func (x *ApproveAllowance) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

func (x *ApproveAllowance) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

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

	OwnerKey  string `protobuf:"bytes,1,opt,name=ownerKey,proto3" json:"ownerKey,omitempty"`
	TokenAddr string `protobuf:"bytes,2,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
	Amount    string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"`
	//将lock住的资产跨链转移到chain33的该账户名下
	Chain33Receiver string `protobuf:"bytes,4,opt,name=chain33Receiver,proto3" json:"chain33Receiver,omitempty"`
}

func (x *LockEthErc20) Reset() {
	*x = LockEthErc20{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LockEthErc20) ProtoMessage() {}

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

func (x *LockEthErc20) GetOwnerKey() string {
	if x != nil {
		return x.OwnerKey
	}
	return ""
}

func (x *LockEthErc20) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

func (x *LockEthErc20) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *LockEthErc20) GetChain33Receiver() string {
	if x != nil {
		return x.Chain33Receiver
	}
	return ""
}

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

	OwnerKey string `protobuf:"bytes,1,opt,name=ownerKey,proto3" json:"ownerKey,omitempty"`
	Amount   string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	//将lock住的资产跨链转移到ethereum的该账户名下
	EtherumReceiver string `protobuf:"bytes,3,opt,name=etherumReceiver,proto3" json:"etherumReceiver,omitempty"`
}

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

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

func (*LockBTY) ProtoMessage() {}

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

func (x *LockBTY) GetOwnerKey() string {
	if x != nil {
		return x.OwnerKey
	}
	return ""
}

func (x *LockBTY) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *LockBTY) GetEtherumReceiver() string {
	if x != nil {
		return x.EtherumReceiver
	}
	return ""
}

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

	IsOK bool   `protobuf:"varint,1,opt,name=isOK,proto3" json:"isOK,omitempty"`
	Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
}

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

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

func (*ReplyAddr) ProtoMessage() {}

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

func (x *ReplyAddr) GetIsOK() bool {
	if x != nil {
		return x.IsOK
	}
	return false
}

func (x *ReplyAddr) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

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

	IsOK    bool   `protobuf:"varint,1,opt,name=isOK,proto3" json:"isOK,omitempty"`
	Balance string `protobuf:"bytes,2,opt,name=balance,proto3" json:"balance,omitempty"`
}

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

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

func (*ReplyBalance) ProtoMessage() {}

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

func (x *ReplyBalance) GetIsOK() bool {
	if x != nil {
		return x.IsOK
	}
	return false
}

func (x *ReplyBalance) GetBalance() string {
	if x != nil {
		return x.Balance
	}
	return ""
}

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

	OwnerKey        string `protobuf:"bytes,1,opt,name=ownerKey,proto3" json:"ownerKey,omitempty"`
	TokenAddr       string `protobuf:"bytes,2,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
	Amount          string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"`
	Chain33Receiver string `protobuf:"bytes,4,opt,name=chain33Receiver,proto3" json:"chain33Receiver,omitempty"`
}

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

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

func (*Burn) ProtoMessage() {}

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

func (x *Burn) GetOwnerKey() string {
	if x != nil {
		return x.OwnerKey
	}
	return ""
}

func (x *Burn) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

func (x *Burn) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *Burn) GetChain33Receiver() string {
	if x != nil {
		return x.Chain33Receiver
	}
	return ""
}

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

	OwnerKey         string `protobuf:"bytes,1,opt,name=ownerKey,proto3" json:"ownerKey,omitempty"`
	TokenAddr        string `protobuf:"bytes,2,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
	Amount           string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"`
	EthereumReceiver string `protobuf:"bytes,4,opt,name=ethereumReceiver,proto3" json:"ethereumReceiver,omitempty"`
}

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

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

func (*BurnFromChain33) ProtoMessage() {}

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

func (x *BurnFromChain33) GetOwnerKey() string {
	if x != nil {
		return x.OwnerKey
	}
	return ""
}

func (x *BurnFromChain33) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

func (x *BurnFromChain33) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *BurnFromChain33) GetEthereumReceiver() string {
	if x != nil {
		return x.EthereumReceiver
	}
	return ""
}

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

	TokenAddr string `protobuf:"bytes,1,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
	FromKey   string `protobuf:"bytes,2,opt,name=fromKey,proto3" json:"fromKey,omitempty"`
	ToAddr    string `protobuf:"bytes,3,opt,name=toAddr,proto3" json:"toAddr,omitempty"`
	Amount    string `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"`
}

func (x *TransferToken) Reset() {
	*x = TransferToken{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TransferToken) ProtoMessage() {}

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

func (x *TransferToken) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

func (x *TransferToken) GetFromKey() string {
	if x != nil {
		return x.FromKey
	}
	return ""
}

func (x *TransferToken) GetToAddr() string {
	if x != nil {
		return x.ToAddr
	}
	return ""
}

func (x *TransferToken) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

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

	Data uint64 `protobuf:"varint,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *Uint64) Reset() {
	*x = Uint64{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Uint64) ProtoMessage() {}

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

func (x *Uint64) GetData() uint64 {
	if x != nil {
		return x.Data
	}
	return 0
}

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

	Height uint64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Index  uint32 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
}

func (x *EventLogIndex) Reset() {
	*x = EventLogIndex{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*EventLogIndex) ProtoMessage() {}

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

func (x *EventLogIndex) GetHeight() uint64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *EventLogIndex) GetIndex() uint32 {
	if x != nil {
		return x.Index
	}
	return 0
}

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

	EthTxstatus    string `protobuf:"bytes,1,opt,name=ethTxstatus,proto3" json:"ethTxstatus,omitempty"`
	Chain33Txhash  string `protobuf:"bytes,2,opt,name=chain33Txhash,proto3" json:"chain33Txhash,omitempty"`
	EthereumTxhash string `protobuf:"bytes,3,opt,name=EthereumTxhash,proto3" json:"EthereumTxhash,omitempty"`
	BurnLock       int32  `protobuf:"varint,4,opt,name=burnLock,proto3" json:"burnLock,omitempty"`
	//该笔lock或者burn交易的chain33发起人
	Chain33Sender    string `protobuf:"bytes,5,opt,name=chain33Sender,proto3" json:"chain33Sender,omitempty"`
	EthereumReceiver string `protobuf:"bytes,6,opt,name=ethereumReceiver,proto3" json:"ethereumReceiver,omitempty"`
	Symbol           string `protobuf:"bytes,7,opt,name=symbol,proto3" json:"symbol,omitempty"`
	//因为考虑到,eth的单位是以wei计算的，所以使用string类型
	Amount        string `protobuf:"bytes,8,opt,name=amount,proto3" json:"amount,omitempty"`
	Nonce         int64  `protobuf:"varint,9,opt,name=nonce,proto3" json:"nonce,omitempty"`
	TxIndex       int64  `protobuf:"varint,10,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
	OperationType string `protobuf:"bytes,11,opt,name=operationType,proto3" json:"operationType,omitempty"`
}

func (x *Chain33ToEthereumStatics) Reset() {
	*x = Chain33ToEthereumStatics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Chain33ToEthereumStatics) ProtoMessage() {}

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

func (x *Chain33ToEthereumStatics) GetEthTxstatus() string {
	if x != nil {
		return x.EthTxstatus
	}
	return ""
}

func (x *Chain33ToEthereumStatics) GetChain33Txhash() string {
	if x != nil {
		return x.Chain33Txhash
	}
	return ""
}

func (x *Chain33ToEthereumStatics) GetEthereumTxhash() string {
	if x != nil {
		return x.EthereumTxhash
	}
	return ""
}

func (x *Chain33ToEthereumStatics) GetBurnLock() int32 {
	if x != nil {
		return x.BurnLock
	}
	return 0
}

func (x *Chain33ToEthereumStatics) GetChain33Sender() string {
	if x != nil {
		return x.Chain33Sender
	}
	return ""
}

func (x *Chain33ToEthereumStatics) GetEthereumReceiver() string {
	if x != nil {
		return x.EthereumReceiver
	}
	return ""
}

func (x *Chain33ToEthereumStatics) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *Chain33ToEthereumStatics) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *Chain33ToEthereumStatics) GetNonce() int64 {
	if x != nil {
		return x.Nonce
	}
	return 0
}

func (x *Chain33ToEthereumStatics) GetTxIndex() int64 {
	if x != nil {
		return x.TxIndex
	}
	return 0
}

func (x *Chain33ToEthereumStatics) GetOperationType() string {
	if x != nil {
		return x.OperationType
	}
	return ""
}

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

	Chain33Txstatus string `protobuf:"bytes,1,opt,name=chain33Txstatus,proto3" json:"chain33Txstatus,omitempty"`
	Chain33Txhash   string `protobuf:"bytes,2,opt,name=chain33Txhash,proto3" json:"chain33Txhash,omitempty"`
	EthereumTxhash  string `protobuf:"bytes,3,opt,name=EthereumTxhash,proto3" json:"EthereumTxhash,omitempty"`
	BurnLock        int32  `protobuf:"varint,4,opt,name=burnLock,proto3" json:"burnLock,omitempty"`
	//该笔lock或者burn交易的chain33发起人
	EthereumSender  string `protobuf:"bytes,5,opt,name=ethereumSender,proto3" json:"ethereumSender,omitempty"`
	Chain33Receiver string `protobuf:"bytes,6,opt,name=chain33Receiver,proto3" json:"chain33Receiver,omitempty"`
	Symbol          string `protobuf:"bytes,7,opt,name=symbol,proto3" json:"symbol,omitempty"`
	//因为考虑到,eth的单位是以wei计算的，所以使用string类型
	Amount        string `protobuf:"bytes,8,opt,name=amount,proto3" json:"amount,omitempty"`
	Nonce         int64  `protobuf:"varint,9,opt,name=nonce,proto3" json:"nonce,omitempty"`
	TxIndex       int64  `protobuf:"varint,10,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
	OperationType string `protobuf:"bytes,11,opt,name=operationType,proto3" json:"operationType,omitempty"`
}

func (x *Ethereum2Chain33Statics) Reset() {
	*x = Ethereum2Chain33Statics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Ethereum2Chain33Statics) ProtoMessage() {}

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

func (x *Ethereum2Chain33Statics) GetChain33Txstatus() string {
	if x != nil {
		return x.Chain33Txstatus
	}
	return ""
}

func (x *Ethereum2Chain33Statics) GetChain33Txhash() string {
	if x != nil {
		return x.Chain33Txhash
	}
	return ""
}

func (x *Ethereum2Chain33Statics) GetEthereumTxhash() string {
	if x != nil {
		return x.EthereumTxhash
	}
	return ""
}

func (x *Ethereum2Chain33Statics) GetBurnLock() int32 {
	if x != nil {
		return x.BurnLock
	}
	return 0
}

func (x *Ethereum2Chain33Statics) GetEthereumSender() string {
	if x != nil {
		return x.EthereumSender
	}
	return ""
}

func (x *Ethereum2Chain33Statics) GetChain33Receiver() string {
	if x != nil {
		return x.Chain33Receiver
	}
	return ""
}

func (x *Ethereum2Chain33Statics) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *Ethereum2Chain33Statics) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *Ethereum2Chain33Statics) GetNonce() int64 {
	if x != nil {
		return x.Nonce
	}
	return 0
}

func (x *Ethereum2Chain33Statics) GetTxIndex() int64 {
	if x != nil {
		return x.TxIndex
	}
	return 0
}

func (x *Ethereum2Chain33Statics) GetOperationType() string {
	if x != nil {
		return x.OperationType
	}
	return ""
}

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

	Address   string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Symbol    string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"`
	ChainName string `protobuf:"bytes,3,opt,name=chainName,proto3" json:"chainName,omitempty"`
	Decimal   int32  `protobuf:"varint,4,opt,name=decimal,proto3" json:"decimal,omitempty"`
}

func (x *TokenAddress) Reset() {
	*x = TokenAddress{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TokenAddress) ProtoMessage() {}

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

func (x *TokenAddress) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *TokenAddress) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *TokenAddress) GetChainName() string {
	if x != nil {
		return x.ChainName
	}
	return ""
}

func (x *TokenAddress) GetDecimal() int32 {
	if x != nil {
		return x.Decimal
	}
	return 0
}

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

	TokenAddress []*TokenAddress `protobuf:"bytes,1,rep,name=tokenAddress,proto3" json:"tokenAddress,omitempty"`
}

func (x *TokenAddressArray) Reset() {
	*x = TokenAddressArray{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TokenAddressArray) ProtoMessage() {}

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

func (x *TokenAddressArray) GetTokenAddress() []*TokenAddress {
	if x != nil {
		return x.TokenAddress
	}
	return nil
}

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

	Symbol    string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"`
	From      int32  `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"`
	Operation int32  `protobuf:"varint,3,opt,name=operation,proto3" json:"operation,omitempty"`
	Status    int32  `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	TxIndex   int64  `protobuf:"varint,5,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
	Count     int32  `protobuf:"varint,6,opt,name=count,proto3" json:"count,omitempty"`
}

func (x *TokenStaticsRequest) Reset() {
	*x = TokenStaticsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TokenStaticsRequest) ProtoMessage() {}

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

func (x *TokenStaticsRequest) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *TokenStaticsRequest) GetFrom() int32 {
	if x != nil {
		return x.From
	}
	return 0
}

func (x *TokenStaticsRequest) GetOperation() int32 {
	if x != nil {
		return x.Operation
	}
	return 0
}

func (x *TokenStaticsRequest) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *TokenStaticsRequest) GetTxIndex() int64 {
	if x != nil {
		return x.TxIndex
	}
	return 0
}

func (x *TokenStaticsRequest) GetCount() int32 {
	if x != nil {
		return x.Count
	}
	return 0
}

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

	E2Cstatics []*Ethereum2Chain33Statics  `protobuf:"bytes,1,rep,name=e2Cstatics,proto3" json:"e2Cstatics,omitempty"`
	C2Estatics []*Chain33ToEthereumStatics `protobuf:"bytes,2,rep,name=c2Estatics,proto3" json:"c2Estatics,omitempty"`
}

func (x *TokenStaticsResponse) Reset() {
	*x = TokenStaticsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TokenStaticsResponse) ProtoMessage() {}

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

func (x *TokenStaticsResponse) GetE2Cstatics() []*Ethereum2Chain33Statics {
	if x != nil {
		return x.E2Cstatics
	}
	return nil
}

func (x *TokenStaticsResponse) GetC2Estatics() []*Chain33ToEthereumStatics {
	if x != nil {
		return x.C2Estatics
	}
	return nil
}

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

	OperatorPrivateKey string   `protobuf:"bytes,1,opt,name=operatorPrivateKey,proto3" json:"operatorPrivateKey,omitempty"`
	Owners             []string `protobuf:"bytes,2,rep,name=owners,proto3" json:"owners,omitempty"`
}

func (x *SetupMulSign) Reset() {
	*x = SetupMulSign{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SetupMulSign) ProtoMessage() {}

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

func (x *SetupMulSign) GetOperatorPrivateKey() string {
	if x != nil {
		return x.OperatorPrivateKey
	}
	return ""
}

func (x *SetupMulSign) GetOwners() []string {
	if x != nil {
		return x.Owners
	}
	return nil
}

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

	To                 string   `protobuf:"bytes,1,opt,name=to,proto3" json:"to,omitempty"`
	Token              string   `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
	Amount             float64  `protobuf:"fixed64,3,opt,name=amount,proto3" json:"amount,omitempty"`
	OperatorPrivateKey string   `protobuf:"bytes,4,opt,name=operatorPrivateKey,proto3" json:"operatorPrivateKey,omitempty"`
	OwnerPrivateKeys   []string `protobuf:"bytes,5,rep,name=ownerPrivateKeys,proto3" json:"ownerPrivateKeys,omitempty"`
}

func (x *SafeTransfer) Reset() {
	*x = SafeTransfer{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SafeTransfer) ProtoMessage() {}

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

func (x *SafeTransfer) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

func (x *SafeTransfer) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

func (x *SafeTransfer) GetAmount() float64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

func (x *SafeTransfer) GetOperatorPrivateKey() string {
	if x != nil {
		return x.OperatorPrivateKey
	}
	return ""
}

func (x *SafeTransfer) GetOwnerPrivateKeys() []string {
	if x != nil {
		return x.OwnerPrivateKeys
	}
	return nil
}

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

	Owner    string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"`
	Name     string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Symbol   string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"`
	Amount   string `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"`
	Decimals int32  `protobuf:"varint,5,opt,name=decimals,proto3" json:"decimals,omitempty"`
}

func (x *ERC20Token) Reset() {
	*x = ERC20Token{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ERC20Token) ProtoMessage() {}

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

func (x *ERC20Token) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

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

func (x *ERC20Token) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *ERC20Token) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ERC20Token) GetDecimals() int32 {
	if x != nil {
		return x.Decimals
	}
	return 0
}

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

	Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Symbol  string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"`
}

func (x *ETHTokenLockAddress) Reset() {
	*x = ETHTokenLockAddress{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ETHTokenLockAddress) ProtoMessage() {}

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

func (x *ETHTokenLockAddress) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *ETHTokenLockAddress) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

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

	Address   string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Symbol    string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"`
	Threshold string `protobuf:"bytes,3,opt,name=threshold,proto3" json:"threshold,omitempty"`
	Percents  uint32 `protobuf:"varint,4,opt,name=percents,proto3" json:"percents,omitempty"`
}

func (x *ETHConfigLockedTokenOffline) Reset() {
	*x = ETHConfigLockedTokenOffline{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ETHConfigLockedTokenOffline) ProtoMessage() {}

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

func (x *ETHConfigLockedTokenOffline) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *ETHConfigLockedTokenOffline) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *ETHConfigLockedTokenOffline) GetThreshold() string {
	if x != nil {
		return x.Threshold
	}
	return ""
}

func (x *ETHConfigLockedTokenOffline) GetPercents() uint32 {
	if x != nil {
		return x.Percents
	}
	return 0
}

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

	BridgeBank string `protobuf:"bytes,1,opt,name=bridgeBank,proto3" json:"bridgeBank,omitempty"`
	TokenAddr  string `protobuf:"bytes,2,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
}

func (x *BalanceLockedReq) Reset() {
	*x = BalanceLockedReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*BalanceLockedReq) ProtoMessage() {}

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

func (x *BalanceLockedReq) GetBridgeBank() string {
	if x != nil {
		return x.BridgeBank
	}
	return ""
}

func (x *BalanceLockedReq) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

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

	Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
}

func (x *ResendChain33EventReq) Reset() {
	*x = ResendChain33EventReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ResendChain33EventReq) ProtoMessage() {}

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

func (x *ResendChain33EventReq) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

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

	Symbol       string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"`
	FeeAmount    string `protobuf:"bytes,2,opt,name=feeAmount,proto3" json:"feeAmount,omitempty"`
	AmountPerDay string `protobuf:"bytes,3,opt,name=amountPerDay,proto3" json:"amountPerDay,omitempty"`
}

func (x *CfgWithdrawReq) Reset() {
	*x = CfgWithdrawReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CfgWithdrawReq) ProtoMessage() {}

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

func (x *CfgWithdrawReq) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *CfgWithdrawReq) GetFeeAmount() string {
	if x != nil {
		return x.FeeAmount
	}
	return ""
}

func (x *CfgWithdrawReq) GetAmountPerDay() string {
	if x != nil {
		return x.AmountPerDay
	}
	return ""
}

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

	Fee          string `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"`
	AmountPerDay string `protobuf:"bytes,2,opt,name=amountPerDay,proto3" json:"amountPerDay,omitempty"`
}

func (x *WithdrawPara) Reset() {
	*x = WithdrawPara{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithdrawPara) ProtoMessage() {}

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

func (x *WithdrawPara) GetFee() string {
	if x != nil {
		return x.Fee
	}
	return ""
}

func (x *WithdrawPara) GetAmountPerDay() string {
	if x != nil {
		return x.AmountPerDay
	}
	return ""
}

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

	Symbol2Para map[string]*WithdrawPara `protobuf:"bytes,1,rep,name=symbol2Para,proto3" json:"symbol2Para,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *WithdrawSymbol2Para) Reset() {
	*x = WithdrawSymbol2Para{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithdrawSymbol2Para) ProtoMessage() {}

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

func (x *WithdrawSymbol2Para) GetSymbol2Para() map[string]*WithdrawPara {
	if x != nil {
		return x.Symbol2Para
	}
	return nil
}

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

	Chain33Sender     string `protobuf:"bytes,1,opt,name=chain33Sender,proto3" json:"chain33Sender,omitempty"`
	EthereumReceiver  string `protobuf:"bytes,2,opt,name=ethereumReceiver,proto3" json:"ethereumReceiver,omitempty"`
	Symbol            string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"`
	Amount            string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"`
	Nonce             int64  `protobuf:"varint,6,opt,name=nonce,proto3" json:"nonce,omitempty"`
	TxHashOnChain33   string `protobuf:"bytes,7,opt,name=txHashOnChain33,proto3" json:"txHashOnChain33,omitempty"`
	TxHashOnEthereum  string `protobuf:"bytes,8,opt,name=txHashOnEthereum,proto3" json:"txHashOnEthereum,omitempty"`
	Year              int32  `protobuf:"varint,9,opt,name=year,proto3" json:"year,omitempty"`
	Month             int32  `protobuf:"varint,10,opt,name=month,proto3" json:"month,omitempty"`
	Day               int32  `protobuf:"varint,11,opt,name=day,proto3" json:"day,omitempty"`
	Status            int32  `protobuf:"varint,12,opt,name=status,proto3" json:"status,omitempty"`
	StatusDescription int32  `protobuf:"varint,13,opt,name=statusDescription,proto3" json:"statusDescription,omitempty"`
	ErrorDescription  string `protobuf:"bytes,14,opt,name=errorDescription,proto3" json:"errorDescription,omitempty"`
}

func (x *WithdrawTx) Reset() {
	*x = WithdrawTx{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithdrawTx) ProtoMessage() {}

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

func (x *WithdrawTx) GetChain33Sender() string {
	if x != nil {
		return x.Chain33Sender
	}
	return ""
}

func (x *WithdrawTx) GetEthereumReceiver() string {
	if x != nil {
		return x.EthereumReceiver
	}
	return ""
}

func (x *WithdrawTx) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *WithdrawTx) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *WithdrawTx) GetNonce() int64 {
	if x != nil {
		return x.Nonce
	}
	return 0
}

func (x *WithdrawTx) GetTxHashOnChain33() string {
	if x != nil {
		return x.TxHashOnChain33
	}
	return ""
}

func (x *WithdrawTx) GetTxHashOnEthereum() string {
	if x != nil {
		return x.TxHashOnEthereum
	}
	return ""
}

func (x *WithdrawTx) GetYear() int32 {
	if x != nil {
		return x.Year
	}
	return 0
}

func (x *WithdrawTx) GetMonth() int32 {
	if x != nil {
		return x.Month
	}
	return 0
}

func (x *WithdrawTx) GetDay() int32 {
	if x != nil {
		return x.Day
	}
	return 0
}

func (x *WithdrawTx) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *WithdrawTx) GetStatusDescription() int32 {
	if x != nil {
		return x.StatusDescription
	}
	return 0
}

func (x *WithdrawTx) GetErrorDescription() string {
	if x != nil {
		return x.ErrorDescription
	}
	return ""
}

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

	OwnerKey         string `protobuf:"bytes,1,opt,name=ownerKey,proto3" json:"ownerKey,omitempty"`
	TokenAddr        string `protobuf:"bytes,2,opt,name=tokenAddr,proto3" json:"tokenAddr,omitempty"`
	Amount           string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"`
	EthereumReceiver string `protobuf:"bytes,4,opt,name=ethereumReceiver,proto3" json:"ethereumReceiver,omitempty"`
}

func (x *WithdrawFromChain33) Reset() {
	*x = WithdrawFromChain33{}
	if protoimpl.UnsafeEnabled {
		mi := &file_relayer_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithdrawFromChain33) ProtoMessage() {}

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

func (x *WithdrawFromChain33) GetOwnerKey() string {
	if x != nil {
		return x.OwnerKey
	}
	return ""
}

func (x *WithdrawFromChain33) GetTokenAddr() string {
	if x != nil {
		return x.TokenAddr
	}
	return ""
}

func (x *WithdrawFromChain33) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *WithdrawFromChain33) GetEthereumReceiver() string {
	if x != nil {
		return x.EthereumReceiver
	}
	return ""
}

var File_relayer_proto protoreflect.FileDescriptor

var file_relayer_proto_rawDesc = []byte{
	0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x34, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69,
	0x76, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76,
	0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x22, 0x48, 0x0a, 0x18, 0x56, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x34, 0x45, 0x74, 0x68, 0x52, 0x65, 0x6c, 0x61,
	0x79, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11,
	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x22, 0x22, 0x0a, 0x08, 0x54, 0x78, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x16, 0x0a,
	0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74,
	0x78, 0x68, 0x61, 0x73, 0x68, 0x22, 0x59, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6e,
	0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x50,
	0x61, 0x73, 0x73, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
	0x6f, 0x6c, 0x64, 0x50, 0x61, 0x73, 0x73, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c,
	0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x70, 0x68, 0x61, 0x73, 0x65,
	0x22, 0x2c, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x64,
	0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x73, 0x73, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x73, 0x73, 0x70, 0x68, 0x61, 0x73, 0x65, 0x22, 0x3c,
	0x0a, 0x0c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x34, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x18,
	0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x70, 0x72, 0x69, 0x76, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x22, 0x5f, 0x0a, 0x09,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12,
	0x24, 0x0a, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x43, 0x6f, 0x6e,
	0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x8e, 0x03,
	0x0a, 0x0e, 0x45, 0x74, 0x68, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d,
	0x12, 0x28, 0x0a, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x69,
	0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72,
	0x65, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x72,
	0x69, 0x64, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x6b,
	0x41, 0x64, 0x64, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62,
	0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
	0x12, 0x26, 0x0a, 0x0e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x53, 0x65, 0x6e, 0x64,
	0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
	0x75, 0x6d, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x33, 0x33, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76,
	0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c,
	0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63,
	0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61,
	0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c,
	0x12, 0x1c, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x74, 0x68, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x2e,
	0x0a, 0x0c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1e,
	0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x44,
	0x0a, 0x10, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65,
	0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74,
	0x61, 0x69, 0x6c, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x10, 0x4e, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x70,
	0x68, 0x65, 0x63, 0x79, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61,
	0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6c,
	0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e,
	0x33, 0x33, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a,
	0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73,
	0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d,
	0x62, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x74, 0x68, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76,
	0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x74, 0x68, 0x52, 0x65, 0x63,
	0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a,
	0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
	0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x41, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
	0x41, 0x64, 0x64, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x22, 0x57, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x74,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x22, 0x64, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x6f,
	0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x65,
	0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12,
	0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x6b,
	0x45, 0x74, 0x68, 0x45, 0x72, 0x63, 0x32, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65,
	0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65,
	0x72, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64,
	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64,
	0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x33, 0x33, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x52, 0x65, 0x63, 0x65,
	0x69, 0x76, 0x65, 0x72, 0x22, 0x67, 0x0a, 0x07, 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x54, 0x59, 0x12,
	0x1a, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61,
	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x75, 0x6d, 0x52, 0x65,
	0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x74,
	0x68, 0x65, 0x72, 0x75, 0x6d, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x22, 0x33, 0x0a,
	0x09, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73,
	0x4f, 0x4b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x4b, 0x12, 0x12,
	0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64,
	0x64, 0x72, 0x22, 0x3c, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x61, 0x6c, 0x61, 0x6e,
	0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x4b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x04, 0x69, 0x73, 0x4f, 0x4b, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
	0x22, 0x82, 0x01, 0x0a, 0x04, 0x42, 0x75, 0x72, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64,
	0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41,
	0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63,
	0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x52, 0x65, 0x63,
	0x65, 0x69, 0x76, 0x65, 0x72, 0x22, 0x8f, 0x01, 0x0a, 0x0f, 0x42, 0x75, 0x72, 0x6e, 0x46, 0x72,
	0x6f, 0x6d, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64,
	0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41,
	0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x65,
	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x52,
	0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x22, 0x77, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73,
	0x66, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b,
	0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65,
	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79,
	0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x22, 0x1c, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3d,
	0x0a, 0x0d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
	0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xfe, 0x02,
	0x0a, 0x18, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x54, 0x6f, 0x45, 0x74, 0x68, 0x65, 0x72,
	0x65, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x74,
	0x68, 0x54, 0x78, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x65, 0x74, 0x68, 0x54, 0x78, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d,
	0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x54, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x54, 0x78, 0x68, 0x61,
	0x73, 0x68, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x54, 0x78,
	0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x45, 0x74, 0x68, 0x65,
	0x72, 0x65, 0x75, 0x6d, 0x54, 0x78, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75,
	0x72, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x75,
	0x72, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33,
	0x33, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63,
	0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10,
	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
	0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62,
	0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
	0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63,
	0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x18,
	0x0a, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x85,
	0x03, 0x0a, 0x17, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x32, 0x43, 0x68, 0x61, 0x69,
	0x6e, 0x33, 0x33, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x33, 0x33, 0x54, 0x78, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x54, 0x78, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x54,
	0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x33, 0x33, 0x54, 0x78, 0x68, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x74,
	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x54, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x54, 0x78, 0x68, 0x61,
	0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x72, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x75, 0x72, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x26,
	0x0a, 0x0e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
	0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33,
	0x33, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65,
	0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78,
	0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
	0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x78, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41,
	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61,
	0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c,
	0x22, 0x4c, 0x0a, 0x11, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x37, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xa7,
	0x01, 0x0a, 0x13, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x12,
	0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x72,
	0x6f, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x49, 0x6e,
	0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64,
	0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x65, 0x32, 0x43, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x74,
	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x32, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x53, 0x74,
	0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x0a, 0x65, 0x32, 0x43, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63,
	0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x32, 0x45, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x68,
	0x61, 0x69, 0x6e, 0x33, 0x33, 0x54, 0x6f, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x53,
	0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x0a, 0x63, 0x32, 0x45, 0x73, 0x74, 0x61, 0x74, 0x69,
	0x63, 0x73, 0x22, 0x56, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x75, 0x6c, 0x53, 0x69,
	0x67, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x72,
	0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12,
	0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b,
	0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x0c, 0x73,
	0x61, 0x66, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x74,
	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x6f, 0x70, 0x65,
	0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50,
	0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x05, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74,
	0x65, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x0a, 0x45, 0x52, 0x43, 0x32, 0x30, 0x54,
	0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16,
	0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a,
	0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x22, 0x47, 0x0a, 0x13, 0x45, 0x54,
	0x48, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73,
	0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d,
	0x62, 0x6f, 0x6c, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x45, 0x54, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4f, 0x66, 0x66, 0x6c,
	0x69, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
	0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
	0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68,
	0x6f, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x73, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x73, 0x22,
	0x50, 0x0a, 0x10, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64,
	0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x42, 0x61, 0x6e,
	0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x42,
	0x61, 0x6e, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64,
	0x72, 0x22, 0x2f, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e,
	0x33, 0x33, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x22, 0x6a, 0x0a, 0x0e, 0x43, 0x66, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61,
	0x77, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1c, 0x0a, 0x09,
	0x66, 0x65, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x66, 0x65, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x44, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0c, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x44, 0x61, 0x79, 0x22, 0x44,
	0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x50, 0x61, 0x72, 0x61, 0x12, 0x10,
	0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65,
	0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x44, 0x61, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65,
	0x72, 0x44, 0x61, 0x79, 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61,
	0x77, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x32, 0x50, 0x61, 0x72, 0x61, 0x12, 0x4d, 0x0a, 0x0b,
	0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x32, 0x50, 0x61, 0x72, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72,
	0x61, 0x77, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x32, 0x50, 0x61, 0x72, 0x61, 0x2e, 0x53, 0x79,
	0x6d, 0x62, 0x6f, 0x6c, 0x32, 0x50, 0x61, 0x72, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b,
	0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x32, 0x50, 0x61, 0x72, 0x61, 0x1a, 0x53, 0x0a, 0x10, 0x53,
	0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x32, 0x50, 0x61, 0x72, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61,
	0x77, 0x50, 0x61, 0x72, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0xa8, 0x03, 0x0a, 0x0a, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x78, 0x12,
	0x24, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x53,
	0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
	0x6d, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
	0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x78, 0x48, 0x61, 0x73,
	0x68, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0f, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x33,
	0x33, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x4f, 0x6e, 0x45, 0x74, 0x68,
	0x65, 0x72, 0x65, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x78, 0x48,
	0x61, 0x73, 0x68, 0x4f, 0x6e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x12, 0x12, 0x0a,
	0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x79, 0x65, 0x61,
	0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x0b,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x73, 0x63, 0x72,
	0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x2a, 0x0a, 0x10, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x72, 0x72, 0x6f, 0x72,
	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, 0x0a, 0x13,
	0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x69,
	0x6e, 0x33, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12,
	0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a,
	0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61,
	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
	0x6d, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
	0x72, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_relayer_proto_rawDescOnce sync.Once
	file_relayer_proto_rawDescData = file_relayer_proto_rawDesc
)

func file_relayer_proto_rawDescGZIP() []byte {
	file_relayer_proto_rawDescOnce.Do(func() {
		file_relayer_proto_rawDescData = protoimpl.X.CompressGZIP(file_relayer_proto_rawDescData)
	})
	return file_relayer_proto_rawDescData
}

var file_relayer_proto_msgTypes = make([]protoimpl.MessageInfo, 42)
var file_relayer_proto_goTypes = []interface{}{
	(*Account4Relayer)(nil),             // 0: types.Account4Relayer
	(*ValidatorAddr4EthRelayer)(nil),    // 1: types.ValidatorAddr4EthRelayer
	(*Txhashes)(nil),                    // 2: types.Txhashes
	(*ReqChangePasswd)(nil),             // 3: types.ReqChangePasswd
	(*ReqSetPasswd)(nil),                // 4: types.ReqSetPasswd
	(*Account4Show)(nil),                // 5: types.Account4Show
	(*AssetType)(nil),                   // 6: types.assetType
	(*EthBridgeClaim)(nil),              // 7: types.EthBridgeClaim
	(*ImportKeyReq)(nil),                // 8: types.ImportKeyReq
	(*RelayerRunStatus)(nil),            // 9: types.RelayerRunStatus
	(*NewProphecyClaim)(nil),            // 10: types.NewProphecyClaim
	(*BalanceAddr)(nil),                 // 11: types.BalanceAddr
	(*MintToken)(nil),                   // 12: types.MintToken
	(*ApproveAllowance)(nil),            // 13: types.ApproveAllowance
	(*LockEthErc20)(nil),                // 14: types.LockEthErc20
	(*LockBTY)(nil),                     // 15: types.LockBTY
	(*ReplyAddr)(nil),                   // 16: types.ReplyAddr
	(*ReplyBalance)(nil),                // 17: types.ReplyBalance
	(*Burn)(nil),                        // 18: types.Burn
	(*BurnFromChain33)(nil),             // 19: types.BurnFromChain33
	(*TransferToken)(nil),               // 20: types.TransferToken
	(*Uint64)(nil),                      // 21: types.Uint64
	(*EventLogIndex)(nil),               // 22: types.EventLogIndex
	(*Chain33ToEthereumStatics)(nil),    // 23: types.Chain33ToEthereumStatics
	(*Ethereum2Chain33Statics)(nil),     // 24: types.Ethereum2Chain33Statics
	(*TokenAddress)(nil),                // 25: types.TokenAddress
	(*TokenAddressArray)(nil),           // 26: types.TokenAddressArray
	(*TokenStaticsRequest)(nil),         // 27: types.TokenStaticsRequest
	(*TokenStaticsResponse)(nil),        // 28: types.TokenStaticsResponse
	(*SetupMulSign)(nil),                // 29: types.SetupMulSign
	(*SafeTransfer)(nil),                // 30: types.safeTransfer
	(*ERC20Token)(nil),                  // 31: types.ERC20Token
	(*ETHTokenLockAddress)(nil),         // 32: types.ETHTokenLockAddress
	(*ETHConfigLockedTokenOffline)(nil), // 33: types.ETHConfigLockedTokenOffline
	(*BalanceLockedReq)(nil),            // 34: types.BalanceLockedReq
	(*ResendChain33EventReq)(nil),       // 35: types.ResendChain33EventReq
	(*CfgWithdrawReq)(nil),              // 36: types.CfgWithdrawReq
	(*WithdrawPara)(nil),                // 37: types.withdrawPara
	(*WithdrawSymbol2Para)(nil),         // 38: types.WithdrawSymbol2Para
	(*WithdrawTx)(nil),                  // 39: types.WithdrawTx
	(*WithdrawFromChain33)(nil),         // 40: types.WithdrawFromChain33
	nil,                                 // 41: types.WithdrawSymbol2Para.Symbol2ParaEntry
}
var file_relayer_proto_depIdxs = []int32{
	25, // 0: types.TokenAddressArray.tokenAddress:type_name -> types.TokenAddress
	24, // 1: types.TokenStaticsResponse.e2Cstatics:type_name -> types.Ethereum2Chain33Statics
	23, // 2: types.TokenStaticsResponse.c2Estatics:type_name -> types.Chain33ToEthereumStatics
	41, // 3: types.WithdrawSymbol2Para.symbol2Para:type_name -> types.WithdrawSymbol2Para.Symbol2ParaEntry
	37, // 4: types.WithdrawSymbol2Para.Symbol2ParaEntry.value:type_name -> types.withdrawPara
	5,  // [5:5] is the sub-list for method output_type
	5,  // [5:5] is the sub-list for method input_type
	5,  // [5:5] is the sub-list for extension type_name
	5,  // [5:5] is the sub-list for extension extendee
	0,  // [0:5] is the sub-list for field type_name
}

func init() { file_relayer_proto_init() }
func file_relayer_proto_init() {
	if File_relayer_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_relayer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Account4Relayer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ValidatorAddr4EthRelayer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Txhashes); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqChangePasswd); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqSetPasswd); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Account4Show); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AssetType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EthBridgeClaim); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ImportKeyReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RelayerRunStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NewProphecyClaim); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BalanceAddr); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MintToken); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ApproveAllowance); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LockEthErc20); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LockBTY); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyAddr); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyBalance); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Burn); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BurnFromChain33); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransferToken); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Uint64); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EventLogIndex); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Chain33ToEthereumStatics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Ethereum2Chain33Statics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TokenAddress); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TokenAddressArray); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TokenStaticsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TokenStaticsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetupMulSign); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SafeTransfer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ERC20Token); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ETHTokenLockAddress); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ETHConfigLockedTokenOffline); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BalanceLockedReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ResendChain33EventReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CfgWithdrawReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithdrawPara); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithdrawSymbol2Para); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithdrawTx); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_relayer_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithdrawFromChain33); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_relayer_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   42,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_relayer_proto_goTypes,
		DependencyIndexes: file_relayer_proto_depIdxs,
		MessageInfos:      file_relayer_proto_msgTypes,
	}.Build()
	File_relayer_proto = out.File
	file_relayer_proto_rawDesc = nil
	file_relayer_proto_goTypes = nil
	file_relayer_proto_depIdxs = nil
}
