// Code generated by protoc-gen-go. DO NOT EDIT.
// source: multisig.proto

/*
Package types is a generated protocol buffer package.

It is generated from these files:
	multisig.proto

It has these top-level messages:
	MultiSig
	ConfirmedOwner
	MultiSigTx
	Owner
	DailyLimit
	SymbolDailyLimit
	MultiSigAction
	MultiSigAccCreate
	MultiSigOwnerOperate
	MultiSigAccOperate
	MultiSigExecTransfer
	MultiSigConfirmTx
	ReqMultiSigAccs
	ReplyMultiSigAccs
	ReqMultiSigAccInfo
	ReplyMultiSigAccInfo
	ReqMultiSigTxids
	ReplyMultiSigTxids
	ReqMultiSigTxInfo
	ReplyMultiSigTxInfo
	ReqMultiSigAccUnSpentToday
	ReplyUnSpentAssets
	UnSpentAssets
	ReceiptMultiSig
	ReceiptOwnerAddOrDel
	ReceiptOwnerModOrRep
	ReceiptWeightModify
	ReceiptDailyLimitOperate
	ReceiptConfirmTx
	ReceiptAccDailyLimitUpdate
	ReceiptMultiSigTx
	ReceiptTxCountUpdate
	MultiSigTxOwner
	Uint64
	AccountAssets
	ReqAccAssets
	ReplyAccAssets
	AccAssets
	Assets
	AccAddress
*/
package types

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import types1 "github.com/33cn/chain33/types"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

// ////////////////////////////////////////////////////////////////////////////
// message for multisig start/////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////
// 多重签名账户的状态信息，存在在statedb中，通过多重签名账户作为key值
// createaddr: 创建多重签名地址的创建者账户
// multisigaddr: 多重签名地址
// owners: 可以操作此多重签名地址的owner账户列表
// DailyLimit: 不同资产的每日限额，通过symbol来区分，本连的原生币，以及跨链过来的其他链的原生币
// txCount:记录此多重签名地址上提交的withdraw交易数
// requiredweight:确认一笔withdraw交易需要的权重。
type MultiSig struct {
	CreateAddr     string        `protobuf:"bytes,1,opt,name=createAddr" json:"createAddr,omitempty"`
	MultiSigAddr   string        `protobuf:"bytes,2,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	Owners         []*Owner      `protobuf:"bytes,3,rep,name=owners" json:"owners,omitempty"`
	DailyLimits    []*DailyLimit `protobuf:"bytes,4,rep,name=dailyLimits" json:"dailyLimits,omitempty"`
	TxCount        uint64        `protobuf:"varint,5,opt,name=txCount" json:"txCount,omitempty"`
	RequiredWeight uint64        `protobuf:"varint,6,opt,name=requiredWeight" json:"requiredWeight,omitempty"`
}

func (m *MultiSig) Reset()                    { *m = MultiSig{} }
func (m *MultiSig) String() string            { return proto.CompactTextString(m) }
func (*MultiSig) ProtoMessage()               {}
func (*MultiSig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

func (m *MultiSig) GetCreateAddr() string {
	if m != nil {
		return m.CreateAddr
	}
	return ""
}

func (m *MultiSig) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *MultiSig) GetOwners() []*Owner {
	if m != nil {
		return m.Owners
	}
	return nil
}

func (m *MultiSig) GetDailyLimits() []*DailyLimit {
	if m != nil {
		return m.DailyLimits
	}
	return nil
}

func (m *MultiSig) GetTxCount() uint64 {
	if m != nil {
		return m.TxCount
	}
	return 0
}

func (m *MultiSig) GetRequiredWeight() uint64 {
	if m != nil {
		return m.RequiredWeight
	}
	return 0
}

// 这个地址是否已经确认某个交易
type ConfirmedOwner struct {
	ConfirmedOwner []*Owner `protobuf:"bytes,1,rep,name=confirmedOwner" json:"confirmedOwner,omitempty"`
}

func (m *ConfirmedOwner) Reset()                    { *m = ConfirmedOwner{} }
func (m *ConfirmedOwner) String() string            { return proto.CompactTextString(m) }
func (*ConfirmedOwner) ProtoMessage()               {}
func (*ConfirmedOwner) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

func (m *ConfirmedOwner) GetConfirmedOwner() []*Owner {
	if m != nil {
		return m.ConfirmedOwner
	}
	return nil
}

// 记录提交的交易详情，在满足确认条件后执行data中的交易
// txHash:用于存贮提交的确认交易。存贮在localdb中，通过txhash可以获取
type MultiSigTx struct {
	Txid           uint64   `protobuf:"varint,1,opt,name=txid" json:"txid,omitempty"`
	TxHash         string   `protobuf:"bytes,2,opt,name=txHash" json:"txHash,omitempty"`
	Executed       bool     `protobuf:"varint,3,opt,name=executed" json:"executed,omitempty"`
	TxType         uint64   `protobuf:"varint,4,opt,name=txType" json:"txType,omitempty"`
	MultiSigAddr   string   `protobuf:"bytes,5,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	ConfirmedOwner []*Owner `protobuf:"bytes,6,rep,name=confirmedOwner" json:"confirmedOwner,omitempty"`
}

func (m *MultiSigTx) Reset()                    { *m = MultiSigTx{} }
func (m *MultiSigTx) String() string            { return proto.CompactTextString(m) }
func (*MultiSigTx) ProtoMessage()               {}
func (*MultiSigTx) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }

func (m *MultiSigTx) GetTxid() uint64 {
	if m != nil {
		return m.Txid
	}
	return 0
}

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

func (m *MultiSigTx) GetExecuted() bool {
	if m != nil {
		return m.Executed
	}
	return false
}

func (m *MultiSigTx) GetTxType() uint64 {
	if m != nil {
		return m.TxType
	}
	return 0
}

func (m *MultiSigTx) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *MultiSigTx) GetConfirmedOwner() []*Owner {
	if m != nil {
		return m.ConfirmedOwner
	}
	return nil
}

// owner 结构体：owner账户地址，以及权重
type Owner struct {
	OwnerAddr string `protobuf:"bytes,1,opt,name=ownerAddr" json:"ownerAddr,omitempty"`
	Weight    uint64 `protobuf:"varint,2,opt,name=weight" json:"weight,omitempty"`
}

func (m *Owner) Reset()                    { *m = Owner{} }
func (m *Owner) String() string            { return proto.CompactTextString(m) }
func (*Owner) ProtoMessage()               {}
func (*Owner) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }

func (m *Owner) GetOwnerAddr() string {
	if m != nil {
		return m.OwnerAddr
	}
	return ""
}

func (m *Owner) GetWeight() uint64 {
	if m != nil {
		return m.Weight
	}
	return 0
}

// 每日资产限额，不同的资产价格不一致，需要设置各自的每日限额。没有设置或者限额是0时，表示不能取币
// spentToday今天已经花费的额度。用于和dailyLimit做对比，超过每日限额时需要多重签名
// lastDay记录当天开始的时间戳，新的一天需要重置spentToday为初始值0，并修改lastDay的时间戳
type DailyLimit struct {
	Symbol     string `protobuf:"bytes,1,opt,name=symbol" json:"symbol,omitempty"`
	Execer     string `protobuf:"bytes,2,opt,name=execer" json:"execer,omitempty"`
	DailyLimit uint64 `protobuf:"varint,3,opt,name=dailyLimit" json:"dailyLimit,omitempty"`
	SpentToday uint64 `protobuf:"varint,4,opt,name=spentToday" json:"spentToday,omitempty"`
	LastDay    int64  `protobuf:"varint,5,opt,name=lastDay" json:"lastDay,omitempty"`
}

func (m *DailyLimit) Reset()                    { *m = DailyLimit{} }
func (m *DailyLimit) String() string            { return proto.CompactTextString(m) }
func (*DailyLimit) ProtoMessage()               {}
func (*DailyLimit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }

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

func (m *DailyLimit) GetExecer() string {
	if m != nil {
		return m.Execer
	}
	return ""
}

func (m *DailyLimit) GetDailyLimit() uint64 {
	if m != nil {
		return m.DailyLimit
	}
	return 0
}

func (m *DailyLimit) GetSpentToday() uint64 {
	if m != nil {
		return m.SpentToday
	}
	return 0
}

func (m *DailyLimit) GetLastDay() int64 {
	if m != nil {
		return m.LastDay
	}
	return 0
}

type SymbolDailyLimit struct {
	Symbol     string `protobuf:"bytes,1,opt,name=symbol" json:"symbol,omitempty"`
	Execer     string `protobuf:"bytes,2,opt,name=execer" json:"execer,omitempty"`
	DailyLimit uint64 `protobuf:"varint,3,opt,name=dailyLimit" json:"dailyLimit,omitempty"`
}

func (m *SymbolDailyLimit) Reset()                    { *m = SymbolDailyLimit{} }
func (m *SymbolDailyLimit) String() string            { return proto.CompactTextString(m) }
func (*SymbolDailyLimit) ProtoMessage()               {}
func (*SymbolDailyLimit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }

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

func (m *SymbolDailyLimit) GetExecer() string {
	if m != nil {
		return m.Execer
	}
	return ""
}

func (m *SymbolDailyLimit) GetDailyLimit() uint64 {
	if m != nil {
		return m.DailyLimit
	}
	return 0
}

// MultiSig 所有可能的交易action
type MultiSigAction struct {
	// Types that are valid to be assigned to Value:
	//	*MultiSigAction_MultiSigAccCreate
	//	*MultiSigAction_MultiSigOwnerOperate
	//	*MultiSigAction_MultiSigAccOperate
	//	*MultiSigAction_MultiSigConfirmTx
	//	*MultiSigAction_MultiSigExecTransferTo
	//	*MultiSigAction_MultiSigExecTransferFrom
	Value isMultiSigAction_Value `protobuf_oneof:"value"`
	Ty    int32                  `protobuf:"varint,7,opt,name=Ty" json:"Ty,omitempty"`
}

