bsc/accounts/usbwallet/internal/trezor/messages.pb.go

3082 lines
115 KiB
Go
Raw Normal View History

// Code generated by protoc-gen-go. DO NOT EDIT.
// source: messages.proto
package trezor
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// *
// Mapping between Trezor wire identifier (uint) and a protobuf message
type MessageType int32
const (
MessageType_MessageType_Initialize MessageType = 0
MessageType_MessageType_Ping MessageType = 1
MessageType_MessageType_Success MessageType = 2
MessageType_MessageType_Failure MessageType = 3
MessageType_MessageType_ChangePin MessageType = 4
MessageType_MessageType_WipeDevice MessageType = 5
MessageType_MessageType_FirmwareErase MessageType = 6
MessageType_MessageType_FirmwareUpload MessageType = 7
MessageType_MessageType_FirmwareRequest MessageType = 8
MessageType_MessageType_GetEntropy MessageType = 9
MessageType_MessageType_Entropy MessageType = 10
MessageType_MessageType_GetPublicKey MessageType = 11
MessageType_MessageType_PublicKey MessageType = 12
MessageType_MessageType_LoadDevice MessageType = 13
MessageType_MessageType_ResetDevice MessageType = 14
MessageType_MessageType_SignTx MessageType = 15
MessageType_MessageType_SimpleSignTx MessageType = 16
MessageType_MessageType_Features MessageType = 17
MessageType_MessageType_PinMatrixRequest MessageType = 18
MessageType_MessageType_PinMatrixAck MessageType = 19
MessageType_MessageType_Cancel MessageType = 20
MessageType_MessageType_TxRequest MessageType = 21
MessageType_MessageType_TxAck MessageType = 22
MessageType_MessageType_CipherKeyValue MessageType = 23
MessageType_MessageType_ClearSession MessageType = 24
MessageType_MessageType_ApplySettings MessageType = 25
MessageType_MessageType_ButtonRequest MessageType = 26
MessageType_MessageType_ButtonAck MessageType = 27
MessageType_MessageType_ApplyFlags MessageType = 28
MessageType_MessageType_GetAddress MessageType = 29
MessageType_MessageType_Address MessageType = 30
MessageType_MessageType_SelfTest MessageType = 32
MessageType_MessageType_BackupDevice MessageType = 34
MessageType_MessageType_EntropyRequest MessageType = 35
MessageType_MessageType_EntropyAck MessageType = 36
MessageType_MessageType_SignMessage MessageType = 38
MessageType_MessageType_VerifyMessage MessageType = 39
MessageType_MessageType_MessageSignature MessageType = 40
MessageType_MessageType_PassphraseRequest MessageType = 41
MessageType_MessageType_PassphraseAck MessageType = 42
MessageType_MessageType_EstimateTxSize MessageType = 43
MessageType_MessageType_TxSize MessageType = 44
MessageType_MessageType_RecoveryDevice MessageType = 45
MessageType_MessageType_WordRequest MessageType = 46
MessageType_MessageType_WordAck MessageType = 47
MessageType_MessageType_CipheredKeyValue MessageType = 48
MessageType_MessageType_EncryptMessage MessageType = 49
MessageType_MessageType_EncryptedMessage MessageType = 50
MessageType_MessageType_DecryptMessage MessageType = 51
MessageType_MessageType_DecryptedMessage MessageType = 52
MessageType_MessageType_SignIdentity MessageType = 53
MessageType_MessageType_SignedIdentity MessageType = 54
MessageType_MessageType_GetFeatures MessageType = 55
MessageType_MessageType_EthereumGetAddress MessageType = 56
MessageType_MessageType_EthereumAddress MessageType = 57
MessageType_MessageType_EthereumSignTx MessageType = 58
MessageType_MessageType_EthereumTxRequest MessageType = 59
MessageType_MessageType_EthereumTxAck MessageType = 60
MessageType_MessageType_GetECDHSessionKey MessageType = 61
MessageType_MessageType_ECDHSessionKey MessageType = 62
MessageType_MessageType_SetU2FCounter MessageType = 63
MessageType_MessageType_EthereumSignMessage MessageType = 64
MessageType_MessageType_EthereumVerifyMessage MessageType = 65
MessageType_MessageType_EthereumMessageSignature MessageType = 66
MessageType_MessageType_DebugLinkDecision MessageType = 100
MessageType_MessageType_DebugLinkGetState MessageType = 101
MessageType_MessageType_DebugLinkState MessageType = 102
MessageType_MessageType_DebugLinkStop MessageType = 103
MessageType_MessageType_DebugLinkLog MessageType = 104
MessageType_MessageType_DebugLinkMemoryRead MessageType = 110
MessageType_MessageType_DebugLinkMemory MessageType = 111
MessageType_MessageType_DebugLinkMemoryWrite MessageType = 112
MessageType_MessageType_DebugLinkFlashErase MessageType = 113
)
var MessageType_name = map[int32]string{
0: "MessageType_Initialize",
1: "MessageType_Ping",
2: "MessageType_Success",
3: "MessageType_Failure",
4: "MessageType_ChangePin",
5: "MessageType_WipeDevice",
6: "MessageType_FirmwareErase",
7: "MessageType_FirmwareUpload",
8: "MessageType_FirmwareRequest",
9: "MessageType_GetEntropy",
10: "MessageType_Entropy",
11: "MessageType_GetPublicKey",
12: "MessageType_PublicKey",
13: "MessageType_LoadDevice",
14: "MessageType_ResetDevice",
15: "MessageType_SignTx",
16: "MessageType_SimpleSignTx",
17: "MessageType_Features",
18: "MessageType_PinMatrixRequest",
19: "MessageType_PinMatrixAck",
20: "MessageType_Cancel",
21: "MessageType_TxRequest",
22: "MessageType_TxAck",
23: "MessageType_CipherKeyValue",
24: "MessageType_ClearSession",
25: "MessageType_ApplySettings",
26: "MessageType_ButtonRequest",
27: "MessageType_ButtonAck",
28: "MessageType_ApplyFlags",
29: "MessageType_GetAddress",
30: "MessageType_Address",
32: "MessageType_SelfTest",
34: "MessageType_BackupDevice",
35: "MessageType_EntropyRequest",
36: "MessageType_EntropyAck",
38: "MessageType_SignMessage",
39: "MessageType_VerifyMessage",
40: "MessageType_MessageSignature",
41: "MessageType_PassphraseRequest",
42: "MessageType_PassphraseAck",
43: "MessageType_EstimateTxSize",
44: "MessageType_TxSize",
45: "MessageType_RecoveryDevice",
46: "MessageType_WordRequest",
47: "MessageType_WordAck",
48: "MessageType_CipheredKeyValue",
49: "MessageType_EncryptMessage",
50: "MessageType_EncryptedMessage",
51: "MessageType_DecryptMessage",
52: "MessageType_DecryptedMessage",
53: "MessageType_SignIdentity",
54: "MessageType_SignedIdentity",
55: "MessageType_GetFeatures",
56: "MessageType_EthereumGetAddress",
57: "MessageType_EthereumAddress",
58: "MessageType_EthereumSignTx",
59: "MessageType_EthereumTxRequest",
60: "MessageType_EthereumTxAck",
61: "MessageType_GetECDHSessionKey",
62: "MessageType_ECDHSessionKey",
63: "MessageType_SetU2FCounter",
64: "MessageType_EthereumSignMessage",
65: "MessageType_EthereumVerifyMessage",
66: "MessageType_EthereumMessageSignature",
100: "MessageType_DebugLinkDecision",
101: "MessageType_DebugLinkGetState",
102: "MessageType_DebugLinkState",
103: "MessageType_DebugLinkStop",
104: "MessageType_DebugLinkLog",
110: "MessageType_DebugLinkMemoryRead",
111: "MessageType_DebugLinkMemory",
112: "MessageType_DebugLinkMemoryWrite",
113: "MessageType_DebugLinkFlashErase",
}
var MessageType_value = map[string]int32{
"MessageType_Initialize": 0,
"MessageType_Ping": 1,
"MessageType_Success": 2,
"MessageType_Failure": 3,
"MessageType_ChangePin": 4,
"MessageType_WipeDevice": 5,
"MessageType_FirmwareErase": 6,
"MessageType_FirmwareUpload": 7,
"MessageType_FirmwareRequest": 8,
"MessageType_GetEntropy": 9,
"MessageType_Entropy": 10,
"MessageType_GetPublicKey": 11,
"MessageType_PublicKey": 12,
"MessageType_LoadDevice": 13,
"MessageType_ResetDevice": 14,
"MessageType_SignTx": 15,
"MessageType_SimpleSignTx": 16,
"MessageType_Features": 17,
"MessageType_PinMatrixRequest": 18,
"MessageType_PinMatrixAck": 19,
"MessageType_Cancel": 20,
"MessageType_TxRequest": 21,
"MessageType_TxAck": 22,
"MessageType_CipherKeyValue": 23,
"MessageType_ClearSession": 24,
"MessageType_ApplySettings": 25,
"MessageType_ButtonRequest": 26,
"MessageType_ButtonAck": 27,
"MessageType_ApplyFlags": 28,
"MessageType_GetAddress": 29,
"MessageType_Address": 30,
"MessageType_SelfTest": 32,
"MessageType_BackupDevice": 34,
"MessageType_EntropyRequest": 35,
"MessageType_EntropyAck": 36,
"MessageType_SignMessage": 38,
"MessageType_VerifyMessage": 39,
"MessageType_MessageSignature": 40,
"MessageType_PassphraseRequest": 41,
"MessageType_PassphraseAck": 42,
"MessageType_EstimateTxSize": 43,
"MessageType_TxSize": 44,
"MessageType_RecoveryDevice": 45,
"MessageType_WordRequest": 46,
"MessageType_WordAck": 47,
"MessageType_CipheredKeyValue": 48,
"MessageType_EncryptMessage": 49,
"MessageType_EncryptedMessage": 50,
"MessageType_DecryptMessage": 51,
"MessageType_DecryptedMessage": 52,
"MessageType_SignIdentity": 53,
"MessageType_SignedIdentity": 54,
"MessageType_GetFeatures": 55,
"MessageType_EthereumGetAddress": 56,
"MessageType_EthereumAddress": 57,
"MessageType_EthereumSignTx": 58,
"MessageType_EthereumTxRequest": 59,
"MessageType_EthereumTxAck": 60,
"MessageType_GetECDHSessionKey": 61,
"MessageType_ECDHSessionKey": 62,
"MessageType_SetU2FCounter": 63,
"MessageType_EthereumSignMessage": 64,
"MessageType_EthereumVerifyMessage": 65,
"MessageType_EthereumMessageSignature": 66,
"MessageType_DebugLinkDecision": 100,
"MessageType_DebugLinkGetState": 101,
"MessageType_DebugLinkState": 102,
"MessageType_DebugLinkStop": 103,
"MessageType_DebugLinkLog": 104,
"MessageType_DebugLinkMemoryRead": 110,
"MessageType_DebugLinkMemory": 111,
"MessageType_DebugLinkMemoryWrite": 112,
"MessageType_DebugLinkFlashErase": 113,
}
func (x MessageType) Enum() *MessageType {
p := new(MessageType)
*p = x
return p
}
func (x MessageType) String() string {
return proto.EnumName(MessageType_name, int32(x))
}
func (x *MessageType) UnmarshalJSON(data []byte) error {
value, err := proto.UnmarshalJSONEnum(MessageType_value, data, "MessageType")
if err != nil {
return err
}
*x = MessageType(value)
return nil
}
func (MessageType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
// *
// Request: Reset device to default state and ask for device details
// @next Features
type Initialize struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *Initialize) Reset() { *m = Initialize{} }
func (m *Initialize) String() string { return proto.CompactTextString(m) }
func (*Initialize) ProtoMessage() {}
func (*Initialize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
// *
// Request: Ask for device details (no device reset)
// @next Features
type GetFeatures struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *GetFeatures) Reset() { *m = GetFeatures{} }
func (m *GetFeatures) String() string { return proto.CompactTextString(m) }
func (*GetFeatures) ProtoMessage() {}
func (*GetFeatures) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
// *
// Response: Reports various information about the device
// @prev Initialize
// @prev GetFeatures
type Features struct {
Vendor *string `protobuf:"bytes,1,opt,name=vendor" json:"vendor,omitempty"`
MajorVersion *uint32 `protobuf:"varint,2,opt,name=major_version,json=majorVersion" json:"major_version,omitempty"`
MinorVersion *uint32 `protobuf:"varint,3,opt,name=minor_version,json=minorVersion" json:"minor_version,omitempty"`
PatchVersion *uint32 `protobuf:"varint,4,opt,name=patch_version,json=patchVersion" json:"patch_version,omitempty"`
BootloaderMode *bool `protobuf:"varint,5,opt,name=bootloader_mode,json=bootloaderMode" json:"bootloader_mode,omitempty"`
DeviceId *string `protobuf:"bytes,6,opt,name=device_id,json=deviceId" json:"device_id,omitempty"`
PinProtection *bool `protobuf:"varint,7,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"`
PassphraseProtection *bool `protobuf:"varint,8,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
Language *string `protobuf:"bytes,9,opt,name=language" json:"language,omitempty"`
Label *string `protobuf:"bytes,10,opt,name=label" json:"label,omitempty"`
Coins []*CoinType `protobuf:"bytes,11,rep,name=coins" json:"coins,omitempty"`
Initialized *bool `protobuf:"varint,12,opt,name=initialized" json:"initialized,omitempty"`
Revision []byte `protobuf:"bytes,13,opt,name=revision" json:"revision,omitempty"`
BootloaderHash []byte `protobuf:"bytes,14,opt,name=bootloader_hash,json=bootloaderHash" json:"bootloader_hash,omitempty"`
Imported *bool `protobuf:"varint,15,opt,name=imported" json:"imported,omitempty"`
PinCached *bool `protobuf:"varint,16,opt,name=pin_cached,json=pinCached" json:"pin_cached,omitempty"`
PassphraseCached *bool `protobuf:"varint,17,opt,name=passphrase_cached,json=passphraseCached" json:"passphrase_cached,omitempty"`
FirmwarePresent *bool `protobuf:"varint,18,opt,name=firmware_present,json=firmwarePresent" json:"firmware_present,omitempty"`
NeedsBackup *bool `protobuf:"varint,19,opt,name=needs_backup,json=needsBackup" json:"needs_backup,omitempty"`
Flags *uint32 `protobuf:"varint,20,opt,name=flags" json:"flags,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *Features) Reset() { *m = Features{} }
func (m *Features) String() string { return proto.CompactTextString(m) }
func (*Features) ProtoMessage() {}
func (*Features) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
func (m *Features) GetVendor() string {
if m != nil && m.Vendor != nil {
return *m.Vendor
}
return ""
}
func (m *Features) GetMajorVersion() uint32 {
if m != nil && m.MajorVersion != nil {
return *m.MajorVersion
}
return 0
}
func (m *Features) GetMinorVersion() uint32 {
if m != nil && m.MinorVersion != nil {
return *m.MinorVersion
}
return 0
}
func (m *Features) GetPatchVersion() uint32 {
if m != nil && m.PatchVersion != nil {
return *m.PatchVersion
}
return 0
}
func (m *Features) GetBootloaderMode() bool {
if m != nil && m.BootloaderMode != nil {
return *m.BootloaderMode
}
return false
}
func (m *Features) GetDeviceId() string {
if m != nil && m.DeviceId != nil {
return *m.DeviceId
}
return ""
}
func (m *Features) GetPinProtection() bool {
if m != nil && m.PinProtection != nil {
return *m.PinProtection
}
return false
}
func (m *Features) GetPassphraseProtection() bool {
if m != nil && m.PassphraseProtection != nil {
return *m.PassphraseProtection
}
return false
}
func (m *Features) GetLanguage() string {
if m != nil && m.Language != nil {
return *m.Language
}
return ""
}
func (m *Features) GetLabel() string {
if m != nil && m.Label != nil {
return *m.Label
}
return ""
}
func (m *Features) GetCoins() []*CoinType {
if m != nil {
return m.Coins
}
return nil
}
func (m *Features) GetInitialized() bool {
if m != nil && m.Initialized != nil {
return *m.Initialized
}
return false
}
func (m *Features) GetRevision() []byte {
if m != nil {
return m.Revision
}
return nil
}
func (m *Features) GetBootloaderHash() []byte {
if m != nil {
return m.BootloaderHash
}
return nil
}
func (m *Features) GetImported() bool {
if m != nil && m.Imported != nil {
return *m.Imported
}
return false
}
func (m *Features) GetPinCached() bool {
if m != nil && m.PinCached != nil {
return *m.PinCached
}
return false
}
func (m *Features) GetPassphraseCached() bool {
if m != nil && m.PassphraseCached != nil {
return *m.PassphraseCached
}
return false
}
func (m *Features) GetFirmwarePresent() bool {
if m != nil && m.FirmwarePresent != nil {
return *m.FirmwarePresent
}
return false
}
func (m *Features) GetNeedsBackup() bool {
if m != nil && m.NeedsBackup != nil {
return *m.NeedsBackup
}
return false
}
func (m *Features) GetFlags() uint32 {
if m != nil && m.Flags != nil {
return *m.Flags
}
return 0
}
// *
// Request: clear session (removes cached PIN, passphrase, etc).
// @next Success
type ClearSession struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *ClearSession) Reset() { *m = ClearSession{} }
func (m *ClearSession) String() string { return proto.CompactTextString(m) }
func (*ClearSession) ProtoMessage() {}
func (*ClearSession) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
// *
// Request: change language and/or label of the device
// @next Success
// @next Failure
// @next ButtonRequest
// @next PinMatrixRequest
type ApplySettings struct {
Language *string `protobuf:"bytes,1,opt,name=language" json:"language,omitempty"`
Label *string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"`
UsePassphrase *bool `protobuf:"varint,3,opt,name=use_passphrase,json=usePassphrase" json:"use_passphrase,omitempty"`
Homescreen []byte `protobuf:"bytes,4,opt,name=homescreen" json:"homescreen,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ApplySettings) Reset() { *m = ApplySettings{} }
func (m *ApplySettings) String() string { return proto.CompactTextString(m) }
func (*ApplySettings) ProtoMessage() {}
func (*ApplySettings) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
func (m *ApplySettings) GetLanguage() string {
if m != nil && m.Language != nil {
return *m.Language
}
return ""
}
func (m *ApplySettings) GetLabel() string {
if m != nil && m.Label != nil {
return *m.Label
}
return ""
}
func (m *ApplySettings) GetUsePassphrase() bool {
if m != nil && m.UsePassphrase != nil {
return *m.UsePassphrase
}
return false
}
func (m *ApplySettings) GetHomescreen() []byte {
if m != nil {
return m.Homescreen
}
return nil
}
// *
// Request: set flags of the device
// @next Success
// @next Failure
type ApplyFlags struct {
Flags *uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ApplyFlags) Reset() { *m = ApplyFlags{} }
func (m *ApplyFlags) String() string { return proto.CompactTextString(m) }
func (*ApplyFlags) ProtoMessage() {}
func (*ApplyFlags) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
func (m *ApplyFlags) GetFlags() uint32 {
if m != nil && m.Flags != nil {
return *m.Flags
}
return 0
}
// *
// Request: Starts workflow for setting/changing/removing the PIN
// @next ButtonRequest
// @next PinMatrixRequest
type ChangePin struct {
Remove *bool `protobuf:"varint,1,opt,name=remove" json:"remove,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ChangePin) Reset() { *m = ChangePin{} }
func (m *ChangePin) String() string { return proto.CompactTextString(m) }
func (*ChangePin) ProtoMessage() {}
func (*ChangePin) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
func (m *ChangePin) GetRemove() bool {
if m != nil && m.Remove != nil {
return *m.Remove
}
return false
}
// *
// Request: Test if the device is alive, device sends back the message in Success response
// @next Success
type Ping struct {
Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
ButtonProtection *bool `protobuf:"varint,2,opt,name=button_protection,json=buttonProtection" json:"button_protection,omitempty"`
PinProtection *bool `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"`
PassphraseProtection *bool `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *Ping) Reset() { *m = Ping{} }
func (m *Ping) String() string { return proto.CompactTextString(m) }
func (*Ping) ProtoMessage() {}
func (*Ping) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
func (m *Ping) GetMessage() string {
if m != nil && m.Message != nil {
return *m.Message
}
return ""
}
func (m *Ping) GetButtonProtection() bool {
if m != nil && m.ButtonProtection != nil {
return *m.ButtonProtection
}
return false
}
func (m *Ping) GetPinProtection() bool {
if m != nil && m.PinProtection != nil {
return *m.PinProtection
}
return false
}
func (m *Ping) GetPassphraseProtection() bool {
if m != nil && m.PassphraseProtection != nil {
return *m.PassphraseProtection
}
return false
}
// *
// Response: Success of the previous request
type Success struct {
Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *Success) Reset() { *m = Success{} }
func (m *Success) String() string { return proto.CompactTextString(m) }
func (*Success) ProtoMessage() {}
func (*Success) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
func (m *Success) GetMessage() string {
if m != nil && m.Message != nil {
return *m.Message
}
return ""
}
// *
// Response: Failure of the previous request
type Failure struct {
Code *FailureType `protobuf:"varint,1,opt,name=code,enum=FailureType" json:"code,omitempty"`
Message *string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *Failure) Reset() { *m = Failure{} }
func (m *Failure) String() string { return proto.CompactTextString(m) }
func (*Failure) ProtoMessage() {}
func (*Failure) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
func (m *Failure) GetCode() FailureType {
if m != nil && m.Code != nil {
return *m.Code
}
return FailureType_Failure_UnexpectedMessage
}
func (m *Failure) GetMessage() string {
if m != nil && m.Message != nil {
return *m.Message
}
return ""
}
// *
// Response: Device is waiting for HW button press.
// @next ButtonAck
// @next Cancel
type ButtonRequest struct {
Code *ButtonRequestType `protobuf:"varint,1,opt,name=code,enum=ButtonRequestType" json:"code,omitempty"`
Data *string `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ButtonRequest) Reset() { *m = ButtonRequest{} }
func (m *ButtonRequest) String() string { return proto.CompactTextString(m) }
func (*ButtonRequest) ProtoMessage() {}
func (*ButtonRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
func (m *ButtonRequest) GetCode() ButtonRequestType {
if m != nil && m.Code != nil {
return *m.Code
}
return ButtonRequestType_ButtonRequest_Other
}
func (m *ButtonRequest) GetData() string {
if m != nil && m.Data != nil {
return *m.Data
}
return ""
}
// *
// Request: Computer agrees to wait for HW button press
// @prev ButtonRequest
type ButtonAck struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *ButtonAck) Reset() { *m = ButtonAck{} }
func (m *ButtonAck) String() string { return proto.CompactTextString(m) }
func (*ButtonAck) ProtoMessage() {}
func (*ButtonAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} }
// *
// Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme
// @next PinMatrixAck
// @next Cancel
type PinMatrixRequest struct {
Type *PinMatrixRequestType `protobuf:"varint,1,opt,name=type,enum=PinMatrixRequestType" json:"type,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *PinMatrixRequest) Reset() { *m = PinMatrixRequest{} }
func (m *PinMatrixRequest) String() string { return proto.CompactTextString(m) }
func (*PinMatrixRequest) ProtoMessage() {}
func (*PinMatrixRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
func (m *PinMatrixRequest) GetType() PinMatrixRequestType {
if m != nil && m.Type != nil {
return *m.Type
}
return PinMatrixRequestType_PinMatrixRequestType_Current
}
// *
// Request: Computer responds with encoded PIN
// @prev PinMatrixRequest
type PinMatrixAck struct {
Pin *string `protobuf:"bytes,1,req,name=pin" json:"pin,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *PinMatrixAck) Reset() { *m = PinMatrixAck{} }
func (m *PinMatrixAck) String() string { return proto.CompactTextString(m) }
func (*PinMatrixAck) ProtoMessage() {}
func (*PinMatrixAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} }
func (m *PinMatrixAck) GetPin() string {
if m != nil && m.Pin != nil {
return *m.Pin
}
return ""
}
// *
// Request: Abort last operation that required user interaction
// @prev ButtonRequest
// @prev PinMatrixRequest
// @prev PassphraseRequest
type Cancel struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *Cancel) Reset() { *m = Cancel{} }
func (m *Cancel) String() string { return proto.CompactTextString(m) }
func (*Cancel) ProtoMessage() {}
func (*Cancel) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} }
// *
// Response: Device awaits encryption passphrase
// @next PassphraseAck
// @next Cancel
type PassphraseRequest struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *PassphraseRequest) Reset() { *m = PassphraseRequest{} }
func (m *PassphraseRequest) String() string { return proto.CompactTextString(m) }
func (*PassphraseRequest) ProtoMessage() {}
func (*PassphraseRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} }
// *
// Request: Send passphrase back
// @prev PassphraseRequest
type PassphraseAck struct {
Passphrase *string `protobuf:"bytes,1,req,name=passphrase" json:"passphrase,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *PassphraseAck) Reset() { *m = PassphraseAck{} }
func (m *PassphraseAck) String() string { return proto.CompactTextString(m) }
func (*PassphraseAck) ProtoMessage() {}
func (*PassphraseAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} }
func (m *PassphraseAck) GetPassphrase() string {
if m != nil && m.Passphrase != nil {
return *m.Passphrase
}
return ""
}
// *
// Request: Request a sample of random data generated by hardware RNG. May be used for testing.
// @next ButtonRequest
// @next Entropy
// @next Failure
type GetEntropy struct {
Size *uint32 `protobuf:"varint,1,req,name=size" json:"size,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *GetEntropy) Reset() { *m = GetEntropy{} }
func (m *GetEntropy) String() string { return proto.CompactTextString(m) }
func (*GetEntropy) ProtoMessage() {}
func (*GetEntropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} }
func (m *GetEntropy) GetSize() uint32 {
if m != nil && m.Size != nil {
return *m.Size
}
return 0
}
// *
// Response: Reply with random data generated by internal RNG
// @prev GetEntropy
type Entropy struct {
Entropy []byte `protobuf:"bytes,1,req,name=entropy" json:"entropy,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *Entropy) Reset() { *m = Entropy{} }
func (m *Entropy) String() string { return proto.CompactTextString(m) }
func (*Entropy) ProtoMessage() {}
func (*Entropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} }
func (m *Entropy) GetEntropy() []byte {
if m != nil {
return m.Entropy
}
return nil
}
// *
// Request: Ask device for public key corresponding to address_n path
// @next PassphraseRequest
// @next PublicKey
// @next Failure
type GetPublicKey struct {
AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
EcdsaCurveName *string `protobuf:"bytes,2,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"`
ShowDisplay *bool `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"`
CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *GetPublicKey) Reset() { *m = GetPublicKey{} }
func (m *GetPublicKey) String() string { return proto.CompactTextString(m) }
func (*GetPublicKey) ProtoMessage() {}
func (*GetPublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} }
const Default_GetPublicKey_CoinName string = "Bitcoin"
func (m *GetPublicKey) GetAddressN() []uint32 {
if m != nil {
return m.AddressN
}
return nil
}
func (m *GetPublicKey) GetEcdsaCurveName() string {
if m != nil && m.EcdsaCurveName != nil {
return *m.EcdsaCurveName
}
return ""
}
func (m *GetPublicKey) GetShowDisplay() bool {
if m != nil && m.ShowDisplay != nil {
return *m.ShowDisplay
}
return false
}
func (m *GetPublicKey) GetCoinName() string {
if m != nil && m.CoinName != nil {
return *m.CoinName
}
return Default_GetPublicKey_CoinName
}
// *
// Response: Contains public key derived from device private seed
// @prev GetPublicKey
type PublicKey struct {
Node *HDNodeType `protobuf:"bytes,1,req,name=node" json:"node,omitempty"`
Xpub *string `protobuf:"bytes,2,opt,name=xpub" json:"xpub,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *PublicKey) Reset() { *m = PublicKey{} }
func (m *PublicKey) String() string { return proto.CompactTextString(m) }
func (*PublicKey) ProtoMessage() {}
func (*PublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} }
func (m *PublicKey) GetNode() *HDNodeType {
if m != nil {
return m.Node
}
return nil
}
func (m *PublicKey) GetXpub() string {
if m != nil && m.Xpub != nil {
return *m.Xpub
}
return ""
}
// *
// Request: Ask device for address corresponding to address_n path
// @next PassphraseRequest
// @next Address
// @next Failure
type GetAddress struct {
AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
CoinName *string `protobuf:"bytes,2,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
ShowDisplay *bool `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"`
Multisig *MultisigRedeemScriptType `protobuf:"bytes,4,opt,name=multisig" json:"multisig,omitempty"`
ScriptType *InputScriptType `protobuf:"varint,5,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *GetAddress) Reset() { *m = GetAddress{} }
func (m *GetAddress) String() string { return proto.CompactTextString(m) }
func (*GetAddress) ProtoMessage() {}
func (*GetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{21} }
const Default_GetAddress_CoinName string = "Bitcoin"
const Default_GetAddress_ScriptType InputScriptType = InputScriptType_SPENDADDRESS
func (m *GetAddress) GetAddressN() []uint32 {
if m != nil {
return m.AddressN
}
return nil
}
func (m *GetAddress) GetCoinName() string {
if m != nil && m.CoinName != nil {
return *m.CoinName
}
return Default_GetAddress_CoinName
}
func (m *GetAddress) GetShowDisplay() bool {
if m != nil && m.ShowDisplay != nil {
return *m.ShowDisplay
}
return false
}
func (m *GetAddress) GetMultisig() *MultisigRedeemScriptType {
if m != nil {
return m.Multisig
}
return nil
}
func (m *GetAddress) GetScriptType() InputScriptType {
if m != nil && m.ScriptType != nil {
return *m.ScriptType
}
return Default_GetAddress_ScriptType
}
// *
// Request: Ask device for Ethereum address corresponding to address_n path
// @next PassphraseRequest
// @next EthereumAddress
// @next Failure
type EthereumGetAddress struct {
AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
ShowDisplay *bool `protobuf:"varint,2,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EthereumGetAddress) Reset() { *m = EthereumGetAddress{} }
func (m *EthereumGetAddress) String() string { return proto.CompactTextString(m) }
func (*EthereumGetAddress) ProtoMessage() {}
func (*EthereumGetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{22} }
func (m *EthereumGetAddress) GetAddressN() []uint32 {
if m != nil {
return m.AddressN
}
return nil
}
func (m *EthereumGetAddress) GetShowDisplay() bool {
if m != nil && m.ShowDisplay != nil {
return *m.ShowDisplay
}
return false
}
// *
// Response: Contains address derived from device private seed
// @prev GetAddress
type Address struct {
Address *string `protobuf:"bytes,1,req,name=address" json:"address,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *Address) Reset() { *m = Address{} }
func (m *Address) String() string { return proto.CompactTextString(m) }
func (*Address) ProtoMessage() {}
func (*Address) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{23} }
func (m *Address) GetAddress() string {
if m != nil && m.Address != nil {
return *m.Address
}
return ""
}
// *
// Response: Contains an Ethereum address derived from device private seed
// @prev EthereumGetAddress
type EthereumAddress struct {
Address []byte `protobuf:"bytes,1,req,name=address" json:"address,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EthereumAddress) Reset() { *m = EthereumAddress{} }
func (m *EthereumAddress) String() string { return proto.CompactTextString(m) }
func (*EthereumAddress) ProtoMessage() {}
func (*EthereumAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{24} }
func (m *EthereumAddress) GetAddress() []byte {
if m != nil {
return m.Address
}
return nil
}
// *
// Request: Request device to wipe all sensitive data and settings
// @next ButtonRequest
type WipeDevice struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *WipeDevice) Reset() { *m = WipeDevice{} }
func (m *WipeDevice) String() string { return proto.CompactTextString(m) }
func (*WipeDevice) ProtoMessage() {}
func (*WipeDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{25} }
// *
// Request: Load seed and related internal settings from the computer
// @next ButtonRequest
// @next Success
// @next Failure
type LoadDevice struct {
Mnemonic *string `protobuf:"bytes,1,opt,name=mnemonic" json:"mnemonic,omitempty"`
Node *HDNodeType `protobuf:"bytes,2,opt,name=node" json:"node,omitempty"`
Pin *string `protobuf:"bytes,3,opt,name=pin" json:"pin,omitempty"`
PassphraseProtection *bool `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
Language *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"`
Label *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"`
SkipChecksum *bool `protobuf:"varint,7,opt,name=skip_checksum,json=skipChecksum" json:"skip_checksum,omitempty"`
U2FCounter *uint32 `protobuf:"varint,8,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *LoadDevice) Reset() { *m = LoadDevice{} }
func (m *LoadDevice) String() string { return proto.CompactTextString(m) }
func (*LoadDevice) ProtoMessage() {}
func (*LoadDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{26} }
const Default_LoadDevice_Language string = "english"
func (m *LoadDevice) GetMnemonic() string {
if m != nil && m.Mnemonic != nil {
return *m.Mnemonic
}
return ""
}
func (m *LoadDevice) GetNode() *HDNodeType {
if m != nil {
return m.Node
}
return nil
}
func (m *LoadDevice) GetPin() string {
if m != nil && m.Pin != nil {
return *m.Pin
}
return ""
}
func (m *LoadDevice) GetPassphraseProtection() bool {
if m != nil && m.PassphraseProtection != nil {
return *m.PassphraseProtection
}
return false
}
func (m *LoadDevice) GetLanguage() string {
if m != nil && m.Language != nil {
return *m.Language
}
return Default_LoadDevice_Language
}
func (m *LoadDevice) GetLabel() string {
if m != nil && m.Label != nil {
return *m.Label
}
return ""
}
func (m *LoadDevice) GetSkipChecksum() bool {
if m != nil && m.SkipChecksum != nil {
return *m.SkipChecksum
}
return false
}
func (m *LoadDevice) GetU2FCounter() uint32 {
if m != nil && m.U2FCounter != nil {
return *m.U2FCounter
}
return 0
}
// *
// Request: Ask device to do initialization involving user interaction
// @next EntropyRequest
// @next Failure
type ResetDevice struct {
DisplayRandom *bool `protobuf:"varint,1,opt,name=display_random,json=displayRandom" json:"display_random,omitempty"`
Strength *uint32 `protobuf:"varint,2,opt,name=strength,def=256" json:"strength,omitempty"`
PassphraseProtection *bool `protobuf:"varint,3,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
PinProtection *bool `protobuf:"varint,4,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"`
Language *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"`
Label *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"`
U2FCounter *uint32 `protobuf:"varint,7,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"`
SkipBackup *bool `protobuf:"varint,8,opt,name=skip_backup,json=skipBackup" json:"skip_backup,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ResetDevice) Reset() { *m = ResetDevice{} }
func (m *ResetDevice) String() string { return proto.CompactTextString(m) }
func (*ResetDevice) ProtoMessage() {}
func (*ResetDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{27} }
const Default_ResetDevice_Strength uint32 = 256
const Default_ResetDevice_Language string = "english"
func (m *ResetDevice) GetDisplayRandom() bool {
if m != nil && m.DisplayRandom != nil {
return *m.DisplayRandom
}
return false
}
func (m *ResetDevice) GetStrength() uint32 {
if m != nil && m.Strength != nil {
return *m.Strength
}
return Default_ResetDevice_Strength
}
func (m *ResetDevice) GetPassphraseProtection() bool {
if m != nil && m.PassphraseProtection != nil {
return *m.PassphraseProtection
}
return false
}
func (m *ResetDevice) GetPinProtection() bool {
if m != nil && m.PinProtection != nil {
return *m.PinProtection
}
return false
}
func (m *ResetDevice) GetLanguage() string {
if m != nil && m.Language != nil {
return *m.Language
}
return Default_ResetDevice_Language
}
func (m *ResetDevice) GetLabel() string {
if m != nil && m.Label != nil {
return *m.Label
}
return ""
}
func (m *ResetDevice) GetU2FCounter() uint32 {
if m != nil && m.U2FCounter != nil {
return *m.U2FCounter
}
return 0
}
func (m *ResetDevice) GetSkipBackup() bool {
if m != nil && m.SkipBackup != nil {
return *m.SkipBackup
}
return false
}
// *
// Request: Perform backup of the device seed if not backed up using ResetDevice
// @next ButtonRequest
type BackupDevice struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *BackupDevice) Reset() { *m = BackupDevice{} }
func (m *BackupDevice) String() string { return proto.CompactTextString(m) }
func (*BackupDevice) ProtoMessage() {}
func (*BackupDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{28} }
// *
// Response: Ask for additional entropy from host computer
// @prev ResetDevice
// @next EntropyAck
type EntropyRequest struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *EntropyRequest) Reset() { *m = EntropyRequest{} }
func (m *EntropyRequest) String() string { return proto.CompactTextString(m) }
func (*EntropyRequest) ProtoMessage() {}
func (*EntropyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{29} }
// *
// Request: Provide additional entropy for seed generation function
// @prev EntropyRequest
// @next ButtonRequest
type EntropyAck struct {
Entropy []byte `protobuf:"bytes,1,opt,name=entropy" json:"entropy,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EntropyAck) Reset() { *m = EntropyAck{} }
func (m *EntropyAck) String() string { return proto.CompactTextString(m) }
func (*EntropyAck) ProtoMessage() {}
func (*EntropyAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{30} }
func (m *EntropyAck) GetEntropy() []byte {
if m != nil {
return m.Entropy
}
return nil
}
// *
// Request: Start recovery workflow asking user for specific words of mnemonic
// Used to recovery device safely even on untrusted computer.
// @next WordRequest
type RecoveryDevice struct {
WordCount *uint32 `protobuf:"varint,1,opt,name=word_count,json=wordCount" json:"word_count,omitempty"`
PassphraseProtection *bool `protobuf:"varint,2,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
PinProtection *bool `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"`
Language *string `protobuf:"bytes,4,opt,name=language,def=english" json:"language,omitempty"`
Label *string `protobuf:"bytes,5,opt,name=label" json:"label,omitempty"`
EnforceWordlist *bool `protobuf:"varint,6,opt,name=enforce_wordlist,json=enforceWordlist" json:"enforce_wordlist,omitempty"`
// 7 reserved for unused recovery method
Type *uint32 `protobuf:"varint,8,opt,name=type" json:"type,omitempty"`
U2FCounter *uint32 `protobuf:"varint,9,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"`
DryRun *bool `protobuf:"varint,10,opt,name=dry_run,json=dryRun" json:"dry_run,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *RecoveryDevice) Reset() { *m = RecoveryDevice{} }
func (m *RecoveryDevice) String() string { return proto.CompactTextString(m) }
func (*RecoveryDevice) ProtoMessage() {}
func (*RecoveryDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{31} }
const Default_RecoveryDevice_Language string = "english"
func (m *RecoveryDevice) GetWordCount() uint32 {
if m != nil && m.WordCount != nil {
return *m.WordCount
}
return 0
}
func (m *RecoveryDevice) GetPassphraseProtection() bool {
if m != nil && m.PassphraseProtection != nil {
return *m.PassphraseProtection
}
return false
}
func (m *RecoveryDevice) GetPinProtection() bool {
if m != nil && m.PinProtection != nil {
return *m.PinProtection
}
return false
}
func (m *RecoveryDevice) GetLanguage() string {
if m != nil && m.Language != nil {
return *m.Language
}
return Default_RecoveryDevice_Language
}
func (m *RecoveryDevice) GetLabel() string {
if m != nil && m.Label != nil {
return *m.Label
}
return ""
}
func (m *RecoveryDevice) GetEnforceWordlist() bool {
if m != nil && m.EnforceWordlist != nil {
return *m.EnforceWordlist
}
return false
}
func (m *RecoveryDevice) GetType() uint32 {
if m != nil && m.Type != nil {
return *m.Type
}
return 0
}
func (m *RecoveryDevice) GetU2FCounter() uint32 {
if m != nil && m.U2FCounter != nil {
return *m.U2FCounter
}
return 0
}
func (m *RecoveryDevice) GetDryRun() bool {
if m != nil && m.DryRun != nil {
return *m.DryRun
}
return false
}
// *
// Response: Device is waiting for user to enter word of the mnemonic
// Its position is shown only on device's internal display.
// @prev RecoveryDevice
// @prev WordAck
type WordRequest struct {
Type *WordRequestType `protobuf:"varint,1,opt,name=type,enum=WordRequestType" json:"type,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *WordRequest) Reset() { *m = WordRequest{} }
func (m *WordRequest) String() string { return proto.CompactTextString(m) }
func (*WordRequest) ProtoMessage() {}
func (*WordRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{32} }
func (m *WordRequest) GetType() WordRequestType {
if m != nil && m.Type != nil {
return *m.Type
}
return WordRequestType_WordRequestType_Plain
}
// *
// Request: Computer replies with word from the mnemonic
// @prev WordRequest
// @next WordRequest
// @next Success
// @next Failure
type WordAck struct {
Word *string `protobuf:"bytes,1,req,name=word" json:"word,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *WordAck) Reset() { *m = WordAck{} }
func (m *WordAck) String() string { return proto.CompactTextString(m) }
func (*WordAck) ProtoMessage() {}
func (*WordAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{33} }
func (m *WordAck) GetWord() string {
if m != nil && m.Word != nil {
return *m.Word
}
return ""
}
// *
// Request: Ask device to sign message
// @next MessageSignature
// @next Failure
type SignMessage struct {
AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
Message []byte `protobuf:"bytes,2,req,name=message" json:"message,omitempty"`
CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
ScriptType *InputScriptType `protobuf:"varint,4,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *SignMessage) Reset() { *m = SignMessage{} }
func (m *SignMessage) String() string { return proto.CompactTextString(m) }
func (*SignMessage) ProtoMessage() {}
func (*SignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{34} }
const Default_SignMessage_CoinName string = "Bitcoin"
const Default_SignMessage_ScriptType InputScriptType = InputScriptType_SPENDADDRESS
func (m *SignMessage) GetAddressN() []uint32 {
if m != nil {
return m.AddressN
}
return nil
}
func (m *SignMessage) GetMessage() []byte {
if m != nil {
return m.Message
}
return nil
}
func (m *SignMessage) GetCoinName() string {
if m != nil && m.CoinName != nil {
return *m.CoinName
}
return Default_SignMessage_CoinName
}
func (m *SignMessage) GetScriptType() InputScriptType {
if m != nil && m.ScriptType != nil {
return *m.ScriptType
}
return Default_SignMessage_ScriptType
}
// *
// Request: Ask device to verify message
// @next Success
// @next Failure
type VerifyMessage struct {
Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"`
CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *VerifyMessage) Reset() { *m = VerifyMessage{} }
func (m *VerifyMessage) String() string { return proto.CompactTextString(m) }
func (*VerifyMessage) ProtoMessage() {}
func (*VerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{35} }
const Default_VerifyMessage_CoinName string = "Bitcoin"
func (m *VerifyMessage) GetAddress() string {
if m != nil && m.Address != nil {
return *m.Address
}
return ""
}
func (m *VerifyMessage) GetSignature() []byte {
if m != nil {
return m.Signature
}
return nil
}
func (m *VerifyMessage) GetMessage() []byte {
if m != nil {
return m.Message
}
return nil
}
func (m *VerifyMessage) GetCoinName() string {
if m != nil && m.CoinName != nil {
return *m.CoinName
}
return Default_VerifyMessage_CoinName
}
// *
// Response: Signed message
// @prev SignMessage
type MessageSignature struct {
Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *MessageSignature) Reset() { *m = MessageSignature{} }
func (m *MessageSignature) String() string { return proto.CompactTextString(m) }
func (*MessageSignature) ProtoMessage() {}
func (*MessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{36} }
func (m *MessageSignature) GetAddress() string {
if m != nil && m.Address != nil {
return *m.Address
}
return ""
}
func (m *MessageSignature) GetSignature() []byte {
if m != nil {
return m.Signature
}
return nil
}
// *
// Request: Ask device to encrypt message
// @next EncryptedMessage
// @next Failure
type EncryptMessage struct {
Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"`
Message []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
DisplayOnly *bool `protobuf:"varint,3,opt,name=display_only,json=displayOnly" json:"display_only,omitempty"`
AddressN []uint32 `protobuf:"varint,4,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
CoinName *string `protobuf:"bytes,5,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EncryptMessage) Reset() { *m = EncryptMessage{} }
func (m *EncryptMessage) String() string { return proto.CompactTextString(m) }
func (*EncryptMessage) ProtoMessage() {}
func (*EncryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{37} }
const Default_EncryptMessage_CoinName string = "Bitcoin"
func (m *EncryptMessage) GetPubkey() []byte {
if m != nil {
return m.Pubkey
}
return nil
}
func (m *EncryptMessage) GetMessage() []byte {
if m != nil {
return m.Message
}
return nil
}
func (m *EncryptMessage) GetDisplayOnly() bool {
if m != nil && m.DisplayOnly != nil {
return *m.DisplayOnly
}
return false
}
func (m *EncryptMessage) GetAddressN() []uint32 {
if m != nil {
return m.AddressN
}
return nil
}
func (m *EncryptMessage) GetCoinName() string {
if m != nil && m.CoinName != nil {
return *m.CoinName
}
return Default_EncryptMessage_CoinName
}
// *
// Response: Encrypted message
// @prev EncryptMessage
type EncryptedMessage struct {
Nonce []byte `protobuf:"bytes,1,opt,name=nonce" json:"nonce,omitempty"`
Message []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
Hmac []byte `protobuf:"bytes,3,opt,name=hmac" json:"hmac,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EncryptedMessage) Reset() { *m = EncryptedMessage{} }
func (m *EncryptedMessage) String() string { return proto.CompactTextString(m) }
func (*EncryptedMessage) ProtoMessage() {}
func (*EncryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{38} }
func (m *EncryptedMessage) GetNonce() []byte {
if m != nil {
return m.Nonce
}
return nil
}
func (m *EncryptedMessage) GetMessage() []byte {
if m != nil {
return m.Message
}
return nil
}
func (m *EncryptedMessage) GetHmac() []byte {
if m != nil {
return m.Hmac
}
return nil
}
// *
// Request: Ask device to decrypt message
// @next Success
// @next Failure
type DecryptMessage struct {
AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
Nonce []byte `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"`
Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"`
Hmac []byte `protobuf:"bytes,4,opt,name=hmac" json:"hmac,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DecryptMessage) Reset() { *m = DecryptMessage{} }
func (m *DecryptMessage) String() string { return proto.CompactTextString(m) }
func (*DecryptMessage) ProtoMessage() {}
func (*DecryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{39} }
func (m *DecryptMessage) GetAddressN() []uint32 {
if m != nil {
return m.AddressN
}
return nil
}
func (m *DecryptMessage) GetNonce() []byte {
if m != nil {
return m.Nonce
}
return nil
}
func (m *DecryptMessage) GetMessage() []byte {
if m != nil {
return m.Message
}
return nil
}
func (m *DecryptMessage) GetHmac() []byte {
if m != nil {
return m.Hmac
}
return nil
}
// *
// Response: Decrypted message
// @prev DecryptedMessage
type DecryptedMessage struct {
Message []byte `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
Address *string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DecryptedMessage) Reset() { *m = DecryptedMessage{} }
func (m *DecryptedMessage) String() string { return proto.CompactTextString(m) }
func (*DecryptedMessage) ProtoMessage() {}
func (*DecryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{40} }
func (m *DecryptedMessage) GetMessage() []byte {
if m != nil {
return m.Message
}
return nil
}
func (m *DecryptedMessage) GetAddress() string {
if m != nil && m.Address != nil {
return *m.Address
}
return ""
}
// *
// Request: Ask device to encrypt or decrypt value of given key
// @next CipheredKeyValue
// @next Failure
type CipherKeyValue struct {
AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
Key *string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
Value []byte `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"`
Encrypt *bool `protobuf:"varint,4,opt,name=encrypt" json:"encrypt,omitempty"`
AskOnEncrypt *bool `protobuf:"varint,5,opt,name=ask_on_encrypt,json=askOnEncrypt" json:"ask_on_encrypt,omitempty"`
AskOnDecrypt *bool `protobuf:"varint,6,opt,name=ask_on_decrypt,json=askOnDecrypt" json:"ask_on_decrypt,omitempty"`
Iv []byte `protobuf:"bytes,7,opt,name=iv" json:"iv,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *CipherKeyValue) Reset() { *m = CipherKeyValue{} }
func (m *CipherKeyValue) String() string { return proto.CompactTextString(m) }
func (*CipherKeyValue) ProtoMessage() {}
func (*CipherKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{41} }
func (m *CipherKeyValue) GetAddressN() []uint32 {
if m != nil {
return m.AddressN
}
return nil
}
func (m *CipherKeyValue) GetKey() string {
if m != nil && m.Key != nil {
return *m.Key
}
return ""
}
func (m *CipherKeyValue) GetValue() []byte {
if m != nil {
return m.Value
}
return nil
}
func (m *CipherKeyValue) GetEncrypt() bool {
if m != nil && m.Encrypt != nil {
return *m.Encrypt
}
return false
}
func (m *CipherKeyValue) GetAskOnEncrypt() bool {
if m != nil && m.AskOnEncrypt != nil {
return *m.AskOnEncrypt
}
return false
}
func (m *CipherKeyValue) GetAskOnDecrypt() bool {
if m != nil && m.AskOnDecrypt != nil {
return *m.AskOnDecrypt
}
return false
}
func (m *CipherKeyValue) GetIv() []byte {
if m != nil {
return m.Iv
}
return nil
}
// *
// Response: Return ciphered/deciphered value
// @prev CipherKeyValue
type CipheredKeyValue struct {
Value []byte `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *CipheredKeyValue) Reset() { *m = CipheredKeyValue{} }
func (m *CipheredKeyValue) String() string { return proto.CompactTextString(m) }
func (*CipheredKeyValue) ProtoMessage() {}
func (*CipheredKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{42} }
func (m *CipheredKeyValue) GetValue() []byte {
if m != nil {
return m.Value
}
return nil
}
// *
// Request: Estimated size of the transaction
// This behaves exactly like SignTx, which means that it can ask using TxRequest
// This call is non-blocking (except possible PassphraseRequest to unlock the seed)
// @next TxSize
// @next Failure
type EstimateTxSize struct {
OutputsCount *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"`
InputsCount *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"`
CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EstimateTxSize) Reset() { *m = EstimateTxSize{} }
func (m *EstimateTxSize) String() string { return proto.CompactTextString(m) }
func (*EstimateTxSize) ProtoMessage() {}
func (*EstimateTxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{43} }
const Default_EstimateTxSize_CoinName string = "Bitcoin"
func (m *EstimateTxSize) GetOutputsCount() uint32 {
if m != nil && m.OutputsCount != nil {
return *m.OutputsCount
}
return 0
}
func (m *EstimateTxSize) GetInputsCount() uint32 {
if m != nil && m.InputsCount != nil {
return *m.InputsCount
}
return 0
}
func (m *EstimateTxSize) GetCoinName() string {
if m != nil && m.CoinName != nil {
return *m.CoinName
}
return Default_EstimateTxSize_CoinName
}
// *
// Response: Estimated size of the transaction
// @prev EstimateTxSize
type TxSize struct {
TxSize *uint32 `protobuf:"varint,1,opt,name=tx_size,json=txSize" json:"tx_size,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *TxSize) Reset() { *m = TxSize{} }
func (m *TxSize) String() string { return proto.CompactTextString(m) }
func (*TxSize) ProtoMessage() {}
func (*TxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{44} }
func (m *TxSize) GetTxSize() uint32 {
if m != nil && m.TxSize != nil {
return *m.TxSize
}
return 0
}
// *
// Request: Ask device to sign transaction
// @next PassphraseRequest
// @next PinMatrixRequest
// @next TxRequest
// @next Failure
type SignTx struct {
OutputsCount *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"`
InputsCount *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"`
CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
Version *uint32 `protobuf:"varint,4,opt,name=version,def=1" json:"version,omitempty"`
LockTime *uint32 `protobuf:"varint,5,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *SignTx) Reset() { *m = SignTx{} }
func (m *SignTx) String() string { return proto.CompactTextString(m) }
func (*SignTx) ProtoMessage() {}
func (*SignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{45} }
const Default_SignTx_CoinName string = "Bitcoin"
const Default_SignTx_Version uint32 = 1
const Default_SignTx_LockTime uint32 = 0
func (m *SignTx) GetOutputsCount() uint32 {
if m != nil && m.OutputsCount != nil {
return *m.OutputsCount
}
return 0
}
func (m *SignTx) GetInputsCount() uint32 {
if m != nil && m.InputsCount != nil {
return *m.InputsCount
}
return 0
}
func (m *SignTx) GetCoinName() string {
if m != nil && m.CoinName != nil {
return *m.CoinName
}
return Default_SignTx_CoinName
}
func (m *SignTx) GetVersion() uint32 {
if m != nil && m.Version != nil {
return *m.Version
}
return Default_SignTx_Version
}
func (m *SignTx) GetLockTime() uint32 {
if m != nil && m.LockTime != nil {
return *m.LockTime
}
return Default_SignTx_LockTime
}
// *
// Request: Simplified transaction signing
// This method doesn't support streaming, so there are hardware limits in number of inputs and outputs.
// In case of success, the result is returned using TxRequest message.
// @next PassphraseRequest
// @next PinMatrixRequest
// @next TxRequest
// @next Failure
type SimpleSignTx struct {
Inputs []*TxInputType `protobuf:"bytes,1,rep,name=inputs" json:"inputs,omitempty"`
Outputs []*TxOutputType `protobuf:"bytes,2,rep,name=outputs" json:"outputs,omitempty"`
Transactions []*TransactionType `protobuf:"bytes,3,rep,name=transactions" json:"transactions,omitempty"`
CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
Version *uint32 `protobuf:"varint,5,opt,name=version,def=1" json:"version,omitempty"`
LockTime *uint32 `protobuf:"varint,6,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *SimpleSignTx) Reset() { *m = SimpleSignTx{} }
func (m *SimpleSignTx) String() string { return proto.CompactTextString(m) }
func (*SimpleSignTx) ProtoMessage() {}
func (*SimpleSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{46} }
const Default_SimpleSignTx_CoinName string = "Bitcoin"
const Default_SimpleSignTx_Version uint32 = 1
const Default_SimpleSignTx_LockTime uint32 = 0
func (m *SimpleSignTx) GetInputs() []*TxInputType {
if m != nil {
return m.Inputs
}
return nil
}
func (m *SimpleSignTx) GetOutputs() []*TxOutputType {
if m != nil {
return m.Outputs
}
return nil
}
func (m *SimpleSignTx) GetTransactions() []*TransactionType {
if m != nil {
return m.Transactions
}
return nil
}
func (m *SimpleSignTx) GetCoinName() string {
if m != nil && m.CoinName != nil {
return *m.CoinName
}
return Default_SimpleSignTx_CoinName
}
func (m *SimpleSignTx) GetVersion() uint32 {
if m != nil && m.Version != nil {
return *m.Version
}
return Default_SimpleSignTx_Version
}
func (m *SimpleSignTx) GetLockTime() uint32 {
if m != nil && m.LockTime != nil {
return *m.LockTime
}
return Default_SimpleSignTx_LockTime
}
// *
// Response: Device asks for information for signing transaction or returns the last result
// If request_index is set, device awaits TxAck message (with fields filled in according to request_type)
// If signature_index is set, 'signature' contains signed input of signature_index's input
// @prev SignTx
// @prev SimpleSignTx
// @prev TxAck
type TxRequest struct {
RequestType *RequestType `protobuf:"varint,1,opt,name=request_type,json=requestType,enum=RequestType" json:"request_type,omitempty"`
Details *TxRequestDetailsType `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"`
Serialized *TxRequestSerializedType `protobuf:"bytes,3,opt,name=serialized" json:"serialized,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *TxRequest) Reset() { *m = TxRequest{} }
func (m *TxRequest) String() string { return proto.CompactTextString(m) }
func (*TxRequest) ProtoMessage() {}
func (*TxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{47} }
func (m *TxRequest) GetRequestType() RequestType {
if m != nil && m.RequestType != nil {
return *m.RequestType
}
return RequestType_TXINPUT
}
func (m *TxRequest) GetDetails() *TxRequestDetailsType {
if m != nil {
return m.Details
}
return nil
}
func (m *TxRequest) GetSerialized() *TxRequestSerializedType {
if m != nil {
return m.Serialized
}
return nil
}
// *
// Request: Reported transaction data
// @prev TxRequest
// @next TxRequest
type TxAck struct {
Tx *TransactionType `protobuf:"bytes,1,opt,name=tx" json:"tx,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *TxAck) Reset() { *m = TxAck{} }
func (m *TxAck) String() string { return proto.CompactTextString(m) }
func (*TxAck) ProtoMessage() {}
func (*TxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{48} }
func (m *TxAck) GetTx() *TransactionType {
if m != nil {
return m.Tx
}
return nil
}
// *
// Request: Ask device to sign transaction
// All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing.
// Note: the first at most 1024 bytes of data MUST be transmitted as part of this message.
// @next PassphraseRequest
// @next PinMatrixRequest
// @next EthereumTxRequest
// @next Failure
type EthereumSignTx struct {
AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
Nonce []byte `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"`
GasPrice []byte `protobuf:"bytes,3,opt,name=gas_price,json=gasPrice" json:"gas_price,omitempty"`
GasLimit []byte `protobuf:"bytes,4,opt,name=gas_limit,json=gasLimit" json:"gas_limit,omitempty"`
To []byte `protobuf:"bytes,5,opt,name=to" json:"to,omitempty"`
Value []byte `protobuf:"bytes,6,opt,name=value" json:"value,omitempty"`
DataInitialChunk []byte `protobuf:"bytes,7,opt,name=data_initial_chunk,json=dataInitialChunk" json:"data_initial_chunk,omitempty"`
DataLength *uint32 `protobuf:"varint,8,opt,name=data_length,json=dataLength" json:"data_length,omitempty"`
ChainId *uint32 `protobuf:"varint,9,opt,name=chain_id,json=chainId" json:"chain_id,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EthereumSignTx) Reset() { *m = EthereumSignTx{} }
func (m *EthereumSignTx) String() string { return proto.CompactTextString(m) }
func (*EthereumSignTx) ProtoMessage() {}
func (*EthereumSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{49} }
func (m *EthereumSignTx) GetAddressN() []uint32 {
if m != nil {
return m.AddressN
}
return nil
}
func (m *EthereumSignTx) GetNonce() []byte {
if m != nil {
return m.Nonce
}
return nil
}
func (m *EthereumSignTx) GetGasPrice() []byte {
if m != nil {
return m.GasPrice
}
return nil
}
func (m *EthereumSignTx) GetGasLimit() []byte {
if m != nil {
return m.GasLimit
}
return nil
}
func (m *EthereumSignTx) GetTo() []byte {
if m != nil {
return m.To
}
return nil
}
func (m *EthereumSignTx) GetValue() []byte {
if m != nil {
return m.Value
}
return nil
}
func (m *EthereumSignTx) GetDataInitialChunk() []byte {
if m != nil {
return m.DataInitialChunk
}
return nil
}
func (m *EthereumSignTx) GetDataLength() uint32 {
if m != nil && m.DataLength != nil {
return *m.DataLength
}
return 0
}
func (m *EthereumSignTx) GetChainId() uint32 {
if m != nil && m.ChainId != nil {
return *m.ChainId
}
return 0
}
// *
// Response: Device asks for more data from transaction payload, or returns the signature.
// If data_length is set, device awaits that many more bytes of payload.
// Otherwise, the signature_* fields contain the computed transaction signature. All three fields will be present.
// @prev EthereumSignTx
// @next EthereumTxAck
type EthereumTxRequest struct {
DataLength *uint32 `protobuf:"varint,1,opt,name=data_length,json=dataLength" json:"data_length,omitempty"`
SignatureV *uint32 `protobuf:"varint,2,opt,name=signature_v,json=signatureV" json:"signature_v,omitempty"`
SignatureR []byte `protobuf:"bytes,3,opt,name=signature_r,json=signatureR" json:"signature_r,omitempty"`
SignatureS []byte `protobuf:"bytes,4,opt,name=signature_s,json=signatureS" json:"signature_s,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EthereumTxRequest) Reset() { *m = EthereumTxRequest{} }
func (m *EthereumTxRequest) String() string { return proto.CompactTextString(m) }
func (*EthereumTxRequest) ProtoMessage() {}
func (*EthereumTxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{50} }
func (m *EthereumTxRequest) GetDataLength() uint32 {
if m != nil && m.DataLength != nil {
return *m.DataLength
}
return 0
}
func (m *EthereumTxRequest) GetSignatureV() uint32 {
if m != nil && m.SignatureV != nil {
return *m.SignatureV
}
return 0
}
func (m *EthereumTxRequest) GetSignatureR() []byte {
if m != nil {
return m.SignatureR
}
return nil
}
func (m *EthereumTxRequest) GetSignatureS() []byte {
if m != nil {
return m.SignatureS
}
return nil
}
// *
// Request: Transaction payload data.
// @prev EthereumTxRequest
// @next EthereumTxRequest
type EthereumTxAck struct {
DataChunk []byte `protobuf:"bytes,1,opt,name=data_chunk,json=dataChunk" json:"data_chunk,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EthereumTxAck) Reset() { *m = EthereumTxAck{} }
func (m *EthereumTxAck) String() string { return proto.CompactTextString(m) }
func (*EthereumTxAck) ProtoMessage() {}
func (*EthereumTxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{51} }
func (m *EthereumTxAck) GetDataChunk() []byte {
if m != nil {
return m.DataChunk
}
return nil
}
// *
// Request: Ask device to sign message
// @next EthereumMessageSignature
// @next Failure
type EthereumSignMessage struct {
AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
Message []byte `protobuf:"bytes,2,req,name=message" json:"message,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EthereumSignMessage) Reset() { *m = EthereumSignMessage{} }
func (m *EthereumSignMessage) String() string { return proto.CompactTextString(m) }
func (*EthereumSignMessage) ProtoMessage() {}
func (*EthereumSignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{52} }
func (m *EthereumSignMessage) GetAddressN() []uint32 {
if m != nil {
return m.AddressN
}
return nil
}
func (m *EthereumSignMessage) GetMessage() []byte {
if m != nil {
return m.Message
}
return nil
}
// *
// Request: Ask device to verify message
// @next Success
// @next Failure
type EthereumVerifyMessage struct {
Address []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EthereumVerifyMessage) Reset() { *m = EthereumVerifyMessage{} }
func (m *EthereumVerifyMessage) String() string { return proto.CompactTextString(m) }
func (*EthereumVerifyMessage) ProtoMessage() {}
func (*EthereumVerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{53} }
func (m *EthereumVerifyMessage) GetAddress() []byte {
if m != nil {
return m.Address
}
return nil
}
func (m *EthereumVerifyMessage) GetSignature() []byte {
if m != nil {
return m.Signature
}
return nil
}
func (m *EthereumVerifyMessage) GetMessage() []byte {
if m != nil {
return m.Message
}
return nil
}
// *
// Response: Signed message
// @prev EthereumSignMessage
type EthereumMessageSignature struct {
Address []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *EthereumMessageSignature) Reset() { *m = EthereumMessageSignature{} }
func (m *EthereumMessageSignature) String() string { return proto.CompactTextString(m) }
func (*EthereumMessageSignature) ProtoMessage() {}
func (*EthereumMessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{54} }
func (m *EthereumMessageSignature) GetAddress() []byte {
if m != nil {
return m.Address
}
return nil
}
func (m *EthereumMessageSignature) GetSignature() []byte {
if m != nil {
return m.Signature
}
return nil
}
// *
// Request: Ask device to sign identity
// @next SignedIdentity
// @next Failure
type SignIdentity struct {
Identity *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"`
ChallengeHidden []byte `protobuf:"bytes,2,opt,name=challenge_hidden,json=challengeHidden" json:"challenge_hidden,omitempty"`
ChallengeVisual *string `protobuf:"bytes,3,opt,name=challenge_visual,json=challengeVisual" json:"challenge_visual,omitempty"`
EcdsaCurveName *string `protobuf:"bytes,4,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *SignIdentity) Reset() { *m = SignIdentity{} }
func (m *SignIdentity) String() string { return proto.CompactTextString(m) }
func (*SignIdentity) ProtoMessage() {}
func (*SignIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{55} }
func (m *SignIdentity) GetIdentity() *IdentityType {
if m != nil {
return m.Identity
}
return nil
}
func (m *SignIdentity) GetChallengeHidden() []byte {
if m != nil {
return m.ChallengeHidden
}
return nil
}
func (m *SignIdentity) GetChallengeVisual() string {
if m != nil && m.ChallengeVisual != nil {
return *m.ChallengeVisual
}
return ""
}
func (m *SignIdentity) GetEcdsaCurveName() string {
if m != nil && m.EcdsaCurveName != nil {
return *m.EcdsaCurveName
}
return ""
}
// *
// Response: Device provides signed identity
// @prev SignIdentity
type SignedIdentity struct {
Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
PublicKey []byte `protobuf:"bytes,2,opt,name=public_key,json=publicKey" json:"public_key,omitempty"`
Signature []byte `protobuf:"bytes,3,opt,name=signature" json:"signature,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *SignedIdentity) Reset() { *m = SignedIdentity{} }
func (m *SignedIdentity) String() string { return proto.CompactTextString(m) }
func (*SignedIdentity) ProtoMessage() {}
func (*SignedIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{56} }
func (m *SignedIdentity) GetAddress() string {
if m != nil && m.Address != nil {
return *m.Address
}
return ""
}
func (m *SignedIdentity) GetPublicKey() []byte {
if m != nil {
return m.PublicKey
}
return nil
}
func (m *SignedIdentity) GetSignature() []byte {
if m != nil {
return m.Signature
}
return nil
}
// *
// Request: Ask device to generate ECDH session key
// @next ECDHSessionKey
// @next Failure
type GetECDHSessionKey struct {
Identity *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"`
PeerPublicKey []byte `protobuf:"bytes,2,opt,name=peer_public_key,json=peerPublicKey" json:"peer_public_key,omitempty"`
EcdsaCurveName *string `protobuf:"bytes,3,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *GetECDHSessionKey) Reset() { *m = GetECDHSessionKey{} }
func (m *GetECDHSessionKey) String() string { return proto.CompactTextString(m) }
func (*GetECDHSessionKey) ProtoMessage() {}
func (*GetECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{57} }
func (m *GetECDHSessionKey) GetIdentity() *IdentityType {
if m != nil {
return m.Identity
}
return nil
}
func (m *GetECDHSessionKey) GetPeerPublicKey() []byte {
if m != nil {
return m.PeerPublicKey
}
return nil
}
func (m *GetECDHSessionKey) GetEcdsaCurveName() string {
if m != nil && m.EcdsaCurveName != nil {
return *m.EcdsaCurveName
}
return ""
}
// *
// Response: Device provides ECDH session key
// @prev GetECDHSessionKey
type ECDHSessionKey struct {
SessionKey []byte `protobuf:"bytes,1,opt,name=session_key,json=sessionKey" json:"session_key,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ECDHSessionKey) Reset() { *m = ECDHSessionKey{} }
func (m *ECDHSessionKey) String() string { return proto.CompactTextString(m) }
func (*ECDHSessionKey) ProtoMessage() {}
func (*ECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{58} }
func (m *ECDHSessionKey) GetSessionKey() []byte {
if m != nil {
return m.SessionKey
}
return nil
}
// *
// Request: Set U2F counter
// @next Success
type SetU2FCounter struct {
U2FCounter *uint32 `protobuf:"varint,1,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *SetU2FCounter) Reset() { *m = SetU2FCounter{} }
func (m *SetU2FCounter) String() string { return proto.CompactTextString(m) }
func (*SetU2FCounter) ProtoMessage() {}
func (*SetU2FCounter) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{59} }
func (m *SetU2FCounter) GetU2FCounter() uint32 {
if m != nil && m.U2FCounter != nil {
return *m.U2FCounter
}
return 0
}
// *
// Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload)
// @next Success
// @next FirmwareRequest
// @next Failure
type FirmwareErase struct {
Length *uint32 `protobuf:"varint,1,opt,name=length" json:"length,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *FirmwareErase) Reset() { *m = FirmwareErase{} }
func (m *FirmwareErase) String() string { return proto.CompactTextString(m) }
func (*FirmwareErase) ProtoMessage() {}
func (*FirmwareErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{60} }
func (m *FirmwareErase) GetLength() uint32 {
if m != nil && m.Length != nil {
return *m.Length
}
return 0
}
// *
// Response: Ask for firmware chunk
// @next FirmwareUpload
type FirmwareRequest struct {
Offset *uint32 `protobuf:"varint,1,opt,name=offset" json:"offset,omitempty"`
Length *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *FirmwareRequest) Reset() { *m = FirmwareRequest{} }
func (m *FirmwareRequest) String() string { return proto.CompactTextString(m) }
func (*FirmwareRequest) ProtoMessage() {}
func (*FirmwareRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{61} }
func (m *FirmwareRequest) GetOffset() uint32 {
if m != nil && m.Offset != nil {
return *m.Offset
}
return 0
}
func (m *FirmwareRequest) GetLength() uint32 {
if m != nil && m.Length != nil {
return *m.Length
}
return 0
}
// *
// Request: Send firmware in binary form to the device
// @next Success
// @next Failure
type FirmwareUpload struct {
Payload []byte `protobuf:"bytes,1,req,name=payload" json:"payload,omitempty"`
Hash []byte `protobuf:"bytes,2,opt,name=hash" json:"hash,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *FirmwareUpload) Reset() { *m = FirmwareUpload{} }
func (m *FirmwareUpload) String() string { return proto.CompactTextString(m) }
func (*FirmwareUpload) ProtoMessage() {}
func (*FirmwareUpload) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{62} }
func (m *FirmwareUpload) GetPayload() []byte {
if m != nil {
return m.Payload
}
return nil
}
func (m *FirmwareUpload) GetHash() []byte {
if m != nil {
return m.Hash
}
return nil
}
// *
// Request: Perform a device self-test
// @next Success
// @next Failure
type SelfTest struct {
Payload []byte `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *SelfTest) Reset() { *m = SelfTest{} }
func (m *SelfTest) String() string { return proto.CompactTextString(m) }
func (*SelfTest) ProtoMessage() {}
func (*SelfTest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{63} }
func (m *SelfTest) GetPayload() []byte {
if m != nil {
return m.Payload
}
return nil
}
// *
// Request: "Press" the button on the device
// @next Success
type DebugLinkDecision struct {
YesNo *bool `protobuf:"varint,1,req,name=yes_no,json=yesNo" json:"yes_no,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DebugLinkDecision) Reset() { *m = DebugLinkDecision{} }
func (m *DebugLinkDecision) String() string { return proto.CompactTextString(m) }
func (*DebugLinkDecision) ProtoMessage() {}
func (*DebugLinkDecision) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{64} }
func (m *DebugLinkDecision) GetYesNo() bool {
if m != nil && m.YesNo != nil {
return *m.YesNo
}
return false
}
// *
// Request: Computer asks for device state
// @next DebugLinkState
type DebugLinkGetState struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *DebugLinkGetState) Reset() { *m = DebugLinkGetState{} }
func (m *DebugLinkGetState) String() string { return proto.CompactTextString(m) }
func (*DebugLinkGetState) ProtoMessage() {}
func (*DebugLinkGetState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{65} }
// *
// Response: Device current state
// @prev DebugLinkGetState
type DebugLinkState struct {
Layout []byte `protobuf:"bytes,1,opt,name=layout" json:"layout,omitempty"`
Pin *string `protobuf:"bytes,2,opt,name=pin" json:"pin,omitempty"`
Matrix *string `protobuf:"bytes,3,opt,name=matrix" json:"matrix,omitempty"`
Mnemonic *string `protobuf:"bytes,4,opt,name=mnemonic" json:"mnemonic,omitempty"`
Node *HDNodeType `protobuf:"bytes,5,opt,name=node" json:"node,omitempty"`
PassphraseProtection *bool `protobuf:"varint,6,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
ResetWord *string `protobuf:"bytes,7,opt,name=reset_word,json=resetWord" json:"reset_word,omitempty"`
ResetEntropy []byte `protobuf:"bytes,8,opt,name=reset_entropy,json=resetEntropy" json:"reset_entropy,omitempty"`
RecoveryFakeWord *string `protobuf:"bytes,9,opt,name=recovery_fake_word,json=recoveryFakeWord" json:"recovery_fake_word,omitempty"`
RecoveryWordPos *uint32 `protobuf:"varint,10,opt,name=recovery_word_pos,json=recoveryWordPos" json:"recovery_word_pos,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DebugLinkState) Reset() { *m = DebugLinkState{} }
func (m *DebugLinkState) String() string { return proto.CompactTextString(m) }
func (*DebugLinkState) ProtoMessage() {}
func (*DebugLinkState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{66} }
func (m *DebugLinkState) GetLayout() []byte {
if m != nil {
return m.Layout
}
return nil
}
func (m *DebugLinkState) GetPin() string {
if m != nil && m.Pin != nil {
return *m.Pin
}
return ""
}
func (m *DebugLinkState) GetMatrix() string {
if m != nil && m.Matrix != nil {
return *m.Matrix
}
return ""
}
func (m *DebugLinkState) GetMnemonic() string {
if m != nil && m.Mnemonic != nil {
return *m.Mnemonic
}
return ""
}
func (m *DebugLinkState) GetNode() *HDNodeType {
if m != nil {
return m.Node
}
return nil
}
func (m *DebugLinkState) GetPassphraseProtection() bool {
if m != nil && m.PassphraseProtection != nil {
return *m.PassphraseProtection
}
return false
}
func (m *DebugLinkState) GetResetWord() string {
if m != nil && m.ResetWord != nil {
return *m.ResetWord
}
return ""
}
func (m *DebugLinkState) GetResetEntropy() []byte {
if m != nil {
return m.ResetEntropy
}
return nil
}
func (m *DebugLinkState) GetRecoveryFakeWord() string {
if m != nil && m.RecoveryFakeWord != nil {
return *m.RecoveryFakeWord
}
return ""
}
func (m *DebugLinkState) GetRecoveryWordPos() uint32 {
if m != nil && m.RecoveryWordPos != nil {
return *m.RecoveryWordPos
}
return 0
}
// *
// Request: Ask device to restart
type DebugLinkStop struct {
XXX_unrecognized []byte `json:"-"`
}
func (m *DebugLinkStop) Reset() { *m = DebugLinkStop{} }
func (m *DebugLinkStop) String() string { return proto.CompactTextString(m) }
func (*DebugLinkStop) ProtoMessage() {}
func (*DebugLinkStop) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{67} }
// *
// Response: Device wants host to log event
type DebugLinkLog struct {
Level *uint32 `protobuf:"varint,1,opt,name=level" json:"level,omitempty"`
Bucket *string `protobuf:"bytes,2,opt,name=bucket" json:"bucket,omitempty"`
Text *string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DebugLinkLog) Reset() { *m = DebugLinkLog{} }
func (m *DebugLinkLog) String() string { return proto.CompactTextString(m) }
func (*DebugLinkLog) ProtoMessage() {}
func (*DebugLinkLog) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{68} }
func (m *DebugLinkLog) GetLevel() uint32 {
if m != nil && m.Level != nil {
return *m.Level
}
return 0
}
func (m *DebugLinkLog) GetBucket() string {
if m != nil && m.Bucket != nil {
return *m.Bucket
}
return ""
}
func (m *DebugLinkLog) GetText() string {
if m != nil && m.Text != nil {
return *m.Text
}
return ""
}
// *
// Request: Read memory from device
// @next DebugLinkMemory
type DebugLinkMemoryRead struct {
Address *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"`
Length *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DebugLinkMemoryRead) Reset() { *m = DebugLinkMemoryRead{} }
func (m *DebugLinkMemoryRead) String() string { return proto.CompactTextString(m) }
func (*DebugLinkMemoryRead) ProtoMessage() {}
func (*DebugLinkMemoryRead) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{69} }
func (m *DebugLinkMemoryRead) GetAddress() uint32 {
if m != nil && m.Address != nil {
return *m.Address
}
return 0
}
func (m *DebugLinkMemoryRead) GetLength() uint32 {
if m != nil && m.Length != nil {
return *m.Length
}
return 0
}
// *
// Response: Device sends memory back
// @prev DebugLinkMemoryRead
type DebugLinkMemory struct {
Memory []byte `protobuf:"bytes,1,opt,name=memory" json:"memory,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DebugLinkMemory) Reset() { *m = DebugLinkMemory{} }
func (m *DebugLinkMemory) String() string { return proto.CompactTextString(m) }
func (*DebugLinkMemory) ProtoMessage() {}
func (*DebugLinkMemory) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{70} }
func (m *DebugLinkMemory) GetMemory() []byte {
if m != nil {
return m.Memory
}
return nil
}
// *
// Request: Write memory to device.
// WARNING: Writing to the wrong location can irreparably break the device.
type DebugLinkMemoryWrite struct {
Address *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"`
Memory []byte `protobuf:"bytes,2,opt,name=memory" json:"memory,omitempty"`
Flash *bool `protobuf:"varint,3,opt,name=flash" json:"flash,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DebugLinkMemoryWrite) Reset() { *m = DebugLinkMemoryWrite{} }
func (m *DebugLinkMemoryWrite) String() string { return proto.CompactTextString(m) }
func (*DebugLinkMemoryWrite) ProtoMessage() {}
func (*DebugLinkMemoryWrite) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{71} }
func (m *DebugLinkMemoryWrite) GetAddress() uint32 {
if m != nil && m.Address != nil {
return *m.Address
}
return 0
}
func (m *DebugLinkMemoryWrite) GetMemory() []byte {
if m != nil {
return m.Memory
}
return nil
}
func (m *DebugLinkMemoryWrite) GetFlash() bool {
if m != nil && m.Flash != nil {
return *m.Flash
}
return false
}
// *
// Request: Erase block of flash on device
// WARNING: Writing to the wrong location can irreparably break the device.
type DebugLinkFlashErase struct {
Sector *uint32 `protobuf:"varint,1,opt,name=sector" json:"sector,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DebugLinkFlashErase) Reset() { *m = DebugLinkFlashErase{} }
func (m *DebugLinkFlashErase) String() string { return proto.CompactTextString(m) }
func (*DebugLinkFlashErase) ProtoMessage() {}
func (*DebugLinkFlashErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{72} }
func (m *DebugLinkFlashErase) GetSector() uint32 {
if m != nil && m.Sector != nil {
return *m.Sector
}
return 0
}
func init() {
proto.RegisterType((*Initialize)(nil), "Initialize")
proto.RegisterType((*GetFeatures)(nil), "GetFeatures")
proto.RegisterType((*Features)(nil), "Features")
proto.RegisterType((*ClearSession)(nil), "ClearSession")
proto.RegisterType((*ApplySettings)(nil), "ApplySettings")
proto.RegisterType((*ApplyFlags)(nil), "ApplyFlags")
proto.RegisterType((*ChangePin)(nil), "ChangePin")
proto.RegisterType((*Ping)(nil), "Ping")
proto.RegisterType((*Success)(nil), "Success")
proto.RegisterType((*Failure)(nil), "Failure")
proto.RegisterType((*ButtonRequest)(nil), "ButtonRequest")
proto.RegisterType((*ButtonAck)(nil), "ButtonAck")
proto.RegisterType((*PinMatrixRequest)(nil), "PinMatrixRequest")
proto.RegisterType((*PinMatrixAck)(nil), "PinMatrixAck")
proto.RegisterType((*Cancel)(nil), "Cancel")
proto.RegisterType((*PassphraseRequest)(nil), "PassphraseRequest")
proto.RegisterType((*PassphraseAck)(nil), "PassphraseAck")
proto.RegisterType((*GetEntropy)(nil), "GetEntropy")
proto.RegisterType((*Entropy)(nil), "Entropy")
proto.RegisterType((*GetPublicKey)(nil), "GetPublicKey")
proto.RegisterType((*PublicKey)(nil), "PublicKey")
proto.RegisterType((*GetAddress)(nil), "GetAddress")
proto.RegisterType((*EthereumGetAddress)(nil), "EthereumGetAddress")
proto.RegisterType((*Address)(nil), "Address")
proto.RegisterType((*EthereumAddress)(nil), "EthereumAddress")
proto.RegisterType((*WipeDevice)(nil), "WipeDevice")
proto.RegisterType((*LoadDevice)(nil), "LoadDevice")
proto.RegisterType((*ResetDevice)(nil), "ResetDevice")
proto.RegisterType((*BackupDevice)(nil), "BackupDevice")
proto.RegisterType((*EntropyRequest)(nil), "EntropyRequest")
proto.RegisterType((*EntropyAck)(nil), "EntropyAck")
proto.RegisterType((*RecoveryDevice)(nil), "RecoveryDevice")
proto.RegisterType((*WordRequest)(nil), "WordRequest")
proto.RegisterType((*WordAck)(nil), "WordAck")
proto.RegisterType((*SignMessage)(nil), "SignMessage")
proto.RegisterType((*VerifyMessage)(nil), "VerifyMessage")
proto.RegisterType((*MessageSignature)(nil), "MessageSignature")
proto.RegisterType((*EncryptMessage)(nil), "EncryptMessage")
proto.RegisterType((*EncryptedMessage)(nil), "EncryptedMessage")
proto.RegisterType((*DecryptMessage)(nil), "DecryptMessage")
proto.RegisterType((*DecryptedMessage)(nil), "DecryptedMessage")
proto.RegisterType((*CipherKeyValue)(nil), "CipherKeyValue")
proto.RegisterType((*CipheredKeyValue)(nil), "CipheredKeyValue")
proto.RegisterType((*EstimateTxSize)(nil), "EstimateTxSize")
proto.RegisterType((*TxSize)(nil), "TxSize")
proto.RegisterType((*SignTx)(nil), "SignTx")
proto.RegisterType((*SimpleSignTx)(nil), "SimpleSignTx")
proto.RegisterType((*TxRequest)(nil), "TxRequest")
proto.RegisterType((*TxAck)(nil), "TxAck")
proto.RegisterType((*EthereumSignTx)(nil), "EthereumSignTx")
proto.RegisterType((*EthereumTxRequest)(nil), "EthereumTxRequest")
proto.RegisterType((*EthereumTxAck)(nil), "EthereumTxAck")
proto.RegisterType((*EthereumSignMessage)(nil), "EthereumSignMessage")
proto.RegisterType((*EthereumVerifyMessage)(nil), "EthereumVerifyMessage")
proto.RegisterType((*EthereumMessageSignature)(nil), "EthereumMessageSignature")
proto.RegisterType((*SignIdentity)(nil), "SignIdentity")
proto.RegisterType((*SignedIdentity)(nil), "SignedIdentity")
proto.RegisterType((*GetECDHSessionKey)(nil), "GetECDHSessionKey")
proto.RegisterType((*ECDHSessionKey)(nil), "ECDHSessionKey")
proto.RegisterType((*SetU2FCounter)(nil), "SetU2FCounter")
proto.RegisterType((*FirmwareErase)(nil), "FirmwareErase")
proto.RegisterType((*FirmwareRequest)(nil), "FirmwareRequest")
proto.RegisterType((*FirmwareUpload)(nil), "FirmwareUpload")
proto.RegisterType((*SelfTest)(nil), "SelfTest")
proto.RegisterType((*DebugLinkDecision)(nil), "DebugLinkDecision")
proto.RegisterType((*DebugLinkGetState)(nil), "DebugLinkGetState")
proto.RegisterType((*DebugLinkState)(nil), "DebugLinkState")
proto.RegisterType((*DebugLinkStop)(nil), "DebugLinkStop")
proto.RegisterType((*DebugLinkLog)(nil), "DebugLinkLog")
proto.RegisterType((*DebugLinkMemoryRead)(nil), "DebugLinkMemoryRead")
proto.RegisterType((*DebugLinkMemory)(nil), "DebugLinkMemory")
proto.RegisterType((*DebugLinkMemoryWrite)(nil), "DebugLinkMemoryWrite")
proto.RegisterType((*DebugLinkFlashErase)(nil), "DebugLinkFlashErase")
proto.RegisterEnum("MessageType", MessageType_name, MessageType_value)
}
func init() { proto.RegisterFile("messages.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{
// 3424 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xcb, 0x6f, 0xdc, 0x46,
0x9a, 0x5f, 0x76, 0xb7, 0xfa, 0xf1, 0x35, 0xbb, 0x55, 0xa2, 0x2d, 0xbb, 0x2d, 0x5b, 0xb6, 0x4c,
0xc9, 0xb6, 0x64, 0x27, 0xed, 0x44, 0x79, 0x6c, 0xd6, 0xbb, 0x79, 0xc8, 0x7a, 0xd8, 0xde, 0xd8,
0x8e, 0xc0, 0x56, 0x9c, 0xdb, 0x12, 0x14, 0x59, 0xea, 0xae, 0x55, 0x37, 0xc9, 0xf0, 0xa1, 0xa8,
0x7d, 0xd8, 0xeb, 0xee, 0x65, 0x81, 0xec, 0x69, 0x73, 0x1a, 0xe4, 0x36, 0x19, 0x04, 0x18, 0x0c,
0x30, 0x18, 0x60, 0x72, 0x9a, 0x3f, 0x60, 0xfe, 0x8b, 0x39, 0xce, 0x1f, 0x30, 0xe7, 0x41, 0x3d,
0x48, 0x16, 0x29, 0xb6, 0x6c, 0x27, 0xc0, 0x5c, 0x04, 0xd6, 0x57, 0xbf, 0xfe, 0xea, 0x7b, 0xd5,
0x57, 0x5f, 0x7d, 0x25, 0xe8, 0x4e, 0x70, 0x18, 0x5a, 0x43, 0x1c, 0xf6, 0xfd, 0xc0, 0x8b, 0xbc,
0xa5, 0x76, 0x34, 0xf5, 0x93, 0x81, 0xae, 0x02, 0x3c, 0x71, 0x49, 0x44, 0xac, 0x31, 0x79, 0x89,
0xf5, 0x0e, 0xb4, 0x1f, 0xe1, 0x68, 0x0f, 0x5b, 0x51, 0x1c, 0xe0, 0x50, 0xff, 0x69, 0x0e, 0x9a,
0xc9, 0x40, 0xbb, 0x04, 0xf5, 0x13, 0xec, 0x3a, 0x5e, 0xd0, 0x53, 0x56, 0x94, 0xf5, 0x96, 0x21,
0x46, 0xda, 0x2a, 0x74, 0x26, 0xd6, 0x7f, 0x7a, 0x81, 0x79, 0x82, 0x83, 0x90, 0x78, 0x6e, 0xaf,
0xb2, 0xa2, 0xac, 0x77, 0x0c, 0x95, 0x11, 0x5f, 0x70, 0x1a, 0x03, 0x11, 0x57, 0x02, 0x55, 0x05,
0x88, 0x12, 0x25, 0x90, 0x6f, 0x45, 0xf6, 0x28, 0x05, 0xd5, 0x38, 0x88, 0x11, 0x13, 0xd0, 0x1d,
0x98, 0x3f, 0xf4, 0xbc, 0x68, 0xec, 0x59, 0x0e, 0x0e, 0xcc, 0x89, 0xe7, 0xe0, 0xde, 0xdc, 0x8a,
0xb2, 0xde, 0x34, 0xba, 0x19, 0xf9, 0x99, 0xe7, 0x60, 0xed, 0x2a, 0xb4, 0x1c, 0x7c, 0x42, 0x6c,
0x6c, 0x12, 0xa7, 0x57, 0x67, 0x22, 0x37, 0x39, 0xe1, 0x89, 0xa3, 0xdd, 0x82, 0xae, 0x4f, 0x5c,
0x93, 0xda, 0x00, 0xdb, 0x11, 0x5d, 0xab, 0xc1, 0x98, 0x74, 0x7c, 0xe2, 0xee, 0xa7, 0x44, 0xed,
0x3d, 0x58, 0xf4, 0xad, 0x30, 0xf4, 0x47, 0x81, 0x15, 0x62, 0x19, 0xdd, 0x64, 0xe8, 0x8b, 0xd9,
0xa4, 0xf4, 0xa3, 0x25, 0x68, 0x8e, 0x2d, 0x77, 0x18, 0x5b, 0x43, 0xdc, 0x6b, 0xf1, 0x75, 0x93,
0xb1, 0x76, 0x11, 0xe6, 0xc6, 0xd6, 0x21, 0x1e, 0xf7, 0x80, 0x4d, 0xf0, 0x81, 0x76, 0x03, 0xe6,
0x6c, 0x8f, 0xb8, 0x61, 0xaf, 0xbd, 0x52, 0x5d, 0x6f, 0x6f, 0xb6, 0xfa, 0xdb, 0x1e, 0x71, 0x0f,
0xa6, 0x3e, 0x36, 0x38, 0x5d, 0x5b, 0x81, 0x36, 0x49, 0xbd, 0xe4, 0xf4, 0x54, 0xb6, 0xba, 0x4c,
0xa2, 0x8b, 0x06, 0xf8, 0x84, 0x30, 0xb3, 0x75, 0x56, 0x94, 0x75, 0xd5, 0x48, 0xc7, 0x05, 0x93,
0x8d, 0xac, 0x70, 0xd4, 0xeb, 0x32, 0x88, 0x64, 0xb2, 0xc7, 0x56, 0x38, 0xa2, 0x4c, 0xc8, 0xc4,
0xf7, 0x82, 0x08, 0x3b, 0xbd, 0x79, 0xb6, 0x46, 0x3a, 0xd6, 0x96, 0x01, 0xa8, 0xc5, 0x6c, 0xcb,
0x1e, 0x61, 0xa7, 0x87, 0xd8, 0x6c, 0xcb, 0x27, 0xee, 0x36, 0x23, 0x68, 0xf7, 0x60, 0x41, 0xb2,
0x94, 0x40, 0x2d, 0x30, 0x14, 0xca, 0x26, 0x04, 0x78, 0x03, 0xd0, 0x11, 0x09, 0x26, 0xdf, 0x58,
0x01, 0x35, 0x2a, 0x0e, 0xb1, 0x1b, 0xf5, 0x34, 0x86, 0x9d, 0x4f, 0xe8, 0xfb, 0x9c, 0xac, 0xdd,
0x04, 0xd5, 0xc5, 0xd8, 0x09, 0xcd, 0x43, 0xcb, 0x3e, 0x8e, 0xfd, 0xde, 0x05, 0xae, 0x3a, 0xa3,
0x3d, 0x64, 0x24, 0x6a, 0xd3, 0xa3, 0xb1, 0x35, 0x0c, 0x7b, 0x17, 0x59, 0xb8, 0xf0, 0x81, 0xde,
0x05, 0x75, 0x7b, 0x8c, 0xad, 0x60, 0x80, 0x43, 0x6a, 0x04, 0xfd, 0x7f, 0x14, 0xe8, 0x6c, 0xf9,
0xfe, 0x78, 0x3a, 0xc0, 0x51, 0x44, 0xdc, 0x61, 0x98, 0xf3, 0x93, 0x32, 0xcb, 0x4f, 0x15, 0xd9,
0x4f, 0xb7, 0xa0, 0x1b, 0xd3, 0x38, 0x48, 0xf5, 0x61, 0x61, 0xdc, 0x34, 0x3a, 0x71, 0x88, 0xf7,
0x53, 0xa2, 0x76, 0x1d, 0x60, 0xe4, 0x4d, 0x70, 0x68, 0x07, 0x18, 0xf3, 0x20, 0x56, 0x0d, 0x89,
0xa2, 0xeb, 0x00, 0x4c, 0x92, 0x3d, 0x2a, 0x68, 0x26, 0xbe, 0x22, 0x8b, 0xbf, 0x0a, 0xad, 0xed,
0x91, 0xe5, 0x0e, 0xf1, 0x3e, 0x71, 0xe9, 0xd6, 0x0b, 0xf0, 0xc4, 0x3b, 0xe1, 0x72, 0x36, 0x0d,
0x31, 0xd2, 0x7f, 0xa3, 0x40, 0x6d, 0x9f, 0xb8, 0x43, 0xad, 0x07, 0x0d, 0xb1, 0xc9, 0x85, 0x26,
0xc9, 0x90, 0xfa, 0xe5, 0x30, 0x8e, 0x22, 0x2f, 0x17, 0xeb, 0x15, 0xee, 0x17, 0x3e, 0x21, 0x45,
0xee, 0xd9, 0x5d, 0x51, 0x7d, 0xa3, 0x5d, 0x51, 0x9b, 0xbd, 0x2b, 0xf4, 0x55, 0x68, 0x0c, 0x62,
0xdb, 0xc6, 0x61, 0x38, 0x5b, 0x5a, 0x7d, 0x17, 0x1a, 0x7b, 0x16, 0x19, 0xc7, 0x01, 0xd6, 0x56,
0xa0, 0x66, 0xd3, 0xcd, 0x4d, 0x11, 0xdd, 0x4d, 0xb5, 0x2f, 0xe8, 0x6c, 0x57, 0xb0, 0x19, 0x99,
0x4d, 0x25, 0xcf, 0xe6, 0x73, 0xe8, 0x3c, 0x64, 0xba, 0x19, 0xf8, 0xeb, 0x18, 0x87, 0x91, 0x76,
0x3b, 0xc7, 0x4c, 0xeb, 0xe7, 0x66, 0x25, 0x96, 0x1a, 0xd4, 0x1c, 0x2b, 0xb2, 0x04, 0x3f, 0xf6,
0xad, 0xb7, 0xa1, 0xc5, 0xe1, 0x5b, 0xf6, 0xb1, 0xfe, 0x31, 0xa0, 0x7d, 0xe2, 0x3e, 0xb3, 0xa2,
0x80, 0x9c, 0x26, 0xcc, 0x37, 0xa0, 0x46, 0x33, 0xaa, 0x60, 0xbe, 0xd8, 0x2f, 0x02, 0x38, 0x7f,
0x0a, 0xd1, 0x57, 0x40, 0x4d, 0x67, 0xb7, 0xec, 0x63, 0x0d, 0x41, 0xd5, 0x27, 0x6e, 0x4f, 0x59,
0xa9, 0xac, 0xb7, 0x0c, 0xfa, 0xa9, 0x37, 0xa1, 0xbe, 0x6d, 0xb9, 0x36, 0x1e, 0xeb, 0x17, 0x60,
0x21, 0x8b, 0x29, 0xc1, 0x4a, 0xbf, 0x0f, 0x9d, 0x8c, 0x48, 0x39, 0x5c, 0x07, 0x90, 0xc2, 0x91,
0x33, 0x92, 0x28, 0xfa, 0x0a, 0xc0, 0x23, 0x1c, 0xed, 0xba, 0x51, 0xe0, 0xf9, 0x53, 0xaa, 0x5f,
0x48, 0x5e, 0x72, 0x5c, 0xc7, 0x60, 0xdf, 0xd4, 0x31, 0xc9, 0x74, 0x0f, 0x1a, 0x98, 0x7f, 0x32,
0x84, 0x6a, 0x24, 0x43, 0xfd, 0x57, 0x0a, 0xa8, 0x8f, 0x70, 0xb4, 0x1f, 0x1f, 0x8e, 0x89, 0xfd,
0x39, 0x9e, 0xd2, 0xec, 0x6a, 0x39, 0x4e, 0x80, 0xc3, 0xd0, 0xa4, 0xf2, 0x57, 0xd7, 0x3b, 0x46,
0x53, 0x10, 0x9e, 0x6b, 0xeb, 0x80, 0xb0, 0xed, 0x84, 0x96, 0x69, 0xc7, 0xc1, 0x09, 0x36, 0x5d,
0x6b, 0x92, 0xb8, 0xa8, 0xcb, 0xe8, 0xdb, 0x94, 0xfc, 0xdc, 0x9a, 0x60, 0xba, 0xbd, 0xc3, 0x91,
0xf7, 0x8d, 0xe9, 0x90, 0xd0, 0x1f, 0x5b, 0x53, 0x11, 0x6f, 0x6d, 0x4a, 0xdb, 0xe1, 0x24, 0x6d,
0x0d, 0x5a, 0x34, 0x09, 0x72, 0x2e, 0x34, 0xc2, 0x5a, 0x0f, 0x1a, 0x0f, 0x49, 0x44, 0x69, 0x46,
0x93, 0xfe, 0xa5, 0x8c, 0xf4, 0xcf, 0xa0, 0x95, 0x09, 0x77, 0x03, 0x6a, 0x2e, 0x77, 0x77, 0x65,
0xbd, 0xbd, 0xd9, 0xee, 0x3f, 0xde, 0x79, 0xee, 0x39, 0x22, 0x74, 0x5c, 0xe1, 0xe7, 0x53, 0x3f,
0x3e, 0x4c, 0xfc, 0x4c, 0xbf, 0xf5, 0xbf, 0x2a, 0xcc, 0x54, 0x5b, 0x5c, 0x89, 0xf3, 0x15, 0xcc,
0xc9, 0x54, 0x99, 0x21, 0xd3, 0xeb, 0x28, 0xf7, 0x01, 0x34, 0x27, 0xf1, 0x38, 0x22, 0x21, 0x19,
0x32, 0xdd, 0xda, 0x9b, 0x57, 0xfa, 0xcf, 0x04, 0xc1, 0xc0, 0x0e, 0xc6, 0x93, 0x81, 0x1d, 0x10,
0x9f, 0xc7, 0x50, 0x0a, 0xd5, 0x3e, 0x85, 0x76, 0xc8, 0xe8, 0x26, 0x8b, 0xbc, 0x39, 0x16, 0x79,
0xa8, 0xff, 0xc4, 0xf5, 0xe3, 0x28, 0xfb, 0xc1, 0x03, 0x75, 0xb0, 0xbf, 0xfb, 0x7c, 0x67, 0x6b,
0x67, 0xc7, 0xd8, 0x1d, 0x0c, 0x0c, 0x08, 0xd3, 0x19, 0xfd, 0x00, 0xb4, 0xdd, 0x68, 0x84, 0x03,
0x1c, 0x4f, 0x5e, 0x57, 0xe7, 0xa2, 0x36, 0x95, 0x33, 0xda, 0xd0, 0x50, 0x4a, 0x58, 0xf5, 0xa0,
0x21, 0x7e, 0x29, 0x82, 0x32, 0x19, 0xea, 0xf7, 0x60, 0x3e, 0x59, 0x7a, 0x06, 0x58, 0xcd, 0xc0,
0x2a, 0xc0, 0x57, 0xc4, 0xc7, 0x3b, 0xec, 0xdc, 0xd6, 0xff, 0xaf, 0x02, 0xf0, 0xd4, 0xb3, 0x1c,
0x3e, 0xa4, 0x09, 0x7c, 0xe2, 0xe2, 0x89, 0xe7, 0x12, 0x3b, 0x49, 0xe0, 0xc9, 0x38, 0x0d, 0x81,
0x0a, 0x33, 0x6a, 0x49, 0x08, 0x88, 0xad, 0x57, 0x65, 0xbf, 0xa3, 0x9f, 0x3f, 0x2b, 0xad, 0x69,
0xab, 0xd2, 0x21, 0x32, 0xc7, 0x03, 0x01, 0xbb, 0xc3, 0x31, 0x09, 0x47, 0x65, 0xa7, 0x49, 0x5d,
0x3e, 0x4d, 0x56, 0xa1, 0x13, 0x1e, 0x13, 0xdf, 0xb4, 0x47, 0xd8, 0x3e, 0x0e, 0xe3, 0x89, 0x28,
0x41, 0x54, 0x4a, 0xdc, 0x16, 0x34, 0xed, 0x06, 0xb4, 0xe3, 0xcd, 0x23, 0xd3, 0xf6, 0x62, 0x37,
0xc2, 0x01, 0xab, 0x3b, 0x3a, 0x06, 0xc4, 0x9b, 0x47, 0xdb, 0x9c, 0xa2, 0xff, 0xb6, 0x02, 0x6d,
0x03, 0x87, 0x38, 0x12, 0x46, 0xb9, 0x05, 0x5d, 0xe1, 0x21, 0x33, 0xb0, 0x5c, 0xc7, 0x9b, 0x88,
0x33, 0xa3, 0x23, 0xa8, 0x06, 0x23, 0x6a, 0x37, 0xa0, 0x19, 0x46, 0x01, 0x76, 0x87, 0xd1, 0x88,
0x17, 0x6c, 0x0f, 0xaa, 0x9b, 0x1f, 0x7c, 0x68, 0xa4, 0xc4, 0xd9, 0xd6, 0xa8, 0x9e, 0x63, 0x8d,
0xb3, 0x07, 0x48, 0xad, 0xec, 0x00, 0xf9, 0x05, 0x46, 0x2b, 0xd8, 0xa3, 0x51, 0xb4, 0x07, 0x05,
0x30, 0xab, 0x8a, 0x7a, 0x81, 0x17, 0x6a, 0x40, 0x49, 0xbc, 0x5c, 0xa0, 0x85, 0x01, 0xff, 0x12,
0x41, 0x85, 0xa0, 0x2b, 0xf2, 0x5f, 0x92, 0x64, 0x6f, 0x03, 0x08, 0x0a, 0xcd, 0xb0, 0xb9, 0xa4,
0xa8, 0xc8, 0x49, 0xf1, 0x4f, 0x15, 0xe8, 0x1a, 0xd8, 0xf6, 0x4e, 0x70, 0x30, 0x15, 0xd6, 0x5f,
0x06, 0xf8, 0xc6, 0x0b, 0x1c, 0x2e, 0x9f, 0x38, 0xd1, 0x5b, 0x94, 0xc2, 0xc4, 0x9b, 0x6d, 0xd4,
0xca, 0x1b, 0x19, 0xb5, 0xfa, 0x2a, 0xa3, 0xd6, 0x5e, 0x69, 0xd4, 0x39, 0xd9, 0xa8, 0x1b, 0x80,
0xb0, 0x7b, 0xe4, 0x05, 0x36, 0x36, 0xa9, 0xac, 0x63, 0x12, 0x46, 0xcc, 0xea, 0x4d, 0x63, 0x5e,
0xd0, 0xbf, 0x12, 0x64, 0x9a, 0x39, 0x59, 0xca, 0xe1, 0x81, 0xc8, 0xbe, 0x8b, 0x3e, 0x69, 0x9d,
0xf1, 0xc9, 0x65, 0x68, 0x38, 0xc1, 0xd4, 0x0c, 0x62, 0x97, 0xd5, 0xbd, 0x4d, 0xa3, 0xee, 0x04,
0x53, 0x23, 0x76, 0xf5, 0xf7, 0xa0, 0x4d, 0x39, 0x27, 0x27, 0xe9, 0x5a, 0xee, 0x24, 0x45, 0x7d,
0x69, 0x4e, 0x3a, 0x44, 0x97, 0xa1, 0x41, 0x27, 0xa8, 0x6f, 0x34, 0xa8, 0x51, 0x81, 0x45, 0x8a,
0x61, 0xdf, 0xfa, 0x8f, 0x0a, 0xb4, 0x07, 0x64, 0xe8, 0x3e, 0x13, 0x15, 0xd0, 0xb9, 0x49, 0x2d,
0x57, 0x43, 0xb0, 0xcc, 0x93, 0x14, 0x4e, 0xb9, 0x14, 0x5f, 0x9d, 0x95, 0xe2, 0x0b, 0x89, 0xb8,
0xf6, 0xc6, 0x89, 0xf8, 0xbf, 0x15, 0xe8, 0xbc, 0xc0, 0x01, 0x39, 0x9a, 0x26, 0xf2, 0xe6, 0x92,
0xa1, 0x22, 0x65, 0x4e, 0xed, 0x1a, 0xb4, 0x42, 0x32, 0x74, 0xd9, 0x7d, 0x8c, 0x45, 0x8c, 0x6a,
0x64, 0x04, 0x59, 0x95, 0x2a, 0x8f, 0xd3, 0x52, 0x55, 0x66, 0x9e, 0xa0, 0xff, 0x0e, 0x48, 0x88,
0x30, 0x90, 0x79, 0xfe, 0x1c, 0x59, 0xf4, 0x1f, 0x14, 0xba, 0xa9, 0xec, 0x60, 0xea, 0x47, 0x89,
0x5a, 0x97, 0xa0, 0xee, 0xc7, 0x87, 0xc7, 0x38, 0xd9, 0x45, 0x62, 0x54, 0xac, 0xe2, 0x24, 0xb1,
0x6f, 0x82, 0x9a, 0x64, 0x32, 0xcf, 0x1d, 0xa7, 0xc7, 0xa7, 0xa0, 0x7d, 0xe1, 0x8e, 0x0b, 0x55,
0x48, 0xed, 0xbc, 0x43, 0x7a, 0x6e, 0x96, 0xda, 0x2f, 0x00, 0x09, 0x49, 0xb1, 0x93, 0xc8, 0x7a,
0x11, 0xe6, 0x5c, 0xcf, 0xb5, 0xb1, 0x10, 0x95, 0x0f, 0xce, 0x91, 0x54, 0x83, 0xda, 0x68, 0x62,
0xd9, 0xc2, 0xee, 0xec, 0x5b, 0xff, 0x1a, 0xba, 0x3b, 0x38, 0x67, 0x81, 0x73, 0x03, 0x31, 0x5d,
0xb2, 0x32, 0x63, 0xc9, 0x6a, 0xf9, 0x92, 0x35, 0x69, 0xc9, 0x3d, 0x40, 0x62, 0xc9, 0x4c, 0x95,
0x42, 0xad, 0x2d, 0x71, 0x90, 0x7c, 0x5b, 0xc9, 0xf9, 0x56, 0xff, 0xb3, 0x02, 0xdd, 0x6d, 0xe2,
0x8f, 0x70, 0xf0, 0x39, 0x9e, 0xbe, 0xb0, 0xc6, 0xf1, 0x2b, 0x64, 0x47, 0x50, 0xa5, 0x7e, 0xe5,
0x5c, 0xe8, 0x27, 0xd5, 0xe6, 0x84, 0xfe, 0x4e, 0x48, 0xcd, 0x07, 0x3c, 0x93, 0x32, 0xf9, 0xc4,
0xb1, 0x90, 0x0c, 0xb5, 0x35, 0xe8, 0x5a, 0xe1, 0xb1, 0xe9, 0xb9, 0x66, 0x02, 0xe0, 0x77, 0x7a,
0xd5, 0x0a, 0x8f, 0xbf, 0x70, 0x77, 0xcf, 0xa0, 0x1c, 0xae, 0xa6, 0x48, 0x52, 0x1c, 0x25, 0x54,
0xd7, 0xba, 0x50, 0x21, 0x27, 0xec, 0x60, 0x50, 0x8d, 0x0a, 0x39, 0xd1, 0xd7, 0x01, 0x71, 0x65,
0xb0, 0x93, 0xaa, 0x93, 0xca, 0xa7, 0x48, 0xf2, 0xe9, 0xff, 0x05, 0xdd, 0xdd, 0x30, 0x22, 0x13,
0x2b, 0xc2, 0x07, 0xa7, 0x03, 0xf2, 0x12, 0xd3, 0x23, 0xda, 0x8b, 0x23, 0x3f, 0x8e, 0xc2, 0x34,
0xa3, 0xd3, 0xc2, 0x59, 0x15, 0x44, 0x9e, 0xd4, 0x6f, 0x82, 0x4a, 0x5c, 0x09, 0x53, 0x61, 0x98,
0x36, 0xa7, 0x71, 0xc8, 0x6b, 0x25, 0x13, 0xfd, 0x26, 0xd4, 0xc5, 0xba, 0x97, 0xa1, 0x11, 0x9d,
0x9a, 0xa2, 0x54, 0xa7, 0xd9, 0xb4, 0x1e, 0xb1, 0x09, 0xfd, 0xf7, 0x0a, 0xd4, 0xe9, 0xf6, 0x3c,
0x38, 0xfd, 0xc7, 0xca, 0xa6, 0x5d, 0x85, 0x46, 0xae, 0x2b, 0xf3, 0x40, 0x79, 0xd7, 0x48, 0x28,
0xda, 0x75, 0x68, 0x8d, 0x3d, 0xfb, 0xd8, 0x8c, 0x88, 0xd8, 0x69, 0x9d, 0x07, 0xca, 0x3b, 0x46,
0x93, 0xd2, 0x0e, 0xc8, 0x04, 0xeb, 0x7f, 0x53, 0x40, 0x1d, 0x90, 0x89, 0x3f, 0xc6, 0x42, 0xf6,
0x35, 0xa8, 0x73, 0x11, 0x58, 0x2c, 0xb5, 0x37, 0xd5, 0xfe, 0xc1, 0x29, 0xcb, 0x99, 0x2c, 0xcd,
0x8b, 0x39, 0xed, 0x0e, 0x34, 0x84, 0x32, 0xbd, 0x0a, 0x83, 0x75, 0xfa, 0x07, 0xa7, 0x5f, 0x30,
0x0a, 0xc3, 0x25, 0xb3, 0xda, 0xfb, 0xa0, 0x46, 0x81, 0xe5, 0x86, 0x16, 0x3b, 0x09, 0xc3, 0x5e,
0x95, 0xa1, 0x51, 0xff, 0x20, 0x23, 0xb2, 0x1f, 0xe4, 0x50, 0xaf, 0x97, 0x16, 0x65, 0xc5, 0xe7,
0xce, 0x57, 0xbc, 0x7e, 0x56, 0xf1, 0x5f, 0x2b, 0xd0, 0x3a, 0x48, 0x2f, 0x8a, 0xf7, 0x41, 0x0d,
0xf8, 0xa7, 0x29, 0x1d, 0x73, 0x6a, 0x5f, 0x3e, 0xe2, 0xda, 0x41, 0x36, 0xd0, 0xee, 0x43, 0xc3,
0xc1, 0x91, 0x45, 0xc6, 0xa1, 0xa8, 0x63, 0x17, 0xfb, 0x29, 0xb7, 0x1d, 0x3e, 0xc1, 0x0d, 0x21,
0x50, 0xda, 0x47, 0x00, 0x21, 0x0e, 0x92, 0x36, 0x51, 0x95, 0xfd, 0xa6, 0x97, 0xfd, 0x66, 0x90,
0xce, 0xb1, 0x9f, 0x49, 0x58, 0x7d, 0x03, 0xe6, 0x0e, 0xd8, 0x95, 0x74, 0x05, 0x2a, 0xd1, 0x29,
0x13, 0xad, 0xcc, 0x82, 0x95, 0xe8, 0x54, 0xff, 0xdf, 0x0a, 0x74, 0x93, 0x0a, 0x5e, 0xf8, 0xf3,
0x67, 0xa4, 0xb6, 0xab, 0xd0, 0x1a, 0x5a, 0xa1, 0xe9, 0x07, 0xc4, 0x4e, 0xd2, 0x44, 0x73, 0x68,
0x85, 0xfb, 0x74, 0x9c, 0x4c, 0x8e, 0xc9, 0x84, 0x44, 0x22, 0xc5, 0xd1, 0xc9, 0xa7, 0x74, 0x4c,
0x37, 0x78, 0xe4, 0x31, 0x67, 0xa8, 0x46, 0x25, 0xf2, 0xb2, 0xcd, 0x5c, 0x97, 0x93, 0xcd, 0x5b,
0xa0, 0xd1, 0xeb, 0xbb, 0x29, 0x9a, 0x64, 0xa6, 0x3d, 0x8a, 0xdd, 0x63, 0x91, 0x16, 0x10, 0x9d,
0x11, 0x6d, 0xcf, 0x6d, 0x4a, 0xa7, 0x25, 0x0c, 0x43, 0x8f, 0x79, 0x45, 0x2c, 0xca, 0x6c, 0x4a,
0x7a, 0xca, 0xcb, 0xe1, 0x2b, 0xd0, 0xb4, 0x47, 0x16, 0x71, 0x4d, 0xe2, 0x88, 0x02, 0xa7, 0xc1,
0xc6, 0x4f, 0x1c, 0xfd, 0xff, 0x15, 0x58, 0x48, 0xec, 0x91, 0x39, 0xbb, 0xc0, 0x51, 0x39, 0xc3,
0x91, 0x16, 0xaa, 0xc9, 0x81, 0x69, 0x9e, 0x88, 0xae, 0x29, 0xa4, 0xa4, 0x17, 0x79, 0x40, 0x20,
0x6c, 0x94, 0x01, 0x8c, 0x3c, 0x20, 0x4c, 0x1a, 0x4d, 0x29, 0x69, 0xa0, 0xf7, 0xa1, 0x93, 0x09,
0x46, 0x9d, 0xbb, 0x0c, 0x4c, 0x02, 0x61, 0x0c, 0x9e, 0xfc, 0x5a, 0x94, 0xc2, 0xac, 0xa0, 0x3f,
0x85, 0x0b, 0xb2, 0x63, 0x7f, 0x59, 0x05, 0xa5, 0x13, 0x58, 0x4c, 0xb8, 0x9d, 0x5b, 0xe1, 0xa8,
0xbf, 0xb8, 0xc2, 0xd1, 0x0d, 0xe8, 0x25, 0x4b, 0xbd, 0xaa, 0x86, 0x79, 0xdd, 0xd5, 0xf4, 0x9f,
0x58, 0xd2, 0x1a, 0xba, 0x4f, 0x1c, 0xec, 0x46, 0x24, 0x9a, 0x6a, 0x1b, 0xd0, 0x24, 0xe2, 0x5b,
0xec, 0x8f, 0x4e, 0x3f, 0x99, 0xe4, 0xf7, 0x73, 0x92, 0x41, 0x91, 0x3d, 0xb2, 0xc6, 0xd4, 0xf7,
0xd8, 0x1c, 0x11, 0xc7, 0xc1, 0xae, 0x58, 0x60, 0x3e, 0xa5, 0x3f, 0x66, 0xe4, 0x3c, 0xf4, 0x84,
0x84, 0xb1, 0x35, 0x16, 0x97, 0xd2, 0x0c, 0xfa, 0x82, 0x91, 0x4b, 0xdb, 0x2a, 0xb5, 0xb2, 0xb6,
0x8a, 0x3e, 0x84, 0x2e, 0x15, 0x1d, 0x3b, 0xa9, 0xf0, 0xb3, 0x2b, 0xb9, 0x65, 0x00, 0x9f, 0x75,
0x4e, 0xcc, 0xe4, 0x10, 0x57, 0x8d, 0x96, 0x9f, 0xf6, 0x52, 0x72, 0x46, 0xaa, 0x16, 0x8d, 0xf4,
0xad, 0x02, 0x0b, 0x8f, 0x70, 0xb4, 0xbb, 0xbd, 0xf3, 0x58, 0x34, 0x5a, 0xe9, 0x6f, 0xde, 0xc0,
0x52, 0xb7, 0x61, 0xde, 0xc7, 0x38, 0x30, 0xcf, 0x88, 0xd0, 0xa1, 0xe4, 0xac, 0xa5, 0x53, 0xa6,
0x7b, 0xb5, 0x54, 0xf7, 0x77, 0xa1, 0x5b, 0x10, 0x87, 0xee, 0x13, 0x3e, 0x32, 0xb3, 0xfa, 0x13,
0xc2, 0x14, 0xa0, 0xbf, 0x03, 0x9d, 0x01, 0x8e, 0xbe, 0xdc, 0xdc, 0x93, 0x2e, 0x91, 0xf2, 0x8d,
0x46, 0x39, 0x73, 0xeb, 0xbe, 0x03, 0x9d, 0x3d, 0xd1, 0xa9, 0xde, 0x65, 0x3d, 0xdf, 0x4b, 0x50,
0xcf, 0xed, 0x74, 0x31, 0xd2, 0xb7, 0x60, 0x3e, 0x01, 0x26, 0x99, 0xe1, 0x12, 0xd4, 0xbd, 0xa3,
0xa3, 0x10, 0x27, 0xf7, 0x43, 0x31, 0x92, 0x58, 0x54, 0x72, 0x2c, 0x3e, 0x81, 0x6e, 0xc2, 0xe2,
0x4b, 0x7f, 0xec, 0x59, 0x0e, 0x75, 0xa6, 0x6f, 0x4d, 0xe9, 0x67, 0xd2, 0x2f, 0x11, 0x43, 0x56,
0x16, 0x5a, 0xe1, 0x48, 0xd8, 0x90, 0x7d, 0xeb, 0x6b, 0xd0, 0x1c, 0xe0, 0xf1, 0xd1, 0x01, 0x5d,
0x3b, 0xf7, 0x4b, 0x45, 0xfa, 0xa5, 0x7e, 0x17, 0x16, 0x76, 0xf0, 0x61, 0x3c, 0x7c, 0x4a, 0xdc,
0xe3, 0x1d, 0x6c, 0xf3, 0x97, 0x83, 0x45, 0xa8, 0x4f, 0x71, 0x68, 0xba, 0x1e, 0x5b, 0xa7, 0x69,
0xcc, 0x4d, 0x71, 0xf8, 0xdc, 0xd3, 0x2f, 0x48, 0xd8, 0x47, 0x38, 0x1a, 0x44, 0x56, 0x84, 0xf5,
0xbf, 0x54, 0x68, 0xc5, 0x2b, 0xa8, 0x8c, 0xc4, 0x34, 0xb2, 0xa6, 0x5e, 0x1c, 0x25, 0x35, 0x3f,
0x1f, 0x25, 0xbd, 0x97, 0x4a, 0xd6, 0x7b, 0xb9, 0x04, 0xf5, 0x09, 0xeb, 0x8a, 0x0a, 0xa7, 0x8a,
0x51, 0xae, 0xc5, 0x53, 0x9b, 0xd1, 0xe2, 0x99, 0x9b, 0xd5, 0xe2, 0x99, 0x79, 0xdb, 0xae, 0x9f,
0x73, 0xdb, 0x5e, 0x06, 0x08, 0x70, 0x88, 0x23, 0x76, 0x13, 0x66, 0xe7, 0x45, 0xcb, 0x68, 0x31,
0x0a, 0xbd, 0x74, 0xd2, 0xaa, 0x8b, 0x4f, 0x27, 0x3d, 0x81, 0x26, 0xd3, 0x4c, 0x65, 0xc4, 0xa4,
0x8f, 0xfa, 0x16, 0x68, 0x81, 0xe8, 0x0b, 0x98, 0x47, 0xd6, 0x31, 0xbf, 0x55, 0x8b, 0xb7, 0x20,
0x94, 0xcc, 0xec, 0x59, 0xc7, 0xec, 0x5a, 0xad, 0xdd, 0x85, 0x85, 0x14, 0xcd, 0x9a, 0x07, 0xbe,
0x17, 0xb2, 0x7b, 0x72, 0xc7, 0x98, 0x4f, 0x26, 0x28, 0x70, 0xdf, 0x0b, 0xf5, 0x79, 0xe8, 0x48,
0x36, 0xf6, 0x7c, 0x7d, 0x1f, 0xd4, 0x94, 0xf0, 0xd4, 0x1b, 0xb2, 0x0b, 0x3e, 0x3e, 0xc1, 0xe3,
0xe4, 0x35, 0x81, 0x0d, 0xa8, 0x79, 0x0f, 0x63, 0xfb, 0x18, 0x47, 0xc2, 0xe6, 0x62, 0xc4, 0x6e,
0xf3, 0xf8, 0x34, 0x12, 0x46, 0x67, 0xdf, 0xfa, 0x23, 0xb8, 0x90, 0x72, 0x7c, 0x86, 0x27, 0x5e,
0x30, 0x35, 0x30, 0x8f, 0x39, 0x39, 0x81, 0x74, 0xb2, 0x04, 0x32, 0x2b, 0x6e, 0x37, 0x60, 0xbe,
0xc0, 0x88, 0xb9, 0x99, 0x7d, 0x25, 0x01, 0xc1, 0x47, 0xfa, 0x7f, 0xc0, 0xc5, 0x02, 0xf4, 0xab,
0x80, 0x44, 0xf8, 0xfc, 0x45, 0x05, 0xa7, 0x8a, 0xcc, 0x49, 0xbc, 0xa6, 0x84, 0x23, 0x71, 0x5b,
0xe4, 0x03, 0xfd, 0x6d, 0x49, 0xa7, 0x3d, 0x4a, 0x49, 0x37, 0x6d, 0x88, 0xed, 0xc8, 0x4b, 0x76,
0xb8, 0x18, 0xdd, 0xfd, 0x71, 0x11, 0xda, 0xe2, 0x1c, 0x61, 0x75, 0xd8, 0x0a, 0x5c, 0x92, 0x86,
0x66, 0xf6, 0x60, 0x8a, 0xfe, 0x69, 0xa9, 0xf6, 0xed, 0x1f, 0x7a, 0x8a, 0xb6, 0x94, 0x5e, 0x9e,
0x19, 0x62, 0x9f, 0xb8, 0x43, 0xa4, 0x88, 0xb9, 0x65, 0xb8, 0x20, 0xcf, 0x89, 0x57, 0x10, 0x54,
0x59, 0xaa, 0x7d, 0x57, 0x32, 0x2d, 0xde, 0x39, 0x50, 0x55, 0x4c, 0xdf, 0x80, 0x45, 0x79, 0x3a,
0x7d, 0x14, 0x42, 0x35, 0xc1, 0xbe, 0x20, 0x5c, 0xd6, 0x2e, 0x45, 0x73, 0x02, 0x71, 0x07, 0xae,
0xe4, 0x56, 0x90, 0x13, 0x17, 0xaa, 0x2f, 0x35, 0x29, 0xe8, 0x8f, 0x14, 0xb8, 0x0e, 0x4b, 0x65,
0x40, 0x9e, 0x75, 0x50, 0x43, 0x42, 0x6e, 0xc0, 0xd5, 0x32, 0xa4, 0x48, 0x71, 0xa8, 0xb9, 0xd4,
0xfc, 0x2e, 0x81, 0x16, 0xe4, 0xcb, 0x5e, 0x23, 0x50, 0xab, 0xdc, 0x40, 0xc9, 0x34, 0x08, 0x0b,
0xe8, 0xd0, 0x2b, 0x30, 0x48, 0x8f, 0x05, 0xd4, 0x16, 0x2c, 0x0a, 0x56, 0xca, 0x00, 0xaa, 0x60,
0x52, 0x90, 0x22, 0xeb, 0x22, 0xa3, 0x8e, 0x60, 0x71, 0x13, 0x2e, 0xcb, 0x08, 0xa9, 0xa7, 0x8a,
0xba, 0x02, 0x72, 0x0d, 0xb4, 0x9c, 0x27, 0x59, 0xf1, 0x8b, 0xe6, 0xc5, 0xec, 0x5a, 0x5e, 0x4e,
0xf9, 0xc2, 0x83, 0xd0, 0x52, 0x9d, 0x62, 0x9a, 0x8a, 0x76, 0x1d, 0x2e, 0xe6, 0x2c, 0x27, 0x9e,
0xd7, 0xd1, 0x82, 0x10, 0xf4, 0x36, 0x5c, 0x2b, 0x44, 0x52, 0xee, 0x31, 0x09, 0x69, 0x29, 0xae,
0x57, 0x8a, 0xdb, 0xb2, 0x8f, 0xd1, 0x05, 0xee, 0xa9, 0xdf, 0x95, 0xc8, 0xcc, 0x1f, 0x97, 0xd0,
0xc5, 0x72, 0xbb, 0xa5, 0xe5, 0x2b, 0x5a, 0x14, 0xcb, 0x5c, 0x85, 0x85, 0x3c, 0x80, 0xf2, 0xbf,
0x94, 0x6a, 0x9c, 0x8b, 0x97, 0x7c, 0xcf, 0x00, 0x5d, 0x16, 0xa8, 0x82, 0xff, 0xe4, 0x57, 0x59,
0xd4, 0x13, 0x98, 0xd5, 0x7c, 0x88, 0xe6, 0x1e, 0x6a, 0xd1, 0x95, 0x72, 0x50, 0xee, 0x11, 0x0f,
0x2d, 0x09, 0x81, 0x57, 0xf3, 0x1a, 0xa5, 0x4f, 0x77, 0xe8, 0xaa, 0x64, 0x94, 0x42, 0x34, 0x64,
0xaf, 0xb1, 0xe8, 0x5a, 0xf9, 0xae, 0xca, 0x1e, 0x49, 0xd0, 0x72, 0x79, 0xd4, 0x26, 0xd3, 0xd7,
0xd3, 0xa8, 0xcd, 0xf9, 0x39, 0x39, 0x81, 0xd1, 0x8a, 0xb4, 0x8b, 0x0a, 0x96, 0x91, 0xdb, 0xd2,
0x48, 0x2f, 0xb7, 0x71, 0xbe, 0x55, 0x8d, 0x56, 0xcb, 0xc3, 0x3b, 0x6b, 0x5f, 0xa3, 0xb5, 0xf2,
0xf0, 0x96, 0xea, 0x7b, 0x74, 0xbb, 0xdc, 0xbe, 0xb9, 0xa2, 0x1d, 0xdd, 0x11, 0xa0, 0x42, 0x7c,
0x16, 0xcb, 0x6d, 0xb4, 0x2e, 0x24, 0xba, 0x03, 0xcb, 0xb9, 0xf8, 0x2c, 0x3e, 0x65, 0xa2, 0x8d,
0x14, 0x78, 0xa5, 0x1c, 0x48, 0xa5, 0xbf, 0x2b, 0x39, 0xed, 0x76, 0xc1, 0x12, 0xb9, 0x56, 0x0d,
0xba, 0x27, 0xed, 0x30, 0x2d, 0x1f, 0xb2, 0x6c, 0xfe, 0xad, 0xa5, 0xfa, 0x77, 0x7c, 0xbe, 0x60,
0xd1, 0x7c, 0x07, 0x1f, 0xbd, 0x5d, 0x6e, 0x2f, 0xa9, 0x15, 0x8d, 0xfa, 0xe5, 0x99, 0x5b, 0x34,
0xa5, 0xd1, 0xfd, 0x72, 0x4b, 0x15, 0x9b, 0x50, 0xe8, 0x9d, 0x74, 0x27, 0x17, 0x3c, 0x2c, 0x77,
0x0d, 0xd1, 0xbb, 0xa9, 0x5e, 0xeb, 0x79, 0x7e, 0xc5, 0xae, 0x25, 0xda, 0x4c, 0x35, 0x2c, 0x70,
0xcc, 0xf7, 0x21, 0xd1, 0x7b, 0xb3, 0x38, 0x16, 0x9b, 0x87, 0xe8, 0xfd, 0x94, 0xa3, 0x5e, 0xcc,
0x6d, 0xd9, 0xbd, 0x08, 0x7d, 0x50, 0x1e, 0xa9, 0xf9, 0x0b, 0x08, 0xfa, 0x50, 0x68, 0x5b, 0xb0,
0xab, 0xf4, 0xef, 0x46, 0xe8, 0x9f, 0x05, 0xa3, 0x75, 0xb8, 0x9e, 0x53, 0xf4, 0xcc, 0x43, 0x25,
0xfa, 0x48, 0x20, 0x6f, 0xe5, 0x8f, 0xa1, 0xc2, 0xbb, 0x22, 0xfa, 0x17, 0xb1, 0x66, 0x71, 0x0f,
0xe5, 0x9a, 0x17, 0xe8, 0x41, 0x7a, 0x4c, 0x2e, 0x97, 0xa1, 0xb2, 0x9c, 0xf8, 0xaf, 0x69, 0x8a,
0xb9, 0x52, 0x0e, 0xa4, 0xde, 0xff, 0xb7, 0x72, 0x6e, 0x67, 0x2e, 0x49, 0xe8, 0xe3, 0x19, 0x1b,
0x3c, 0x8f, 0xfa, 0xa4, 0x7c, 0xcd, 0xdc, 0x75, 0x05, 0x7d, 0x2a, 0x58, 0x6d, 0xc0, 0x8d, 0x59,
0x7a, 0x26, 0x2e, 0xfd, 0x4c, 0x40, 0xef, 0xc1, 0xcd, 0x32, 0x68, 0x7e, 0xcf, 0x6f, 0x09, 0x70,
0x1f, 0xd6, 0xca, 0xc0, 0x67, 0xf6, 0xfe, 0x43, 0x21, 0xec, 0xbd, 0xbc, 0xee, 0x67, 0xee, 0x15,
0xc8, 0x59, 0x6a, 0x7e, 0x9f, 0x6c, 0xeb, 0x3b, 0x33, 0xc0, 0xc9, 0xc5, 0x02, 0xe1, 0xa5, 0xda,
0xf7, 0x25, 0x86, 0xca, 0xdf, 0x35, 0xd0, 0xd1, 0x52, 0xed, 0x87, 0x12, 0x43, 0xe5, 0xaa, 0x65,
0x34, 0x14, 0xac, 0x0a, 0xe1, 0x2c, 0x57, 0xd0, 0x68, 0x24, 0x18, 0x15, 0x8c, 0x59, 0x52, 0x13,
0x23, 0x57, 0xb0, 0x2b, 0x84, 0x61, 0x01, 0x8a, 0x3c, 0xc1, 0xf1, 0x2e, 0xac, 0x9c, 0x03, 0x63,
0x15, 0x2f, 0xf2, 0x05, 0xcb, 0x59, 0xab, 0x67, 0xd5, 0x2b, 0xfa, 0x9a, 0x43, 0x1f, 0xbe, 0x0f,
0xab, 0xb6, 0x37, 0xe9, 0x87, 0x56, 0xe4, 0x85, 0x23, 0x32, 0xb6, 0x0e, 0xc3, 0x7e, 0x14, 0xe0,
0x97, 0x5e, 0xd0, 0x1f, 0x93, 0x43, 0xfe, 0x6f, 0x7e, 0x87, 0xf1, 0xd1, 0xc3, 0xce, 0x01, 0x23,
0x0a, 0xae, 0x7f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xe4, 0xc0, 0x85, 0x16, 0x28, 0x00, 0x00,
}