github.com/leonlxy/hyperledger@v1.0.0-alpha.0.20170427033203-34922035d248/protos/gossip/message.pb.go (about)

     1  // Code generated by protoc-gen-go.
     2  // source: gossip/message.proto
     3  // DO NOT EDIT!
     4  
     5  /*
     6  Package gossip is a generated protocol buffer package.
     7  
     8  It is generated from these files:
     9  	gossip/message.proto
    10  
    11  It has these top-level messages:
    12  	Envelope
    13  	SecretEnvelope
    14  	Secret
    15  	GossipMessage
    16  	StateInfo
    17  	StateInfoSnapshot
    18  	StateInfoPullRequest
    19  	ConnEstablish
    20  	PeerIdentity
    21  	DataRequest
    22  	GossipHello
    23  	DataUpdate
    24  	DataDigest
    25  	DataMessage
    26  	Payload
    27  	AliveMessage
    28  	LeadershipMessage
    29  	PeerTime
    30  	MembershipRequest
    31  	MembershipResponse
    32  	Member
    33  	Empty
    34  	RemoteStateRequest
    35  	RemoteStateResponse
    36  */
    37  package gossip
    38  
    39  import proto "github.com/golang/protobuf/proto"
    40  import fmt "fmt"
    41  import math "math"
    42  
    43  import (
    44  	context "golang.org/x/net/context"
    45  	grpc "google.golang.org/grpc"
    46  )
    47  
    48  // Reference imports to suppress errors if they are not otherwise used.
    49  var _ = proto.Marshal
    50  var _ = fmt.Errorf
    51  var _ = math.Inf
    52  
    53  // This is a compile-time assertion to ensure that this generated file
    54  // is compatible with the proto package it is being compiled against.
    55  // A compilation error at this line likely means your copy of the
    56  // proto package needs to be updated.
    57  const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
    58  
    59  type PullMsgType int32
    60  
    61  const (
    62  	PullMsgType_UNDEFINED    PullMsgType = 0
    63  	PullMsgType_BLOCK_MSG    PullMsgType = 1
    64  	PullMsgType_IDENTITY_MSG PullMsgType = 2
    65  )
    66  
    67  var PullMsgType_name = map[int32]string{
    68  	0: "UNDEFINED",
    69  	1: "BLOCK_MSG",
    70  	2: "IDENTITY_MSG",
    71  }
    72  var PullMsgType_value = map[string]int32{
    73  	"UNDEFINED":    0,
    74  	"BLOCK_MSG":    1,
    75  	"IDENTITY_MSG": 2,
    76  }
    77  
    78  func (x PullMsgType) String() string {
    79  	return proto.EnumName(PullMsgType_name, int32(x))
    80  }
    81  func (PullMsgType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
    82  
    83  type GossipMessage_Tag int32
    84  
    85  const (
    86  	GossipMessage_UNDEFINED    GossipMessage_Tag = 0
    87  	GossipMessage_EMPTY        GossipMessage_Tag = 1
    88  	GossipMessage_ORG_ONLY     GossipMessage_Tag = 2
    89  	GossipMessage_CHAN_ONLY    GossipMessage_Tag = 3
    90  	GossipMessage_CHAN_AND_ORG GossipMessage_Tag = 4
    91  	GossipMessage_CHAN_OR_ORG  GossipMessage_Tag = 5
    92  )
    93  
    94  var GossipMessage_Tag_name = map[int32]string{
    95  	0: "UNDEFINED",
    96  	1: "EMPTY",
    97  	2: "ORG_ONLY",
    98  	3: "CHAN_ONLY",
    99  	4: "CHAN_AND_ORG",
   100  	5: "CHAN_OR_ORG",
   101  }
   102  var GossipMessage_Tag_value = map[string]int32{
   103  	"UNDEFINED":    0,
   104  	"EMPTY":        1,
   105  	"ORG_ONLY":     2,
   106  	"CHAN_ONLY":    3,
   107  	"CHAN_AND_ORG": 4,
   108  	"CHAN_OR_ORG":  5,
   109  }
   110  
   111  func (x GossipMessage_Tag) String() string {
   112  	return proto.EnumName(GossipMessage_Tag_name, int32(x))
   113  }
   114  func (GossipMessage_Tag) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} }
   115  
   116  // Envelope contains a marshalled
   117  // GossipMessage and a signature over it.
   118  // It may also contain a SecretEnvelope
   119  // which is a marshalled Secret
   120  type Envelope struct {
   121  	Payload        []byte          `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
   122  	Signature      []byte          `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
   123  	SecretEnvelope *SecretEnvelope `protobuf:"bytes,3,opt,name=secretEnvelope" json:"secretEnvelope,omitempty"`
   124  }
   125  
   126  func (m *Envelope) Reset()                    { *m = Envelope{} }
   127  func (m *Envelope) String() string            { return proto.CompactTextString(m) }
   128  func (*Envelope) ProtoMessage()               {}
   129  func (*Envelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
   130  
   131  func (m *Envelope) GetSecretEnvelope() *SecretEnvelope {
   132  	if m != nil {
   133  		return m.SecretEnvelope
   134  	}
   135  	return nil
   136  }
   137  
   138  // SecretEnvelope is a marshalled Secret
   139  // and a signature over it.
   140  // The signature should be validated by the peer
   141  // that signed the Envelope the SecretEnvelope
   142  // came with
   143  type SecretEnvelope struct {
   144  	Payload   []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
   145  	Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
   146  }
   147  
   148  func (m *SecretEnvelope) Reset()                    { *m = SecretEnvelope{} }
   149  func (m *SecretEnvelope) String() string            { return proto.CompactTextString(m) }
   150  func (*SecretEnvelope) ProtoMessage()               {}
   151  func (*SecretEnvelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
   152  
   153  // Secret is an entity that might be omitted
   154  // from an Envelope when the remote peer that is receiving
   155  // the Envelope shouldn't know the secret's content.
   156  type Secret struct {
   157  	// Types that are valid to be assigned to Content:
   158  	//	*Secret_InternalEndpoint
   159  	Content isSecret_Content `protobuf_oneof:"content"`
   160  }
   161  
   162  func (m *Secret) Reset()                    { *m = Secret{} }
   163  func (m *Secret) String() string            { return proto.CompactTextString(m) }
   164  func (*Secret) ProtoMessage()               {}
   165  func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
   166  
   167  type isSecret_Content interface {
   168  	isSecret_Content()
   169  }
   170  
   171  type Secret_InternalEndpoint struct {
   172  	InternalEndpoint string `protobuf:"bytes,1,opt,name=internalEndpoint,oneof"`
   173  }
   174  
   175  func (*Secret_InternalEndpoint) isSecret_Content() {}
   176  
   177  func (m *Secret) GetContent() isSecret_Content {
   178  	if m != nil {
   179  		return m.Content
   180  	}
   181  	return nil
   182  }
   183  
   184  func (m *Secret) GetInternalEndpoint() string {
   185  	if x, ok := m.GetContent().(*Secret_InternalEndpoint); ok {
   186  		return x.InternalEndpoint
   187  	}
   188  	return ""
   189  }
   190  
   191  // XXX_OneofFuncs is for the internal use of the proto package.
   192  func (*Secret) 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{}) {
   193  	return _Secret_OneofMarshaler, _Secret_OneofUnmarshaler, _Secret_OneofSizer, []interface{}{
   194  		(*Secret_InternalEndpoint)(nil),
   195  	}
   196  }
   197  
   198  func _Secret_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
   199  	m := msg.(*Secret)
   200  	// content
   201  	switch x := m.Content.(type) {
   202  	case *Secret_InternalEndpoint:
   203  		b.EncodeVarint(1<<3 | proto.WireBytes)
   204  		b.EncodeStringBytes(x.InternalEndpoint)
   205  	case nil:
   206  	default:
   207  		return fmt.Errorf("Secret.Content has unexpected type %T", x)
   208  	}
   209  	return nil
   210  }
   211  
   212  func _Secret_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
   213  	m := msg.(*Secret)
   214  	switch tag {
   215  	case 1: // content.internalEndpoint
   216  		if wire != proto.WireBytes {
   217  			return true, proto.ErrInternalBadWireType
   218  		}
   219  		x, err := b.DecodeStringBytes()
   220  		m.Content = &Secret_InternalEndpoint{x}
   221  		return true, err
   222  	default:
   223  		return false, nil
   224  	}
   225  }
   226  
   227  func _Secret_OneofSizer(msg proto.Message) (n int) {
   228  	m := msg.(*Secret)
   229  	// content
   230  	switch x := m.Content.(type) {
   231  	case *Secret_InternalEndpoint:
   232  		n += proto.SizeVarint(1<<3 | proto.WireBytes)
   233  		n += proto.SizeVarint(uint64(len(x.InternalEndpoint)))
   234  		n += len(x.InternalEndpoint)
   235  	case nil:
   236  	default:
   237  		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
   238  	}
   239  	return n
   240  }
   241  
   242  // GossipMessage defines the message sent in a gossip network
   243  type GossipMessage struct {
   244  	// used mainly for testing, but will might be used in the future
   245  	// for ensuring message delivery by acking
   246  	Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
   247  	// The channel of the message.
   248  	// Some GossipMessages may set this to nil, because
   249  	// they are cross-channels but some may not
   250  	Channel []byte `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"`
   251  	// determines to which peers it is allowed
   252  	// to forward the message
   253  	Tag GossipMessage_Tag `protobuf:"varint,3,opt,name=tag,enum=gossip.GossipMessage_Tag" json:"tag,omitempty"`
   254  	// Types that are valid to be assigned to Content:
   255  	//	*GossipMessage_AliveMsg
   256  	//	*GossipMessage_MemReq
   257  	//	*GossipMessage_MemRes
   258  	//	*GossipMessage_DataMsg
   259  	//	*GossipMessage_Hello
   260  	//	*GossipMessage_DataDig
   261  	//	*GossipMessage_DataReq
   262  	//	*GossipMessage_DataUpdate
   263  	//	*GossipMessage_Empty
   264  	//	*GossipMessage_Conn
   265  	//	*GossipMessage_StateInfo
   266  	//	*GossipMessage_StateSnapshot
   267  	//	*GossipMessage_StateInfoPullReq
   268  	//	*GossipMessage_StateRequest
   269  	//	*GossipMessage_StateResponse
   270  	//	*GossipMessage_LeadershipMsg
   271  	//	*GossipMessage_PeerIdentity
   272  	Content isGossipMessage_Content `protobuf_oneof:"content"`
   273  }
   274  
   275  func (m *GossipMessage) Reset()                    { *m = GossipMessage{} }
   276  func (m *GossipMessage) String() string            { return proto.CompactTextString(m) }
   277  func (*GossipMessage) ProtoMessage()               {}
   278  func (*GossipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
   279  
   280  type isGossipMessage_Content interface {
   281  	isGossipMessage_Content()
   282  }
   283  
   284  type GossipMessage_AliveMsg struct {
   285  	AliveMsg *AliveMessage `protobuf:"bytes,5,opt,name=alive_msg,json=aliveMsg,oneof"`
   286  }
   287  type GossipMessage_MemReq struct {
   288  	MemReq *MembershipRequest `protobuf:"bytes,6,opt,name=mem_req,json=memReq,oneof"`
   289  }
   290  type GossipMessage_MemRes struct {
   291  	MemRes *MembershipResponse `protobuf:"bytes,7,opt,name=mem_res,json=memRes,oneof"`
   292  }
   293  type GossipMessage_DataMsg struct {
   294  	DataMsg *DataMessage `protobuf:"bytes,8,opt,name=data_msg,json=dataMsg,oneof"`
   295  }
   296  type GossipMessage_Hello struct {
   297  	Hello *GossipHello `protobuf:"bytes,9,opt,name=hello,oneof"`
   298  }
   299  type GossipMessage_DataDig struct {
   300  	DataDig *DataDigest `protobuf:"bytes,10,opt,name=data_dig,json=dataDig,oneof"`
   301  }
   302  type GossipMessage_DataReq struct {
   303  	DataReq *DataRequest `protobuf:"bytes,11,opt,name=data_req,json=dataReq,oneof"`
   304  }
   305  type GossipMessage_DataUpdate struct {
   306  	DataUpdate *DataUpdate `protobuf:"bytes,12,opt,name=data_update,json=dataUpdate,oneof"`
   307  }
   308  type GossipMessage_Empty struct {
   309  	Empty *Empty `protobuf:"bytes,13,opt,name=empty,oneof"`
   310  }
   311  type GossipMessage_Conn struct {
   312  	Conn *ConnEstablish `protobuf:"bytes,14,opt,name=conn,oneof"`
   313  }
   314  type GossipMessage_StateInfo struct {
   315  	StateInfo *StateInfo `protobuf:"bytes,15,opt,name=state_info,json=stateInfo,oneof"`
   316  }
   317  type GossipMessage_StateSnapshot struct {
   318  	StateSnapshot *StateInfoSnapshot `protobuf:"bytes,16,opt,name=state_snapshot,json=stateSnapshot,oneof"`
   319  }
   320  type GossipMessage_StateInfoPullReq struct {
   321  	StateInfoPullReq *StateInfoPullRequest `protobuf:"bytes,17,opt,name=state_info_pull_req,json=stateInfoPullReq,oneof"`
   322  }
   323  type GossipMessage_StateRequest struct {
   324  	StateRequest *RemoteStateRequest `protobuf:"bytes,18,opt,name=state_request,json=stateRequest,oneof"`
   325  }
   326  type GossipMessage_StateResponse struct {
   327  	StateResponse *RemoteStateResponse `protobuf:"bytes,19,opt,name=state_response,json=stateResponse,oneof"`
   328  }
   329  type GossipMessage_LeadershipMsg struct {
   330  	LeadershipMsg *LeadershipMessage `protobuf:"bytes,20,opt,name=leadership_msg,json=leadershipMsg,oneof"`
   331  }
   332  type GossipMessage_PeerIdentity struct {
   333  	PeerIdentity *PeerIdentity `protobuf:"bytes,21,opt,name=peer_identity,json=peerIdentity,oneof"`
   334  }
   335  
   336  func (*GossipMessage_AliveMsg) isGossipMessage_Content()         {}
   337  func (*GossipMessage_MemReq) isGossipMessage_Content()           {}
   338  func (*GossipMessage_MemRes) isGossipMessage_Content()           {}
   339  func (*GossipMessage_DataMsg) isGossipMessage_Content()          {}
   340  func (*GossipMessage_Hello) isGossipMessage_Content()            {}
   341  func (*GossipMessage_DataDig) isGossipMessage_Content()          {}
   342  func (*GossipMessage_DataReq) isGossipMessage_Content()          {}
   343  func (*GossipMessage_DataUpdate) isGossipMessage_Content()       {}
   344  func (*GossipMessage_Empty) isGossipMessage_Content()            {}
   345  func (*GossipMessage_Conn) isGossipMessage_Content()             {}
   346  func (*GossipMessage_StateInfo) isGossipMessage_Content()        {}
   347  func (*GossipMessage_StateSnapshot) isGossipMessage_Content()    {}
   348  func (*GossipMessage_StateInfoPullReq) isGossipMessage_Content() {}
   349  func (*GossipMessage_StateRequest) isGossipMessage_Content()     {}
   350  func (*GossipMessage_StateResponse) isGossipMessage_Content()    {}
   351  func (*GossipMessage_LeadershipMsg) isGossipMessage_Content()    {}
   352  func (*GossipMessage_PeerIdentity) isGossipMessage_Content()     {}
   353  
   354  func (m *GossipMessage) GetContent() isGossipMessage_Content {
   355  	if m != nil {
   356  		return m.Content
   357  	}
   358  	return nil
   359  }
   360  
   361  func (m *GossipMessage) GetAliveMsg() *AliveMessage {
   362  	if x, ok := m.GetContent().(*GossipMessage_AliveMsg); ok {
   363  		return x.AliveMsg
   364  	}
   365  	return nil
   366  }
   367  
   368  func (m *GossipMessage) GetMemReq() *MembershipRequest {
   369  	if x, ok := m.GetContent().(*GossipMessage_MemReq); ok {
   370  		return x.MemReq
   371  	}
   372  	return nil
   373  }
   374  
   375  func (m *GossipMessage) GetMemRes() *MembershipResponse {
   376  	if x, ok := m.GetContent().(*GossipMessage_MemRes); ok {
   377  		return x.MemRes
   378  	}
   379  	return nil
   380  }
   381  
   382  func (m *GossipMessage) GetDataMsg() *DataMessage {
   383  	if x, ok := m.GetContent().(*GossipMessage_DataMsg); ok {
   384  		return x.DataMsg
   385  	}
   386  	return nil
   387  }
   388  
   389  func (m *GossipMessage) GetHello() *GossipHello {
   390  	if x, ok := m.GetContent().(*GossipMessage_Hello); ok {
   391  		return x.Hello
   392  	}
   393  	return nil
   394  }
   395  
   396  func (m *GossipMessage) GetDataDig() *DataDigest {
   397  	if x, ok := m.GetContent().(*GossipMessage_DataDig); ok {
   398  		return x.DataDig
   399  	}
   400  	return nil
   401  }
   402  
   403  func (m *GossipMessage) GetDataReq() *DataRequest {
   404  	if x, ok := m.GetContent().(*GossipMessage_DataReq); ok {
   405  		return x.DataReq
   406  	}
   407  	return nil
   408  }
   409  
   410  func (m *GossipMessage) GetDataUpdate() *DataUpdate {
   411  	if x, ok := m.GetContent().(*GossipMessage_DataUpdate); ok {
   412  		return x.DataUpdate
   413  	}
   414  	return nil
   415  }
   416  
   417  func (m *GossipMessage) GetEmpty() *Empty {
   418  	if x, ok := m.GetContent().(*GossipMessage_Empty); ok {
   419  		return x.Empty
   420  	}
   421  	return nil
   422  }
   423  
   424  func (m *GossipMessage) GetConn() *ConnEstablish {
   425  	if x, ok := m.GetContent().(*GossipMessage_Conn); ok {
   426  		return x.Conn
   427  	}
   428  	return nil
   429  }
   430  
   431  func (m *GossipMessage) GetStateInfo() *StateInfo {
   432  	if x, ok := m.GetContent().(*GossipMessage_StateInfo); ok {
   433  		return x.StateInfo
   434  	}
   435  	return nil
   436  }
   437  
   438  func (m *GossipMessage) GetStateSnapshot() *StateInfoSnapshot {
   439  	if x, ok := m.GetContent().(*GossipMessage_StateSnapshot); ok {
   440  		return x.StateSnapshot
   441  	}
   442  	return nil
   443  }
   444  
   445  func (m *GossipMessage) GetStateInfoPullReq() *StateInfoPullRequest {
   446  	if x, ok := m.GetContent().(*GossipMessage_StateInfoPullReq); ok {
   447  		return x.StateInfoPullReq
   448  	}
   449  	return nil
   450  }
   451  
   452  func (m *GossipMessage) GetStateRequest() *RemoteStateRequest {
   453  	if x, ok := m.GetContent().(*GossipMessage_StateRequest); ok {
   454  		return x.StateRequest
   455  	}
   456  	return nil
   457  }
   458  
   459  func (m *GossipMessage) GetStateResponse() *RemoteStateResponse {
   460  	if x, ok := m.GetContent().(*GossipMessage_StateResponse); ok {
   461  		return x.StateResponse
   462  	}
   463  	return nil
   464  }
   465  
   466  func (m *GossipMessage) GetLeadershipMsg() *LeadershipMessage {
   467  	if x, ok := m.GetContent().(*GossipMessage_LeadershipMsg); ok {
   468  		return x.LeadershipMsg
   469  	}
   470  	return nil
   471  }
   472  
   473  func (m *GossipMessage) GetPeerIdentity() *PeerIdentity {
   474  	if x, ok := m.GetContent().(*GossipMessage_PeerIdentity); ok {
   475  		return x.PeerIdentity
   476  	}
   477  	return nil
   478  }
   479  
   480  // XXX_OneofFuncs is for the internal use of the proto package.
   481  func (*GossipMessage) 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{}) {
   482  	return _GossipMessage_OneofMarshaler, _GossipMessage_OneofUnmarshaler, _GossipMessage_OneofSizer, []interface{}{
   483  		(*GossipMessage_AliveMsg)(nil),
   484  		(*GossipMessage_MemReq)(nil),
   485  		(*GossipMessage_MemRes)(nil),
   486  		(*GossipMessage_DataMsg)(nil),
   487  		(*GossipMessage_Hello)(nil),
   488  		(*GossipMessage_DataDig)(nil),
   489  		(*GossipMessage_DataReq)(nil),
   490  		(*GossipMessage_DataUpdate)(nil),
   491  		(*GossipMessage_Empty)(nil),
   492  		(*GossipMessage_Conn)(nil),
   493  		(*GossipMessage_StateInfo)(nil),
   494  		(*GossipMessage_StateSnapshot)(nil),
   495  		(*GossipMessage_StateInfoPullReq)(nil),
   496  		(*GossipMessage_StateRequest)(nil),
   497  		(*GossipMessage_StateResponse)(nil),
   498  		(*GossipMessage_LeadershipMsg)(nil),
   499  		(*GossipMessage_PeerIdentity)(nil),
   500  	}
   501  }
   502  
   503  func _GossipMessage_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
   504  	m := msg.(*GossipMessage)
   505  	// content
   506  	switch x := m.Content.(type) {
   507  	case *GossipMessage_AliveMsg:
   508  		b.EncodeVarint(5<<3 | proto.WireBytes)
   509  		if err := b.EncodeMessage(x.AliveMsg); err != nil {
   510  			return err
   511  		}
   512  	case *GossipMessage_MemReq:
   513  		b.EncodeVarint(6<<3 | proto.WireBytes)
   514  		if err := b.EncodeMessage(x.MemReq); err != nil {
   515  			return err
   516  		}
   517  	case *GossipMessage_MemRes:
   518  		b.EncodeVarint(7<<3 | proto.WireBytes)
   519  		if err := b.EncodeMessage(x.MemRes); err != nil {
   520  			return err
   521  		}
   522  	case *GossipMessage_DataMsg:
   523  		b.EncodeVarint(8<<3 | proto.WireBytes)
   524  		if err := b.EncodeMessage(x.DataMsg); err != nil {
   525  			return err
   526  		}
   527  	case *GossipMessage_Hello:
   528  		b.EncodeVarint(9<<3 | proto.WireBytes)
   529  		if err := b.EncodeMessage(x.Hello); err != nil {
   530  			return err
   531  		}
   532  	case *GossipMessage_DataDig:
   533  		b.EncodeVarint(10<<3 | proto.WireBytes)
   534  		if err := b.EncodeMessage(x.DataDig); err != nil {
   535  			return err
   536  		}
   537  	case *GossipMessage_DataReq:
   538  		b.EncodeVarint(11<<3 | proto.WireBytes)
   539  		if err := b.EncodeMessage(x.DataReq); err != nil {
   540  			return err
   541  		}
   542  	case *GossipMessage_DataUpdate:
   543  		b.EncodeVarint(12<<3 | proto.WireBytes)
   544  		if err := b.EncodeMessage(x.DataUpdate); err != nil {
   545  			return err
   546  		}
   547  	case *GossipMessage_Empty:
   548  		b.EncodeVarint(13<<3 | proto.WireBytes)
   549  		if err := b.EncodeMessage(x.Empty); err != nil {
   550  			return err
   551  		}
   552  	case *GossipMessage_Conn:
   553  		b.EncodeVarint(14<<3 | proto.WireBytes)
   554  		if err := b.EncodeMessage(x.Conn); err != nil {
   555  			return err
   556  		}
   557  	case *GossipMessage_StateInfo:
   558  		b.EncodeVarint(15<<3 | proto.WireBytes)
   559  		if err := b.EncodeMessage(x.StateInfo); err != nil {
   560  			return err
   561  		}
   562  	case *GossipMessage_StateSnapshot:
   563  		b.EncodeVarint(16<<3 | proto.WireBytes)
   564  		if err := b.EncodeMessage(x.StateSnapshot); err != nil {
   565  			return err
   566  		}
   567  	case *GossipMessage_StateInfoPullReq:
   568  		b.EncodeVarint(17<<3 | proto.WireBytes)
   569  		if err := b.EncodeMessage(x.StateInfoPullReq); err != nil {
   570  			return err
   571  		}
   572  	case *GossipMessage_StateRequest:
   573  		b.EncodeVarint(18<<3 | proto.WireBytes)
   574  		if err := b.EncodeMessage(x.StateRequest); err != nil {
   575  			return err
   576  		}
   577  	case *GossipMessage_StateResponse:
   578  		b.EncodeVarint(19<<3 | proto.WireBytes)
   579  		if err := b.EncodeMessage(x.StateResponse); err != nil {
   580  			return err
   581  		}
   582  	case *GossipMessage_LeadershipMsg:
   583  		b.EncodeVarint(20<<3 | proto.WireBytes)
   584  		if err := b.EncodeMessage(x.LeadershipMsg); err != nil {
   585  			return err
   586  		}
   587  	case *GossipMessage_PeerIdentity:
   588  		b.EncodeVarint(21<<3 | proto.WireBytes)
   589  		if err := b.EncodeMessage(x.PeerIdentity); err != nil {
   590  			return err
   591  		}
   592  	case nil:
   593  	default:
   594  		return fmt.Errorf("GossipMessage.Content has unexpected type %T", x)
   595  	}
   596  	return nil
   597  }
   598  
   599  func _GossipMessage_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
   600  	m := msg.(*GossipMessage)
   601  	switch tag {
   602  	case 5: // content.alive_msg
   603  		if wire != proto.WireBytes {
   604  			return true, proto.ErrInternalBadWireType
   605  		}
   606  		msg := new(AliveMessage)
   607  		err := b.DecodeMessage(msg)
   608  		m.Content = &GossipMessage_AliveMsg{msg}
   609  		return true, err
   610  	case 6: // content.mem_req
   611  		if wire != proto.WireBytes {
   612  			return true, proto.ErrInternalBadWireType
   613  		}
   614  		msg := new(MembershipRequest)
   615  		err := b.DecodeMessage(msg)
   616  		m.Content = &GossipMessage_MemReq{msg}
   617  		return true, err
   618  	case 7: // content.mem_res
   619  		if wire != proto.WireBytes {
   620  			return true, proto.ErrInternalBadWireType
   621  		}
   622  		msg := new(MembershipResponse)
   623  		err := b.DecodeMessage(msg)
   624  		m.Content = &GossipMessage_MemRes{msg}
   625  		return true, err
   626  	case 8: // content.data_msg
   627  		if wire != proto.WireBytes {
   628  			return true, proto.ErrInternalBadWireType
   629  		}
   630  		msg := new(DataMessage)
   631  		err := b.DecodeMessage(msg)
   632  		m.Content = &GossipMessage_DataMsg{msg}
   633  		return true, err
   634  	case 9: // content.hello
   635  		if wire != proto.WireBytes {
   636  			return true, proto.ErrInternalBadWireType
   637  		}
   638  		msg := new(GossipHello)
   639  		err := b.DecodeMessage(msg)
   640  		m.Content = &GossipMessage_Hello{msg}
   641  		return true, err
   642  	case 10: // content.data_dig
   643  		if wire != proto.WireBytes {
   644  			return true, proto.ErrInternalBadWireType
   645  		}
   646  		msg := new(DataDigest)
   647  		err := b.DecodeMessage(msg)
   648  		m.Content = &GossipMessage_DataDig{msg}
   649  		return true, err
   650  	case 11: // content.data_req
   651  		if wire != proto.WireBytes {
   652  			return true, proto.ErrInternalBadWireType
   653  		}
   654  		msg := new(DataRequest)
   655  		err := b.DecodeMessage(msg)
   656  		m.Content = &GossipMessage_DataReq{msg}
   657  		return true, err
   658  	case 12: // content.data_update
   659  		if wire != proto.WireBytes {
   660  			return true, proto.ErrInternalBadWireType
   661  		}
   662  		msg := new(DataUpdate)
   663  		err := b.DecodeMessage(msg)
   664  		m.Content = &GossipMessage_DataUpdate{msg}
   665  		return true, err
   666  	case 13: // content.empty
   667  		if wire != proto.WireBytes {
   668  			return true, proto.ErrInternalBadWireType
   669  		}
   670  		msg := new(Empty)
   671  		err := b.DecodeMessage(msg)
   672  		m.Content = &GossipMessage_Empty{msg}
   673  		return true, err
   674  	case 14: // content.conn
   675  		if wire != proto.WireBytes {
   676  			return true, proto.ErrInternalBadWireType
   677  		}
   678  		msg := new(ConnEstablish)
   679  		err := b.DecodeMessage(msg)
   680  		m.Content = &GossipMessage_Conn{msg}
   681  		return true, err
   682  	case 15: // content.state_info
   683  		if wire != proto.WireBytes {
   684  			return true, proto.ErrInternalBadWireType
   685  		}
   686  		msg := new(StateInfo)
   687  		err := b.DecodeMessage(msg)
   688  		m.Content = &GossipMessage_StateInfo{msg}
   689  		return true, err
   690  	case 16: // content.state_snapshot
   691  		if wire != proto.WireBytes {
   692  			return true, proto.ErrInternalBadWireType
   693  		}
   694  		msg := new(StateInfoSnapshot)
   695  		err := b.DecodeMessage(msg)
   696  		m.Content = &GossipMessage_StateSnapshot{msg}
   697  		return true, err
   698  	case 17: // content.state_info_pull_req
   699  		if wire != proto.WireBytes {
   700  			return true, proto.ErrInternalBadWireType
   701  		}
   702  		msg := new(StateInfoPullRequest)
   703  		err := b.DecodeMessage(msg)
   704  		m.Content = &GossipMessage_StateInfoPullReq{msg}
   705  		return true, err
   706  	case 18: // content.state_request
   707  		if wire != proto.WireBytes {
   708  			return true, proto.ErrInternalBadWireType
   709  		}
   710  		msg := new(RemoteStateRequest)
   711  		err := b.DecodeMessage(msg)
   712  		m.Content = &GossipMessage_StateRequest{msg}
   713  		return true, err
   714  	case 19: // content.state_response
   715  		if wire != proto.WireBytes {
   716  			return true, proto.ErrInternalBadWireType
   717  		}
   718  		msg := new(RemoteStateResponse)
   719  		err := b.DecodeMessage(msg)
   720  		m.Content = &GossipMessage_StateResponse{msg}
   721  		return true, err
   722  	case 20: // content.leadership_msg
   723  		if wire != proto.WireBytes {
   724  			return true, proto.ErrInternalBadWireType
   725  		}
   726  		msg := new(LeadershipMessage)
   727  		err := b.DecodeMessage(msg)
   728  		m.Content = &GossipMessage_LeadershipMsg{msg}
   729  		return true, err
   730  	case 21: // content.peer_identity
   731  		if wire != proto.WireBytes {
   732  			return true, proto.ErrInternalBadWireType
   733  		}
   734  		msg := new(PeerIdentity)
   735  		err := b.DecodeMessage(msg)
   736  		m.Content = &GossipMessage_PeerIdentity{msg}
   737  		return true, err
   738  	default:
   739  		return false, nil
   740  	}
   741  }
   742  
   743  func _GossipMessage_OneofSizer(msg proto.Message) (n int) {
   744  	m := msg.(*GossipMessage)
   745  	// content
   746  	switch x := m.Content.(type) {
   747  	case *GossipMessage_AliveMsg:
   748  		s := proto.Size(x.AliveMsg)
   749  		n += proto.SizeVarint(5<<3 | proto.WireBytes)
   750  		n += proto.SizeVarint(uint64(s))
   751  		n += s
   752  	case *GossipMessage_MemReq:
   753  		s := proto.Size(x.MemReq)
   754  		n += proto.SizeVarint(6<<3 | proto.WireBytes)
   755  		n += proto.SizeVarint(uint64(s))
   756  		n += s
   757  	case *GossipMessage_MemRes:
   758  		s := proto.Size(x.MemRes)
   759  		n += proto.SizeVarint(7<<3 | proto.WireBytes)
   760  		n += proto.SizeVarint(uint64(s))
   761  		n += s
   762  	case *GossipMessage_DataMsg:
   763  		s := proto.Size(x.DataMsg)
   764  		n += proto.SizeVarint(8<<3 | proto.WireBytes)
   765  		n += proto.SizeVarint(uint64(s))
   766  		n += s
   767  	case *GossipMessage_Hello:
   768  		s := proto.Size(x.Hello)
   769  		n += proto.SizeVarint(9<<3 | proto.WireBytes)
   770  		n += proto.SizeVarint(uint64(s))
   771  		n += s
   772  	case *GossipMessage_DataDig:
   773  		s := proto.Size(x.DataDig)
   774  		n += proto.SizeVarint(10<<3 | proto.WireBytes)
   775  		n += proto.SizeVarint(uint64(s))
   776  		n += s
   777  	case *GossipMessage_DataReq:
   778  		s := proto.Size(x.DataReq)
   779  		n += proto.SizeVarint(11<<3 | proto.WireBytes)
   780  		n += proto.SizeVarint(uint64(s))
   781  		n += s
   782  	case *GossipMessage_DataUpdate:
   783  		s := proto.Size(x.DataUpdate)
   784  		n += proto.SizeVarint(12<<3 | proto.WireBytes)
   785  		n += proto.SizeVarint(uint64(s))
   786  		n += s
   787  	case *GossipMessage_Empty:
   788  		s := proto.Size(x.Empty)
   789  		n += proto.SizeVarint(13<<3 | proto.WireBytes)
   790  		n += proto.SizeVarint(uint64(s))
   791  		n += s
   792  	case *GossipMessage_Conn:
   793  		s := proto.Size(x.Conn)
   794  		n += proto.SizeVarint(14<<3 | proto.WireBytes)
   795  		n += proto.SizeVarint(uint64(s))
   796  		n += s
   797  	case *GossipMessage_StateInfo:
   798  		s := proto.Size(x.StateInfo)
   799  		n += proto.SizeVarint(15<<3 | proto.WireBytes)
   800  		n += proto.SizeVarint(uint64(s))
   801  		n += s
   802  	case *GossipMessage_StateSnapshot:
   803  		s := proto.Size(x.StateSnapshot)
   804  		n += proto.SizeVarint(16<<3 | proto.WireBytes)
   805  		n += proto.SizeVarint(uint64(s))
   806  		n += s
   807  	case *GossipMessage_StateInfoPullReq:
   808  		s := proto.Size(x.StateInfoPullReq)
   809  		n += proto.SizeVarint(17<<3 | proto.WireBytes)
   810  		n += proto.SizeVarint(uint64(s))
   811  		n += s
   812  	case *GossipMessage_StateRequest:
   813  		s := proto.Size(x.StateRequest)
   814  		n += proto.SizeVarint(18<<3 | proto.WireBytes)
   815  		n += proto.SizeVarint(uint64(s))
   816  		n += s
   817  	case *GossipMessage_StateResponse:
   818  		s := proto.Size(x.StateResponse)
   819  		n += proto.SizeVarint(19<<3 | proto.WireBytes)
   820  		n += proto.SizeVarint(uint64(s))
   821  		n += s
   822  	case *GossipMessage_LeadershipMsg:
   823  		s := proto.Size(x.LeadershipMsg)
   824  		n += proto.SizeVarint(20<<3 | proto.WireBytes)
   825  		n += proto.SizeVarint(uint64(s))
   826  		n += s
   827  	case *GossipMessage_PeerIdentity:
   828  		s := proto.Size(x.PeerIdentity)
   829  		n += proto.SizeVarint(21<<3 | proto.WireBytes)
   830  		n += proto.SizeVarint(uint64(s))
   831  		n += s
   832  	case nil:
   833  	default:
   834  		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
   835  	}
   836  	return n
   837  }
   838  
   839  // StateInfo is used for a peer to relay its state information
   840  // to other peers
   841  type StateInfo struct {
   842  	Metadata  []byte    `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
   843  	Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
   844  	PkiId     []byte    `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
   845  	// channelMAC is an authentication code that proves
   846  	// that the peer that sent this message knows
   847  	// the name of the channel.
   848  	// The channel name that this message relates to
   849  	// can only be computed by a peer that has joined
   850  	// the channel
   851  	ChannelMAC []byte `protobuf:"bytes,4,opt,name=channelMAC,proto3" json:"channelMAC,omitempty"`
   852  }
   853  
   854  func (m *StateInfo) Reset()                    { *m = StateInfo{} }
   855  func (m *StateInfo) String() string            { return proto.CompactTextString(m) }
   856  func (*StateInfo) ProtoMessage()               {}
   857  func (*StateInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
   858  
   859  func (m *StateInfo) GetTimestamp() *PeerTime {
   860  	if m != nil {
   861  		return m.Timestamp
   862  	}
   863  	return nil
   864  }
   865  
   866  // StateInfoSnapshot is an aggregation of StateInfo messages
   867  type StateInfoSnapshot struct {
   868  	Elements []*Envelope `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"`
   869  }
   870  
   871  func (m *StateInfoSnapshot) Reset()                    { *m = StateInfoSnapshot{} }
   872  func (m *StateInfoSnapshot) String() string            { return proto.CompactTextString(m) }
   873  func (*StateInfoSnapshot) ProtoMessage()               {}
   874  func (*StateInfoSnapshot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
   875  
   876  func (m *StateInfoSnapshot) GetElements() []*Envelope {
   877  	if m != nil {
   878  		return m.Elements
   879  	}
   880  	return nil
   881  }
   882  
   883  // StateInfoPullRequest is used to fetch a StateInfoSnapshot
   884  // from a remote peer
   885  type StateInfoPullRequest struct {
   886  	// channelMAC is an authentication code that proves
   887  	// that the peer that sent this message knows
   888  	// the name of the channel.
   889  	// The channel name that this message relates to
   890  	// can only be computed by a peer that has joined
   891  	// the channel
   892  	ChannelMAC []byte `protobuf:"bytes,1,opt,name=channelMAC,proto3" json:"channelMAC,omitempty"`
   893  }
   894  
   895  func (m *StateInfoPullRequest) Reset()                    { *m = StateInfoPullRequest{} }
   896  func (m *StateInfoPullRequest) String() string            { return proto.CompactTextString(m) }
   897  func (*StateInfoPullRequest) ProtoMessage()               {}
   898  func (*StateInfoPullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
   899  
   900  // ConnEstablish is the message used for the gossip handshake
   901  // Whenever a peer connects to another peer, it handshakes
   902  // with it by sending this message that proves its identity
   903  type ConnEstablish struct {
   904  	PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
   905  	Cert  []byte `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"`
   906  	Hash  []byte `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"`
   907  }
   908  
   909  func (m *ConnEstablish) Reset()                    { *m = ConnEstablish{} }
   910  func (m *ConnEstablish) String() string            { return proto.CompactTextString(m) }
   911  func (*ConnEstablish) ProtoMessage()               {}
   912  func (*ConnEstablish) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
   913  
   914  // PeerIdentity defines the identity of the peer
   915  // Used to make other peers learn of the identity
   916  // of a certain peer
   917  type PeerIdentity struct {
   918  	PkiId    []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
   919  	Cert     []byte `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"`
   920  	Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
   921  }
   922  
   923  func (m *PeerIdentity) Reset()                    { *m = PeerIdentity{} }
   924  func (m *PeerIdentity) String() string            { return proto.CompactTextString(m) }
   925  func (*PeerIdentity) ProtoMessage()               {}
   926  func (*PeerIdentity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
   927  
   928  // DataRequest is a message used for a peer to request
   929  // certain data blocks from a remote peer
   930  type DataRequest struct {
   931  	Nonce   uint64      `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
   932  	Digests []string    `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"`
   933  	MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"`
   934  }
   935  
   936  func (m *DataRequest) Reset()                    { *m = DataRequest{} }
   937  func (m *DataRequest) String() string            { return proto.CompactTextString(m) }
   938  func (*DataRequest) ProtoMessage()               {}
   939  func (*DataRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
   940  
   941  // GossipHello is the message that is used for the peer to initiate
   942  // a pull round with another peer
   943  type GossipHello struct {
   944  	Nonce    uint64      `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
   945  	Metadata []byte      `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
   946  	MsgType  PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"`
   947  }
   948  
   949  func (m *GossipHello) Reset()                    { *m = GossipHello{} }
   950  func (m *GossipHello) String() string            { return proto.CompactTextString(m) }
   951  func (*GossipHello) ProtoMessage()               {}
   952  func (*GossipHello) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
   953  
   954  // DataUpdate is the the final message in the pull phase
   955  // sent from the receiver to the initiator
   956  type DataUpdate struct {
   957  	Nonce   uint64      `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
   958  	Data    []*Envelope `protobuf:"bytes,2,rep,name=data" json:"data,omitempty"`
   959  	MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"`
   960  }
   961  
   962  func (m *DataUpdate) Reset()                    { *m = DataUpdate{} }
   963  func (m *DataUpdate) String() string            { return proto.CompactTextString(m) }
   964  func (*DataUpdate) ProtoMessage()               {}
   965  func (*DataUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
   966  
   967  func (m *DataUpdate) GetData() []*Envelope {
   968  	if m != nil {
   969  		return m.Data
   970  	}
   971  	return nil
   972  }
   973  
   974  // DataDigest is the message sent from the receiver peer
   975  // to the initator peer and contains the data items it has
   976  type DataDigest struct {
   977  	Nonce   uint64      `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
   978  	Digests []string    `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"`
   979  	MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"`
   980  }
   981  
   982  func (m *DataDigest) Reset()                    { *m = DataDigest{} }
   983  func (m *DataDigest) String() string            { return proto.CompactTextString(m) }
   984  func (*DataDigest) ProtoMessage()               {}
   985  func (*DataDigest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
   986  
   987  // DataMessage is the message that contains a block
   988  type DataMessage struct {
   989  	Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"`
   990  }
   991  
   992  func (m *DataMessage) Reset()                    { *m = DataMessage{} }
   993  func (m *DataMessage) String() string            { return proto.CompactTextString(m) }
   994  func (*DataMessage) ProtoMessage()               {}
   995  func (*DataMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
   996  
   997  func (m *DataMessage) GetPayload() *Payload {
   998  	if m != nil {
   999  		return m.Payload
  1000  	}
  1001  	return nil
  1002  }
  1003  
  1004  // Payload contains a block
  1005  type Payload struct {
  1006  	SeqNum uint64 `protobuf:"varint,1,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"`
  1007  	Hash   string `protobuf:"bytes,2,opt,name=hash" json:"hash,omitempty"`
  1008  	Data   []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
  1009  }
  1010  
  1011  func (m *Payload) Reset()                    { *m = Payload{} }
  1012  func (m *Payload) String() string            { return proto.CompactTextString(m) }
  1013  func (*Payload) ProtoMessage()               {}
  1014  func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
  1015  
  1016  // AliveMessage is sent to inform remote peers
  1017  // of a peer's existence and activity
  1018  type AliveMessage struct {
  1019  	Membership *Member   `protobuf:"bytes,1,opt,name=membership" json:"membership,omitempty"`
  1020  	Timestamp  *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
  1021  	Identity   []byte    `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"`
  1022  }
  1023  
  1024  func (m *AliveMessage) Reset()                    { *m = AliveMessage{} }
  1025  func (m *AliveMessage) String() string            { return proto.CompactTextString(m) }
  1026  func (*AliveMessage) ProtoMessage()               {}
  1027  func (*AliveMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
  1028  
  1029  func (m *AliveMessage) GetMembership() *Member {
  1030  	if m != nil {
  1031  		return m.Membership
  1032  	}
  1033  	return nil
  1034  }
  1035  
  1036  func (m *AliveMessage) GetTimestamp() *PeerTime {
  1037  	if m != nil {
  1038  		return m.Timestamp
  1039  	}
  1040  	return nil
  1041  }
  1042  
  1043  // Leadership Message is sent during leader election to inform
  1044  // remote peers about intent of peer to proclaim itself as leader
  1045  type LeadershipMessage struct {
  1046  	PkiId         []byte    `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
  1047  	Timestamp     *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
  1048  	IsDeclaration bool      `protobuf:"varint,3,opt,name=is_declaration,json=isDeclaration" json:"is_declaration,omitempty"`
  1049  }
  1050  
  1051  func (m *LeadershipMessage) Reset()                    { *m = LeadershipMessage{} }
  1052  func (m *LeadershipMessage) String() string            { return proto.CompactTextString(m) }
  1053  func (*LeadershipMessage) ProtoMessage()               {}
  1054  func (*LeadershipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
  1055  
  1056  func (m *LeadershipMessage) GetTimestamp() *PeerTime {
  1057  	if m != nil {
  1058  		return m.Timestamp
  1059  	}
  1060  	return nil
  1061  }
  1062  
  1063  // PeerTime defines the logical time of a peer's life
  1064  type PeerTime struct {
  1065  	IncNumber uint64 `protobuf:"varint,1,opt,name=inc_number,json=incNumber" json:"inc_number,omitempty"`
  1066  	SeqNum    uint64 `protobuf:"varint,2,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"`
  1067  }
  1068  
  1069  func (m *PeerTime) Reset()                    { *m = PeerTime{} }
  1070  func (m *PeerTime) String() string            { return proto.CompactTextString(m) }
  1071  func (*PeerTime) ProtoMessage()               {}
  1072  func (*PeerTime) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
  1073  
  1074  // MembershipRequest is used to ask membership information
  1075  // from a remote peer
  1076  type MembershipRequest struct {
  1077  	SelfInformation *Envelope `protobuf:"bytes,1,opt,name=self_information,json=selfInformation" json:"self_information,omitempty"`
  1078  	Known           [][]byte  `protobuf:"bytes,2,rep,name=known,proto3" json:"known,omitempty"`
  1079  }
  1080  
  1081  func (m *MembershipRequest) Reset()                    { *m = MembershipRequest{} }
  1082  func (m *MembershipRequest) String() string            { return proto.CompactTextString(m) }
  1083  func (*MembershipRequest) ProtoMessage()               {}
  1084  func (*MembershipRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
  1085  
  1086  func (m *MembershipRequest) GetSelfInformation() *Envelope {
  1087  	if m != nil {
  1088  		return m.SelfInformation
  1089  	}
  1090  	return nil
  1091  }
  1092  
  1093  // MembershipResponse is used for replying to MembershipRequests
  1094  type MembershipResponse struct {
  1095  	Alive []*Envelope `protobuf:"bytes,1,rep,name=alive" json:"alive,omitempty"`
  1096  	Dead  []*Envelope `protobuf:"bytes,2,rep,name=dead" json:"dead,omitempty"`
  1097  }
  1098  
  1099  func (m *MembershipResponse) Reset()                    { *m = MembershipResponse{} }
  1100  func (m *MembershipResponse) String() string            { return proto.CompactTextString(m) }
  1101  func (*MembershipResponse) ProtoMessage()               {}
  1102  func (*MembershipResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
  1103  
  1104  func (m *MembershipResponse) GetAlive() []*Envelope {
  1105  	if m != nil {
  1106  		return m.Alive
  1107  	}
  1108  	return nil
  1109  }
  1110  
  1111  func (m *MembershipResponse) GetDead() []*Envelope {
  1112  	if m != nil {
  1113  		return m.Dead
  1114  	}
  1115  	return nil
  1116  }
  1117  
  1118  // Member holds membership-related information
  1119  // about a peer
  1120  type Member struct {
  1121  	Endpoint string `protobuf:"bytes,1,opt,name=endpoint" json:"endpoint,omitempty"`
  1122  	Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
  1123  	PkiId    []byte `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
  1124  }
  1125  
  1126  func (m *Member) Reset()                    { *m = Member{} }
  1127  func (m *Member) String() string            { return proto.CompactTextString(m) }
  1128  func (*Member) ProtoMessage()               {}
  1129  func (*Member) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
  1130  
  1131  // Empty is used for pinging and in tests
  1132  type Empty struct {
  1133  }
  1134  
  1135  func (m *Empty) Reset()                    { *m = Empty{} }
  1136  func (m *Empty) String() string            { return proto.CompactTextString(m) }
  1137  func (*Empty) ProtoMessage()               {}
  1138  func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
  1139  
  1140  // RemoteStateRequest is used to ask a set of blocks
  1141  // from a remote peer
  1142  type RemoteStateRequest struct {
  1143  	StartSeqNum uint64 `protobuf:"varint,1,opt,name=start_seq_num,json=startSeqNum" json:"start_seq_num,omitempty"`
  1144  	EndSeqNum   uint64 `protobuf:"varint,2,opt,name=end_seq_num,json=endSeqNum" json:"end_seq_num,omitempty"`
  1145  }
  1146  
  1147  func (m *RemoteStateRequest) Reset()                    { *m = RemoteStateRequest{} }
  1148  func (m *RemoteStateRequest) String() string            { return proto.CompactTextString(m) }
  1149  func (*RemoteStateRequest) ProtoMessage()               {}
  1150  func (*RemoteStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
  1151  
  1152  // RemoteStateResponse is used to send a set of blocks
  1153  // to a remote peer
  1154  type RemoteStateResponse struct {
  1155  	Payloads []*Payload `protobuf:"bytes,1,rep,name=payloads" json:"payloads,omitempty"`
  1156  }
  1157  
  1158  func (m *RemoteStateResponse) Reset()                    { *m = RemoteStateResponse{} }
  1159  func (m *RemoteStateResponse) String() string            { return proto.CompactTextString(m) }
  1160  func (*RemoteStateResponse) ProtoMessage()               {}
  1161  func (*RemoteStateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
  1162  
  1163  func (m *RemoteStateResponse) GetPayloads() []*Payload {
  1164  	if m != nil {
  1165  		return m.Payloads
  1166  	}
  1167  	return nil
  1168  }
  1169  
  1170  func init() {
  1171  	proto.RegisterType((*Envelope)(nil), "gossip.Envelope")
  1172  	proto.RegisterType((*SecretEnvelope)(nil), "gossip.SecretEnvelope")
  1173  	proto.RegisterType((*Secret)(nil), "gossip.Secret")
  1174  	proto.RegisterType((*GossipMessage)(nil), "gossip.GossipMessage")
  1175  	proto.RegisterType((*StateInfo)(nil), "gossip.StateInfo")
  1176  	proto.RegisterType((*StateInfoSnapshot)(nil), "gossip.StateInfoSnapshot")
  1177  	proto.RegisterType((*StateInfoPullRequest)(nil), "gossip.StateInfoPullRequest")
  1178  	proto.RegisterType((*ConnEstablish)(nil), "gossip.ConnEstablish")
  1179  	proto.RegisterType((*PeerIdentity)(nil), "gossip.PeerIdentity")
  1180  	proto.RegisterType((*DataRequest)(nil), "gossip.DataRequest")
  1181  	proto.RegisterType((*GossipHello)(nil), "gossip.GossipHello")
  1182  	proto.RegisterType((*DataUpdate)(nil), "gossip.DataUpdate")
  1183  	proto.RegisterType((*DataDigest)(nil), "gossip.DataDigest")
  1184  	proto.RegisterType((*DataMessage)(nil), "gossip.DataMessage")
  1185  	proto.RegisterType((*Payload)(nil), "gossip.Payload")
  1186  	proto.RegisterType((*AliveMessage)(nil), "gossip.AliveMessage")
  1187  	proto.RegisterType((*LeadershipMessage)(nil), "gossip.LeadershipMessage")
  1188  	proto.RegisterType((*PeerTime)(nil), "gossip.PeerTime")
  1189  	proto.RegisterType((*MembershipRequest)(nil), "gossip.MembershipRequest")
  1190  	proto.RegisterType((*MembershipResponse)(nil), "gossip.MembershipResponse")
  1191  	proto.RegisterType((*Member)(nil), "gossip.Member")
  1192  	proto.RegisterType((*Empty)(nil), "gossip.Empty")
  1193  	proto.RegisterType((*RemoteStateRequest)(nil), "gossip.RemoteStateRequest")
  1194  	proto.RegisterType((*RemoteStateResponse)(nil), "gossip.RemoteStateResponse")
  1195  	proto.RegisterEnum("gossip.PullMsgType", PullMsgType_name, PullMsgType_value)
  1196  	proto.RegisterEnum("gossip.GossipMessage_Tag", GossipMessage_Tag_name, GossipMessage_Tag_value)
  1197  }
  1198  
  1199  // Reference imports to suppress errors if they are not otherwise used.
  1200  var _ context.Context
  1201  var _ grpc.ClientConn
  1202  
  1203  // This is a compile-time assertion to ensure that this generated file
  1204  // is compatible with the grpc package it is being compiled against.
  1205  const _ = grpc.SupportPackageIsVersion3
  1206  
  1207  // Client API for Gossip service
  1208  
  1209  type GossipClient interface {
  1210  	// GossipStream is the gRPC stream used for sending and receiving messages
  1211  	GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error)
  1212  	// Ping is used to probe a remote peer's aliveness
  1213  	Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
  1214  }
  1215  
  1216  type gossipClient struct {
  1217  	cc *grpc.ClientConn
  1218  }
  1219  
  1220  func NewGossipClient(cc *grpc.ClientConn) GossipClient {
  1221  	return &gossipClient{cc}
  1222  }
  1223  
  1224  func (c *gossipClient) GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) {
  1225  	stream, err := grpc.NewClientStream(ctx, &_Gossip_serviceDesc.Streams[0], c.cc, "/gossip.Gossip/GossipStream", opts...)
  1226  	if err != nil {
  1227  		return nil, err
  1228  	}
  1229  	x := &gossipGossipStreamClient{stream}
  1230  	return x, nil
  1231  }
  1232  
  1233  type Gossip_GossipStreamClient interface {
  1234  	Send(*Envelope) error
  1235  	Recv() (*Envelope, error)
  1236  	grpc.ClientStream
  1237  }
  1238  
  1239  type gossipGossipStreamClient struct {
  1240  	grpc.ClientStream
  1241  }
  1242  
  1243  func (x *gossipGossipStreamClient) Send(m *Envelope) error {
  1244  	return x.ClientStream.SendMsg(m)
  1245  }
  1246  
  1247  func (x *gossipGossipStreamClient) Recv() (*Envelope, error) {
  1248  	m := new(Envelope)
  1249  	if err := x.ClientStream.RecvMsg(m); err != nil {
  1250  		return nil, err
  1251  	}
  1252  	return m, nil
  1253  }
  1254  
  1255  func (c *gossipClient) Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
  1256  	out := new(Empty)
  1257  	err := grpc.Invoke(ctx, "/gossip.Gossip/Ping", in, out, c.cc, opts...)
  1258  	if err != nil {
  1259  		return nil, err
  1260  	}
  1261  	return out, nil
  1262  }
  1263  
  1264  // Server API for Gossip service
  1265  
  1266  type GossipServer interface {
  1267  	// GossipStream is the gRPC stream used for sending and receiving messages
  1268  	GossipStream(Gossip_GossipStreamServer) error
  1269  	// Ping is used to probe a remote peer's aliveness
  1270  	Ping(context.Context, *Empty) (*Empty, error)
  1271  }
  1272  
  1273  func RegisterGossipServer(s *grpc.Server, srv GossipServer) {
  1274  	s.RegisterService(&_Gossip_serviceDesc, srv)
  1275  }
  1276  
  1277  func _Gossip_GossipStream_Handler(srv interface{}, stream grpc.ServerStream) error {
  1278  	return srv.(GossipServer).GossipStream(&gossipGossipStreamServer{stream})
  1279  }
  1280  
  1281  type Gossip_GossipStreamServer interface {
  1282  	Send(*Envelope) error
  1283  	Recv() (*Envelope, error)
  1284  	grpc.ServerStream
  1285  }
  1286  
  1287  type gossipGossipStreamServer struct {
  1288  	grpc.ServerStream
  1289  }
  1290  
  1291  func (x *gossipGossipStreamServer) Send(m *Envelope) error {
  1292  	return x.ServerStream.SendMsg(m)
  1293  }
  1294  
  1295  func (x *gossipGossipStreamServer) Recv() (*Envelope, error) {
  1296  	m := new(Envelope)
  1297  	if err := x.ServerStream.RecvMsg(m); err != nil {
  1298  		return nil, err
  1299  	}
  1300  	return m, nil
  1301  }
  1302  
  1303  func _Gossip_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1304  	in := new(Empty)
  1305  	if err := dec(in); err != nil {
  1306  		return nil, err
  1307  	}
  1308  	if interceptor == nil {
  1309  		return srv.(GossipServer).Ping(ctx, in)
  1310  	}
  1311  	info := &grpc.UnaryServerInfo{
  1312  		Server:     srv,
  1313  		FullMethod: "/gossip.Gossip/Ping",
  1314  	}
  1315  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1316  		return srv.(GossipServer).Ping(ctx, req.(*Empty))
  1317  	}
  1318  	return interceptor(ctx, in, info, handler)
  1319  }
  1320  
  1321  var _Gossip_serviceDesc = grpc.ServiceDesc{
  1322  	ServiceName: "gossip.Gossip",
  1323  	HandlerType: (*GossipServer)(nil),
  1324  	Methods: []grpc.MethodDesc{
  1325  		{
  1326  			MethodName: "Ping",
  1327  			Handler:    _Gossip_Ping_Handler,
  1328  		},
  1329  	},
  1330  	Streams: []grpc.StreamDesc{
  1331  		{
  1332  			StreamName:    "GossipStream",
  1333  			Handler:       _Gossip_GossipStream_Handler,
  1334  			ServerStreams: true,
  1335  			ClientStreams: true,
  1336  		},
  1337  	},
  1338  	Metadata: fileDescriptor0,
  1339  }
  1340  
  1341  func init() { proto.RegisterFile("gossip/message.proto", fileDescriptor0) }
  1342  
  1343  var fileDescriptor0 = []byte{
  1344  	// 1352 bytes of a gzipped FileDescriptorProto
  1345  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x57, 0xdd, 0x6f, 0xe3, 0x44,
  1346  	0x10, 0x8f, 0x9b, 0x4f, 0x4f, 0x3e, 0x9a, 0x6e, 0x7b, 0x60, 0xca, 0x71, 0xaa, 0x2c, 0xee, 0x54,
  1347  	0xe8, 0x91, 0x9e, 0x7a, 0x80, 0x4e, 0x3a, 0x81, 0x94, 0x36, 0xa1, 0x09, 0x5c, 0xd2, 0xca, 0xcd,
  1348  	0x09, 0x8e, 0x17, 0x6b, 0x13, 0x6f, 0x1d, 0x73, 0xf6, 0xda, 0xf5, 0x6e, 0x0e, 0xfa, 0x08, 0x8f,
  1349  	0x3c, 0xf0, 0xcc, 0x9f, 0x8b, 0xbc, 0x6b, 0x3b, 0x76, 0xdd, 0x9e, 0xd4, 0x93, 0x78, 0xf3, 0x7c,
  1350  	0xfc, 0x66, 0x66, 0x67, 0x67, 0x67, 0xc6, 0xb0, 0x63, 0xfb, 0x8c, 0x39, 0xc1, 0xa1, 0x47, 0x18,
  1351  	0xc3, 0x36, 0xe9, 0x05, 0xa1, 0xcf, 0x7d, 0x54, 0x93, 0x5c, 0xfd, 0x2f, 0x05, 0x1a, 0x43, 0xfa,
  1352  	0x8e, 0xb8, 0x7e, 0x40, 0x90, 0x06, 0xf5, 0x00, 0x5f, 0xbb, 0x3e, 0xb6, 0x34, 0x65, 0x4f, 0xd9,
  1353  	0x6f, 0x19, 0x09, 0x89, 0x1e, 0x82, 0xca, 0x1c, 0x9b, 0x62, 0xbe, 0x0a, 0x89, 0xb6, 0x21, 0x64,
  1354  	0x6b, 0x06, 0xfa, 0x1e, 0x3a, 0x8c, 0x2c, 0x42, 0xc2, 0x13, 0x4b, 0x5a, 0x79, 0x4f, 0xd9, 0x6f,
  1355  	0x1e, 0x7d, 0xd4, 0x93, 0x5e, 0x7a, 0x17, 0x39, 0xa9, 0x71, 0x43, 0x5b, 0x1f, 0x41, 0x27, 0xaf,
  1356  	0xf1, 0xa1, 0x91, 0xe8, 0x7d, 0xa8, 0x49, 0x4b, 0xe8, 0x29, 0x74, 0x1d, 0xca, 0x49, 0x48, 0xb1,
  1357  	0x3b, 0xa4, 0x56, 0xe0, 0x3b, 0x94, 0x0b, 0x53, 0xea, 0xa8, 0x64, 0x14, 0x24, 0xc7, 0x2a, 0xd4,
  1358  	0x17, 0x3e, 0xe5, 0x84, 0x72, 0xfd, 0x5f, 0x15, 0xda, 0xa7, 0x22, 0xec, 0x89, 0xcc, 0x18, 0xda,
  1359  	0x81, 0x2a, 0xf5, 0xe9, 0x82, 0x08, 0x7c, 0xc5, 0x90, 0x44, 0x14, 0xe2, 0x62, 0x89, 0x29, 0x25,
  1360  	0x6e, 0x1c, 0x46, 0x42, 0xa2, 0x03, 0x28, 0x73, 0x6c, 0x8b, 0x1c, 0x74, 0x8e, 0x3e, 0x49, 0x72,
  1361  	0x90, 0xb3, 0xd9, 0x9b, 0x61, 0xdb, 0x88, 0xb4, 0xd0, 0x73, 0x50, 0xb1, 0xeb, 0xbc, 0x23, 0xa6,
  1362  	0xc7, 0x6c, 0xad, 0x2a, 0xd2, 0xb6, 0x93, 0x40, 0xfa, 0x91, 0x20, 0x46, 0x8c, 0x4a, 0x46, 0x43,
  1363  	0x28, 0x4e, 0x98, 0x8d, 0xbe, 0x86, 0xba, 0x47, 0x3c, 0x33, 0x24, 0x57, 0x5a, 0x4d, 0x40, 0x52,
  1364  	0x2f, 0x13, 0xe2, 0xcd, 0x49, 0xc8, 0x96, 0x4e, 0x60, 0x90, 0xab, 0x15, 0x61, 0x7c, 0x54, 0x32,
  1365  	0x6a, 0x1e, 0xf1, 0x0c, 0x72, 0x85, 0xbe, 0x49, 0x50, 0x4c, 0xab, 0x0b, 0xd4, 0xee, 0x6d, 0x28,
  1366  	0x16, 0xf8, 0x94, 0x91, 0x14, 0xc6, 0xd0, 0x33, 0x68, 0x58, 0x98, 0x63, 0x11, 0x60, 0x43, 0xe0,
  1367  	0xb6, 0x13, 0xdc, 0x00, 0x73, 0xbc, 0x8e, 0xaf, 0x1e, 0xa9, 0x45, 0xe1, 0x1d, 0x40, 0x75, 0x49,
  1368  	0x5c, 0xd7, 0xd7, 0xd4, 0xbc, 0xba, 0x4c, 0xc1, 0x28, 0x12, 0x8d, 0x4a, 0x86, 0xd4, 0x41, 0x87,
  1369  	0xb1, 0x79, 0xcb, 0xb1, 0x35, 0x10, 0xfa, 0x28, 0x6b, 0x7e, 0xe0, 0xd8, 0xf2, 0x14, 0xc2, 0xfa,
  1370  	0xc0, 0xb1, 0xd3, 0x78, 0xa2, 0xd3, 0x37, 0x8b, 0xf1, 0xac, 0xcf, 0x2d, 0x10, 0xf2, 0xe0, 0x4d,
  1371  	0x81, 0x58, 0x05, 0x16, 0xe6, 0x44, 0x6b, 0x15, 0xbd, 0xbc, 0x16, 0x92, 0x51, 0xc9, 0x00, 0x2b,
  1372  	0xa5, 0xd0, 0x63, 0xa8, 0x12, 0x2f, 0xe0, 0xd7, 0x5a, 0x5b, 0x00, 0xda, 0x09, 0x60, 0x18, 0x31,
  1373  	0xa3, 0x03, 0x08, 0x29, 0x3a, 0x80, 0xca, 0xc2, 0xa7, 0x54, 0xeb, 0x08, 0xad, 0x07, 0x89, 0xd6,
  1374  	0x89, 0x4f, 0xe9, 0x90, 0x71, 0x3c, 0x77, 0x1d, 0xb6, 0x1c, 0x95, 0x0c, 0xa1, 0x84, 0x8e, 0x00,
  1375  	0x18, 0xc7, 0x9c, 0x98, 0x0e, 0xbd, 0xf4, 0xb5, 0x4d, 0x01, 0xd9, 0x4a, 0x9f, 0x49, 0x24, 0x19,
  1376  	0xd3, 0xcb, 0x28, 0x3b, 0x2a, 0x4b, 0x08, 0x74, 0x0c, 0x1d, 0x89, 0x61, 0x14, 0x07, 0x6c, 0xe9,
  1377  	0x73, 0xad, 0x9b, 0xbf, 0xf4, 0x14, 0x77, 0x11, 0x2b, 0x8c, 0x4a, 0x46, 0x5b, 0x40, 0x12, 0x06,
  1378  	0x9a, 0xc0, 0xf6, 0xda, 0xaf, 0x19, 0xac, 0x5c, 0x57, 0xe4, 0x6f, 0x4b, 0x18, 0x7a, 0x58, 0x30,
  1379  	0x74, 0xbe, 0x72, 0xdd, 0x75, 0x22, 0xbb, 0xec, 0x06, 0x1f, 0xf5, 0x41, 0xda, 0x8f, 0x8c, 0x44,
  1380  	0x4a, 0x1a, 0xca, 0x17, 0x94, 0x41, 0x3c, 0x9f, 0x13, 0x61, 0x6e, 0x6d, 0xa6, 0xc5, 0x32, 0x34,
  1381  	0x1a, 0x24, 0xa7, 0x0a, 0xe3, 0x92, 0xd3, 0xb6, 0x85, 0x8d, 0x4f, 0x6f, 0xb5, 0x91, 0x56, 0x65,
  1382  	0x9b, 0x65, 0x19, 0x51, 0x6e, 0x5c, 0x82, 0x2d, 0x59, 0xbc, 0xa2, 0x44, 0x77, 0xf2, 0xb9, 0x79,
  1383  	0x95, 0x4a, 0xd7, 0x85, 0xda, 0x5e, 0x43, 0xa2, 0x72, 0x7d, 0x09, 0xed, 0x80, 0x90, 0xd0, 0x74,
  1384  	0x2c, 0x42, 0xb9, 0xc3, 0xaf, 0xb5, 0x07, 0xf9, 0x67, 0x78, 0x4e, 0x48, 0x38, 0x8e, 0x65, 0xd1,
  1385  	0x31, 0x82, 0x0c, 0xad, 0x9b, 0x50, 0x9e, 0x61, 0x1b, 0xb5, 0x41, 0x7d, 0x3d, 0x1d, 0x0c, 0x7f,
  1386  	0x18, 0x4f, 0x87, 0x83, 0x6e, 0x09, 0xa9, 0x50, 0x1d, 0x4e, 0xce, 0x67, 0x6f, 0xba, 0x0a, 0x6a,
  1387  	0x41, 0xe3, 0xcc, 0x38, 0x35, 0xcf, 0xa6, 0xaf, 0xde, 0x74, 0x37, 0x22, 0xbd, 0x93, 0x51, 0x7f,
  1388  	0x2a, 0xc9, 0x32, 0xea, 0x42, 0x4b, 0x90, 0xfd, 0xe9, 0xc0, 0x3c, 0x33, 0x4e, 0xbb, 0x15, 0xb4,
  1389  	0x09, 0x4d, 0xa9, 0x60, 0x08, 0x46, 0x35, 0xdb, 0x9a, 0xfe, 0x51, 0x40, 0x4d, 0xaf, 0x08, 0xed,
  1390  	0x42, 0xc3, 0x23, 0x1c, 0x47, 0x05, 0x1b, 0x37, 0xc9, 0x94, 0x46, 0x3d, 0x50, 0xb9, 0xe3, 0x11,
  1391  	0xc6, 0xb1, 0x17, 0x88, 0xf6, 0xd4, 0x3c, 0xea, 0x66, 0x8f, 0x33, 0x73, 0x3c, 0x62, 0xac, 0x55,
  1392  	0xd0, 0x03, 0xa8, 0x05, 0x6f, 0x1d, 0xd3, 0xb1, 0x44, 0xd7, 0x6a, 0x19, 0xd5, 0xe0, 0xad, 0x33,
  1393  	0xb6, 0xd0, 0x23, 0x80, 0xb8, 0xa9, 0x4d, 0xfa, 0x27, 0x5a, 0x45, 0x88, 0x32, 0x1c, 0xbd, 0x0f,
  1394  	0x5b, 0x85, 0xda, 0x43, 0x4f, 0xa1, 0x41, 0x5c, 0xe2, 0x11, 0xca, 0x99, 0xa6, 0xec, 0x95, 0xb3,
  1395  	0xae, 0xd3, 0x09, 0x90, 0x6a, 0xe8, 0xdf, 0xc2, 0xce, 0x6d, 0x55, 0x77, 0xc3, 0xb5, 0x52, 0x70,
  1396  	0x3d, 0x85, 0x76, 0xee, 0x85, 0x65, 0x8e, 0xa0, 0x64, 0x8f, 0x80, 0xa0, 0xb2, 0x20, 0x21, 0x8f,
  1397  	0x7b, 0xb4, 0xf8, 0x8e, 0x78, 0x4b, 0xcc, 0x96, 0xf1, 0x59, 0xc5, 0xb7, 0xfe, 0x1a, 0x5a, 0xd9,
  1398  	0x7b, 0xbe, 0x8f, 0xb9, 0xec, 0x45, 0x94, 0xf3, 0x17, 0xa1, 0x7b, 0xd0, 0xcc, 0x34, 0xa5, 0xbb,
  1399  	0x47, 0x89, 0x25, 0xda, 0x1c, 0xd3, 0x36, 0xf6, 0xca, 0xfb, 0xaa, 0x91, 0x90, 0xa8, 0x07, 0x0d,
  1400  	0x8f, 0xd9, 0x26, 0xbf, 0x8e, 0x67, 0x6a, 0x67, 0xdd, 0xeb, 0xa2, 0x64, 0x4d, 0x98, 0x3d, 0xbb,
  1401  	0x0e, 0x88, 0x51, 0xf7, 0xe4, 0x87, 0xee, 0x43, 0x33, 0xd3, 0x64, 0xef, 0x70, 0x97, 0x8d, 0x77,
  1402  	0xa3, 0x50, 0x38, 0xf7, 0x73, 0xf8, 0x07, 0xc0, 0xba, 0x7f, 0xde, 0xe1, 0xef, 0x73, 0xa8, 0xc4,
  1403  	0xbe, 0x6e, 0x2f, 0x86, 0xca, 0x07, 0x79, 0x76, 0xa5, 0x67, 0x39, 0x1f, 0xfe, 0xf7, 0xc4, 0xbe,
  1404  	0x90, 0xf7, 0x98, 0xac, 0x04, 0x5f, 0xe4, 0xf7, 0x93, 0xe6, 0xd1, 0x66, 0x8a, 0x96, 0xec, 0x74,
  1405  	0x61, 0xd1, 0x7f, 0x84, 0x7a, 0xcc, 0x43, 0x1f, 0x43, 0x9d, 0x91, 0x2b, 0x93, 0xae, 0xbc, 0x38,
  1406  	0xcc, 0x1a, 0x23, 0x57, 0xd3, 0x95, 0x97, 0x16, 0x64, 0x74, 0x1b, 0xaa, 0x2c, 0xc8, 0x88, 0x97,
  1407  	0xa9, 0x28, 0xf1, 0xad, 0xff, 0xad, 0x40, 0x2b, 0xbb, 0x14, 0xa0, 0x1e, 0x80, 0x97, 0xce, 0xee,
  1408  	0x38, 0x94, 0x4e, 0x7e, 0xaa, 0x1b, 0x19, 0x8d, 0x7b, 0xf7, 0x85, 0x5d, 0x68, 0xa4, 0x5d, 0x51,
  1409  	0x3e, 0xff, 0x94, 0xd6, 0xff, 0x54, 0x60, 0xab, 0xd0, 0x5d, 0xef, 0x7a, 0x37, 0xf7, 0x75, 0xfc,
  1410  	0x18, 0x3a, 0x0e, 0x33, 0x2d, 0xb2, 0x70, 0x71, 0x88, 0xb9, 0xe3, 0x53, 0x91, 0x87, 0x86, 0xd1,
  1411  	0x76, 0xd8, 0x60, 0xcd, 0xd4, 0x8f, 0xa1, 0x91, 0xa0, 0xd1, 0x67, 0x00, 0x0e, 0x5d, 0x44, 0xd9,
  1412  	0x9d, 0x93, 0x30, 0x4e, 0xb0, 0xea, 0xd0, 0xc5, 0x54, 0x30, 0xb2, 0xc9, 0xdf, 0xc8, 0x26, 0x5f,
  1413  	0xbf, 0x84, 0xad, 0xc2, 0xd6, 0x84, 0x5e, 0x42, 0x97, 0x11, 0xf7, 0x52, 0x8c, 0xcb, 0xd0, 0x93,
  1414  	0x11, 0x28, 0xf9, 0xb0, 0xd3, 0xfa, 0xdd, 0x8c, 0x34, 0xc7, 0x6b, 0xc5, 0xa8, 0x18, 0xdf, 0x52,
  1415  	0xff, 0x77, 0x2a, 0x8a, 0xae, 0x65, 0x48, 0x42, 0x9f, 0x03, 0x2a, 0xee, 0x59, 0xe8, 0x09, 0x54,
  1416  	0xc5, 0x5a, 0x77, 0x67, 0xab, 0x94, 0x62, 0xf1, 0x88, 0x08, 0xb6, 0xde, 0xf3, 0x88, 0x08, 0xb6,
  1417  	0xf4, 0x9f, 0xa1, 0x26, 0x7d, 0x44, 0x37, 0x47, 0x72, 0x7b, 0xaf, 0x91, 0xd2, 0xef, 0x6d, 0x00,
  1418  	0xb7, 0x4f, 0x02, 0xbd, 0x0e, 0x55, 0xb1, 0xf6, 0xe8, 0xbf, 0x00, 0x2a, 0x0e, 0x77, 0xa4, 0x8b,
  1419  	0x7d, 0x20, 0xe4, 0x66, 0xbe, 0xbe, 0x9b, 0x82, 0x79, 0x21, 0x8b, 0xfc, 0x11, 0x34, 0x09, 0xb5,
  1420  	0xcc, 0xfc, 0x25, 0xa8, 0x84, 0x5a, 0x52, 0xae, 0x1f, 0xc3, 0xf6, 0x2d, 0x23, 0x1f, 0x1d, 0x40,
  1421  	0x23, 0x7e, 0x4a, 0xc9, 0x38, 0x29, 0xbc, 0xb5, 0x54, 0xe1, 0xcb, 0xef, 0xa0, 0x99, 0x79, 0xbe,
  1422  	0x37, 0xa7, 0x72, 0x1b, 0xd4, 0xe3, 0x57, 0x67, 0x27, 0x3f, 0x99, 0x93, 0x8b, 0xd3, 0xae, 0x12,
  1423  	0x0d, 0xdf, 0xf1, 0x60, 0x38, 0x9d, 0x8d, 0x67, 0x6f, 0x04, 0x67, 0xe3, 0xe8, 0x37, 0xa8, 0xc9,
  1424  	0xf6, 0x89, 0x5e, 0x40, 0x4b, 0x7e, 0x5d, 0xf0, 0x90, 0x60, 0x0f, 0x15, 0x12, 0xbe, 0x5b, 0xe0,
  1425  	0xe8, 0xa5, 0x7d, 0xe5, 0x99, 0x82, 0x9e, 0x40, 0xe5, 0xdc, 0xa1, 0x36, 0xca, 0xaf, 0x8b, 0xbb,
  1426  	0x79, 0x52, 0x2f, 0x1d, 0x7f, 0xf5, 0xeb, 0x81, 0xed, 0xf0, 0xe5, 0x6a, 0xde, 0x5b, 0xf8, 0xde,
  1427  	0xe1, 0xf2, 0x3a, 0x20, 0xa1, 0x4b, 0x2c, 0x9b, 0x84, 0x87, 0x97, 0x78, 0x1e, 0x3a, 0x8b, 0x43,
  1428  	0xf1, 0xa3, 0xc6, 0x0e, 0x25, 0x6c, 0x5e, 0x13, 0xe4, 0xf3, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff,
  1429  	0xd6, 0x2d, 0x62, 0x5a, 0xcf, 0x0d, 0x00, 0x00,
  1430  }