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

/*
Package types is a generated protocol buffer package.

It is generated from these files:
	dposvote.proto

It has these top-level messages:
	CandidatorInfo
	DposVoter
	Candidator
	DposCandidatorRegist
	DposCandidatorCancelRegist
	DposVote
	DposCancelVote
	DposVoteAction
	CandidatorQuery
	JsonCandidator
	CandidatorReply
	DposVoteQuery
	JsonDposVoter
	DposVoteReply
	ReceiptCandicator
	DposVrfM
	DposVrfRP
	DposVrfMRegist
	DposVrfRPRegist
	ReceiptVrf
	VrfInfo
	DposVrfQuery
	JsonVrfInfo
	DposVrfReply
	DposCycleBoundaryInfo
	DposCBInfo
	DposCBQuery
	DposCBReply
	ReceiptCB
*/
package types

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

// 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

// CandidatorInfo 候选节点信息
type CandidatorInfo struct {
	Pubkey      []byte       `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Address     string       `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"`
	Ip          string       `protobuf:"bytes,3,opt,name=ip" json:"ip,omitempty"`
	Votes       int64        `protobuf:"varint,4,opt,name=votes" json:"votes,omitempty"`
	Status      int64        `protobuf:"varint,5,opt,name=status" json:"status,omitempty"`
	PreStatus   int64        `protobuf:"varint,6,opt,name=preStatus" json:"preStatus,omitempty"`
	StartTime   int64        `protobuf:"varint,7,opt,name=startTime" json:"startTime,omitempty"`
	StartHeight int64        `protobuf:"varint,8,opt,name=startHeight" json:"startHeight,omitempty"`
	StartTxHash string       `protobuf:"bytes,9,opt,name=startTxHash" json:"startTxHash,omitempty"`
	StartIndex  int64        `protobuf:"varint,10,opt,name=startIndex" json:"startIndex,omitempty"`
	Index       int64        `protobuf:"varint,11,opt,name=index" json:"index,omitempty"`
	PreIndex    int64        `protobuf:"varint,12,opt,name=preIndex" json:"preIndex,omitempty"`
	Voters      []*DposVoter `protobuf:"bytes,13,rep,name=voters" json:"voters,omitempty"`
}

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

func (m *CandidatorInfo) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

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

func (m *CandidatorInfo) GetIp() string {
	if m != nil {
		return m.Ip
	}
	return ""
}

func (m *CandidatorInfo) GetVotes() int64 {
	if m != nil {
		return m.Votes
	}
	return 0
}

func (m *CandidatorInfo) GetStatus() int64 {
	if m != nil {
		return m.Status
	}
	return 0
}

func (m *CandidatorInfo) GetPreStatus() int64 {
	if m != nil {
		return m.PreStatus
	}
	return 0
}

func (m *CandidatorInfo) GetStartTime() int64 {
	if m != nil {
		return m.StartTime
	}
	return 0
}

func (m *CandidatorInfo) GetStartHeight() int64 {
	if m != nil {
		return m.StartHeight
	}
	return 0
}

func (m *CandidatorInfo) GetStartTxHash() string {
	if m != nil {
		return m.StartTxHash
	}
	return ""
}

func (m *CandidatorInfo) GetStartIndex() int64 {
	if m != nil {
		return m.StartIndex
	}
	return 0
}

func (m *CandidatorInfo) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *CandidatorInfo) GetPreIndex() int64 {
	if m != nil {
		return m.PreIndex
	}
	return 0
}

func (m *CandidatorInfo) GetVoters() []*DposVoter {
	if m != nil {
		return m.Voters
	}
	return nil
}

type DposVoter struct {
	FromAddr string `protobuf:"bytes,1,opt,name=fromAddr" json:"fromAddr,omitempty"`
	Pubkey   []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Votes    int64  `protobuf:"varint,3,opt,name=votes" json:"votes,omitempty"`
	Index    int64  `protobuf:"varint,4,opt,name=index" json:"index,omitempty"`
	Time     int64  `protobuf:"varint,5,opt,name=time" json:"time,omitempty"`
}

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

func (m *DposVoter) GetFromAddr() string {
	if m != nil {
		return m.FromAddr
	}
	return ""
}

func (m *DposVoter) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

func (m *DposVoter) GetVotes() int64 {
	if m != nil {
		return m.Votes
	}
	return 0
}

func (m *DposVoter) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *DposVoter) GetTime() int64 {
	if m != nil {
		return m.Time
	}
	return 0
}

// Candidator 候选节点信息
type Candidator struct {
	Pubkey  []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Address string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"`
	Ip      string `protobuf:"bytes,3,opt,name=ip" json:"ip,omitempty"`
	Votes   int64  `protobuf:"varint,4,opt,name=votes" json:"votes,omitempty"`
	Status  int64  `protobuf:"varint,5,opt,name=status" json:"status,omitempty"`
}

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

func (m *Candidator) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

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

func (m *Candidator) GetIp() string {
	if m != nil {
		return m.Ip
	}
	return ""
}

func (m *Candidator) GetVotes() int64 {
	if m != nil {
		return m.Votes
	}
	return 0
}

func (m *Candidator) GetStatus() int64 {
	if m != nil {
		return m.Status
	}
	return 0
}

// DposCandidatorRegist 注册Dpos候选节点，必须抵押一定数量的币，比如：10000个币
type DposCandidatorRegist struct {
	Pubkey  string `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"`
	Address string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"`
	Ip      string `protobuf:"bytes,3,opt,name=ip" json:"ip,omitempty"`
}

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