func (m *MultiSigAction) Reset()                    { *m = MultiSigAction{} }
func (m *MultiSigAction) String() string            { return proto.CompactTextString(m) }
func (*MultiSigAction) ProtoMessage()               {}
func (*MultiSigAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }

type isMultiSigAction_Value interface {
	isMultiSigAction_Value()
}

type MultiSigAction_MultiSigAccCreate struct {
	MultiSigAccCreate *MultiSigAccCreate `protobuf:"bytes,1,opt,name=multiSigAccCreate,oneof"`
}
type MultiSigAction_MultiSigOwnerOperate struct {
	MultiSigOwnerOperate *MultiSigOwnerOperate `protobuf:"bytes,2,opt,name=multiSigOwnerOperate,oneof"`
}
type MultiSigAction_MultiSigAccOperate struct {
	MultiSigAccOperate *MultiSigAccOperate `protobuf:"bytes,3,opt,name=multiSigAccOperate,oneof"`
}
type MultiSigAction_MultiSigConfirmTx struct {
	MultiSigConfirmTx *MultiSigConfirmTx `protobuf:"bytes,4,opt,name=multiSigConfirmTx,oneof"`
}
type MultiSigAction_MultiSigExecTransferTo struct {
	MultiSigExecTransferTo *MultiSigExecTransfer `protobuf:"bytes,5,opt,name=multiSigExecTransferTo,oneof"`
}
type MultiSigAction_MultiSigExecTransferFrom struct {
	MultiSigExecTransferFrom *MultiSigExecTransfer `protobuf:"bytes,6,opt,name=multiSigExecTransferFrom,oneof"`
}

func (*MultiSigAction_MultiSigAccCreate) isMultiSigAction_Value()        {}
func (*MultiSigAction_MultiSigOwnerOperate) isMultiSigAction_Value()     {}
func (*MultiSigAction_MultiSigAccOperate) isMultiSigAction_Value()       {}
func (*MultiSigAction_MultiSigConfirmTx) isMultiSigAction_Value()        {}
func (*MultiSigAction_MultiSigExecTransferTo) isMultiSigAction_Value()   {}
func (*MultiSigAction_MultiSigExecTransferFrom) isMultiSigAction_Value() {}

func (m *MultiSigAction) GetValue() isMultiSigAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *MultiSigAction) GetMultiSigAccCreate() *MultiSigAccCreate {
	if x, ok := m.GetValue().(*MultiSigAction_MultiSigAccCreate); ok {
		return x.MultiSigAccCreate
	}
	return nil
}

func (m *MultiSigAction) GetMultiSigOwnerOperate() *MultiSigOwnerOperate {
	if x, ok := m.GetValue().(*MultiSigAction_MultiSigOwnerOperate); ok {
		return x.MultiSigOwnerOperate
	}
	return nil
}

func (m *MultiSigAction) GetMultiSigAccOperate() *MultiSigAccOperate {
	if x, ok := m.GetValue().(*MultiSigAction_MultiSigAccOperate); ok {
		return x.MultiSigAccOperate
	}
	return nil
}

func (m *MultiSigAction) GetMultiSigConfirmTx() *MultiSigConfirmTx {
	if x, ok := m.GetValue().(*MultiSigAction_MultiSigConfirmTx); ok {
		return x.MultiSigConfirmTx
	}
	return nil
}

func (m *MultiSigAction) GetMultiSigExecTransferTo() *MultiSigExecTransfer {
	if x, ok := m.GetValue().(*MultiSigAction_MultiSigExecTransferTo); ok {
		return x.MultiSigExecTransferTo
	}
	return nil
}

func (m *MultiSigAction) GetMultiSigExecTransferFrom() *MultiSigExecTransfer {
	if x, ok := m.GetValue().(*MultiSigAction_MultiSigExecTransferFrom); ok {
		return x.MultiSigExecTransferFrom
	}
	return nil
}

func (m *MultiSigAction) GetTy() int32 {
	if m != nil {
		return m.Ty
	}
	return 0
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*MultiSigAction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _MultiSigAction_OneofMarshaler, _MultiSigAction_OneofUnmarshaler, _MultiSigAction_OneofSizer, []interface{}{
		(*MultiSigAction_MultiSigAccCreate)(nil),
		(*MultiSigAction_MultiSigOwnerOperate)(nil),
		(*MultiSigAction_MultiSigAccOperate)(nil),
		(*MultiSigAction_MultiSigConfirmTx)(nil),
		(*MultiSigAction_MultiSigExecTransferTo)(nil),
		(*MultiSigAction_MultiSigExecTransferFrom)(nil),
	}
}

func _MultiSigAction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*MultiSigAction)
	// value
	switch x := m.Value.(type) {
	case *MultiSigAction_MultiSigAccCreate:
		b.EncodeVarint(1<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.MultiSigAccCreate); err != nil {
			return err
		}
	case *MultiSigAction_MultiSigOwnerOperate:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.MultiSigOwnerOperate); err != nil {
			return err
		}
	case *MultiSigAction_MultiSigAccOperate:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.MultiSigAccOperate); err != nil {
			return err
		}
	case *MultiSigAction_MultiSigConfirmTx:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.MultiSigConfirmTx); err != nil {
			return err
		}
	case *MultiSigAction_MultiSigExecTransferTo:
		b.EncodeVarint(5<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.MultiSigExecTransferTo); err != nil {
			return err
		}
	case *MultiSigAction_MultiSigExecTransferFrom:
		b.EncodeVarint(6<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.MultiSigExecTransferFrom); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("MultiSigAction.Value has unexpected type %T", x)
	}
	return nil
}

func _MultiSigAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*MultiSigAction)
	switch tag {
	case 1: // value.multiSigAccCreate
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(MultiSigAccCreate)
		err := b.DecodeMessage(msg)
		m.Value = &MultiSigAction_MultiSigAccCreate{msg}
		return true, err
	case 2: // value.multiSigOwnerOperate
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(MultiSigOwnerOperate)
		err := b.DecodeMessage(msg)
		m.Value = &MultiSigAction_MultiSigOwnerOperate{msg}
		return true, err
	case 3: // value.multiSigAccOperate
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(MultiSigAccOperate)
		err := b.DecodeMessage(msg)
		m.Value = &MultiSigAction_MultiSigAccOperate{msg}
		return true, err
	case 4: // value.multiSigConfirmTx
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(MultiSigConfirmTx)
		err := b.DecodeMessage(msg)
		m.Value = &MultiSigAction_MultiSigConfirmTx{msg}
		return true, err
	case 5: // value.multiSigExecTransferTo
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(MultiSigExecTransfer)
		err := b.DecodeMessage(msg)
		m.Value = &MultiSigAction_MultiSigExecTransferTo{msg}
		return true, err
	case 6: // value.multiSigExecTransferFrom
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(MultiSigExecTransfer)
		err := b.DecodeMessage(msg)
		m.Value = &MultiSigAction_MultiSigExecTransferFrom{msg}
		return true, err
	default:
		return false, nil
	}
}

