github.com/darrenli6/fabric-sdk-example@v0.0.0-20220109053535-94b13b56df8c/protos/gossip/message.pb.go (about)

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