func (m *DposCandidatorRegist) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

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

func (m *DposCandidatorRegist) GetIp() string {
	if m != nil {
		return m.Ip
	}
	return ""
}

// DposCandidatorCancelRegist 注销Dpos候选节点，解冻抵押的币
type DposCandidatorCancelRegist struct {
	Pubkey  string `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"`
	Address string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"`
}

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

func (m *DposCandidatorCancelRegist) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

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

// DposVote 为Dpos候选节点投票
type DposVote struct {
	FromAddr string `protobuf:"bytes,1,opt,name=fromAddr" json:"fromAddr,omitempty"`
	Pubkey   string `protobuf:"bytes,2,opt,name=pubkey" json:"pubkey,omitempty"`
	Votes    int64  `protobuf:"varint,3,opt,name=votes" json:"votes,omitempty"`
}

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

func (m *DposVote) GetFromAddr() string {
	if m != nil {
		return m.FromAddr
	}
	return ""
}

func (m *DposVote) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

func (m *DposVote) GetVotes() int64 {
	if m != nil {
		return m.Votes
	}
	return 0
}

// DposCancelVote 撤销为Dpos候选节点投票
type DposCancelVote struct {
	Pubkey string `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"`
	Index  int64  `protobuf:"varint,3,opt,name=index" json:"index,omitempty"`
}

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

func (m *DposCancelVote) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

func (m *DposCancelVote) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

// DposVoteAction DposVote动作
type DposVoteAction struct {
	// Types that are valid to be assigned to Value:
	//	*DposVoteAction_Regist
	//	*DposVoteAction_CancelRegist
	//	*DposVoteAction_ReRegist
	//	*DposVoteAction_Vote
	//	*DposVoteAction_CancelVote
	//	*DposVoteAction_CandidatorQuery
	//	*DposVoteAction_VoteQuery
	//	*DposVoteAction_RegistVrfM
	//	*DposVoteAction_RegistVrfRP
	//	*DposVoteAction_VrfQuery
	//	*DposVoteAction_RecordCB
	Value isDposVoteAction_Value `protobuf_oneof:"value"`
	Ty    int32                  `protobuf:"varint,12,opt,name=ty" json:"ty,omitempty"`
}

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

type isDposVoteAction_Value interface {
	isDposVoteAction_Value()
}

type DposVoteAction_Regist struct {
	Regist *DposCandidatorRegist `protobuf:"bytes,1,opt,name=regist,oneof"`
}
type DposVoteAction_CancelRegist struct {
	CancelRegist *DposCandidatorCancelRegist `protobuf:"bytes,2,opt,name=cancelRegist,oneof"`
}
type DposVoteAction_ReRegist struct {
	ReRegist *DposCandidatorRegist `protobuf:"bytes,3,opt,name=reRegist,oneof"`
}
type DposVoteAction_Vote struct {
	Vote *DposVote `protobuf:"bytes,4,opt,name=vote,oneof"`
}
type DposVoteAction_CancelVote struct {
	CancelVote *DposCancelVote `protobuf:"bytes,5,opt,name=cancelVote,oneof"`
}
type DposVoteAction_CandidatorQuery struct {
	CandidatorQuery *CandidatorQuery `protobuf:"bytes,6,opt,name=candidatorQuery,oneof"`
}
type DposVoteAction_VoteQuery struct {
	VoteQuery *DposVoteQuery `protobuf:"bytes,7,opt,name=voteQuery,oneof"`
}
type DposVoteAction_RegistVrfM struct {
	RegistVrfM *DposVrfMRegist `protobuf:"bytes,8,opt,name=registVrfM,oneof"`
}
type DposVoteAction_RegistVrfRP struct {
	RegistVrfRP *DposVrfRPRegist `protobuf:"bytes,9,opt,name=registVrfRP,oneof"`
}
type DposVoteAction_VrfQuery struct {
	VrfQuery *DposVrfQuery `protobuf:"bytes,10,opt,name=vrfQuery,oneof"`
}
type DposVoteAction_RecordCB struct {
	RecordCB *DposCBInfo `protobuf:"bytes,11,opt,name=recordCB,oneof"`
}

func (*DposVoteAction_Regist) isDposVoteAction_Value()          {}
func (*DposVoteAction_CancelRegist) isDposVoteAction_Value()    {}
func (*DposVoteAction_ReRegist) isDposVoteAction_Value()        {}
func (*DposVoteAction_Vote) isDposVoteAction_Value()            {}
func (*DposVoteAction_CancelVote) isDposVoteAction_Value()      {}
func (*DposVoteAction_CandidatorQuery) isDposVoteAction_Value() {}
func (*DposVoteAction_VoteQuery) isDposVoteAction_Value()       {}
func (*DposVoteAction_RegistVrfM) isDposVoteAction_Value()      {}
func (*DposVoteAction_RegistVrfRP) isDposVoteAction_Value()     {}
func (*DposVoteAction_VrfQuery) isDposVoteAction_Value()        {}
func (*DposVoteAction_RecordCB) isDposVoteAction_Value()        {}

func (m *DposVoteAction) GetValue() isDposVoteAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *DposVoteAction) GetRegist() *DposCandidatorRegist {
	if x, ok := m.GetValue().(*DposVoteAction_Regist); ok {
		return x.Regist
	}
	return nil
}