func _MultiSigAction_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*MultiSigAction)
	// value
	switch x := m.Value.(type) {
	case *MultiSigAction_MultiSigAccCreate:
		s := proto.Size(x.MultiSigAccCreate)
		n += proto.SizeVarint(1<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *MultiSigAction_MultiSigOwnerOperate:
		s := proto.Size(x.MultiSigOwnerOperate)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *MultiSigAction_MultiSigAccOperate:
		s := proto.Size(x.MultiSigAccOperate)
		n += proto.SizeVarint(3<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *MultiSigAction_MultiSigConfirmTx:
		s := proto.Size(x.MultiSigConfirmTx)
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *MultiSigAction_MultiSigExecTransferTo:
		s := proto.Size(x.MultiSigExecTransferTo)
		n += proto.SizeVarint(5<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *MultiSigAction_MultiSigExecTransferFrom:
		s := proto.Size(x.MultiSigExecTransferFrom)
		n += proto.SizeVarint(6<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// 创建多重签名账户时需要的信息：创建时最少初始化两个owners，资产的每日限额初始时可以不设置
type MultiSigAccCreate struct {
	Owners         []*Owner          `protobuf:"bytes,1,rep,name=owners" json:"owners,omitempty"`
	RequiredWeight uint64            `protobuf:"varint,2,opt,name=requiredWeight" json:"requiredWeight,omitempty"`
	DailyLimit     *SymbolDailyLimit `protobuf:"bytes,3,opt,name=dailyLimit" json:"dailyLimit,omitempty"`
}

func (m *MultiSigAccCreate) Reset()                    { *m = MultiSigAccCreate{} }
func (m *MultiSigAccCreate) String() string            { return proto.CompactTextString(m) }
func (*MultiSigAccCreate) ProtoMessage()               {}
func (*MultiSigAccCreate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }

func (m *MultiSigAccCreate) GetOwners() []*Owner {
	if m != nil {
		return m.Owners
	}
	return nil
}

func (m *MultiSigAccCreate) GetRequiredWeight() uint64 {
	if m != nil {
		return m.RequiredWeight
	}
	return 0
}

func (m *MultiSigAccCreate) GetDailyLimit() *SymbolDailyLimit {
	if m != nil {
		return m.DailyLimit
	}
	return nil
}

// 对MultiSigAccount账户owner的操作：add/del/replace/modify
type MultiSigOwnerOperate struct {
	MultiSigAccAddr string `protobuf:"bytes,1,opt,name=multiSigAccAddr" json:"multiSigAccAddr,omitempty"`
	OldOwner        string `protobuf:"bytes,2,opt,name=oldOwner" json:"oldOwner,omitempty"`
	NewOwner        string `protobuf:"bytes,3,opt,name=newOwner" json:"newOwner,omitempty"`
	NewWeight       uint64 `protobuf:"varint,4,opt,name=newWeight" json:"newWeight,omitempty"`
	OperateFlag     uint64 `protobuf:"varint,5,opt,name=operateFlag" json:"operateFlag,omitempty"`
}

func (m *MultiSigOwnerOperate) Reset()                    { *m = MultiSigOwnerOperate{} }
func (m *MultiSigOwnerOperate) String() string            { return proto.CompactTextString(m) }
func (*MultiSigOwnerOperate) ProtoMessage()               {}
func (*MultiSigOwnerOperate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }

func (m *MultiSigOwnerOperate) GetMultiSigAccAddr() string {
	if m != nil {
		return m.MultiSigAccAddr
	}
	return ""
}

func (m *MultiSigOwnerOperate) GetOldOwner() string {
	if m != nil {
		return m.OldOwner
	}
	return ""
}

func (m *MultiSigOwnerOperate) GetNewOwner() string {
	if m != nil {
		return m.NewOwner
	}
	return ""
}

func (m *MultiSigOwnerOperate) GetNewWeight() uint64 {
	if m != nil {
		return m.NewWeight
	}
	return 0
}

func (m *MultiSigOwnerOperate) GetOperateFlag() uint64 {
	if m != nil {
		return m.OperateFlag
	}
	return 0
}

// 对MultiSigAccount账户的操作：modify/add:SymbolDailyLimit,requiredweight
// 修改或者添加每日限额，或者请求权重的值。
type MultiSigAccOperate struct {
	MultiSigAccAddr   string            `protobuf:"bytes,1,opt,name=multiSigAccAddr" json:"multiSigAccAddr,omitempty"`
	DailyLimit        *SymbolDailyLimit `protobuf:"bytes,2,opt,name=dailyLimit" json:"dailyLimit,omitempty"`
	NewRequiredWeight uint64            `protobuf:"varint,3,opt,name=newRequiredWeight" json:"newRequiredWeight,omitempty"`
	OperateFlag       bool              `protobuf:"varint,4,opt,name=operateFlag" json:"operateFlag,omitempty"`
}

func (m *MultiSigAccOperate) Reset()                    { *m = MultiSigAccOperate{} }
func (m *MultiSigAccOperate) String() string            { return proto.CompactTextString(m) }
func (*MultiSigAccOperate) ProtoMessage()               {}
func (*MultiSigAccOperate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }

func (m *MultiSigAccOperate) GetMultiSigAccAddr() string {
	if m != nil {
		return m.MultiSigAccAddr
	}
	return ""
}

func (m *MultiSigAccOperate) GetDailyLimit() *SymbolDailyLimit {
	if m != nil {
		return m.DailyLimit
	}
	return nil
}

func (m *MultiSigAccOperate) GetNewRequiredWeight() uint64 {
	if m != nil {
		return m.NewRequiredWeight
	}
	return 0
}

func (m *MultiSigAccOperate) GetOperateFlag() bool {
	if m != nil {
		return m.OperateFlag
	}
	return false
}

// 多重签名合约中账户之间转币操作:增加一个from的字段实现MultiSigAddr<--->addr之间的转账
// 需要判断from地址是否是多重签名地址
// 将MultiSig合约中from地址上execname+symbol的资产转移到to地址
type MultiSigExecTransfer struct {
	Symbol   string `protobuf:"bytes,1,opt,name=symbol" json:"symbol,omitempty"`
	Amount   int64  `protobuf:"varint,2,opt,name=amount" json:"amount,omitempty"`
	Note     string `protobuf:"bytes,3,opt,name=note" json:"note,omitempty"`
	Execname string `protobuf:"bytes,4,opt,name=execname" json:"execname,omitempty"`
	To       string `protobuf:"bytes,5,opt,name=to" json:"to,omitempty"`
	From     string `protobuf:"bytes,6,opt,name=from" json:"from,omitempty"`
}

func (m *MultiSigExecTransfer) Reset()                    { *m = MultiSigExecTransfer{} }
func (m *MultiSigExecTransfer) String() string            { return proto.CompactTextString(m) }
func (*MultiSigExecTransfer) ProtoMessage()               {}
func (*MultiSigExecTransfer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }

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

func (m *MultiSigExecTransfer) GetAmount() int64 {
	if m != nil {
		return m.Amount
	}
	return 0
}

func (m *MultiSigExecTransfer) GetNote() string {
	if m != nil {
		return m.Note
	}
	return ""
}

func (m *MultiSigExecTransfer) GetExecname() string {
	if m != nil {
		return m.Execname
	}
	return ""
}

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

func (m *MultiSigExecTransfer) GetFrom() string {
	if m != nil {
		return m.From
	}
	return ""
}

// 多重签名账户withdraw交易的确认或者取消确认
// multisigaccaddr:多重签名账户地址
// transactionid:多重签名账户上的withdraw交易的内部id
type MultiSigConfirmTx struct {
	MultiSigAccAddr string `protobuf:"bytes,1,opt,name=multiSigAccAddr" json:"multiSigAccAddr,omitempty"`
	TxId            uint64 `protobuf:"varint,2,opt,name=txId" json:"txId,omitempty"`
	ConfirmOrRevoke bool   `protobuf:"varint,3,opt,name=confirmOrRevoke" json:"confirmOrRevoke,omitempty"`
}

func (m *MultiSigConfirmTx) Reset()                    { *m = MultiSigConfirmTx{} }
func (m *MultiSigConfirmTx) String() string            { return proto.CompactTextString(m) }
func (*MultiSigConfirmTx) ProtoMessage()               {}
func (*MultiSigConfirmTx) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }

func (m *MultiSigConfirmTx) GetMultiSigAccAddr() string {
	if m != nil {
		return m.MultiSigAccAddr
	}
	return ""
}

func (m *MultiSigConfirmTx) GetTxId() uint64 {
	if m != nil {
		return m.TxId
	}
	return 0
}

func (m *MultiSigConfirmTx) GetConfirmOrRevoke() bool {
	if m != nil {
		return m.ConfirmOrRevoke
	}
	return false
}

// 获取所有多重签名账号
type ReqMultiSigAccs struct {
	Start int64 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"`
	End   int64 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`
}

func (m *ReqMultiSigAccs) Reset()                    { *m = ReqMultiSigAccs{} }
func (m *ReqMultiSigAccs) String() string            { return proto.CompactTextString(m) }
func (*ReqMultiSigAccs) ProtoMessage()               {}
func (*ReqMultiSigAccs) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }

func (m *ReqMultiSigAccs) GetStart() int64 {
	if m != nil {
		return m.Start
	}
	return 0
}

func (m *ReqMultiSigAccs) GetEnd() int64 {
	if m != nil {
		return m.End
	}
	return 0
}

type ReplyMultiSigAccs struct {
	Address []string `protobuf:"bytes,1,rep,name=address" json:"address,omitempty"`
}

func (m *ReplyMultiSigAccs) Reset()                    { *m = ReplyMultiSigAccs{} }
func (m *ReplyMultiSigAccs) String() string            { return proto.CompactTextString(m) }
func (*ReplyMultiSigAccs) ProtoMessage()               {}
func (*ReplyMultiSigAccs) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }

func (m *ReplyMultiSigAccs) GetAddress() []string {
	if m != nil {
		return m.Address
	}
	return nil
}

// 获取指定多重签名账号的状态信息
type ReqMultiSigAccInfo struct {
	MultiSigAccAddr string `protobuf:"bytes,1,opt,name=multiSigAccAddr" json:"multiSigAccAddr,omitempty"`
}

func (m *ReqMultiSigAccInfo) Reset()                    { *m = ReqMultiSigAccInfo{} }
func (m *ReqMultiSigAccInfo) String() string            { return proto.CompactTextString(m) }
func (*ReqMultiSigAccInfo) ProtoMessage()               {}
func (*ReqMultiSigAccInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }

func (m *ReqMultiSigAccInfo) GetMultiSigAccAddr() string {
	if m != nil {
		return m.MultiSigAccAddr
	}
	return ""
}

// 指定多重签名账号的状态信息
type ReplyMultiSigAccInfo struct {
	CreateAddr     string        `protobuf:"bytes,1,opt,name=createAddr" json:"createAddr,omitempty"`
	MultiSigAddr   string        `protobuf:"bytes,2,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	Owners         []*Owner      `protobuf:"bytes,3,rep,name=owners" json:"owners,omitempty"`
	DailyLimits    []*DailyLimit `protobuf:"bytes,4,rep,name=dailyLimits" json:"dailyLimits,omitempty"`
	TxCount        uint64        `protobuf:"varint,5,opt,name=txCount" json:"txCount,omitempty"`
	RequiredWeight uint64        `protobuf:"varint,6,opt,name=requiredWeight" json:"requiredWeight,omitempty"`
}

func (m *ReplyMultiSigAccInfo) Reset()                    { *m = ReplyMultiSigAccInfo{} }
func (m *ReplyMultiSigAccInfo) String() string            { return proto.CompactTextString(m) }
func (*ReplyMultiSigAccInfo) ProtoMessage()               {}
func (*ReplyMultiSigAccInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }

func (m *ReplyMultiSigAccInfo) GetCreateAddr() string {
	if m != nil {
		return m.CreateAddr
	}
	return ""
}

func (m *ReplyMultiSigAccInfo) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReplyMultiSigAccInfo) GetOwners() []*Owner {
	if m != nil {
		return m.Owners
	}
	return nil
}

func (m *ReplyMultiSigAccInfo) GetDailyLimits() []*DailyLimit {
	if m != nil {
		return m.DailyLimits
	}
	return nil
}

func (m *ReplyMultiSigAccInfo) GetTxCount() uint64 {
	if m != nil {
		return m.TxCount
	}
	return 0
}

func (m *ReplyMultiSigAccInfo) GetRequiredWeight() uint64 {
	if m != nil {
		return m.RequiredWeight
	}
	return 0
}

// 获取txids设置过滤条件和区间，pending, executed
type ReqMultiSigTxids struct {
	MultiSigAddr string `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	FromTxId     uint64 `protobuf:"varint,2,opt,name=fromTxId" json:"fromTxId,omitempty"`
	ToTxId       uint64 `protobuf:"varint,3,opt,name=toTxId" json:"toTxId,omitempty"`
	Pending      bool   `protobuf:"varint,4,opt,name=pending" json:"pending,omitempty"`
	Executed     bool   `protobuf:"varint,5,opt,name=executed" json:"executed,omitempty"`
}

func (m *ReqMultiSigTxids) Reset()                    { *m = ReqMultiSigTxids{} }
func (m *ReqMultiSigTxids) String() string            { return proto.CompactTextString(m) }
func (*ReqMultiSigTxids) ProtoMessage()               {}
func (*ReqMultiSigTxids) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }

func (m *ReqMultiSigTxids) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReqMultiSigTxids) GetFromTxId() uint64 {
	if m != nil {
		return m.FromTxId
	}
	return 0
}

func (m *ReqMultiSigTxids) GetToTxId() uint64 {
	if m != nil {
		return m.ToTxId
	}
	return 0
}

func (m *ReqMultiSigTxids) GetPending() bool {
	if m != nil {
		return m.Pending
	}
	return false
}

func (m *ReqMultiSigTxids) GetExecuted() bool {
	if m != nil {
		return m.Executed
	}
	return false
}

type ReplyMultiSigTxids struct {
	MultiSigAddr string   `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	Txids        []uint64 `protobuf:"varint,2,rep,packed,name=txids" json:"txids,omitempty"`
}

func (m *ReplyMultiSigTxids) Reset()                    { *m = ReplyMultiSigTxids{} }
func (m *ReplyMultiSigTxids) String() string            { return proto.CompactTextString(m) }
func (*ReplyMultiSigTxids) ProtoMessage()               {}
func (*ReplyMultiSigTxids) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }

func (m *ReplyMultiSigTxids) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReplyMultiSigTxids) GetTxids() []uint64 {
	if m != nil {
		return m.Txids
	}
	return nil
}

// 获取txid交易的信息，以及参与确认的owner信息
type ReqMultiSigTxInfo struct {
	MultiSigAddr string `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	TxId         uint64 `protobuf:"varint,2,opt,name=txId" json:"txId,omitempty"`
}

func (m *ReqMultiSigTxInfo) Reset()                    { *m = ReqMultiSigTxInfo{} }
func (m *ReqMultiSigTxInfo) String() string            { return proto.CompactTextString(m) }
func (*ReqMultiSigTxInfo) ProtoMessage()               {}
func (*ReqMultiSigTxInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }

func (m *ReqMultiSigTxInfo) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReqMultiSigTxInfo) GetTxId() uint64 {
	if m != nil {
		return m.TxId
	}
	return 0
}

type ReplyMultiSigTxInfo struct {
	MultiSigTxInfo *MultiSigTx `protobuf:"bytes,1,opt,name=multiSigTxInfo" json:"multiSigTxInfo,omitempty"`
}

func (m *ReplyMultiSigTxInfo) Reset()                    { *m = ReplyMultiSigTxInfo{} }
func (m *ReplyMultiSigTxInfo) String() string            { return proto.CompactTextString(m) }
func (*ReplyMultiSigTxInfo) ProtoMessage()               {}
func (*ReplyMultiSigTxInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }

func (m *ReplyMultiSigTxInfo) GetMultiSigTxInfo() *MultiSigTx {
	if m != nil {
		return m.MultiSigTxInfo
	}
	return nil
}

// 获取指定资产当日剩余的免多重签名的余额
type ReqMultiSigAccUnSpentToday struct {
	MultiSigAddr string `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	Execer       string `protobuf:"bytes,2,opt,name=execer" json:"execer,omitempty"`
	Symbol       string `protobuf:"bytes,3,opt,name=symbol" json:"symbol,omitempty"`
}

func (m *ReqMultiSigAccUnSpentToday) Reset()                    { *m = ReqMultiSigAccUnSpentToday{} }
func (m *ReqMultiSigAccUnSpentToday) String() string            { return proto.CompactTextString(m) }
func (*ReqMultiSigAccUnSpentToday) ProtoMessage()               {}
func (*ReqMultiSigAccUnSpentToday) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }

func (m *ReqMultiSigAccUnSpentToday) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReqMultiSigAccUnSpentToday) GetExecer() string {
	if m != nil {
		return m.Execer
	}
	return ""
}

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

type ReplyUnSpentAssets struct {
	UnSpentAssets []*UnSpentAssets `protobuf:"bytes,3,rep,name=unSpentAssets" json:"unSpentAssets,omitempty"`
}

func (m *ReplyUnSpentAssets) Reset()                    { *m = ReplyUnSpentAssets{} }
func (m *ReplyUnSpentAssets) String() string            { return proto.CompactTextString(m) }
func (*ReplyUnSpentAssets) ProtoMessage()               {}
func (*ReplyUnSpentAssets) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }

func (m *ReplyUnSpentAssets) GetUnSpentAssets() []*UnSpentAssets {
	if m != nil {
		return m.UnSpentAssets
	}
	return nil
}

type UnSpentAssets struct {
	Assets *Assets `protobuf:"bytes,1,opt,name=assets" json:"assets,omitempty"`
	Amount uint64  `protobuf:"varint,2,opt,name=amount" json:"amount,omitempty"`
}

func (m *UnSpentAssets) Reset()                    { *m = UnSpentAssets{} }
func (m *UnSpentAssets) String() string            { return proto.CompactTextString(m) }
func (*UnSpentAssets) ProtoMessage()               {}
func (*UnSpentAssets) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }

func (m *UnSpentAssets) GetAssets() *Assets {
	if m != nil {
		return m.Assets
	}
	return nil
}

func (m *UnSpentAssets) GetAmount() uint64 {
	if m != nil {
		return m.Amount
	}
	return 0
}

// TyLogMultiSigAccCreate交易的执行Receipt
type ReceiptMultiSig struct {
	MultiSigAddr string `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
}

func (m *ReceiptMultiSig) Reset()                    { *m = ReceiptMultiSig{} }
func (m *ReceiptMultiSig) String() string            { return proto.CompactTextString(m) }
func (*ReceiptMultiSig) ProtoMessage()               {}
func (*ReceiptMultiSig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }

func (m *ReceiptMultiSig) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

type ReceiptOwnerAddOrDel struct {
	MultiSigAddr string `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	Owner        *Owner `protobuf:"bytes,2,opt,name=owner" json:"owner,omitempty"`
	AddOrDel     bool   `protobuf:"varint,3,opt,name=addOrDel" json:"addOrDel,omitempty"`
}

func (m *ReceiptOwnerAddOrDel) Reset()                    { *m = ReceiptOwnerAddOrDel{} }
func (m *ReceiptOwnerAddOrDel) String() string            { return proto.CompactTextString(m) }
func (*ReceiptOwnerAddOrDel) ProtoMessage()               {}
func (*ReceiptOwnerAddOrDel) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }

func (m *ReceiptOwnerAddOrDel) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReceiptOwnerAddOrDel) GetOwner() *Owner {
	if m != nil {
		return m.Owner
	}
	return nil
}

func (m *ReceiptOwnerAddOrDel) GetAddOrDel() bool {
	if m != nil {
		return m.AddOrDel
	}
	return false
}

// TyLogMultiSigOwnerModify  = 10003 //输出modify的owner：preweight以及currentweight
// TyLogMultiSigOwnerReplace = 10004 //输出old的owner的信息：以及当前的owner信息：addr+weight
type ReceiptOwnerModOrRep struct {
	MultiSigAddr string `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	PrevOwner    *Owner `protobuf:"bytes,2,opt,name=prevOwner" json:"prevOwner,omitempty"`
	CurrentOwner *Owner `protobuf:"bytes,3,opt,name=currentOwner" json:"currentOwner,omitempty"`
	ModOrRep     bool   `protobuf:"varint,4,opt,name=modOrRep" json:"modOrRep,omitempty"`
}

func (m *ReceiptOwnerModOrRep) Reset()                    { *m = ReceiptOwnerModOrRep{} }
func (m *ReceiptOwnerModOrRep) String() string            { return proto.CompactTextString(m) }
func (*ReceiptOwnerModOrRep) ProtoMessage()               {}
func (*ReceiptOwnerModOrRep) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }

func (m *ReceiptOwnerModOrRep) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReceiptOwnerModOrRep) GetPrevOwner() *Owner {
	if m != nil {
		return m.PrevOwner
	}
	return nil
}

func (m *ReceiptOwnerModOrRep) GetCurrentOwner() *Owner {
	if m != nil {
		return m.CurrentOwner
	}
	return nil
}

func (m *ReceiptOwnerModOrRep) GetModOrRep() bool {
	if m != nil {
		return m.ModOrRep
	}
	return false
}

// 多重签名账户的操作：ReqWeight，AssetDailyLimit
// TyLogMultiSigAccWeightModify     = 10005 //输出修改前后确认权重的值：preReqWeight和curReqWeight
type ReceiptWeightModify struct {
	MultiSigAddr  string `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	PrevWeight    uint64 `protobuf:"varint,2,opt,name=prevWeight" json:"prevWeight,omitempty"`
	CurrentWeight uint64 `protobuf:"varint,3,opt,name=currentWeight" json:"currentWeight,omitempty"`
}