func (m *DposVoteAction) GetCancelRegist() *DposCandidatorCancelRegist {
	if x, ok := m.GetValue().(*DposVoteAction_CancelRegist); ok {
		return x.CancelRegist
	}
	return nil
}

func (m *DposVoteAction) GetReRegist() *DposCandidatorRegist {
	if x, ok := m.GetValue().(*DposVoteAction_ReRegist); ok {
		return x.ReRegist
	}
	return nil
}

func (m *DposVoteAction) GetVote() *DposVote {
	if x, ok := m.GetValue().(*DposVoteAction_Vote); ok {
		return x.Vote
	}
	return nil
}

func (m *DposVoteAction) GetCancelVote() *DposCancelVote {
	if x, ok := m.GetValue().(*DposVoteAction_CancelVote); ok {
		return x.CancelVote
	}
	return nil
}

func (m *DposVoteAction) GetCandidatorQuery() *CandidatorQuery {
	if x, ok := m.GetValue().(*DposVoteAction_CandidatorQuery); ok {
		return x.CandidatorQuery
	}
	return nil
}

func (m *DposVoteAction) GetVoteQuery() *DposVoteQuery {
	if x, ok := m.GetValue().(*DposVoteAction_VoteQuery); ok {
		return x.VoteQuery
	}
	return nil
}

func (m *DposVoteAction) GetRegistVrfM() *DposVrfMRegist {
	if x, ok := m.GetValue().(*DposVoteAction_RegistVrfM); ok {
		return x.RegistVrfM
	}
	return nil
}

func (m *DposVoteAction) GetRegistVrfRP() *DposVrfRPRegist {
	if x, ok := m.GetValue().(*DposVoteAction_RegistVrfRP); ok {
		return x.RegistVrfRP
	}
	return nil
}

func (m *DposVoteAction) GetVrfQuery() *DposVrfQuery {
	if x, ok := m.GetValue().(*DposVoteAction_VrfQuery); ok {
		return x.VrfQuery
	}
	return nil
}

func (m *DposVoteAction) GetRecordCB() *DposCBInfo {
	if x, ok := m.GetValue().(*DposVoteAction_RecordCB); ok {
		return x.RecordCB
	}
	return nil
}

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

// XXX_OneofFuncs is for the internal use of the proto package.
func (*DposVoteAction) 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 _DposVoteAction_OneofMarshaler, _DposVoteAction_OneofUnmarshaler, _DposVoteAction_OneofSizer, []interface{}{
		(*DposVoteAction_Regist)(nil),
		(*DposVoteAction_CancelRegist)(nil),
		(*DposVoteAction_ReRegist)(nil),
		(*DposVoteAction_Vote)(nil),
		(*DposVoteAction_CancelVote)(nil),
		(*DposVoteAction_CandidatorQuery)(nil),
		(*DposVoteAction_VoteQuery)(nil),
		(*DposVoteAction_RegistVrfM)(nil),
		(*DposVoteAction_RegistVrfRP)(nil),
		(*DposVoteAction_VrfQuery)(nil),
		(*DposVoteAction_RecordCB)(nil),
	}
}

func _DposVoteAction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*DposVoteAction)
	// value
	switch x := m.Value.(type) {
	case *DposVoteAction_Regist:
		b.EncodeVarint(1<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Regist); err != nil {
			return err
		}
	case *DposVoteAction_CancelRegist:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.CancelRegist); err != nil {
			return err
		}
	case *DposVoteAction_ReRegist:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ReRegist); err != nil {
			return err
		}
	case *DposVoteAction_Vote:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Vote); err != nil {
			return err
		}
	case *DposVoteAction_CancelVote:
		b.EncodeVarint(5<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.CancelVote); err != nil {
			return err
		}
	case *DposVoteAction_CandidatorQuery:
		b.EncodeVarint(6<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.CandidatorQuery); err != nil {
			return err
		}
	case *DposVoteAction_VoteQuery:
		b.EncodeVarint(7<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.VoteQuery); err != nil {
			return err
		}
	case *DposVoteAction_RegistVrfM:
		b.EncodeVarint(8<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.RegistVrfM); err != nil {
			return err
		}
	case *DposVoteAction_RegistVrfRP:
		b.EncodeVarint(9<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.RegistVrfRP); err != nil {
			return err
		}
	case *DposVoteAction_VrfQuery:
		b.EncodeVarint(10<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.VrfQuery); err != nil {
			return err
		}
	case *DposVoteAction_RecordCB:
		b.EncodeVarint(11<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.RecordCB); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("DposVoteAction.Value has unexpected type %T", x)
	}
	return nil
}

func _DposVoteAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*DposVoteAction)
	switch tag {
	case 1: // value.regist
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposCandidatorRegist)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_Regist{msg}
		return true, err
	case 2: // value.cancelRegist
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposCandidatorCancelRegist)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_CancelRegist{msg}
		return true, err
	case 3: // value.reRegist
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposCandidatorRegist)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_ReRegist{msg}
		return true, err
	case 4: // value.vote
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposVote)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_Vote{msg}
		return true, err
	case 5: // value.cancelVote
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposCancelVote)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_CancelVote{msg}
		return true, err
	case 6: // value.candidatorQuery
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(CandidatorQuery)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_CandidatorQuery{msg}
		return true, err
	case 7: // value.voteQuery
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposVoteQuery)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_VoteQuery{msg}
		return true, err
	case 8: // value.registVrfM
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposVrfMRegist)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_RegistVrfM{msg}
		return true, err
	case 9: // value.registVrfRP
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposVrfRPRegist)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_RegistVrfRP{msg}
		return true, err
	case 10: // value.vrfQuery
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposVrfQuery)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_VrfQuery{msg}
		return true, err
	case 11: // value.recordCB
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(DposCBInfo)
		err := b.DecodeMessage(msg)
		m.Value = &DposVoteAction_RecordCB{msg}
		return true, err
	default:
		return false, nil
	}
}