func (m *ReceiptWeightModify) Reset()                    { *m = ReceiptWeightModify{} }
func (m *ReceiptWeightModify) String() string            { return proto.CompactTextString(m) }
func (*ReceiptWeightModify) ProtoMessage()               {}
func (*ReceiptWeightModify) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }

func (m *ReceiptWeightModify) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReceiptWeightModify) GetPrevWeight() uint64 {
	if m != nil {
		return m.PrevWeight
	}
	return 0
}

func (m *ReceiptWeightModify) GetCurrentWeight() uint64 {
	if m != nil {
		return m.CurrentWeight
	}
	return 0
}

// TyLogMultiSigAccDailyLimitAdd    = 10006 //输出add的DailyLimit：Symbol和DailyLimit
// TyLogMultiSigAccDailyLimitModify = 10007 //输出modify的DailyLimit：preDailyLimit以及currentDailyLimit
type ReceiptDailyLimitOperate struct {
	MultiSigAddr   string      `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	PrevDailyLimit *DailyLimit `protobuf:"bytes,2,opt,name=prevDailyLimit" json:"prevDailyLimit,omitempty"`
	CurDailyLimit  *DailyLimit `protobuf:"bytes,3,opt,name=curDailyLimit" json:"curDailyLimit,omitempty"`
	AddOrModify    bool        `protobuf:"varint,4,opt,name=addOrModify" json:"addOrModify,omitempty"`
}

func (m *ReceiptDailyLimitOperate) Reset()                    { *m = ReceiptDailyLimitOperate{} }
func (m *ReceiptDailyLimitOperate) String() string            { return proto.CompactTextString(m) }
func (*ReceiptDailyLimitOperate) ProtoMessage()               {}
func (*ReceiptDailyLimitOperate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }

func (m *ReceiptDailyLimitOperate) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReceiptDailyLimitOperate) GetPrevDailyLimit() *DailyLimit {
	if m != nil {
		return m.PrevDailyLimit
	}
	return nil
}

func (m *ReceiptDailyLimitOperate) GetCurDailyLimit() *DailyLimit {
	if m != nil {
		return m.CurDailyLimit
	}
	return nil
}

func (m *ReceiptDailyLimitOperate) GetAddOrModify() bool {
	if m != nil {
		return m.AddOrModify
	}
	return false
}

// 交易确认或者撤销（撤销值针对未执行的交易）
// TyLogMultiSigConfirmTx       = 10008 //输出确认的交易id，以及owner信息：addr+weight
// TyLogMultiSigConfirmTxRevoke = 10009 //输出撤销确认的交易id，以及owner信息：addr+weight
type ReceiptConfirmTx struct {
	MultiSigTxOwner  *MultiSigTxOwner `protobuf:"bytes,1,opt,name=multiSigTxOwner" json:"multiSigTxOwner,omitempty"`
	ConfirmeOrRevoke bool             `protobuf:"varint,2,opt,name=confirmeOrRevoke" json:"confirmeOrRevoke,omitempty"`
}

func (m *ReceiptConfirmTx) Reset()                    { *m = ReceiptConfirmTx{} }
func (m *ReceiptConfirmTx) String() string            { return proto.CompactTextString(m) }
func (*ReceiptConfirmTx) ProtoMessage()               {}
func (*ReceiptConfirmTx) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }

func (m *ReceiptConfirmTx) GetMultiSigTxOwner() *MultiSigTxOwner {
	if m != nil {
		return m.MultiSigTxOwner
	}
	return nil
}

func (m *ReceiptConfirmTx) GetConfirmeOrRevoke() bool {
	if m != nil {
		return m.ConfirmeOrRevoke
	}
	return false
}

// 可能会修改dailyLimit的相关属性
type ReceiptAccDailyLimitUpdate struct {
	MultiSigAddr   string      `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	PrevDailyLimit *DailyLimit `protobuf:"bytes,2,opt,name=prevDailyLimit" json:"prevDailyLimit,omitempty"`
	CurDailyLimit  *DailyLimit `protobuf:"bytes,3,opt,name=curDailyLimit" json:"curDailyLimit,omitempty"`
}

func (m *ReceiptAccDailyLimitUpdate) Reset()                    { *m = ReceiptAccDailyLimitUpdate{} }
func (m *ReceiptAccDailyLimitUpdate) String() string            { return proto.CompactTextString(m) }
func (*ReceiptAccDailyLimitUpdate) ProtoMessage()               {}
func (*ReceiptAccDailyLimitUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }

func (m *ReceiptAccDailyLimitUpdate) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReceiptAccDailyLimitUpdate) GetPrevDailyLimit() *DailyLimit {
	if m != nil {
		return m.PrevDailyLimit
	}
	return nil
}

func (m *ReceiptAccDailyLimitUpdate) GetCurDailyLimit() *DailyLimit {
	if m != nil {
		return m.CurDailyLimit
	}
	return nil
}

// 执行MultiSigAcc相关的交易可能会修改tx的执行状态和增加确认owner
type ReceiptMultiSigTx struct {
	MultiSigTxOwner *MultiSigTxOwner `protobuf:"bytes,1,opt,name=multiSigTxOwner" json:"multiSigTxOwner,omitempty"`
	PrevExecuted    bool             `protobuf:"varint,2,opt,name=prevExecuted" json:"prevExecuted,omitempty"`
	CurExecuted     bool             `protobuf:"varint,3,opt,name=curExecuted" json:"curExecuted,omitempty"`
	SubmitOrConfirm bool             `protobuf:"varint,4,opt,name=submitOrConfirm" json:"submitOrConfirm,omitempty"`
	TxHash          string           `protobuf:"bytes,5,opt,name=txHash" json:"txHash,omitempty"`
	TxType          uint64           `protobuf:"varint,6,opt,name=txType" json:"txType,omitempty"`
}

func (m *ReceiptMultiSigTx) Reset()                    { *m = ReceiptMultiSigTx{} }
func (m *ReceiptMultiSigTx) String() string            { return proto.CompactTextString(m) }
func (*ReceiptMultiSigTx) ProtoMessage()               {}
func (*ReceiptMultiSigTx) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }

func (m *ReceiptMultiSigTx) GetMultiSigTxOwner() *MultiSigTxOwner {
	if m != nil {
		return m.MultiSigTxOwner
	}
	return nil
}

func (m *ReceiptMultiSigTx) GetPrevExecuted() bool {
	if m != nil {
		return m.PrevExecuted
	}
	return false
}

func (m *ReceiptMultiSigTx) GetCurExecuted() bool {
	if m != nil {
		return m.CurExecuted
	}
	return false
}

func (m *ReceiptMultiSigTx) GetSubmitOrConfirm() bool {
	if m != nil {
		return m.SubmitOrConfirm
	}
	return false
}

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

func (m *ReceiptMultiSigTx) GetTxType() uint64 {
	if m != nil {
		return m.TxType
	}
	return 0
}

type ReceiptTxCountUpdate struct {
	MultiSigAddr string `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	CurTxCount   uint64 `protobuf:"varint,2,opt,name=curTxCount" json:"curTxCount,omitempty"`
}

func (m *ReceiptTxCountUpdate) Reset()                    { *m = ReceiptTxCountUpdate{} }
func (m *ReceiptTxCountUpdate) String() string            { return proto.CompactTextString(m) }
func (*ReceiptTxCountUpdate) ProtoMessage()               {}
func (*ReceiptTxCountUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }

func (m *ReceiptTxCountUpdate) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReceiptTxCountUpdate) GetCurTxCount() uint64 {
	if m != nil {
		return m.CurTxCount
	}
	return 0
}

type MultiSigTxOwner struct {
	MultiSigAddr   string `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	Txid           uint64 `protobuf:"varint,2,opt,name=txid" json:"txid,omitempty"`
	ConfirmedOwner *Owner `protobuf:"bytes,3,opt,name=confirmedOwner" json:"confirmedOwner,omitempty"`
}

func (m *MultiSigTxOwner) Reset()                    { *m = MultiSigTxOwner{} }
func (m *MultiSigTxOwner) String() string            { return proto.CompactTextString(m) }
func (*MultiSigTxOwner) ProtoMessage()               {}
func (*MultiSigTxOwner) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }

func (m *MultiSigTxOwner) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *MultiSigTxOwner) GetTxid() uint64 {
	if m != nil {
		return m.Txid
	}
	return 0
}

func (m *MultiSigTxOwner) GetConfirmedOwner() *Owner {
	if m != nil {
		return m.ConfirmedOwner
	}
	return nil
}

type Uint64 struct {
	Data uint64 `protobuf:"varint,1,opt,name=data" json:"data,omitempty"`
}

func (m *Uint64) Reset()                    { *m = Uint64{} }
func (m *Uint64) String() string            { return proto.CompactTextString(m) }
func (*Uint64) ProtoMessage()               {}
func (*Uint64) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }

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

// 记录账户收到固定资产的数量
type AccountAssets struct {
	MultiSigAddr string  `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	Assets       *Assets `protobuf:"bytes,2,opt,name=assets" json:"assets,omitempty"`
	Amount       int64   `protobuf:"varint,3,opt,name=amount" json:"amount,omitempty"`
}

func (m *AccountAssets) Reset()                    { *m = AccountAssets{} }
func (m *AccountAssets) String() string            { return proto.CompactTextString(m) }
func (*AccountAssets) ProtoMessage()               {}
func (*AccountAssets) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }

func (m *AccountAssets) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *AccountAssets) GetAssets() *Assets {
	if m != nil {
		return m.Assets
	}
	return nil
}

func (m *AccountAssets) GetAmount() int64 {
	if m != nil {
		return m.Amount
	}
	return 0
}

// 获取多重签名账户上的指定资产或者所有资产
type ReqAccAssets struct {
	MultiSigAddr string  `protobuf:"bytes,1,opt,name=multiSigAddr" json:"multiSigAddr,omitempty"`
	Assets       *Assets `protobuf:"bytes,2,opt,name=assets" json:"assets,omitempty"`
	IsAll        bool    `protobuf:"varint,3,opt,name=isAll" json:"isAll,omitempty"`
}

func (m *ReqAccAssets) Reset()                    { *m = ReqAccAssets{} }
func (m *ReqAccAssets) String() string            { return proto.CompactTextString(m) }
func (*ReqAccAssets) ProtoMessage()               {}
func (*ReqAccAssets) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }

func (m *ReqAccAssets) GetMultiSigAddr() string {
	if m != nil {
		return m.MultiSigAddr
	}
	return ""
}

func (m *ReqAccAssets) GetAssets() *Assets {
	if m != nil {
		return m.Assets
	}
	return nil
}

func (m *ReqAccAssets) GetIsAll() bool {
	if m != nil {
		return m.IsAll
	}
	return false
}

type ReplyAccAssets struct {
	AccAssets []*AccAssets `protobuf:"bytes,1,rep,name=accAssets" json:"accAssets,omitempty"`
}

func (m *ReplyAccAssets) Reset()                    { *m = ReplyAccAssets{} }
func (m *ReplyAccAssets) String() string            { return proto.CompactTextString(m) }
func (*ReplyAccAssets) ProtoMessage()               {}
func (*ReplyAccAssets) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }

func (m *ReplyAccAssets) GetAccAssets() []*AccAssets {
	if m != nil {
		return m.AccAssets
	}
	return nil
}

// 账户资产信息
type AccAssets struct {
	Assets     *Assets         `protobuf:"bytes,1,opt,name=assets" json:"assets,omitempty"`
	RecvAmount int64           `protobuf:"varint,2,opt,name=recvAmount" json:"recvAmount,omitempty"`
	Account    *types1.Account `protobuf:"bytes,3,opt,name=account" json:"account,omitempty"`
}

func (m *AccAssets) Reset()                    { *m = AccAssets{} }
func (m *AccAssets) String() string            { return proto.CompactTextString(m) }
func (*AccAssets) ProtoMessage()               {}
func (*AccAssets) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }

func (m *AccAssets) GetAssets() *Assets {
	if m != nil {
		return m.Assets
	}
	return nil
}

func (m *AccAssets) GetRecvAmount() int64 {
	if m != nil {
		return m.RecvAmount
	}
	return 0
}

func (m *AccAssets) GetAccount() *types1.Account {
	if m != nil {
		return m.Account
	}
	return nil
}

type Assets struct {
	Execer string `protobuf:"bytes,1,opt,name=execer" json:"execer,omitempty"`
	Symbol string `protobuf:"bytes,2,opt,name=symbol" json:"symbol,omitempty"`
}

func (m *Assets) Reset()                    { *m = Assets{} }
func (m *Assets) String() string            { return proto.CompactTextString(m) }
func (*Assets) ProtoMessage()               {}
func (*Assets) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }

func (m *Assets) GetExecer() string {
	if m != nil {
		return m.Execer
	}
	return ""
}

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

// 账户地址列表
type AccAddress struct {
	Address []string `protobuf:"bytes,1,rep,name=address" json:"address,omitempty"`
}

func (m *AccAddress) Reset()                    { *m = AccAddress{} }
func (m *AccAddress) String() string            { return proto.CompactTextString(m) }
func (*AccAddress) ProtoMessage()               {}
func (*AccAddress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }

func (m *AccAddress) GetAddress() []string {
	if m != nil {
		return m.Address
	}
	return nil
}

func init() {
	proto.RegisterType((*MultiSig)(nil), "types.MultiSig")
	proto.RegisterType((*ConfirmedOwner)(nil), "types.ConfirmedOwner")
	proto.RegisterType((*MultiSigTx)(nil), "types.MultiSigTx")
	proto.RegisterType((*Owner)(nil), "types.Owner")
	proto.RegisterType((*DailyLimit)(nil), "types.DailyLimit")
	proto.RegisterType((*SymbolDailyLimit)(nil), "types.SymbolDailyLimit")
	proto.RegisterType((*MultiSigAction)(nil), "types.MultiSigAction")
	proto.RegisterType((*MultiSigAccCreate)(nil), "types.MultiSigAccCreate")
	proto.RegisterType((*MultiSigOwnerOperate)(nil), "types.MultiSigOwnerOperate")
	proto.RegisterType((*MultiSigAccOperate)(nil), "types.MultiSigAccOperate")
	proto.RegisterType((*MultiSigExecTransfer)(nil), "types.MultiSigExecTransfer")
	proto.RegisterType((*MultiSigConfirmTx)(nil), "types.MultiSigConfirmTx")
	proto.RegisterType((*ReqMultiSigAccs)(nil), "types.ReqMultiSigAccs")
	proto.RegisterType((*ReplyMultiSigAccs)(nil), "types.ReplyMultiSigAccs")
	proto.RegisterType((*ReqMultiSigAccInfo)(nil), "types.ReqMultiSigAccInfo")
	proto.RegisterType((*ReplyMultiSigAccInfo)(nil), "types.ReplyMultiSigAccInfo")
	proto.RegisterType((*ReqMultiSigTxids)(nil), "types.ReqMultiSigTxids")
	proto.RegisterType((*ReplyMultiSigTxids)(nil), "types.ReplyMultiSigTxids")
	proto.RegisterType((*ReqMultiSigTxInfo)(nil), "types.ReqMultiSigTxInfo")
	proto.RegisterType((*ReplyMultiSigTxInfo)(nil), "types.ReplyMultiSigTxInfo")
	proto.RegisterType((*ReqMultiSigAccUnSpentToday)(nil), "types.ReqMultiSigAccUnSpentToday")
	proto.RegisterType((*ReplyUnSpentAssets)(nil), "types.ReplyUnSpentAssets")
	proto.RegisterType((*UnSpentAssets)(nil), "types.UnSpentAssets")
	proto.RegisterType((*ReceiptMultiSig)(nil), "types.ReceiptMultiSig")
	proto.RegisterType((*ReceiptOwnerAddOrDel)(nil), "types.ReceiptOwnerAddOrDel")
	proto.RegisterType((*ReceiptOwnerModOrRep)(nil), "types.ReceiptOwnerModOrRep")
	proto.RegisterType((*ReceiptWeightModify)(nil), "types.ReceiptWeightModify")
	proto.RegisterType((*ReceiptDailyLimitOperate)(nil), "types.ReceiptDailyLimitOperate")
	proto.RegisterType((*ReceiptConfirmTx)(nil), "types.ReceiptConfirmTx")
	proto.RegisterType((*ReceiptAccDailyLimitUpdate)(nil), "types.ReceiptAccDailyLimitUpdate")
	proto.RegisterType((*ReceiptMultiSigTx)(nil), "types.ReceiptMultiSigTx")
	proto.RegisterType((*ReceiptTxCountUpdate)(nil), "types.ReceiptTxCountUpdate")
	proto.RegisterType((*MultiSigTxOwner)(nil), "types.MultiSigTxOwner")
	proto.RegisterType((*Uint64)(nil), "types.Uint64")
	proto.RegisterType((*AccountAssets)(nil), "types.AccountAssets")
	proto.RegisterType((*ReqAccAssets)(nil), "types.ReqAccAssets")
	proto.RegisterType((*ReplyAccAssets)(nil), "types.ReplyAccAssets")
	proto.RegisterType((*AccAssets)(nil), "types.AccAssets")
	proto.RegisterType((*Assets)(nil), "types.Assets")
	proto.RegisterType((*AccAddress)(nil), "types.AccAddress")
}

func init() { proto.RegisterFile("multisig.proto", fileDescriptor0) }

var fileDescriptor0 = []byte{
	// 1517 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x5f, 0x6f, 0xdc, 0xc4,
	0x16, 0xaf, 0xbd, 0x7f, 0x92, 0x3d, 0x49, 0xb6, 0xc9, 0xdc, 0x55, 0xaf, 0x6f, 0x6e, 0x55, 0xad,
	0x46, 0xbd, 0xd5, 0xaa, 0xba, 0x44, 0xa8, 0x2d, 0x94, 0x22, 0x81, 0xba, 0x34, 0xad, 0x52, 0x95,
	0x34, 0x65, 0xea, 0x08, 0xc1, 0x9b, 0x63, 0x4f, 0x52, 0x8b, 0x5d, 0x7b, 0x6b, 0x7b, 0x93, 0x5d,
	0x40, 0x2a, 0xdf, 0x80, 0x37, 0x1e, 0xfa, 0xc4, 0x87, 0xe0, 0x81, 0x4f, 0x00, 0x5f, 0x80, 0x6f,
	0xc1, 0x33, 0xe2, 0x15, 0xcd, 0x3f, 0x7b, 0xc6, 0x76, 0x8a, 0x2b, 0x15, 0x09, 0xf1, 0xe6, 0xf3,
	0x9b, 0x33, 0x67, 0xce, 0xbf, 0x39, 0xe7, 0x78, 0xa0, 0x3f, 0x9d, 0x4f, 0xb2, 0x30, 0x0d, 0x4f,
	0x76, 0x66, 0x49, 0x9c, 0xc5, 0xa8, 0x93, 0x2d, 0x67, 0x34, 0xdd, 0xde, 0xf0, 0x7c, 0x3f, 0x9e,
	0x47, 0x99, 0x40, 0xf1, 0xaf, 0x16, 0xac, 0xee, 0x33, 0xc6, 0xa7, 0xe1, 0x09, 0xba, 0x02, 0xe0,
	0x27, 0xd4, 0xcb, 0xe8, 0x38, 0x08, 0x12, 0xc7, 0x1a, 0x5a, 0xa3, 0x1e, 0xd1, 0x10, 0x84, 0x61,
	0x7d, 0x2a, 0x79, 0x39, 0x87, 0xcd, 0x39, 0x0c, 0x0c, 0x5d, 0x85, 0x6e, 0x7c, 0x16, 0xd1, 0x24,
	0x75, 0x5a, 0xc3, 0xd6, 0x68, 0xed, 0xc6, 0xfa, 0x0e, 0x3f, 0x77, 0xe7, 0x80, 0x81, 0x44, 0xae,
	0xa1, 0x9b, 0xb0, 0x16, 0x78, 0xe1, 0x64, 0xf9, 0x71, 0x38, 0x0d, 0xb3, 0xd4, 0x69, 0x73, 0xd6,
	0x2d, 0xc9, 0xba, 0x9b, 0xaf, 0x10, 0x9d, 0x0b, 0x39, 0xb0, 0x92, 0x2d, 0xee, 0x31, 0xe5, 0x9d,
	0xce, 0xd0, 0x1a, 0xb5, 0x89, 0x22, 0xd1, 0x35, 0xe8, 0x27, 0xf4, 0xf9, 0x3c, 0x4c, 0x68, 0xf0,
	0x29, 0x0d, 0x4f, 0x9e, 0x65, 0x4e, 0x97, 0x33, 0x94, 0x50, 0xfc, 0x00, 0xfa, 0xf7, 0xe2, 0xe8,
	0x38, 0x4c, 0xa6, 0x34, 0xe0, 0x0a, 0xa1, 0x5b, 0xd0, 0xf7, 0x0d, 0xc4, 0xb1, 0x6a, 0xd4, 0x2e,
	0xf1, 0xe0, 0x9f, 0x2c, 0x00, 0xe5, 0x35, 0x77, 0x81, 0x10, 0xb4, 0xb3, 0x45, 0x18, 0x70, 0x8f,
	0xb5, 0x09, 0xff, 0x46, 0x97, 0xa0, 0x9b, 0x2d, 0xf6, 0xbc, 0xf4, 0x99, 0xf4, 0x92, 0xa4, 0xd0,
	0x36, 0xac, 0xd2, 0x05, 0xf5, 0xe7, 0x19, 0x0d, 0x9c, 0xd6, 0xd0, 0x1a, 0xad, 0x92, 0x9c, 0x16,
	0x7b, 0xdc, 0xe5, 0x8c, 0x3a, 0x6d, 0x2e, 0x49, 0x52, 0x15, 0xbf, 0x77, 0x6a, 0xfc, 0x5e, 0x35,
	0xa4, 0xdb, 0xc0, 0x90, 0x0f, 0xa0, 0x23, 0xfc, 0x70, 0x19, 0x7a, 0x3c, 0x34, 0x5a, 0xe4, 0x0b,
	0x80, 0x29, 0x76, 0x26, 0xfc, 0x6a, 0x0b, 0xc5, 0x04, 0x85, 0xbf, 0xb3, 0x00, 0x8a, 0x68, 0x31,
	0xb6, 0x74, 0x39, 0x3d, 0x8a, 0x27, 0x52, 0x82, 0xa4, 0x18, 0xce, 0x6c, 0xa4, 0x2a, 0x63, 0x24,
	0xc5, 0xf2, 0xad, 0x88, 0x2f, 0xf7, 0x46, 0x9b, 0x68, 0x08, 0x5b, 0x4f, 0x67, 0x34, 0xca, 0xdc,
	0x38, 0xf0, 0x96, 0xd2, 0x27, 0x1a, 0xc2, 0x12, 0x62, 0xe2, 0xa5, 0xd9, 0xae, 0xb7, 0xe4, 0x2e,
	0x69, 0x11, 0x45, 0xe2, 0x23, 0xd8, 0x7c, 0xca, 0xcf, 0xfe, 0xeb, 0xb4, 0xc3, 0xdf, 0xb6, 0xa1,
	0xaf, 0x92, 0x60, 0xec, 0x67, 0x61, 0x1c, 0xa1, 0x3d, 0xd8, 0xca, 0x83, 0xe2, 0xfb, 0xf7, 0xf8,
	0xcd, 0xe1, 0xa7, 0xad, 0xdd, 0x70, 0x64, 0x1c, 0xf6, 0xcb, 0xeb, 0x7b, 0x17, 0x48, 0x75, 0x13,
	0xfa, 0x04, 0x06, 0x0a, 0xe4, 0x01, 0x3a, 0x98, 0xd1, 0x84, 0x09, 0xb3, 0xb9, 0xb0, 0xff, 0x96,
	0x84, 0xe9, 0x2c, 0x7b, 0x17, 0x48, 0xed, 0x56, 0xf4, 0x08, 0x90, 0x76, 0x8e, 0x12, 0xd8, 0xe2,
	0x02, 0xff, 0x53, 0xd5, 0xae, 0x10, 0x57, 0xb3, 0x4d, 0xb7, 0x54, 0xde, 0x28, 0x77, 0xc1, 0x23,
	0x54, 0xb5, 0x34, 0x5f, 0xd7, 0x2d, 0xcd, 0x41, 0x74, 0x08, 0x97, 0x14, 0x78, 0x7f, 0x41, 0x7d,
	0x37, 0xf1, 0xa2, 0xf4, 0x98, 0x26, 0x6e, 0xcc, 0x63, 0x5a, 0xb5, 0x55, 0x67, 0xda, 0xbb, 0x40,
	0xce, 0xd9, 0x8c, 0x3e, 0x03, 0xa7, 0x6e, 0xe5, 0x41, 0x12, 0x4f, 0x79, 0x71, 0xf8, 0x53, 0xc1,
	0xe7, 0x6e, 0x47, 0x7d, 0xb0, 0xdd, 0xa5, 0xb3, 0x32, 0xb4, 0x46, 0x1d, 0x62, 0xbb, 0xcb, 0x8f,
	0x56, 0xa0, 0x73, 0xea, 0x4d, 0xe6, 0x14, 0xbf, 0xb4, 0x60, 0xab, 0x12, 0x5f, 0xad, 0x22, 0x5a,
	0xaf, 0xa8, 0x88, 0xd5, 0x12, 0x66, 0xd7, 0x95, 0x30, 0x74, 0xbb, 0x92, 0x95, 0x6b, 0x37, 0xfe,
	0x2d, 0x25, 0x96, 0x53, 0xde, 0x48, 0xd7, 0x1f, 0x2d, 0x18, 0xd4, 0xe5, 0x0b, 0x1a, 0xc1, 0x45,
	0x2d, 0xc0, 0x5a, 0x01, 0x28, 0xc3, 0xac, 0x76, 0xc5, 0x13, 0x59, 0x5d, 0xc4, 0x5d, 0xc9, 0x69,
	0xb6, 0x16, 0xd1, 0x33, 0xb1, 0xd6, 0x12, 0x6b, 0x8a, 0x66, 0xc5, 0x25, 0xa2, 0x67, 0xd2, 0x2c,
	0x71, 0x8d, 0x0b, 0x00, 0x0d, 0x61, 0x2d, 0x16, 0xaa, 0x3c, 0x98, 0x78, 0x27, 0xb2, 0xb4, 0xeb,
	0x10, 0xfe, 0xd9, 0x02, 0x54, 0xcd, 0xcc, 0xd7, 0x50, 0xdc, 0x74, 0x9a, 0xdd, 0xd8, 0x69, 0xe8,
	0xff, 0xb0, 0x15, 0xd1, 0x33, 0x62, 0x06, 0x46, 0x94, 0x82, 0xea, 0x42, 0xd9, 0x92, 0x36, 0x2f,
	0xef, 0x86, 0x25, 0x2f, 0xb5, 0x20, 0xe8, 0x79, 0xf5, 0xaa, 0xe2, 0xe4, 0x4d, 0x79, 0xcb, 0xb3,
	0x79, 0x85, 0x93, 0x14, 0x6b, 0x39, 0x51, 0x2c, 0xaf, 0x6f, 0x8f, 0xf0, 0x6f, 0xd5, 0x5a, 0x22,
	0x6f, 0x2a, 0x1a, 0x48, 0x8f, 0xe4, 0x34, 0xcb, 0xd9, 0x2c, 0x96, 0x8d, 0xc3, 0xce, 0x62, 0xb6,
	0xff, 0x58, 0x5d, 0x85, 0x1e, 0xe1, 0xdf, 0xf8, 0xab, 0x22, 0x7b, 0x8b, 0xeb, 0xd9, 0xdc, 0xc9,
	0xbc, 0x0b, 0x3e, 0x0c, 0x64, 0xde, 0xf2, 0x6f, 0xb6, 0x5b, 0x76, 0x9c, 0x83, 0x84, 0xd0, 0xd3,
	0xf8, 0x0b, 0x2a, 0x9b, 0x5e, 0x19, 0xc6, 0x77, 0xe0, 0x22, 0xa1, 0xcf, 0xb5, 0x28, 0xa7, 0x68,
	0x00, 0x9d, 0x34, 0xf3, 0x92, 0x8c, 0x1f, 0xd8, 0x22, 0x82, 0x40, 0x9b, 0xd0, 0xa2, 0x51, 0x20,
	0xdd, 0xc1, 0x3e, 0xf1, 0x5b, 0xb0, 0x45, 0xe8, 0x6c, 0xb2, 0x34, 0x36, 0x3b, 0xb0, 0xe2, 0x05,
	0x41, 0x42, 0x53, 0x71, 0xed, 0x7a, 0x44, 0x91, 0xf8, 0x43, 0x40, 0xe6, 0x49, 0x0f, 0xa3, 0xe3,
	0xb8, 0xb9, 0x9d, 0xf8, 0x77, 0x0b, 0x06, 0xe5, 0xf3, 0xb8, 0x88, 0x7f, 0xfc, 0xf8, 0xf4, 0xbd,
	0x05, 0x9b, 0x9a, 0xeb, 0xdc, 0x45, 0x18, 0xa4, 0x15, 0xab, 0xac, 0x1a, 0xab, 0xb6, 0x61, 0x95,
	0x65, 0x98, 0x5b, 0xa4, 0x47, 0x4e, 0xf3, 0xa1, 0x27, 0xe6, 0x2b, 0x2d, 0x39, 0xf4, 0x70, 0x8a,
	0xa9, 0x3b, 0xa3, 0x51, 0x10, 0x46, 0xea, 0x22, 0x29, 0xd2, 0x18, 0xa1, 0x3a, 0xe6, 0x08, 0x85,
	0x1f, 0xb3, 0xe0, 0x6a, 0xb1, 0x69, 0xae, 0xe3, 0x00, 0x3a, 0x6c, 0x70, 0x4b, 0x1d, 0x7b, 0xd8,
	0x1a, 0xb5, 0x89, 0x20, 0xf0, 0x23, 0x96, 0x5b, 0x9a, 0xc5, 0x3c, 0xd0, 0x4d, 0xc4, 0xd5, 0xdc,
	0x06, 0xfc, 0x04, 0xfe, 0x55, 0x52, 0x8e, 0x8b, 0xbb, 0x23, 0x67, 0xf5, 0x1c, 0x91, 0x23, 0xc3,
	0x56, 0xa9, 0x41, 0xb9, 0x0b, 0x52, 0x62, 0xc4, 0x33, 0xd8, 0x36, 0x73, 0xf9, 0x30, 0x7a, 0x5a,
	0xcc, 0x47, 0x4d, 0xf4, 0x3c, 0x6f, 0xfa, 0x29, 0x0a, 0x52, 0x4b, 0x2f, 0x48, 0xf8, 0x89, 0x74,
	0xb0, 0x3c, 0x68, 0x9c, 0xa6, 0x34, 0x4b, 0xd1, 0xfb, 0xb0, 0x31, 0xd7, 0x01, 0x99, 0xbd, 0x03,
	0x69, 0x81, 0xc1, 0x4c, 0x4c, 0x56, 0xfc, 0x18, 0x36, 0x4c, 0x61, 0xff, 0x83, 0xae, 0x27, 0xa4,
	0x08, 0x3f, 0x6c, 0x48, 0x29, 0x72, 0xbb, 0x5c, 0x2c, 0x95, 0xc6, 0xb6, 0x2a, 0x8d, 0xf8, 0x1d,
	0x56, 0x49, 0x7c, 0x1a, 0xce, 0xb2, 0xfc, 0xc7, 0xa6, 0x81, 0x23, 0xf0, 0x97, 0xec, 0x56, 0xf3,
	0x6d, 0x07, 0x72, 0xee, 0x3d, 0x48, 0x76, 0xe9, 0xa4, 0x91, 0x13, 0x31, 0x74, 0xe2, 0xbc, 0x2b,
	0x96, 0x2f, 0xad, 0x58, 0x62, 0x59, 0xeb, 0x49, 0x99, 0x6a, 0xf0, 0x57, 0x34, 0xfe, 0xc1, 0x32,
	0x0f, 0xdf, 0x8f, 0x03, 0x56, 0x18, 0x67, 0x8d, 0x0e, 0xbf, 0x0e, 0xbd, 0x59, 0x42, 0x4f, 0x0f,
	0xce, 0x55, 0xa0, 0x58, 0x46, 0x6f, 0xc3, 0xba, 0x3f, 0x4f, 0x12, 0x1a, 0x65, 0x45, 0xa7, 0x2e,
	0xb3, 0x1b, 0x1c, 0x4c, 0xed, 0xa9, 0xd4, 0x46, 0xde, 0xc3, 0x9c, 0xc6, 0x2f, 0x58, 0x3e, 0x73,
	0xad, 0x45, 0x81, 0xd8, 0x8f, 0x83, 0xf0, 0xb8, 0x59, 0xda, 0x5d, 0x01, 0x60, 0x5a, 0x19, 0xa3,
	0x8e, 0x86, 0xa0, 0xab, 0xb0, 0x21, 0xd5, 0x30, 0x9a, 0xae, 0x09, 0xe2, 0x5f, 0x2c, 0x70, 0xa4,
	0x06, 0x45, 0xd5, 0x53, 0xe3, 0x41, 0x13, 0x35, 0xee, 0x40, 0x9f, 0x1d, 0xba, 0x5b, 0x1e, 0x0e,
	0x6a, 0x6a, 0x69, 0x89, 0x11, 0xdd, 0xe6, 0x1a, 0xee, 0x96, 0x67, 0xb1, 0x9a, 0x9d, 0x26, 0x1f,
	0x9b, 0x12, 0x78, 0xe0, 0x85, 0xb7, 0xd4, 0x94, 0xa0, 0x41, 0xf8, 0x1b, 0x5e, 0x67, 0xb9, 0x59,
	0x45, 0x23, 0xbe, 0x5b, 0x34, 0x28, 0x77, 0xa1, 0x7e, 0x55, 0xd9, 0x89, 0x97, 0x2a, 0x65, 0x42,
	0xc4, 0xb1, 0xcc, 0x8e, 0xae, 0xc3, 0xa6, 0xfa, 0xfd, 0xcb, 0xbb, 0xb1, 0xcd, 0x4f, 0xaf, 0xe0,
	0x2c, 0x23, 0xb7, 0xa5, 0x0a, 0x63, 0xdf, 0x2f, 0xb4, 0x3f, 0x9c, 0x05, 0x7f, 0x63, 0xdf, 0xe2,
	0xdf, 0x2c, 0x56, 0xaf, 0x8d, 0xcb, 0xff, 0x46, 0x5c, 0x87, 0x61, 0x9d, 0xa9, 0x78, 0x5f, 0xb5,
	0x1d, 0xe1, 0x36, 0x03, 0x63, 0x71, 0xf5, 0xe7, 0xc9, 0x7d, 0xf3, 0xe7, 0x5e, 0x87, 0xd8, 0x8c,
	0x91, 0xce, 0x8f, 0x58, 0x8a, 0x26, 0x32, 0xae, 0x32, 0xfa, 0x65, 0x58, 0x7b, 0x3d, 0xe8, 0x18,
	0xaf, 0x07, 0xc5, 0x0b, 0x41, 0x57, 0x7f, 0x21, 0xc0, 0x9f, 0xe7, 0xf5, 0xc3, 0x15, 0x3d, 0xfd,
	0x35, 0xe2, 0xc4, 0xc6, 0x96, 0x79, 0x22, 0xf7, 0xa9, 0xab, 0x58, 0x20, 0xf8, 0x05, 0x5c, 0xdc,
	0xaf, 0xba, 0xa3, 0x59, 0x03, 0x0c, 0xb5, 0x06, 0x18, 0x06, 0x35, 0x8f, 0x14, 0x75, 0x05, 0xa8,
	0xfc, 0x48, 0x71, 0x19, 0xba, 0x87, 0x61, 0x94, 0xbd, 0x7b, 0x8b, 0xc9, 0x0c, 0xbc, 0xcc, 0x53,
	0x0f, 0x2d, 0xec, 0x1b, 0x27, 0xb0, 0x31, 0x16, 0x4f, 0x5a, 0xb2, 0x7d, 0x34, 0x51, 0xae, 0x68,
	0x31, 0x76, 0xb3, 0x16, 0xd3, 0xd2, 0xa7, 0x6f, 0x1c, 0xc3, 0x3a, 0xa1, 0xcf, 0xd9, 0x40, 0xf8,
	0xc6, 0x8f, 0x1c, 0x40, 0x27, 0x4c, 0xc7, 0x13, 0xd5, 0x23, 0x04, 0x81, 0xef, 0x42, 0x9f, 0x77,
	0xdd, 0xe2, 0xc8, 0x1d, 0xe8, 0x79, 0x8a, 0x90, 0x3f, 0x96, 0x9b, 0x4a, 0xa2, 0xc2, 0x49, 0xc1,
	0x82, 0xbf, 0x86, 0x5e, 0xb1, 0xb9, 0x61, 0x87, 0xbd, 0x02, 0x90, 0x50, 0xff, 0x74, 0xac, 0xff,
	0x80, 0x68, 0x08, 0x1a, 0xc1, 0x8a, 0x7c, 0x4d, 0x94, 0x71, 0xec, 0x17, 0x1a, 0x30, 0x94, 0xa8,
	0x65, 0xfc, 0x1e, 0x74, 0xc7, 0xb9, 0x4b, 0xe5, 0xbc, 0x61, 0x9d, 0x33, 0x6f, 0xd8, 0xc6, 0xbc,
	0x71, 0x0d, 0x40, 0x0e, 0xde, 0x34, 0x7d, 0xc5, 0x54, 0x7f, 0xd4, 0xe5, 0xef, 0x99, 0x37, 0xff,
	0x08, 0x00, 0x00, 0xff, 0xff, 0x30, 0x1f, 0xdd, 0x3b, 0xf7, 0x14, 0x00, 0x00,
}