func _DposVoteAction_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*DposVoteAction)
	// value
	switch x := m.Value.(type) {
	case *DposVoteAction_Regist:
		s := proto.Size(x.Regist)
		n += proto.SizeVarint(1<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_CancelRegist:
		s := proto.Size(x.CancelRegist)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_ReRegist:
		s := proto.Size(x.ReRegist)
		n += proto.SizeVarint(3<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_Vote:
		s := proto.Size(x.Vote)
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_CancelVote:
		s := proto.Size(x.CancelVote)
		n += proto.SizeVarint(5<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_CandidatorQuery:
		s := proto.Size(x.CandidatorQuery)
		n += proto.SizeVarint(6<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_VoteQuery:
		s := proto.Size(x.VoteQuery)
		n += proto.SizeVarint(7<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_RegistVrfM:
		s := proto.Size(x.RegistVrfM)
		n += proto.SizeVarint(8<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_RegistVrfRP:
		s := proto.Size(x.RegistVrfRP)
		n += proto.SizeVarint(9<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_VrfQuery:
		s := proto.Size(x.VrfQuery)
		n += proto.SizeVarint(10<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DposVoteAction_RecordCB:
		s := proto.Size(x.RecordCB)
		n += proto.SizeVarint(11<<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
}

type CandidatorQuery struct {
	Pubkeys []string `protobuf:"bytes,1,rep,name=pubkeys" json:"pubkeys,omitempty"`
	TopN    int32    `protobuf:"varint,2,opt,name=topN" json:"topN,omitempty"`
	Ty      int32    `protobuf:"varint,3,opt,name=ty" json:"ty,omitempty"`
}

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

func (m *CandidatorQuery) GetPubkeys() []string {
	if m != nil {
		return m.Pubkeys
	}
	return nil
}

func (m *CandidatorQuery) GetTopN() int32 {
	if m != nil {
		return m.TopN
	}
	return 0
}

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

// Candidator 候选节点信息
type JsonCandidator struct {
	Pubkey  string `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"`
	Address string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"`
	Ip      string `protobuf:"bytes,3,opt,name=ip" json:"ip,omitempty"`
	Votes   int64  `protobuf:"varint,4,opt,name=votes" json:"votes,omitempty"`
	Status  int64  `protobuf:"varint,5,opt,name=status" json:"status,omitempty"`
}

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

func (m *JsonCandidator) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

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

func (m *JsonCandidator) GetIp() string {
	if m != nil {
		return m.Ip
	}
	return ""
}

func (m *JsonCandidator) GetVotes() int64 {
	if m != nil {
		return m.Votes
	}
	return 0
}

func (m *JsonCandidator) GetStatus() int64 {
	if m != nil {
		return m.Status
	}
	return 0
}

type CandidatorReply struct {
	Candidators []*JsonCandidator `protobuf:"bytes,1,rep,name=candidators" json:"candidators,omitempty"`
}

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

func (m *CandidatorReply) GetCandidators() []*JsonCandidator {
	if m != nil {
		return m.Candidators
	}
	return nil
}

type DposVoteQuery struct {
	Pubkeys []string `protobuf:"bytes,1,rep,name=pubkeys" json:"pubkeys,omitempty"`
	Addr    string   `protobuf:"bytes,2,opt,name=addr" json:"addr,omitempty"`
}

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

func (m *DposVoteQuery) GetPubkeys() []string {
	if m != nil {
		return m.Pubkeys
	}
	return nil
}

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

type JsonDposVoter struct {
	FromAddr string `protobuf:"bytes,1,opt,name=fromAddr" json:"fromAddr,omitempty"`
	Pubkey   string `protobuf:"bytes,2,opt,name=pubkey" json:"pubkey,omitempty"`
	Votes    int64  `protobuf:"varint,3,opt,name=votes" json:"votes,omitempty"`
	Index    int64  `protobuf:"varint,4,opt,name=index" json:"index,omitempty"`
	Time     int64  `protobuf:"varint,5,opt,name=time" json:"time,omitempty"`
}

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

func (m *JsonDposVoter) GetFromAddr() string {
	if m != nil {
		return m.FromAddr
	}
	return ""
}

func (m *JsonDposVoter) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

func (m *JsonDposVoter) GetVotes() int64 {
	if m != nil {
		return m.Votes
	}
	return 0
}

func (m *JsonDposVoter) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *JsonDposVoter) GetTime() int64 {
	if m != nil {
		return m.Time
	}
	return 0
}

type DposVoteReply struct {
	Votes []*JsonDposVoter `protobuf:"bytes,1,rep,name=votes" json:"votes,omitempty"`
}

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

func (m *DposVoteReply) GetVotes() []*JsonDposVoter {
	if m != nil {
		return m.Votes
	}
	return nil
}

// ReceiptCandicator 候选者收据信息
type ReceiptCandicator struct {
	Index        int64           `protobuf:"varint,1,opt,name=Index" json:"Index,omitempty"`
	Pubkey       []byte          `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Address      string          `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"`
	Status       int64           `protobuf:"varint,4,opt,name=status" json:"status,omitempty"`
	PreStatus    int64           `protobuf:"varint,5,opt,name=preStatus" json:"preStatus,omitempty"`
	StatusChange bool            `protobuf:"varint,6,opt,name=statusChange" json:"statusChange,omitempty"`
	VoteType     int32           `protobuf:"varint,7,opt,name=voteType" json:"voteType,omitempty"`
	Vote         *DposVoter      `protobuf:"bytes,8,opt,name=vote" json:"vote,omitempty"`
	FromAddr     string          `protobuf:"bytes,9,opt,name=fromAddr" json:"fromAddr,omitempty"`
	CandInfo     *CandidatorInfo `protobuf:"bytes,10,opt,name=candInfo" json:"candInfo,omitempty"`
	Time         int64           `protobuf:"varint,11,opt,name=time" json:"time,omitempty"`
}

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

func (m *ReceiptCandicator) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *ReceiptCandicator) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

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

func (m *ReceiptCandicator) GetStatus() int64 {
	if m != nil {
		return m.Status
	}
	return 0
}

func (m *ReceiptCandicator) GetPreStatus() int64 {
	if m != nil {
		return m.PreStatus
	}
	return 0
}

func (m *ReceiptCandicator) GetStatusChange() bool {
	if m != nil {
		return m.StatusChange
	}
	return false
}

func (m *ReceiptCandicator) GetVoteType() int32 {
	if m != nil {
		return m.VoteType
	}
	return 0
}

func (m *ReceiptCandicator) GetVote() *DposVoter {
	if m != nil {
		return m.Vote
	}
	return nil
}

func (m *ReceiptCandicator) GetFromAddr() string {
	if m != nil {
		return m.FromAddr
	}
	return ""
}

func (m *ReceiptCandicator) GetCandInfo() *CandidatorInfo {
	if m != nil {
		return m.CandInfo
	}
	return nil
}

func (m *ReceiptCandicator) GetTime() int64 {
	if m != nil {
		return m.Time
	}
	return 0
}

type DposVrfM struct {
	Index       int64  `protobuf:"varint,1,opt,name=Index" json:"Index,omitempty"`
	Pubkey      []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Cycle       int64  `protobuf:"varint,3,opt,name=cycle" json:"cycle,omitempty"`
	Height      int64  `protobuf:"varint,4,opt,name=height" json:"height,omitempty"`
	M           []byte `protobuf:"bytes,5,opt,name=m,proto3" json:"m,omitempty"`
	Time        int64  `protobuf:"varint,6,opt,name=time" json:"time,omitempty"`
	CycleStart  int64  `protobuf:"varint,7,opt,name=cycleStart" json:"cycleStart,omitempty"`
	CycleMiddle int64  `protobuf:"varint,8,opt,name=cycleMiddle" json:"cycleMiddle,omitempty"`
	CycleStop   int64  `protobuf:"varint,9,opt,name=cycleStop" json:"cycleStop,omitempty"`
}

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

func (m *DposVrfM) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *DposVrfM) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

func (m *DposVrfM) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

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

func (m *DposVrfM) GetM() []byte {
	if m != nil {
		return m.M
	}
	return nil
}

func (m *DposVrfM) GetTime() int64 {
	if m != nil {
		return m.Time
	}
	return 0
}

func (m *DposVrfM) GetCycleStart() int64 {
	if m != nil {
		return m.CycleStart
	}
	return 0
}

func (m *DposVrfM) GetCycleMiddle() int64 {
	if m != nil {
		return m.CycleMiddle
	}
	return 0
}

func (m *DposVrfM) GetCycleStop() int64 {
	if m != nil {
		return m.CycleStop
	}
	return 0
}

type DposVrfRP struct {
	Index       int64  `protobuf:"varint,1,opt,name=Index" json:"Index,omitempty"`
	Pubkey      []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Cycle       int64  `protobuf:"varint,3,opt,name=cycle" json:"cycle,omitempty"`
	Height      int64  `protobuf:"varint,4,opt,name=height" json:"height,omitempty"`
	M           []byte `protobuf:"bytes,5,opt,name=m,proto3" json:"m,omitempty"`
	R           []byte `protobuf:"bytes,6,opt,name=r,proto3" json:"r,omitempty"`
	P           []byte `protobuf:"bytes,7,opt,name=p,proto3" json:"p,omitempty"`
	Time        int64  `protobuf:"varint,8,opt,name=time" json:"time,omitempty"`
	CycleStart  int64  `protobuf:"varint,9,opt,name=cycleStart" json:"cycleStart,omitempty"`
	CycleMiddle int64  `protobuf:"varint,10,opt,name=cycleMiddle" json:"cycleMiddle,omitempty"`
	CycleStop   int64  `protobuf:"varint,11,opt,name=cycleStop" json:"cycleStop,omitempty"`
}

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

func (m *DposVrfRP) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *DposVrfRP) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

func (m *DposVrfRP) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

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

func (m *DposVrfRP) GetM() []byte {
	if m != nil {
		return m.M
	}
	return nil
}

func (m *DposVrfRP) GetR() []byte {
	if m != nil {
		return m.R
	}
	return nil
}

func (m *DposVrfRP) GetP() []byte {
	if m != nil {
		return m.P
	}
	return nil
}

func (m *DposVrfRP) GetTime() int64 {
	if m != nil {
		return m.Time
	}
	return 0
}

func (m *DposVrfRP) GetCycleStart() int64 {
	if m != nil {
		return m.CycleStart
	}
	return 0
}

func (m *DposVrfRP) GetCycleMiddle() int64 {
	if m != nil {
		return m.CycleMiddle
	}
	return 0
}

func (m *DposVrfRP) GetCycleStop() int64 {
	if m != nil {
		return m.CycleStop
	}
	return 0
}

type DposVrfMRegist struct {
	Pubkey string `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"`
	Cycle  int64  `protobuf:"varint,2,opt,name=cycle" json:"cycle,omitempty"`
	M      string `protobuf:"bytes,3,opt,name=m" json:"m,omitempty"`
}

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

func (m *DposVrfMRegist) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

func (m *DposVrfMRegist) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

func (m *DposVrfMRegist) GetM() string {
	if m != nil {
		return m.M
	}
	return ""
}

type DposVrfRPRegist struct {
	Pubkey string `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"`
	Cycle  int64  `protobuf:"varint,2,opt,name=cycle" json:"cycle,omitempty"`
	R      string `protobuf:"bytes,3,opt,name=r" json:"r,omitempty"`
	P      string `protobuf:"bytes,4,opt,name=p" json:"p,omitempty"`
}

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

func (m *DposVrfRPRegist) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

func (m *DposVrfRPRegist) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

func (m *DposVrfRPRegist) GetR() string {
	if m != nil {
		return m.R
	}
	return ""
}

func (m *DposVrfRPRegist) GetP() string {
	if m != nil {
		return m.P
	}
	return ""
}

// ReceiptVrf vrf收据信息
type ReceiptVrf struct {
	Index       int64  `protobuf:"varint,1,opt,name=Index" json:"Index,omitempty"`
	Pubkey      []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Status      int64  `protobuf:"varint,3,opt,name=status" json:"status,omitempty"`
	Cycle       int64  `protobuf:"varint,4,opt,name=cycle" json:"cycle,omitempty"`
	Height      int64  `protobuf:"varint,5,opt,name=height" json:"height,omitempty"`
	M           []byte `protobuf:"bytes,6,opt,name=m,proto3" json:"m,omitempty"`
	R           []byte `protobuf:"bytes,7,opt,name=r,proto3" json:"r,omitempty"`
	P           []byte `protobuf:"bytes,8,opt,name=p,proto3" json:"p,omitempty"`
	Time        int64  `protobuf:"varint,9,opt,name=time" json:"time,omitempty"`
	CycleStart  int64  `protobuf:"varint,10,opt,name=cycleStart" json:"cycleStart,omitempty"`
	CycleMiddle int64  `protobuf:"varint,11,opt,name=cycleMiddle" json:"cycleMiddle,omitempty"`
	CycleStop   int64  `protobuf:"varint,12,opt,name=cycleStop" json:"cycleStop,omitempty"`
}

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

func (m *ReceiptVrf) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *ReceiptVrf) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

func (m *ReceiptVrf) GetStatus() int64 {
	if m != nil {
		return m.Status
	}
	return 0
}

func (m *ReceiptVrf) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

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

func (m *ReceiptVrf) GetM() []byte {
	if m != nil {
		return m.M
	}
	return nil
}

func (m *ReceiptVrf) GetR() []byte {
	if m != nil {
		return m.R
	}
	return nil
}

func (m *ReceiptVrf) GetP() []byte {
	if m != nil {
		return m.P
	}
	return nil
}

func (m *ReceiptVrf) GetTime() int64 {
	if m != nil {
		return m.Time
	}
	return 0
}

func (m *ReceiptVrf) GetCycleStart() int64 {
	if m != nil {
		return m.CycleStart
	}
	return 0
}

func (m *ReceiptVrf) GetCycleMiddle() int64 {
	if m != nil {
		return m.CycleMiddle
	}
	return 0
}

func (m *ReceiptVrf) GetCycleStop() int64 {
	if m != nil {
		return m.CycleStop
	}
	return 0
}

type VrfInfo struct {
	Index  int64  `protobuf:"varint,1,opt,name=Index" json:"Index,omitempty"`
	Pubkey []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Cycle  int64  `protobuf:"varint,4,opt,name=cycle" json:"cycle,omitempty"`
	Height int64  `protobuf:"varint,5,opt,name=height" json:"height,omitempty"`
	M      []byte `protobuf:"bytes,6,opt,name=m,proto3" json:"m,omitempty"`
	R      []byte `protobuf:"bytes,7,opt,name=r,proto3" json:"r,omitempty"`
	P      []byte `protobuf:"bytes,8,opt,name=p,proto3" json:"p,omitempty"`
	Time   int64  `protobuf:"varint,9,opt,name=time" json:"time,omitempty"`
}

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

func (m *VrfInfo) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *VrfInfo) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

func (m *VrfInfo) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

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

func (m *VrfInfo) GetM() []byte {
	if m != nil {
		return m.M
	}
	return nil
}

func (m *VrfInfo) GetR() []byte {
	if m != nil {
		return m.R
	}
	return nil
}

func (m *VrfInfo) GetP() []byte {
	if m != nil {
		return m.P
	}
	return nil
}

func (m *VrfInfo) GetTime() int64 {
	if m != nil {
		return m.Time
	}
	return 0
}

type DposVrfQuery struct {
	Pubkeys   []string `protobuf:"bytes,1,rep,name=pubkeys" json:"pubkeys,omitempty"`
	Ty        int64    `protobuf:"varint,2,opt,name=ty" json:"ty,omitempty"`
	Timestamp int64    `protobuf:"varint,3,opt,name=timestamp" json:"timestamp,omitempty"`
	Cycle     int64    `protobuf:"varint,4,opt,name=cycle" json:"cycle,omitempty"`
}

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

func (m *DposVrfQuery) GetPubkeys() []string {
	if m != nil {
		return m.Pubkeys
	}
	return nil
}

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

func (m *DposVrfQuery) GetTimestamp() int64 {
	if m != nil {
		return m.Timestamp
	}
	return 0
}

func (m *DposVrfQuery) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

type JsonVrfInfo struct {
	Index  int64  `protobuf:"varint,1,opt,name=Index" json:"Index,omitempty"`
	Pubkey string `protobuf:"bytes,2,opt,name=pubkey" json:"pubkey,omitempty"`
	Cycle  int64  `protobuf:"varint,4,opt,name=cycle" json:"cycle,omitempty"`
	Height int64  `protobuf:"varint,5,opt,name=height" json:"height,omitempty"`
	M      string `protobuf:"bytes,6,opt,name=m" json:"m,omitempty"`
	R      string `protobuf:"bytes,7,opt,name=r" json:"r,omitempty"`
	P      string `protobuf:"bytes,8,opt,name=p" json:"p,omitempty"`
	Time   int64  `protobuf:"varint,9,opt,name=time" json:"time,omitempty"`
}

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

func (m *JsonVrfInfo) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *JsonVrfInfo) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

func (m *JsonVrfInfo) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

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

func (m *JsonVrfInfo) GetM() string {
	if m != nil {
		return m.M
	}
	return ""
}

func (m *JsonVrfInfo) GetR() string {
	if m != nil {
		return m.R
	}
	return ""
}

func (m *JsonVrfInfo) GetP() string {
	if m != nil {
		return m.P
	}
	return ""
}

func (m *JsonVrfInfo) GetTime() int64 {
	if m != nil {
		return m.Time
	}
	return 0
}

type DposVrfReply struct {
	Vrf []*JsonVrfInfo `protobuf:"bytes,1,rep,name=vrf" json:"vrf,omitempty"`
}

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

func (m *DposVrfReply) GetVrf() []*JsonVrfInfo {
	if m != nil {
		return m.Vrf
	}
	return nil
}

type DposCycleBoundaryInfo struct {
	Cycle      int64  `protobuf:"varint,1,opt,name=cycle" json:"cycle,omitempty"`
	StopHeight int64  `protobuf:"varint,2,opt,name=stopHeight" json:"stopHeight,omitempty"`
	StopHash   []byte `protobuf:"bytes,3,opt,name=stopHash,proto3" json:"stopHash,omitempty"`
	Pubkey     []byte `protobuf:"bytes,4,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Signature  []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
}

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

func (m *DposCycleBoundaryInfo) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

func (m *DposCycleBoundaryInfo) GetStopHeight() int64 {
	if m != nil {
		return m.StopHeight
	}
	return 0
}

func (m *DposCycleBoundaryInfo) GetStopHash() []byte {
	if m != nil {
		return m.StopHash
	}
	return nil
}

func (m *DposCycleBoundaryInfo) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

func (m *DposCycleBoundaryInfo) GetSignature() []byte {
	if m != nil {
		return m.Signature
	}
	return nil
}

type DposCBInfo struct {
	Cycle      int64  `protobuf:"varint,1,opt,name=cycle" json:"cycle,omitempty"`
	StopHeight int64  `protobuf:"varint,2,opt,name=stopHeight" json:"stopHeight,omitempty"`
	StopHash   string `protobuf:"bytes,3,opt,name=stopHash" json:"stopHash,omitempty"`
	Pubkey     string `protobuf:"bytes,4,opt,name=pubkey" json:"pubkey,omitempty"`
	Signature  string `protobuf:"bytes,5,opt,name=signature" json:"signature,omitempty"`
}

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

func (m *DposCBInfo) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

func (m *DposCBInfo) GetStopHeight() int64 {
	if m != nil {
		return m.StopHeight
	}
	return 0
}

func (m *DposCBInfo) GetStopHash() string {
	if m != nil {
		return m.StopHash
	}
	return ""
}

func (m *DposCBInfo) GetPubkey() string {
	if m != nil {
		return m.Pubkey
	}
	return ""
}

func (m *DposCBInfo) GetSignature() string {
	if m != nil {
		return m.Signature
	}
	return ""
}

type DposCBQuery struct {
	Cycle      int64  `protobuf:"varint,1,opt,name=cycle" json:"cycle,omitempty"`
	StopHeight int64  `protobuf:"varint,2,opt,name=stopHeight" json:"stopHeight,omitempty"`
	StopHash   string `protobuf:"bytes,3,opt,name=stopHash" json:"stopHash,omitempty"`
	Ty         int32  `protobuf:"varint,4,opt,name=ty" json:"ty,omitempty"`
}

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

func (m *DposCBQuery) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

func (m *DposCBQuery) GetStopHeight() int64 {
	if m != nil {
		return m.StopHeight
	}
	return 0
}

func (m *DposCBQuery) GetStopHash() string {
	if m != nil {
		return m.StopHash
	}
	return ""
}

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

type DposCBReply struct {
	CbInfo *DposCBInfo `protobuf:"bytes,1,opt,name=cbInfo" json:"cbInfo,omitempty"`
}

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

func (m *DposCBReply) GetCbInfo() *DposCBInfo {
	if m != nil {
		return m.CbInfo
	}
	return nil
}

// ReceiptCB CycleBoundary收据信息
type ReceiptCB struct {
	Index       int64                  `protobuf:"varint,1,opt,name=Index" json:"Index,omitempty"`
	Pubkey      []byte                 `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Status      int64                  `protobuf:"varint,3,opt,name=status" json:"status,omitempty"`
	Cycle       int64                  `protobuf:"varint,4,opt,name=cycle" json:"cycle,omitempty"`
	Height      int64                  `protobuf:"varint,5,opt,name=height" json:"height,omitempty"`
	Time        int64                  `protobuf:"varint,6,opt,name=time" json:"time,omitempty"`
	CycleStart  int64                  `protobuf:"varint,7,opt,name=cycleStart" json:"cycleStart,omitempty"`
	CycleMiddle int64                  `protobuf:"varint,8,opt,name=cycleMiddle" json:"cycleMiddle,omitempty"`
	CycleStop   int64                  `protobuf:"varint,9,opt,name=cycleStop" json:"cycleStop,omitempty"`
	CbInfo      *DposCycleBoundaryInfo `protobuf:"bytes,10,opt,name=cbInfo" json:"cbInfo,omitempty"`
}

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

func (m *ReceiptCB) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *ReceiptCB) GetPubkey() []byte {
	if m != nil {
		return m.Pubkey
	}
	return nil
}

func (m *ReceiptCB) GetStatus() int64 {
	if m != nil {
		return m.Status
	}
	return 0
}

func (m *ReceiptCB) GetCycle() int64 {
	if m != nil {
		return m.Cycle
	}
	return 0
}

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

func (m *ReceiptCB) GetTime() int64 {
	if m != nil {
		return m.Time
	}
	return 0
}

func (m *ReceiptCB) GetCycleStart() int64 {
	if m != nil {
		return m.CycleStart
	}
	return 0
}

func (m *ReceiptCB) GetCycleMiddle() int64 {
	if m != nil {
		return m.CycleMiddle
	}
	return 0
}

func (m *ReceiptCB) GetCycleStop() int64 {
	if m != nil {
		return m.CycleStop
	}
	return 0
}

func (m *ReceiptCB) GetCbInfo() *DposCycleBoundaryInfo {
	if m != nil {
		return m.CbInfo
	}
	return nil
}

func init() {
	proto.RegisterType((*CandidatorInfo)(nil), "types.CandidatorInfo")
	proto.RegisterType((*DposVoter)(nil), "types.DposVoter")
	proto.RegisterType((*Candidator)(nil), "types.Candidator")
	proto.RegisterType((*DposCandidatorRegist)(nil), "types.DposCandidatorRegist")
	proto.RegisterType((*DposCandidatorCancelRegist)(nil), "types.DposCandidatorCancelRegist")
	proto.RegisterType((*DposVote)(nil), "types.DposVote")
	proto.RegisterType((*DposCancelVote)(nil), "types.DposCancelVote")
	proto.RegisterType((*DposVoteAction)(nil), "types.DposVoteAction")
	proto.RegisterType((*CandidatorQuery)(nil), "types.CandidatorQuery")
	proto.RegisterType((*JsonCandidator)(nil), "types.JsonCandidator")
	proto.RegisterType((*CandidatorReply)(nil), "types.CandidatorReply")
	proto.RegisterType((*DposVoteQuery)(nil), "types.DposVoteQuery")
	proto.RegisterType((*JsonDposVoter)(nil), "types.JsonDposVoter")
	proto.RegisterType((*DposVoteReply)(nil), "types.DposVoteReply")
	proto.RegisterType((*ReceiptCandicator)(nil), "types.ReceiptCandicator")
	proto.RegisterType((*DposVrfM)(nil), "types.DposVrfM")
	proto.RegisterType((*DposVrfRP)(nil), "types.DposVrfRP")
	proto.RegisterType((*DposVrfMRegist)(nil), "types.DposVrfMRegist")
	proto.RegisterType((*DposVrfRPRegist)(nil), "types.DposVrfRPRegist")
	proto.RegisterType((*ReceiptVrf)(nil), "types.ReceiptVrf")
	proto.RegisterType((*VrfInfo)(nil), "types.VrfInfo")
	proto.RegisterType((*DposVrfQuery)(nil), "types.DposVrfQuery")
	proto.RegisterType((*JsonVrfInfo)(nil), "types.JsonVrfInfo")
	proto.RegisterType((*DposVrfReply)(nil), "types.DposVrfReply")
	proto.RegisterType((*DposCycleBoundaryInfo)(nil), "types.DposCycleBoundaryInfo")
	proto.RegisterType((*DposCBInfo)(nil), "types.DposCBInfo")
	proto.RegisterType((*DposCBQuery)(nil), "types.DposCBQuery")
	proto.RegisterType((*DposCBReply)(nil), "types.DposCBReply")
	proto.RegisterType((*ReceiptCB)(nil), "types.ReceiptCB")
}

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

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