github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/accounts/usbwallet/internal/trezor/messages.pb.go (about) 1 2 //此源码被清华学神尹成大魔王专业翻译分析并修改 3 //尹成QQ77025077 4 //尹成微信18510341407 5 //尹成所在QQ群721929980 6 //尹成邮箱 yinc13@mails.tsinghua.edu.cn 7 //尹成毕业于清华大学,微软区块链领域全球最有价值专家 8 //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 9 //由Protoc Gen Go生成的代码。不要编辑。 10 //来源:messages.proto 11 12 package trezor 13 14 import proto "github.com/golang/protobuf/proto" 15 import fmt "fmt" 16 import math "math" 17 18 //引用导入以禁止错误(如果未使用)。 19 var _ = proto.Marshal 20 var _ = fmt.Errorf 21 var _ = math.Inf 22 23 //* 24 //trezor线标识符(uint)和protobuf消息之间的映射 25 type MessageType int32 26 27 const ( 28 MessageType_MessageType_Initialize MessageType = 0 29 MessageType_MessageType_Ping MessageType = 1 30 MessageType_MessageType_Success MessageType = 2 31 MessageType_MessageType_Failure MessageType = 3 32 MessageType_MessageType_ChangePin MessageType = 4 33 MessageType_MessageType_WipeDevice MessageType = 5 34 MessageType_MessageType_FirmwareErase MessageType = 6 35 MessageType_MessageType_FirmwareUpload MessageType = 7 36 MessageType_MessageType_FirmwareRequest MessageType = 8 37 MessageType_MessageType_GetEntropy MessageType = 9 38 MessageType_MessageType_Entropy MessageType = 10 39 MessageType_MessageType_GetPublicKey MessageType = 11 40 MessageType_MessageType_PublicKey MessageType = 12 41 MessageType_MessageType_LoadDevice MessageType = 13 42 MessageType_MessageType_ResetDevice MessageType = 14 43 MessageType_MessageType_SignTx MessageType = 15 44 MessageType_MessageType_SimpleSignTx MessageType = 16 45 MessageType_MessageType_Features MessageType = 17 46 MessageType_MessageType_PinMatrixRequest MessageType = 18 47 MessageType_MessageType_PinMatrixAck MessageType = 19 48 MessageType_MessageType_Cancel MessageType = 20 49 MessageType_MessageType_TxRequest MessageType = 21 50 MessageType_MessageType_TxAck MessageType = 22 51 MessageType_MessageType_CipherKeyValue MessageType = 23 52 MessageType_MessageType_ClearSession MessageType = 24 53 MessageType_MessageType_ApplySettings MessageType = 25 54 MessageType_MessageType_ButtonRequest MessageType = 26 55 MessageType_MessageType_ButtonAck MessageType = 27 56 MessageType_MessageType_ApplyFlags MessageType = 28 57 MessageType_MessageType_GetAddress MessageType = 29 58 MessageType_MessageType_Address MessageType = 30 59 MessageType_MessageType_SelfTest MessageType = 32 60 MessageType_MessageType_BackupDevice MessageType = 34 61 MessageType_MessageType_EntropyRequest MessageType = 35 62 MessageType_MessageType_EntropyAck MessageType = 36 63 MessageType_MessageType_SignMessage MessageType = 38 64 MessageType_MessageType_VerifyMessage MessageType = 39 65 MessageType_MessageType_MessageSignature MessageType = 40 66 MessageType_MessageType_PassphraseRequest MessageType = 41 67 MessageType_MessageType_PassphraseAck MessageType = 42 68 MessageType_MessageType_EstimateTxSize MessageType = 43 69 MessageType_MessageType_TxSize MessageType = 44 70 MessageType_MessageType_RecoveryDevice MessageType = 45 71 MessageType_MessageType_WordRequest MessageType = 46 72 MessageType_MessageType_WordAck MessageType = 47 73 MessageType_MessageType_CipheredKeyValue MessageType = 48 74 MessageType_MessageType_EncryptMessage MessageType = 49 75 MessageType_MessageType_EncryptedMessage MessageType = 50 76 MessageType_MessageType_DecryptMessage MessageType = 51 77 MessageType_MessageType_DecryptedMessage MessageType = 52 78 MessageType_MessageType_SignIdentity MessageType = 53 79 MessageType_MessageType_SignedIdentity MessageType = 54 80 MessageType_MessageType_GetFeatures MessageType = 55 81 MessageType_MessageType_EthereumGetAddress MessageType = 56 82 MessageType_MessageType_EthereumAddress MessageType = 57 83 MessageType_MessageType_EthereumSignTx MessageType = 58 84 MessageType_MessageType_EthereumTxRequest MessageType = 59 85 MessageType_MessageType_EthereumTxAck MessageType = 60 86 MessageType_MessageType_GetECDHSessionKey MessageType = 61 87 MessageType_MessageType_ECDHSessionKey MessageType = 62 88 MessageType_MessageType_SetU2FCounter MessageType = 63 89 MessageType_MessageType_EthereumSignMessage MessageType = 64 90 MessageType_MessageType_EthereumVerifyMessage MessageType = 65 91 MessageType_MessageType_EthereumMessageSignature MessageType = 66 92 MessageType_MessageType_DebugLinkDecision MessageType = 100 93 MessageType_MessageType_DebugLinkGetState MessageType = 101 94 MessageType_MessageType_DebugLinkState MessageType = 102 95 MessageType_MessageType_DebugLinkStop MessageType = 103 96 MessageType_MessageType_DebugLinkLog MessageType = 104 97 MessageType_MessageType_DebugLinkMemoryRead MessageType = 110 98 MessageType_MessageType_DebugLinkMemory MessageType = 111 99 MessageType_MessageType_DebugLinkMemoryWrite MessageType = 112 100 MessageType_MessageType_DebugLinkFlashErase MessageType = 113 101 ) 102 103 var MessageType_name = map[int32]string{ 104 0: "MessageType_Initialize", 105 1: "MessageType_Ping", 106 2: "MessageType_Success", 107 3: "MessageType_Failure", 108 4: "MessageType_ChangePin", 109 5: "MessageType_WipeDevice", 110 6: "MessageType_FirmwareErase", 111 7: "MessageType_FirmwareUpload", 112 8: "MessageType_FirmwareRequest", 113 9: "MessageType_GetEntropy", 114 10: "MessageType_Entropy", 115 11: "MessageType_GetPublicKey", 116 12: "MessageType_PublicKey", 117 13: "MessageType_LoadDevice", 118 14: "MessageType_ResetDevice", 119 15: "MessageType_SignTx", 120 16: "MessageType_SimpleSignTx", 121 17: "MessageType_Features", 122 18: "MessageType_PinMatrixRequest", 123 19: "MessageType_PinMatrixAck", 124 20: "MessageType_Cancel", 125 21: "MessageType_TxRequest", 126 22: "MessageType_TxAck", 127 23: "MessageType_CipherKeyValue", 128 24: "MessageType_ClearSession", 129 25: "MessageType_ApplySettings", 130 26: "MessageType_ButtonRequest", 131 27: "MessageType_ButtonAck", 132 28: "MessageType_ApplyFlags", 133 29: "MessageType_GetAddress", 134 30: "MessageType_Address", 135 32: "MessageType_SelfTest", 136 34: "MessageType_BackupDevice", 137 35: "MessageType_EntropyRequest", 138 36: "MessageType_EntropyAck", 139 38: "MessageType_SignMessage", 140 39: "MessageType_VerifyMessage", 141 40: "MessageType_MessageSignature", 142 41: "MessageType_PassphraseRequest", 143 42: "MessageType_PassphraseAck", 144 43: "MessageType_EstimateTxSize", 145 44: "MessageType_TxSize", 146 45: "MessageType_RecoveryDevice", 147 46: "MessageType_WordRequest", 148 47: "MessageType_WordAck", 149 48: "MessageType_CipheredKeyValue", 150 49: "MessageType_EncryptMessage", 151 50: "MessageType_EncryptedMessage", 152 51: "MessageType_DecryptMessage", 153 52: "MessageType_DecryptedMessage", 154 53: "MessageType_SignIdentity", 155 54: "MessageType_SignedIdentity", 156 55: "MessageType_GetFeatures", 157 56: "MessageType_EthereumGetAddress", 158 57: "MessageType_EthereumAddress", 159 58: "MessageType_EthereumSignTx", 160 59: "MessageType_EthereumTxRequest", 161 60: "MessageType_EthereumTxAck", 162 61: "MessageType_GetECDHSessionKey", 163 62: "MessageType_ECDHSessionKey", 164 63: "MessageType_SetU2FCounter", 165 64: "MessageType_EthereumSignMessage", 166 65: "MessageType_EthereumVerifyMessage", 167 66: "MessageType_EthereumMessageSignature", 168 100: "MessageType_DebugLinkDecision", 169 101: "MessageType_DebugLinkGetState", 170 102: "MessageType_DebugLinkState", 171 103: "MessageType_DebugLinkStop", 172 104: "MessageType_DebugLinkLog", 173 110: "MessageType_DebugLinkMemoryRead", 174 111: "MessageType_DebugLinkMemory", 175 112: "MessageType_DebugLinkMemoryWrite", 176 113: "MessageType_DebugLinkFlashErase", 177 } 178 var MessageType_value = map[string]int32{ 179 "MessageType_Initialize": 0, 180 "MessageType_Ping": 1, 181 "MessageType_Success": 2, 182 "MessageType_Failure": 3, 183 "MessageType_ChangePin": 4, 184 "MessageType_WipeDevice": 5, 185 "MessageType_FirmwareErase": 6, 186 "MessageType_FirmwareUpload": 7, 187 "MessageType_FirmwareRequest": 8, 188 "MessageType_GetEntropy": 9, 189 "MessageType_Entropy": 10, 190 "MessageType_GetPublicKey": 11, 191 "MessageType_PublicKey": 12, 192 "MessageType_LoadDevice": 13, 193 "MessageType_ResetDevice": 14, 194 "MessageType_SignTx": 15, 195 "MessageType_SimpleSignTx": 16, 196 "MessageType_Features": 17, 197 "MessageType_PinMatrixRequest": 18, 198 "MessageType_PinMatrixAck": 19, 199 "MessageType_Cancel": 20, 200 "MessageType_TxRequest": 21, 201 "MessageType_TxAck": 22, 202 "MessageType_CipherKeyValue": 23, 203 "MessageType_ClearSession": 24, 204 "MessageType_ApplySettings": 25, 205 "MessageType_ButtonRequest": 26, 206 "MessageType_ButtonAck": 27, 207 "MessageType_ApplyFlags": 28, 208 "MessageType_GetAddress": 29, 209 "MessageType_Address": 30, 210 "MessageType_SelfTest": 32, 211 "MessageType_BackupDevice": 34, 212 "MessageType_EntropyRequest": 35, 213 "MessageType_EntropyAck": 36, 214 "MessageType_SignMessage": 38, 215 "MessageType_VerifyMessage": 39, 216 "MessageType_MessageSignature": 40, 217 "MessageType_PassphraseRequest": 41, 218 "MessageType_PassphraseAck": 42, 219 "MessageType_EstimateTxSize": 43, 220 "MessageType_TxSize": 44, 221 "MessageType_RecoveryDevice": 45, 222 "MessageType_WordRequest": 46, 223 "MessageType_WordAck": 47, 224 "MessageType_CipheredKeyValue": 48, 225 "MessageType_EncryptMessage": 49, 226 "MessageType_EncryptedMessage": 50, 227 "MessageType_DecryptMessage": 51, 228 "MessageType_DecryptedMessage": 52, 229 "MessageType_SignIdentity": 53, 230 "MessageType_SignedIdentity": 54, 231 "MessageType_GetFeatures": 55, 232 "MessageType_EthereumGetAddress": 56, 233 "MessageType_EthereumAddress": 57, 234 "MessageType_EthereumSignTx": 58, 235 "MessageType_EthereumTxRequest": 59, 236 "MessageType_EthereumTxAck": 60, 237 "MessageType_GetECDHSessionKey": 61, 238 "MessageType_ECDHSessionKey": 62, 239 "MessageType_SetU2FCounter": 63, 240 "MessageType_EthereumSignMessage": 64, 241 "MessageType_EthereumVerifyMessage": 65, 242 "MessageType_EthereumMessageSignature": 66, 243 "MessageType_DebugLinkDecision": 100, 244 "MessageType_DebugLinkGetState": 101, 245 "MessageType_DebugLinkState": 102, 246 "MessageType_DebugLinkStop": 103, 247 "MessageType_DebugLinkLog": 104, 248 "MessageType_DebugLinkMemoryRead": 110, 249 "MessageType_DebugLinkMemory": 111, 250 "MessageType_DebugLinkMemoryWrite": 112, 251 "MessageType_DebugLinkFlashErase": 113, 252 } 253 254 func (x MessageType) Enum() *MessageType { 255 p := new(MessageType) 256 *p = x 257 return p 258 } 259 func (x MessageType) String() string { 260 return proto.EnumName(MessageType_name, int32(x)) 261 } 262 func (x *MessageType) UnmarshalJSON(data []byte) error { 263 value, err := proto.UnmarshalJSONEnum(MessageType_value, data, "MessageType") 264 if err != nil { 265 return err 266 } 267 *x = MessageType(value) 268 return nil 269 } 270 func (MessageType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } 271 272 //* 273 //请求:将设备重置为默认状态并询问设备详细信息 274 //下一个特征 275 type Initialize struct { 276 XXX_unrecognized []byte `json:"-"` 277 } 278 279 func (m *Initialize) Reset() { *m = Initialize{} } 280 func (m *Initialize) String() string { return proto.CompactTextString(m) } 281 func (*Initialize) ProtoMessage() {} 282 func (*Initialize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } 283 284 //* 285 //请求:询问设备详细信息(无设备重置) 286 //下一个特征 287 type GetFeatures struct { 288 XXX_unrecognized []byte `json:"-"` 289 } 290 291 func (m *GetFeatures) Reset() { *m = GetFeatures{} } 292 func (m *GetFeatures) String() string { return proto.CompactTextString(m) } 293 func (*GetFeatures) ProtoMessage() {} 294 func (*GetFeatures) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } 295 296 //* 297 //响应:报告有关设备的各种信息 298 //@prev初始化 299 //@上一个获取功能 300 type Features struct { 301 Vendor *string `protobuf:"bytes,1,opt,name=vendor" json:"vendor,omitempty"` 302 MajorVersion *uint32 `protobuf:"varint,2,opt,name=major_version,json=majorVersion" json:"major_version,omitempty"` 303 MinorVersion *uint32 `protobuf:"varint,3,opt,name=minor_version,json=minorVersion" json:"minor_version,omitempty"` 304 PatchVersion *uint32 `protobuf:"varint,4,opt,name=patch_version,json=patchVersion" json:"patch_version,omitempty"` 305 BootloaderMode *bool `protobuf:"varint,5,opt,name=bootloader_mode,json=bootloaderMode" json:"bootloader_mode,omitempty"` 306 DeviceId *string `protobuf:"bytes,6,opt,name=device_id,json=deviceId" json:"device_id,omitempty"` 307 PinProtection *bool `protobuf:"varint,7,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` 308 PassphraseProtection *bool `protobuf:"varint,8,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 309 Language *string `protobuf:"bytes,9,opt,name=language" json:"language,omitempty"` 310 Label *string `protobuf:"bytes,10,opt,name=label" json:"label,omitempty"` 311 Coins []*CoinType `protobuf:"bytes,11,rep,name=coins" json:"coins,omitempty"` 312 Initialized *bool `protobuf:"varint,12,opt,name=initialized" json:"initialized,omitempty"` 313 Revision []byte `protobuf:"bytes,13,opt,name=revision" json:"revision,omitempty"` 314 BootloaderHash []byte `protobuf:"bytes,14,opt,name=bootloader_hash,json=bootloaderHash" json:"bootloader_hash,omitempty"` 315 Imported *bool `protobuf:"varint,15,opt,name=imported" json:"imported,omitempty"` 316 PinCached *bool `protobuf:"varint,16,opt,name=pin_cached,json=pinCached" json:"pin_cached,omitempty"` 317 PassphraseCached *bool `protobuf:"varint,17,opt,name=passphrase_cached,json=passphraseCached" json:"passphrase_cached,omitempty"` 318 FirmwarePresent *bool `protobuf:"varint,18,opt,name=firmware_present,json=firmwarePresent" json:"firmware_present,omitempty"` 319 NeedsBackup *bool `protobuf:"varint,19,opt,name=needs_backup,json=needsBackup" json:"needs_backup,omitempty"` 320 Flags *uint32 `protobuf:"varint,20,opt,name=flags" json:"flags,omitempty"` 321 XXX_unrecognized []byte `json:"-"` 322 } 323 324 func (m *Features) Reset() { *m = Features{} } 325 func (m *Features) String() string { return proto.CompactTextString(m) } 326 func (*Features) ProtoMessage() {} 327 func (*Features) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } 328 329 func (m *Features) GetVendor() string { 330 if m != nil && m.Vendor != nil { 331 return *m.Vendor 332 } 333 return "" 334 } 335 336 func (m *Features) GetMajorVersion() uint32 { 337 if m != nil && m.MajorVersion != nil { 338 return *m.MajorVersion 339 } 340 return 0 341 } 342 343 func (m *Features) GetMinorVersion() uint32 { 344 if m != nil && m.MinorVersion != nil { 345 return *m.MinorVersion 346 } 347 return 0 348 } 349 350 func (m *Features) GetPatchVersion() uint32 { 351 if m != nil && m.PatchVersion != nil { 352 return *m.PatchVersion 353 } 354 return 0 355 } 356 357 func (m *Features) GetBootloaderMode() bool { 358 if m != nil && m.BootloaderMode != nil { 359 return *m.BootloaderMode 360 } 361 return false 362 } 363 364 func (m *Features) GetDeviceId() string { 365 if m != nil && m.DeviceId != nil { 366 return *m.DeviceId 367 } 368 return "" 369 } 370 371 func (m *Features) GetPinProtection() bool { 372 if m != nil && m.PinProtection != nil { 373 return *m.PinProtection 374 } 375 return false 376 } 377 378 func (m *Features) GetPassphraseProtection() bool { 379 if m != nil && m.PassphraseProtection != nil { 380 return *m.PassphraseProtection 381 } 382 return false 383 } 384 385 func (m *Features) GetLanguage() string { 386 if m != nil && m.Language != nil { 387 return *m.Language 388 } 389 return "" 390 } 391 392 func (m *Features) GetLabel() string { 393 if m != nil && m.Label != nil { 394 return *m.Label 395 } 396 return "" 397 } 398 399 func (m *Features) GetCoins() []*CoinType { 400 if m != nil { 401 return m.Coins 402 } 403 return nil 404 } 405 406 func (m *Features) GetInitialized() bool { 407 if m != nil && m.Initialized != nil { 408 return *m.Initialized 409 } 410 return false 411 } 412 413 func (m *Features) GetRevision() []byte { 414 if m != nil { 415 return m.Revision 416 } 417 return nil 418 } 419 420 func (m *Features) GetBootloaderHash() []byte { 421 if m != nil { 422 return m.BootloaderHash 423 } 424 return nil 425 } 426 427 func (m *Features) GetImported() bool { 428 if m != nil && m.Imported != nil { 429 return *m.Imported 430 } 431 return false 432 } 433 434 func (m *Features) GetPinCached() bool { 435 if m != nil && m.PinCached != nil { 436 return *m.PinCached 437 } 438 return false 439 } 440 441 func (m *Features) GetPassphraseCached() bool { 442 if m != nil && m.PassphraseCached != nil { 443 return *m.PassphraseCached 444 } 445 return false 446 } 447 448 func (m *Features) GetFirmwarePresent() bool { 449 if m != nil && m.FirmwarePresent != nil { 450 return *m.FirmwarePresent 451 } 452 return false 453 } 454 455 func (m *Features) GetNeedsBackup() bool { 456 if m != nil && m.NeedsBackup != nil { 457 return *m.NeedsBackup 458 } 459 return false 460 } 461 462 func (m *Features) GetFlags() uint32 { 463 if m != nil && m.Flags != nil { 464 return *m.Flags 465 } 466 return 0 467 } 468 469 //* 470 //请求:清除会话(删除缓存的pin、密码短语等)。 471 //下一个成功 472 type ClearSession struct { 473 XXX_unrecognized []byte `json:"-"` 474 } 475 476 func (m *ClearSession) Reset() { *m = ClearSession{} } 477 func (m *ClearSession) String() string { return proto.CompactTextString(m) } 478 func (*ClearSession) ProtoMessage() {} 479 func (*ClearSession) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } 480 481 //* 482 //请求:更改设备的语言和/或标签 483 //下一个成功 484 //下一次失败 485 //@下一步按钮请求 486 //@下一个PinMatrixRequest 487 type ApplySettings struct { 488 Language *string `protobuf:"bytes,1,opt,name=language" json:"language,omitempty"` 489 Label *string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"` 490 UsePassphrase *bool `protobuf:"varint,3,opt,name=use_passphrase,json=usePassphrase" json:"use_passphrase,omitempty"` 491 Homescreen []byte `protobuf:"bytes,4,opt,name=homescreen" json:"homescreen,omitempty"` 492 XXX_unrecognized []byte `json:"-"` 493 } 494 495 func (m *ApplySettings) Reset() { *m = ApplySettings{} } 496 func (m *ApplySettings) String() string { return proto.CompactTextString(m) } 497 func (*ApplySettings) ProtoMessage() {} 498 func (*ApplySettings) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } 499 500 func (m *ApplySettings) GetLanguage() string { 501 if m != nil && m.Language != nil { 502 return *m.Language 503 } 504 return "" 505 } 506 507 func (m *ApplySettings) GetLabel() string { 508 if m != nil && m.Label != nil { 509 return *m.Label 510 } 511 return "" 512 } 513 514 func (m *ApplySettings) GetUsePassphrase() bool { 515 if m != nil && m.UsePassphrase != nil { 516 return *m.UsePassphrase 517 } 518 return false 519 } 520 521 func (m *ApplySettings) GetHomescreen() []byte { 522 if m != nil { 523 return m.Homescreen 524 } 525 return nil 526 } 527 528 //* 529 //请求:设置设备的标志 530 //下一个成功 531 //下一次失败 532 type ApplyFlags struct { 533 Flags *uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"` 534 XXX_unrecognized []byte `json:"-"` 535 } 536 537 func (m *ApplyFlags) Reset() { *m = ApplyFlags{} } 538 func (m *ApplyFlags) String() string { return proto.CompactTextString(m) } 539 func (*ApplyFlags) ProtoMessage() {} 540 func (*ApplyFlags) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } 541 542 func (m *ApplyFlags) GetFlags() uint32 { 543 if m != nil && m.Flags != nil { 544 return *m.Flags 545 } 546 return 0 547 } 548 549 //* 550 //请求:启动用于设置/更改/删除PIN的工作流 551 //@下一步按钮请求 552 //@下一个PinMatrixRequest 553 type ChangePin struct { 554 Remove *bool `protobuf:"varint,1,opt,name=remove" json:"remove,omitempty"` 555 XXX_unrecognized []byte `json:"-"` 556 } 557 558 func (m *ChangePin) Reset() { *m = ChangePin{} } 559 func (m *ChangePin) String() string { return proto.CompactTextString(m) } 560 func (*ChangePin) ProtoMessage() {} 561 func (*ChangePin) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } 562 563 func (m *ChangePin) GetRemove() bool { 564 if m != nil && m.Remove != nil { 565 return *m.Remove 566 } 567 return false 568 } 569 570 //* 571 //请求:测试设备是否处于活动状态,设备发送成功响应的消息。 572 //下一个成功 573 type Ping struct { 574 Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` 575 ButtonProtection *bool `protobuf:"varint,2,opt,name=button_protection,json=buttonProtection" json:"button_protection,omitempty"` 576 PinProtection *bool `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` 577 PassphraseProtection *bool `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 578 XXX_unrecognized []byte `json:"-"` 579 } 580 581 func (m *Ping) Reset() { *m = Ping{} } 582 func (m *Ping) String() string { return proto.CompactTextString(m) } 583 func (*Ping) ProtoMessage() {} 584 func (*Ping) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } 585 586 func (m *Ping) GetMessage() string { 587 if m != nil && m.Message != nil { 588 return *m.Message 589 } 590 return "" 591 } 592 593 func (m *Ping) GetButtonProtection() bool { 594 if m != nil && m.ButtonProtection != nil { 595 return *m.ButtonProtection 596 } 597 return false 598 } 599 600 func (m *Ping) GetPinProtection() bool { 601 if m != nil && m.PinProtection != nil { 602 return *m.PinProtection 603 } 604 return false 605 } 606 607 func (m *Ping) GetPassphraseProtection() bool { 608 if m != nil && m.PassphraseProtection != nil { 609 return *m.PassphraseProtection 610 } 611 return false 612 } 613 614 //* 615 //响应:上一个请求成功 616 type Success struct { 617 Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` 618 XXX_unrecognized []byte `json:"-"` 619 } 620 621 func (m *Success) Reset() { *m = Success{} } 622 func (m *Success) String() string { return proto.CompactTextString(m) } 623 func (*Success) ProtoMessage() {} 624 func (*Success) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } 625 626 func (m *Success) GetMessage() string { 627 if m != nil && m.Message != nil { 628 return *m.Message 629 } 630 return "" 631 } 632 633 //* 634 //响应:上一个请求失败 635 type Failure struct { 636 Code *FailureType `protobuf:"varint,1,opt,name=code,enum=FailureType" json:"code,omitempty"` 637 Message *string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` 638 XXX_unrecognized []byte `json:"-"` 639 } 640 641 func (m *Failure) Reset() { *m = Failure{} } 642 func (m *Failure) String() string { return proto.CompactTextString(m) } 643 func (*Failure) ProtoMessage() {} 644 func (*Failure) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } 645 646 func (m *Failure) GetCode() FailureType { 647 if m != nil && m.Code != nil { 648 return *m.Code 649 } 650 return FailureType_Failure_UnexpectedMessage 651 } 652 653 func (m *Failure) GetMessage() string { 654 if m != nil && m.Message != nil { 655 return *m.Message 656 } 657 return "" 658 } 659 660 //* 661 //响应:设备正在等待按下硬件按钮。 662 //下一钮 663 //下次取消 664 type ButtonRequest struct { 665 Code *ButtonRequestType `protobuf:"varint,1,opt,name=code,enum=ButtonRequestType" json:"code,omitempty"` 666 Data *string `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` 667 XXX_unrecognized []byte `json:"-"` 668 } 669 670 func (m *ButtonRequest) Reset() { *m = ButtonRequest{} } 671 func (m *ButtonRequest) String() string { return proto.CompactTextString(m) } 672 func (*ButtonRequest) ProtoMessage() {} 673 func (*ButtonRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } 674 675 func (m *ButtonRequest) GetCode() ButtonRequestType { 676 if m != nil && m.Code != nil { 677 return *m.Code 678 } 679 return ButtonRequestType_ButtonRequest_Other 680 } 681 682 func (m *ButtonRequest) GetData() string { 683 if m != nil && m.Data != nil { 684 return *m.Data 685 } 686 return "" 687 } 688 689 //* 690 //请求:计算机同意等待硬件按钮按下 691 //@prev按钮请求 692 type ButtonAck struct { 693 XXX_unrecognized []byte `json:"-"` 694 } 695 696 func (m *ButtonAck) Reset() { *m = ButtonAck{} } 697 func (m *ButtonAck) String() string { return proto.CompactTextString(m) } 698 func (*ButtonAck) ProtoMessage() {} 699 func (*ButtonAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } 700 701 //* 702 //回答:设备要求计算机显示管脚矩阵,并等待使用此矩阵方案编码的管脚。 703 //@下一个Pinmatrixack 704 //下次取消 705 type PinMatrixRequest struct { 706 Type *PinMatrixRequestType `protobuf:"varint,1,opt,name=type,enum=PinMatrixRequestType" json:"type,omitempty"` 707 XXX_unrecognized []byte `json:"-"` 708 } 709 710 func (m *PinMatrixRequest) Reset() { *m = PinMatrixRequest{} } 711 func (m *PinMatrixRequest) String() string { return proto.CompactTextString(m) } 712 func (*PinMatrixRequest) ProtoMessage() {} 713 func (*PinMatrixRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } 714 715 func (m *PinMatrixRequest) GetType() PinMatrixRequestType { 716 if m != nil && m.Type != nil { 717 return *m.Type 718 } 719 return PinMatrixRequestType_PinMatrixRequestType_Current 720 } 721 722 //* 723 //请求:计算机用编码的PIN响应 724 //@上一个PinMatrixRequest 725 type PinMatrixAck struct { 726 Pin *string `protobuf:"bytes,1,req,name=pin" json:"pin,omitempty"` 727 XXX_unrecognized []byte `json:"-"` 728 } 729 730 func (m *PinMatrixAck) Reset() { *m = PinMatrixAck{} } 731 func (m *PinMatrixAck) String() string { return proto.CompactTextString(m) } 732 func (*PinMatrixAck) ProtoMessage() {} 733 func (*PinMatrixAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } 734 735 func (m *PinMatrixAck) GetPin() string { 736 if m != nil && m.Pin != nil { 737 return *m.Pin 738 } 739 return "" 740 } 741 742 //* 743 //请求:中止上次需要用户交互的操作 744 //@prev按钮请求 745 //@上一个PinMatrixRequest 746 //@prev密码请求 747 type Cancel struct { 748 XXX_unrecognized []byte `json:"-"` 749 } 750 751 func (m *Cancel) Reset() { *m = Cancel{} } 752 func (m *Cancel) String() string { return proto.CompactTextString(m) } 753 func (*Cancel) ProtoMessage() {} 754 func (*Cancel) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } 755 756 //* 757 //响应:设备等待加密密码短语 758 //@下一个密码检查 759 //下次取消 760 type PassphraseRequest struct { 761 XXX_unrecognized []byte `json:"-"` 762 } 763 764 func (m *PassphraseRequest) Reset() { *m = PassphraseRequest{} } 765 func (m *PassphraseRequest) String() string { return proto.CompactTextString(m) } 766 func (*PassphraseRequest) ProtoMessage() {} 767 func (*PassphraseRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } 768 769 //* 770 //请求:返回密码短语 771 //@prev密码请求 772 type PassphraseAck struct { 773 Passphrase *string `protobuf:"bytes,1,req,name=passphrase" json:"passphrase,omitempty"` 774 XXX_unrecognized []byte `json:"-"` 775 } 776 777 func (m *PassphraseAck) Reset() { *m = PassphraseAck{} } 778 func (m *PassphraseAck) String() string { return proto.CompactTextString(m) } 779 func (*PassphraseAck) ProtoMessage() {} 780 func (*PassphraseAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } 781 782 func (m *PassphraseAck) GetPassphrase() string { 783 if m != nil && m.Passphrase != nil { 784 return *m.Passphrase 785 } 786 return "" 787 } 788 789 //* 790 //请求:请求硬件RNG生成的随机数据样本。可用于测试。 791 //@下一步按钮请求 792 //@下一个熵 793 //下一次失败 794 type GetEntropy struct { 795 Size *uint32 `protobuf:"varint,1,req,name=size" json:"size,omitempty"` 796 XXX_unrecognized []byte `json:"-"` 797 } 798 799 func (m *GetEntropy) Reset() { *m = GetEntropy{} } 800 func (m *GetEntropy) String() string { return proto.CompactTextString(m) } 801 func (*GetEntropy) ProtoMessage() {} 802 func (*GetEntropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } 803 804 func (m *GetEntropy) GetSize() uint32 { 805 if m != nil && m.Size != nil { 806 return *m.Size 807 } 808 return 0 809 } 810 811 //* 812 //响应:用内部RNG生成的随机数据回复 813 //@prev get熵 814 type Entropy struct { 815 Entropy []byte `protobuf:"bytes,1,req,name=entropy" json:"entropy,omitempty"` 816 XXX_unrecognized []byte `json:"-"` 817 } 818 819 func (m *Entropy) Reset() { *m = Entropy{} } 820 func (m *Entropy) String() string { return proto.CompactTextString(m) } 821 func (*Entropy) ProtoMessage() {} 822 func (*Entropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } 823 824 func (m *Entropy) GetEntropy() []byte { 825 if m != nil { 826 return m.Entropy 827 } 828 return nil 829 } 830 831 //* 832 //请求:请求设备提供与地址路径相对应的公钥 833 //@下一个密码请求 834 //下一个公钥 835 //下一次失败 836 type GetPublicKey struct { 837 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 838 EcdsaCurveName *string `protobuf:"bytes,2,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` 839 ShowDisplay *bool `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` 840 CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 841 XXX_unrecognized []byte `json:"-"` 842 } 843 844 func (m *GetPublicKey) Reset() { *m = GetPublicKey{} } 845 func (m *GetPublicKey) String() string { return proto.CompactTextString(m) } 846 func (*GetPublicKey) ProtoMessage() {} 847 func (*GetPublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } 848 849 const Default_GetPublicKey_CoinName string = "Bitcoin" 850 851 func (m *GetPublicKey) GetAddressN() []uint32 { 852 if m != nil { 853 return m.AddressN 854 } 855 return nil 856 } 857 858 func (m *GetPublicKey) GetEcdsaCurveName() string { 859 if m != nil && m.EcdsaCurveName != nil { 860 return *m.EcdsaCurveName 861 } 862 return "" 863 } 864 865 func (m *GetPublicKey) GetShowDisplay() bool { 866 if m != nil && m.ShowDisplay != nil { 867 return *m.ShowDisplay 868 } 869 return false 870 } 871 872 func (m *GetPublicKey) GetCoinName() string { 873 if m != nil && m.CoinName != nil { 874 return *m.CoinName 875 } 876 return Default_GetPublicKey_CoinName 877 } 878 879 //* 880 //响应:包含从设备专用种子派生的公钥 881 //@prev获取公共密钥 882 type PublicKey struct { 883 Node *HDNodeType `protobuf:"bytes,1,req,name=node" json:"node,omitempty"` 884 Xpub *string `protobuf:"bytes,2,opt,name=xpub" json:"xpub,omitempty"` 885 XXX_unrecognized []byte `json:"-"` 886 } 887 888 func (m *PublicKey) Reset() { *m = PublicKey{} } 889 func (m *PublicKey) String() string { return proto.CompactTextString(m) } 890 func (*PublicKey) ProtoMessage() {} 891 func (*PublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } 892 893 func (m *PublicKey) GetNode() *HDNodeType { 894 if m != nil { 895 return m.Node 896 } 897 return nil 898 } 899 900 func (m *PublicKey) GetXpub() string { 901 if m != nil && m.Xpub != nil { 902 return *m.Xpub 903 } 904 return "" 905 } 906 907 //* 908 //请求:向设备询问与地址路径相对应的地址 909 //@下一个密码请求 910 //下一个地址 911 //下一次失败 912 type GetAddress struct { 913 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 914 CoinName *string `protobuf:"bytes,2,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 915 ShowDisplay *bool `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` 916 Multisig *MultisigRedeemScriptType `protobuf:"bytes,4,opt,name=multisig" json:"multisig,omitempty"` 917 ScriptType *InputScriptType `protobuf:"varint,5,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"` 918 XXX_unrecognized []byte `json:"-"` 919 } 920 921 func (m *GetAddress) Reset() { *m = GetAddress{} } 922 func (m *GetAddress) String() string { return proto.CompactTextString(m) } 923 func (*GetAddress) ProtoMessage() {} 924 func (*GetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{21} } 925 926 const Default_GetAddress_CoinName string = "Bitcoin" 927 const Default_GetAddress_ScriptType InputScriptType = InputScriptType_SPENDADDRESS 928 929 func (m *GetAddress) GetAddressN() []uint32 { 930 if m != nil { 931 return m.AddressN 932 } 933 return nil 934 } 935 936 func (m *GetAddress) GetCoinName() string { 937 if m != nil && m.CoinName != nil { 938 return *m.CoinName 939 } 940 return Default_GetAddress_CoinName 941 } 942 943 func (m *GetAddress) GetShowDisplay() bool { 944 if m != nil && m.ShowDisplay != nil { 945 return *m.ShowDisplay 946 } 947 return false 948 } 949 950 func (m *GetAddress) GetMultisig() *MultisigRedeemScriptType { 951 if m != nil { 952 return m.Multisig 953 } 954 return nil 955 } 956 957 func (m *GetAddress) GetScriptType() InputScriptType { 958 if m != nil && m.ScriptType != nil { 959 return *m.ScriptType 960 } 961 return Default_GetAddress_ScriptType 962 } 963 964 //* 965 //请求:向设备询问与地址路径对应的以太坊地址 966 //@下一个密码请求 967 //@下一个Ethereumaddress 968 //下一次失败 969 type EthereumGetAddress struct { 970 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 971 ShowDisplay *bool `protobuf:"varint,2,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` 972 XXX_unrecognized []byte `json:"-"` 973 } 974 975 func (m *EthereumGetAddress) Reset() { *m = EthereumGetAddress{} } 976 func (m *EthereumGetAddress) String() string { return proto.CompactTextString(m) } 977 func (*EthereumGetAddress) ProtoMessage() {} 978 func (*EthereumGetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{22} } 979 980 func (m *EthereumGetAddress) GetAddressN() []uint32 { 981 if m != nil { 982 return m.AddressN 983 } 984 return nil 985 } 986 987 func (m *EthereumGetAddress) GetShowDisplay() bool { 988 if m != nil && m.ShowDisplay != nil { 989 return *m.ShowDisplay 990 } 991 return false 992 } 993 994 //* 995 //响应:包含从设备专用种子派生的地址 996 //@prev获取地址 997 type Address struct { 998 Address *string `protobuf:"bytes,1,req,name=address" json:"address,omitempty"` 999 XXX_unrecognized []byte `json:"-"` 1000 } 1001 1002 func (m *Address) Reset() { *m = Address{} } 1003 func (m *Address) String() string { return proto.CompactTextString(m) } 1004 func (*Address) ProtoMessage() {} 1005 func (*Address) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{23} } 1006 1007 func (m *Address) GetAddress() string { 1008 if m != nil && m.Address != nil { 1009 return *m.Address 1010 } 1011 return "" 1012 } 1013 1014 //* 1015 //响应:包含从设备专用种子派生的以太坊地址 1016 //@prev以太坊详细地址 1017 type EthereumAddress struct { 1018 Address []byte `protobuf:"bytes,1,req,name=address" json:"address,omitempty"` 1019 XXX_unrecognized []byte `json:"-"` 1020 } 1021 1022 func (m *EthereumAddress) Reset() { *m = EthereumAddress{} } 1023 func (m *EthereumAddress) String() string { return proto.CompactTextString(m) } 1024 func (*EthereumAddress) ProtoMessage() {} 1025 func (*EthereumAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{24} } 1026 1027 func (m *EthereumAddress) GetAddress() []byte { 1028 if m != nil { 1029 return m.Address 1030 } 1031 return nil 1032 } 1033 1034 //* 1035 //请求:请求设备擦除所有敏感数据和设置 1036 //@下一步按钮请求 1037 type WipeDevice struct { 1038 XXX_unrecognized []byte `json:"-"` 1039 } 1040 1041 func (m *WipeDevice) Reset() { *m = WipeDevice{} } 1042 func (m *WipeDevice) String() string { return proto.CompactTextString(m) } 1043 func (*WipeDevice) ProtoMessage() {} 1044 func (*WipeDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{25} } 1045 1046 //* 1047 //请求:从计算机加载种子和相关的内部设置 1048 //@下一步按钮请求 1049 //下一个成功 1050 //下一次失败 1051 type LoadDevice struct { 1052 Mnemonic *string `protobuf:"bytes,1,opt,name=mnemonic" json:"mnemonic,omitempty"` 1053 Node *HDNodeType `protobuf:"bytes,2,opt,name=node" json:"node,omitempty"` 1054 Pin *string `protobuf:"bytes,3,opt,name=pin" json:"pin,omitempty"` 1055 PassphraseProtection *bool `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 1056 Language *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"` 1057 Label *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"` 1058 SkipChecksum *bool `protobuf:"varint,7,opt,name=skip_checksum,json=skipChecksum" json:"skip_checksum,omitempty"` 1059 U2FCounter *uint32 `protobuf:"varint,8,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` 1060 XXX_unrecognized []byte `json:"-"` 1061 } 1062 1063 func (m *LoadDevice) Reset() { *m = LoadDevice{} } 1064 func (m *LoadDevice) String() string { return proto.CompactTextString(m) } 1065 func (*LoadDevice) ProtoMessage() {} 1066 func (*LoadDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{26} } 1067 1068 const Default_LoadDevice_Language string = "english" 1069 1070 func (m *LoadDevice) GetMnemonic() string { 1071 if m != nil && m.Mnemonic != nil { 1072 return *m.Mnemonic 1073 } 1074 return "" 1075 } 1076 1077 func (m *LoadDevice) GetNode() *HDNodeType { 1078 if m != nil { 1079 return m.Node 1080 } 1081 return nil 1082 } 1083 1084 func (m *LoadDevice) GetPin() string { 1085 if m != nil && m.Pin != nil { 1086 return *m.Pin 1087 } 1088 return "" 1089 } 1090 1091 func (m *LoadDevice) GetPassphraseProtection() bool { 1092 if m != nil && m.PassphraseProtection != nil { 1093 return *m.PassphraseProtection 1094 } 1095 return false 1096 } 1097 1098 func (m *LoadDevice) GetLanguage() string { 1099 if m != nil && m.Language != nil { 1100 return *m.Language 1101 } 1102 return Default_LoadDevice_Language 1103 } 1104 1105 func (m *LoadDevice) GetLabel() string { 1106 if m != nil && m.Label != nil { 1107 return *m.Label 1108 } 1109 return "" 1110 } 1111 1112 func (m *LoadDevice) GetSkipChecksum() bool { 1113 if m != nil && m.SkipChecksum != nil { 1114 return *m.SkipChecksum 1115 } 1116 return false 1117 } 1118 1119 func (m *LoadDevice) GetU2FCounter() uint32 { 1120 if m != nil && m.U2FCounter != nil { 1121 return *m.U2FCounter 1122 } 1123 return 0 1124 } 1125 1126 //* 1127 //请求:要求设备进行涉及用户交互的初始化 1128 //@下一项请求 1129 //下一次失败 1130 type ResetDevice struct { 1131 DisplayRandom *bool `protobuf:"varint,1,opt,name=display_random,json=displayRandom" json:"display_random,omitempty"` 1132 Strength *uint32 `protobuf:"varint,2,opt,name=strength,def=256" json:"strength,omitempty"` 1133 PassphraseProtection *bool `protobuf:"varint,3,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 1134 PinProtection *bool `protobuf:"varint,4,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` 1135 Language *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"` 1136 Label *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"` 1137 U2FCounter *uint32 `protobuf:"varint,7,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` 1138 SkipBackup *bool `protobuf:"varint,8,opt,name=skip_backup,json=skipBackup" json:"skip_backup,omitempty"` 1139 XXX_unrecognized []byte `json:"-"` 1140 } 1141 1142 func (m *ResetDevice) Reset() { *m = ResetDevice{} } 1143 func (m *ResetDevice) String() string { return proto.CompactTextString(m) } 1144 func (*ResetDevice) ProtoMessage() {} 1145 func (*ResetDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{27} } 1146 1147 const Default_ResetDevice_Strength uint32 = 256 1148 const Default_ResetDevice_Language string = "english" 1149 1150 func (m *ResetDevice) GetDisplayRandom() bool { 1151 if m != nil && m.DisplayRandom != nil { 1152 return *m.DisplayRandom 1153 } 1154 return false 1155 } 1156 1157 func (m *ResetDevice) GetStrength() uint32 { 1158 if m != nil && m.Strength != nil { 1159 return *m.Strength 1160 } 1161 return Default_ResetDevice_Strength 1162 } 1163 1164 func (m *ResetDevice) GetPassphraseProtection() bool { 1165 if m != nil && m.PassphraseProtection != nil { 1166 return *m.PassphraseProtection 1167 } 1168 return false 1169 } 1170 1171 func (m *ResetDevice) GetPinProtection() bool { 1172 if m != nil && m.PinProtection != nil { 1173 return *m.PinProtection 1174 } 1175 return false 1176 } 1177 1178 func (m *ResetDevice) GetLanguage() string { 1179 if m != nil && m.Language != nil { 1180 return *m.Language 1181 } 1182 return Default_ResetDevice_Language 1183 } 1184 1185 func (m *ResetDevice) GetLabel() string { 1186 if m != nil && m.Label != nil { 1187 return *m.Label 1188 } 1189 return "" 1190 } 1191 1192 func (m *ResetDevice) GetU2FCounter() uint32 { 1193 if m != nil && m.U2FCounter != nil { 1194 return *m.U2FCounter 1195 } 1196 return 0 1197 } 1198 1199 func (m *ResetDevice) GetSkipBackup() bool { 1200 if m != nil && m.SkipBackup != nil { 1201 return *m.SkipBackup 1202 } 1203 return false 1204 } 1205 1206 //* 1207 //请求:如果未使用resetdevice备份设备种子,请执行备份 1208 //@下一步按钮请求 1209 type BackupDevice struct { 1210 XXX_unrecognized []byte `json:"-"` 1211 } 1212 1213 func (m *BackupDevice) Reset() { *m = BackupDevice{} } 1214 func (m *BackupDevice) String() string { return proto.CompactTextString(m) } 1215 func (*BackupDevice) ProtoMessage() {} 1216 func (*BackupDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{28} } 1217 1218 //* 1219 //回答:要求主机提供额外的熵 1220 //@上一个重置设备 1221 //@下一个entropack 1222 type EntropyRequest struct { 1223 XXX_unrecognized []byte `json:"-"` 1224 } 1225 1226 func (m *EntropyRequest) Reset() { *m = EntropyRequest{} } 1227 func (m *EntropyRequest) String() string { return proto.CompactTextString(m) } 1228 func (*EntropyRequest) ProtoMessage() {} 1229 func (*EntropyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{29} } 1230 1231 //* 1232 //请求:为种子生成函数提供额外的熵 1233 //@prev entropy请求 1234 //@下一步按钮请求 1235 type EntropyAck struct { 1236 Entropy []byte `protobuf:"bytes,1,opt,name=entropy" json:"entropy,omitempty"` 1237 XXX_unrecognized []byte `json:"-"` 1238 } 1239 1240 func (m *EntropyAck) Reset() { *m = EntropyAck{} } 1241 func (m *EntropyAck) String() string { return proto.CompactTextString(m) } 1242 func (*EntropyAck) ProtoMessage() {} 1243 func (*EntropyAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{30} } 1244 1245 func (m *EntropyAck) GetEntropy() []byte { 1246 if m != nil { 1247 return m.Entropy 1248 } 1249 return nil 1250 } 1251 1252 //* 1253 //请求:启动恢复工作流,要求用户输入特定的助记词 1254 //用于安全恢复设备,即使在不受信任的计算机上。 1255 //@下一个字请求 1256 type RecoveryDevice struct { 1257 WordCount *uint32 `protobuf:"varint,1,opt,name=word_count,json=wordCount" json:"word_count,omitempty"` 1258 PassphraseProtection *bool `protobuf:"varint,2,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 1259 PinProtection *bool `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` 1260 Language *string `protobuf:"bytes,4,opt,name=language,def=english" json:"language,omitempty"` 1261 Label *string `protobuf:"bytes,5,opt,name=label" json:"label,omitempty"` 1262 EnforceWordlist *bool `protobuf:"varint,6,opt,name=enforce_wordlist,json=enforceWordlist" json:"enforce_wordlist,omitempty"` 1263 //7为未使用的回收方法保留 1264 Type *uint32 `protobuf:"varint,8,opt,name=type" json:"type,omitempty"` 1265 U2FCounter *uint32 `protobuf:"varint,9,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` 1266 DryRun *bool `protobuf:"varint,10,opt,name=dry_run,json=dryRun" json:"dry_run,omitempty"` 1267 XXX_unrecognized []byte `json:"-"` 1268 } 1269 1270 func (m *RecoveryDevice) Reset() { *m = RecoveryDevice{} } 1271 func (m *RecoveryDevice) String() string { return proto.CompactTextString(m) } 1272 func (*RecoveryDevice) ProtoMessage() {} 1273 func (*RecoveryDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{31} } 1274 1275 const Default_RecoveryDevice_Language string = "english" 1276 1277 func (m *RecoveryDevice) GetWordCount() uint32 { 1278 if m != nil && m.WordCount != nil { 1279 return *m.WordCount 1280 } 1281 return 0 1282 } 1283 1284 func (m *RecoveryDevice) GetPassphraseProtection() bool { 1285 if m != nil && m.PassphraseProtection != nil { 1286 return *m.PassphraseProtection 1287 } 1288 return false 1289 } 1290 1291 func (m *RecoveryDevice) GetPinProtection() bool { 1292 if m != nil && m.PinProtection != nil { 1293 return *m.PinProtection 1294 } 1295 return false 1296 } 1297 1298 func (m *RecoveryDevice) GetLanguage() string { 1299 if m != nil && m.Language != nil { 1300 return *m.Language 1301 } 1302 return Default_RecoveryDevice_Language 1303 } 1304 1305 func (m *RecoveryDevice) GetLabel() string { 1306 if m != nil && m.Label != nil { 1307 return *m.Label 1308 } 1309 return "" 1310 } 1311 1312 func (m *RecoveryDevice) GetEnforceWordlist() bool { 1313 if m != nil && m.EnforceWordlist != nil { 1314 return *m.EnforceWordlist 1315 } 1316 return false 1317 } 1318 1319 func (m *RecoveryDevice) GetType() uint32 { 1320 if m != nil && m.Type != nil { 1321 return *m.Type 1322 } 1323 return 0 1324 } 1325 1326 func (m *RecoveryDevice) GetU2FCounter() uint32 { 1327 if m != nil && m.U2FCounter != nil { 1328 return *m.U2FCounter 1329 } 1330 return 0 1331 } 1332 1333 func (m *RecoveryDevice) GetDryRun() bool { 1334 if m != nil && m.DryRun != nil { 1335 return *m.DryRun 1336 } 1337 return false 1338 } 1339 1340 //* 1341 //响应:设备正在等待用户输入助记符的单词 1342 //它的位置只显示在设备的内部显示器上。 1343 //@预防恢复设备 1344 // 1345 type WordRequest struct { 1346 Type *WordRequestType `protobuf:"varint,1,opt,name=type,enum=WordRequestType" json:"type,omitempty"` 1347 XXX_unrecognized []byte `json:"-"` 1348 } 1349 1350 func (m *WordRequest) Reset() { *m = WordRequest{} } 1351 func (m *WordRequest) String() string { return proto.CompactTextString(m) } 1352 func (*WordRequest) ProtoMessage() {} 1353 func (*WordRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{32} } 1354 1355 func (m *WordRequest) GetType() WordRequestType { 1356 if m != nil && m.Type != nil { 1357 return *m.Type 1358 } 1359 return WordRequestType_WordRequestType_Plain 1360 } 1361 1362 //* 1363 //请求:计算机用助记符中的单词答复 1364 //@上一个字请求 1365 //@下一个字请求 1366 //下一个成功 1367 //下一次失败 1368 type WordAck struct { 1369 Word *string `protobuf:"bytes,1,req,name=word" json:"word,omitempty"` 1370 XXX_unrecognized []byte `json:"-"` 1371 } 1372 1373 func (m *WordAck) Reset() { *m = WordAck{} } 1374 func (m *WordAck) String() string { return proto.CompactTextString(m) } 1375 func (*WordAck) ProtoMessage() {} 1376 func (*WordAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{33} } 1377 1378 func (m *WordAck) GetWord() string { 1379 if m != nil && m.Word != nil { 1380 return *m.Word 1381 } 1382 return "" 1383 } 1384 1385 //* 1386 //请求:要求设备签署消息 1387 //@下一个消息签名 1388 //下一次失败 1389 type SignMessage struct { 1390 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 1391 Message []byte `protobuf:"bytes,2,req,name=message" json:"message,omitempty"` 1392 CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1393 ScriptType *InputScriptType `protobuf:"varint,4,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"` 1394 XXX_unrecognized []byte `json:"-"` 1395 } 1396 1397 func (m *SignMessage) Reset() { *m = SignMessage{} } 1398 func (m *SignMessage) String() string { return proto.CompactTextString(m) } 1399 func (*SignMessage) ProtoMessage() {} 1400 func (*SignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{34} } 1401 1402 const Default_SignMessage_CoinName string = "Bitcoin" 1403 const Default_SignMessage_ScriptType InputScriptType = InputScriptType_SPENDADDRESS 1404 1405 func (m *SignMessage) GetAddressN() []uint32 { 1406 if m != nil { 1407 return m.AddressN 1408 } 1409 return nil 1410 } 1411 1412 func (m *SignMessage) GetMessage() []byte { 1413 if m != nil { 1414 return m.Message 1415 } 1416 return nil 1417 } 1418 1419 func (m *SignMessage) GetCoinName() string { 1420 if m != nil && m.CoinName != nil { 1421 return *m.CoinName 1422 } 1423 return Default_SignMessage_CoinName 1424 } 1425 1426 func (m *SignMessage) GetScriptType() InputScriptType { 1427 if m != nil && m.ScriptType != nil { 1428 return *m.ScriptType 1429 } 1430 return Default_SignMessage_ScriptType 1431 } 1432 1433 //* 1434 //请求:请求设备验证消息 1435 //下一个成功 1436 //下一次失败 1437 type VerifyMessage struct { 1438 Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 1439 Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` 1440 Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` 1441 CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1442 XXX_unrecognized []byte `json:"-"` 1443 } 1444 1445 func (m *VerifyMessage) Reset() { *m = VerifyMessage{} } 1446 func (m *VerifyMessage) String() string { return proto.CompactTextString(m) } 1447 func (*VerifyMessage) ProtoMessage() {} 1448 func (*VerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{35} } 1449 1450 const Default_VerifyMessage_CoinName string = "Bitcoin" 1451 1452 func (m *VerifyMessage) GetAddress() string { 1453 if m != nil && m.Address != nil { 1454 return *m.Address 1455 } 1456 return "" 1457 } 1458 1459 func (m *VerifyMessage) GetSignature() []byte { 1460 if m != nil { 1461 return m.Signature 1462 } 1463 return nil 1464 } 1465 1466 func (m *VerifyMessage) GetMessage() []byte { 1467 if m != nil { 1468 return m.Message 1469 } 1470 return nil 1471 } 1472 1473 func (m *VerifyMessage) GetCoinName() string { 1474 if m != nil && m.CoinName != nil { 1475 return *m.CoinName 1476 } 1477 return Default_VerifyMessage_CoinName 1478 } 1479 1480 //* 1481 //响应:签名消息 1482 //@上一条标志消息 1483 type MessageSignature struct { 1484 Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 1485 Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` 1486 XXX_unrecognized []byte `json:"-"` 1487 } 1488 1489 func (m *MessageSignature) Reset() { *m = MessageSignature{} } 1490 func (m *MessageSignature) String() string { return proto.CompactTextString(m) } 1491 func (*MessageSignature) ProtoMessage() {} 1492 func (*MessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{36} } 1493 1494 func (m *MessageSignature) GetAddress() string { 1495 if m != nil && m.Address != nil { 1496 return *m.Address 1497 } 1498 return "" 1499 } 1500 1501 func (m *MessageSignature) GetSignature() []byte { 1502 if m != nil { 1503 return m.Signature 1504 } 1505 return nil 1506 } 1507 1508 //* 1509 //请求:要求设备加密消息 1510 //@下一个加密邮件 1511 //下一次失败 1512 type EncryptMessage struct { 1513 Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"` 1514 Message []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` 1515 DisplayOnly *bool `protobuf:"varint,3,opt,name=display_only,json=displayOnly" json:"display_only,omitempty"` 1516 AddressN []uint32 `protobuf:"varint,4,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 1517 CoinName *string `protobuf:"bytes,5,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1518 XXX_unrecognized []byte `json:"-"` 1519 } 1520 1521 func (m *EncryptMessage) Reset() { *m = EncryptMessage{} } 1522 func (m *EncryptMessage) String() string { return proto.CompactTextString(m) } 1523 func (*EncryptMessage) ProtoMessage() {} 1524 func (*EncryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{37} } 1525 1526 const Default_EncryptMessage_CoinName string = "Bitcoin" 1527 1528 func (m *EncryptMessage) GetPubkey() []byte { 1529 if m != nil { 1530 return m.Pubkey 1531 } 1532 return nil 1533 } 1534 1535 func (m *EncryptMessage) GetMessage() []byte { 1536 if m != nil { 1537 return m.Message 1538 } 1539 return nil 1540 } 1541 1542 func (m *EncryptMessage) GetDisplayOnly() bool { 1543 if m != nil && m.DisplayOnly != nil { 1544 return *m.DisplayOnly 1545 } 1546 return false 1547 } 1548 1549 func (m *EncryptMessage) GetAddressN() []uint32 { 1550 if m != nil { 1551 return m.AddressN 1552 } 1553 return nil 1554 } 1555 1556 func (m *EncryptMessage) GetCoinName() string { 1557 if m != nil && m.CoinName != nil { 1558 return *m.CoinName 1559 } 1560 return Default_EncryptMessage_CoinName 1561 } 1562 1563 //* 1564 //响应:加密邮件 1565 //@prev加密消息 1566 type EncryptedMessage struct { 1567 Nonce []byte `protobuf:"bytes,1,opt,name=nonce" json:"nonce,omitempty"` 1568 Message []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` 1569 Hmac []byte `protobuf:"bytes,3,opt,name=hmac" json:"hmac,omitempty"` 1570 XXX_unrecognized []byte `json:"-"` 1571 } 1572 1573 func (m *EncryptedMessage) Reset() { *m = EncryptedMessage{} } 1574 func (m *EncryptedMessage) String() string { return proto.CompactTextString(m) } 1575 func (*EncryptedMessage) ProtoMessage() {} 1576 func (*EncryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{38} } 1577 1578 func (m *EncryptedMessage) GetNonce() []byte { 1579 if m != nil { 1580 return m.Nonce 1581 } 1582 return nil 1583 } 1584 1585 func (m *EncryptedMessage) GetMessage() []byte { 1586 if m != nil { 1587 return m.Message 1588 } 1589 return nil 1590 } 1591 1592 func (m *EncryptedMessage) GetHmac() []byte { 1593 if m != nil { 1594 return m.Hmac 1595 } 1596 return nil 1597 } 1598 1599 //* 1600 //请求:要求设备解密消息 1601 //下一个成功 1602 //下一次失败 1603 type DecryptMessage struct { 1604 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 1605 Nonce []byte `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"` 1606 Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` 1607 Hmac []byte `protobuf:"bytes,4,opt,name=hmac" json:"hmac,omitempty"` 1608 XXX_unrecognized []byte `json:"-"` 1609 } 1610 1611 func (m *DecryptMessage) Reset() { *m = DecryptMessage{} } 1612 func (m *DecryptMessage) String() string { return proto.CompactTextString(m) } 1613 func (*DecryptMessage) ProtoMessage() {} 1614 func (*DecryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{39} } 1615 1616 func (m *DecryptMessage) GetAddressN() []uint32 { 1617 if m != nil { 1618 return m.AddressN 1619 } 1620 return nil 1621 } 1622 1623 func (m *DecryptMessage) GetNonce() []byte { 1624 if m != nil { 1625 return m.Nonce 1626 } 1627 return nil 1628 } 1629 1630 func (m *DecryptMessage) GetMessage() []byte { 1631 if m != nil { 1632 return m.Message 1633 } 1634 return nil 1635 } 1636 1637 func (m *DecryptMessage) GetHmac() []byte { 1638 if m != nil { 1639 return m.Hmac 1640 } 1641 return nil 1642 } 1643 1644 //* 1645 //响应:解密的消息 1646 //@prev解密邮件 1647 type DecryptedMessage struct { 1648 Message []byte `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` 1649 Address *string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"` 1650 XXX_unrecognized []byte `json:"-"` 1651 } 1652 1653 func (m *DecryptedMessage) Reset() { *m = DecryptedMessage{} } 1654 func (m *DecryptedMessage) String() string { return proto.CompactTextString(m) } 1655 func (*DecryptedMessage) ProtoMessage() {} 1656 func (*DecryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{40} } 1657 1658 func (m *DecryptedMessage) GetMessage() []byte { 1659 if m != nil { 1660 return m.Message 1661 } 1662 return nil 1663 } 1664 1665 func (m *DecryptedMessage) GetAddress() string { 1666 if m != nil && m.Address != nil { 1667 return *m.Address 1668 } 1669 return "" 1670 } 1671 1672 //* 1673 //请求:要求设备加密或解密给定密钥的值 1674 //@下一个密码键值 1675 //下一次失败 1676 type CipherKeyValue struct { 1677 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 1678 Key *string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"` 1679 Value []byte `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` 1680 Encrypt *bool `protobuf:"varint,4,opt,name=encrypt" json:"encrypt,omitempty"` 1681 AskOnEncrypt *bool `protobuf:"varint,5,opt,name=ask_on_encrypt,json=askOnEncrypt" json:"ask_on_encrypt,omitempty"` 1682 AskOnDecrypt *bool `protobuf:"varint,6,opt,name=ask_on_decrypt,json=askOnDecrypt" json:"ask_on_decrypt,omitempty"` 1683 Iv []byte `protobuf:"bytes,7,opt,name=iv" json:"iv,omitempty"` 1684 XXX_unrecognized []byte `json:"-"` 1685 } 1686 1687 func (m *CipherKeyValue) Reset() { *m = CipherKeyValue{} } 1688 func (m *CipherKeyValue) String() string { return proto.CompactTextString(m) } 1689 func (*CipherKeyValue) ProtoMessage() {} 1690 func (*CipherKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{41} } 1691 1692 func (m *CipherKeyValue) GetAddressN() []uint32 { 1693 if m != nil { 1694 return m.AddressN 1695 } 1696 return nil 1697 } 1698 1699 func (m *CipherKeyValue) GetKey() string { 1700 if m != nil && m.Key != nil { 1701 return *m.Key 1702 } 1703 return "" 1704 } 1705 1706 func (m *CipherKeyValue) GetValue() []byte { 1707 if m != nil { 1708 return m.Value 1709 } 1710 return nil 1711 } 1712 1713 func (m *CipherKeyValue) GetEncrypt() bool { 1714 if m != nil && m.Encrypt != nil { 1715 return *m.Encrypt 1716 } 1717 return false 1718 } 1719 1720 func (m *CipherKeyValue) GetAskOnEncrypt() bool { 1721 if m != nil && m.AskOnEncrypt != nil { 1722 return *m.AskOnEncrypt 1723 } 1724 return false 1725 } 1726 1727 func (m *CipherKeyValue) GetAskOnDecrypt() bool { 1728 if m != nil && m.AskOnDecrypt != nil { 1729 return *m.AskOnDecrypt 1730 } 1731 return false 1732 } 1733 1734 func (m *CipherKeyValue) GetIv() []byte { 1735 if m != nil { 1736 return m.Iv 1737 } 1738 return nil 1739 } 1740 1741 //* 1742 //响应:返回加密/解密值 1743 //@上一个密码键值 1744 type CipheredKeyValue struct { 1745 Value []byte `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` 1746 XXX_unrecognized []byte `json:"-"` 1747 } 1748 1749 func (m *CipheredKeyValue) Reset() { *m = CipheredKeyValue{} } 1750 func (m *CipheredKeyValue) String() string { return proto.CompactTextString(m) } 1751 func (*CipheredKeyValue) ProtoMessage() {} 1752 func (*CipheredKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{42} } 1753 1754 func (m *CipheredKeyValue) GetValue() []byte { 1755 if m != nil { 1756 return m.Value 1757 } 1758 return nil 1759 } 1760 1761 //* 1762 //请求:事务的估计大小 1763 //它的行为与signtx完全相同,这意味着它可以使用txrequest请求 1764 //此调用是非阻塞的(除了可能的密码请求以解锁种子) 1765 //“下一个TXSIZE” 1766 //下一次失败 1767 type EstimateTxSize struct { 1768 OutputsCount *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"` 1769 InputsCount *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"` 1770 CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1771 XXX_unrecognized []byte `json:"-"` 1772 } 1773 1774 func (m *EstimateTxSize) Reset() { *m = EstimateTxSize{} } 1775 func (m *EstimateTxSize) String() string { return proto.CompactTextString(m) } 1776 func (*EstimateTxSize) ProtoMessage() {} 1777 func (*EstimateTxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{43} } 1778 1779 const Default_EstimateTxSize_CoinName string = "Bitcoin" 1780 1781 func (m *EstimateTxSize) GetOutputsCount() uint32 { 1782 if m != nil && m.OutputsCount != nil { 1783 return *m.OutputsCount 1784 } 1785 return 0 1786 } 1787 1788 func (m *EstimateTxSize) GetInputsCount() uint32 { 1789 if m != nil && m.InputsCount != nil { 1790 return *m.InputsCount 1791 } 1792 return 0 1793 } 1794 1795 func (m *EstimateTxSize) GetCoinName() string { 1796 if m != nil && m.CoinName != nil { 1797 return *m.CoinName 1798 } 1799 return Default_EstimateTxSize_CoinName 1800 } 1801 1802 //* 1803 //响应:事务的估计大小 1804 //@上一个估计X大小 1805 type TxSize struct { 1806 TxSize *uint32 `protobuf:"varint,1,opt,name=tx_size,json=txSize" json:"tx_size,omitempty"` 1807 XXX_unrecognized []byte `json:"-"` 1808 } 1809 1810 func (m *TxSize) Reset() { *m = TxSize{} } 1811 func (m *TxSize) String() string { return proto.CompactTextString(m) } 1812 func (*TxSize) ProtoMessage() {} 1813 func (*TxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{44} } 1814 1815 func (m *TxSize) GetTxSize() uint32 { 1816 if m != nil && m.TxSize != nil { 1817 return *m.TxSize 1818 } 1819 return 0 1820 } 1821 1822 //* 1823 //请求:请求设备签署事务 1824 //@下一个密码请求 1825 //@下一个PinMatrixRequest 1826 //下一个TXT请求 1827 //下一次失败 1828 type SignTx struct { 1829 OutputsCount *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"` 1830 InputsCount *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"` 1831 CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1832 Version *uint32 `protobuf:"varint,4,opt,name=version,def=1" json:"version,omitempty"` 1833 LockTime *uint32 `protobuf:"varint,5,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"` 1834 XXX_unrecognized []byte `json:"-"` 1835 } 1836 1837 func (m *SignTx) Reset() { *m = SignTx{} } 1838 func (m *SignTx) String() string { return proto.CompactTextString(m) } 1839 func (*SignTx) ProtoMessage() {} 1840 func (*SignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{45} } 1841 1842 const Default_SignTx_CoinName string = "Bitcoin" 1843 const Default_SignTx_Version uint32 = 1 1844 const Default_SignTx_LockTime uint32 = 0 1845 1846 func (m *SignTx) GetOutputsCount() uint32 { 1847 if m != nil && m.OutputsCount != nil { 1848 return *m.OutputsCount 1849 } 1850 return 0 1851 } 1852 1853 func (m *SignTx) GetInputsCount() uint32 { 1854 if m != nil && m.InputsCount != nil { 1855 return *m.InputsCount 1856 } 1857 return 0 1858 } 1859 1860 func (m *SignTx) GetCoinName() string { 1861 if m != nil && m.CoinName != nil { 1862 return *m.CoinName 1863 } 1864 return Default_SignTx_CoinName 1865 } 1866 1867 func (m *SignTx) GetVersion() uint32 { 1868 if m != nil && m.Version != nil { 1869 return *m.Version 1870 } 1871 return Default_SignTx_Version 1872 } 1873 1874 func (m *SignTx) GetLockTime() uint32 { 1875 if m != nil && m.LockTime != nil { 1876 return *m.LockTime 1877 } 1878 return Default_SignTx_LockTime 1879 } 1880 1881 //* 1882 //请求:简化事务签名 1883 //此方法不支持流式处理,因此在输入和输出数量上存在硬件限制。 1884 //如果成功,将使用txrequest消息返回结果。 1885 //@下一个密码请求 1886 //@下一个PinMatrixRequest 1887 //下一个TXT请求 1888 //下一次失败 1889 type SimpleSignTx struct { 1890 Inputs []*TxInputType `protobuf:"bytes,1,rep,name=inputs" json:"inputs,omitempty"` 1891 Outputs []*TxOutputType `protobuf:"bytes,2,rep,name=outputs" json:"outputs,omitempty"` 1892 Transactions []*TransactionType `protobuf:"bytes,3,rep,name=transactions" json:"transactions,omitempty"` 1893 CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1894 Version *uint32 `protobuf:"varint,5,opt,name=version,def=1" json:"version,omitempty"` 1895 LockTime *uint32 `protobuf:"varint,6,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"` 1896 XXX_unrecognized []byte `json:"-"` 1897 } 1898 1899 func (m *SimpleSignTx) Reset() { *m = SimpleSignTx{} } 1900 func (m *SimpleSignTx) String() string { return proto.CompactTextString(m) } 1901 func (*SimpleSignTx) ProtoMessage() {} 1902 func (*SimpleSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{46} } 1903 1904 const Default_SimpleSignTx_CoinName string = "Bitcoin" 1905 const Default_SimpleSignTx_Version uint32 = 1 1906 const Default_SimpleSignTx_LockTime uint32 = 0 1907 1908 func (m *SimpleSignTx) GetInputs() []*TxInputType { 1909 if m != nil { 1910 return m.Inputs 1911 } 1912 return nil 1913 } 1914 1915 func (m *SimpleSignTx) GetOutputs() []*TxOutputType { 1916 if m != nil { 1917 return m.Outputs 1918 } 1919 return nil 1920 } 1921 1922 func (m *SimpleSignTx) GetTransactions() []*TransactionType { 1923 if m != nil { 1924 return m.Transactions 1925 } 1926 return nil 1927 } 1928 1929 func (m *SimpleSignTx) GetCoinName() string { 1930 if m != nil && m.CoinName != nil { 1931 return *m.CoinName 1932 } 1933 return Default_SimpleSignTx_CoinName 1934 } 1935 1936 func (m *SimpleSignTx) GetVersion() uint32 { 1937 if m != nil && m.Version != nil { 1938 return *m.Version 1939 } 1940 return Default_SimpleSignTx_Version 1941 } 1942 1943 func (m *SimpleSignTx) GetLockTime() uint32 { 1944 if m != nil && m.LockTime != nil { 1945 return *m.LockTime 1946 } 1947 return Default_SimpleSignTx_LockTime 1948 } 1949 1950 //* 1951 //响应:设备请求签署事务的信息或返回最后一个结果 1952 //如果设置了请求_索引,则设备等待txack消息(根据请求_类型填写字段) 1953 //如果设置了签名索引,“签名”包含签名索引输入的签名输入 1954 //预兆信号 1955 //@上一个simplesigntx 1956 //普雷克 1957 type TxRequest struct { 1958 RequestType *RequestType `protobuf:"varint,1,opt,name=request_type,json=requestType,enum=RequestType" json:"request_type,omitempty"` 1959 Details *TxRequestDetailsType `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"` 1960 Serialized *TxRequestSerializedType `protobuf:"bytes,3,opt,name=serialized" json:"serialized,omitempty"` 1961 XXX_unrecognized []byte `json:"-"` 1962 } 1963 1964 func (m *TxRequest) Reset() { *m = TxRequest{} } 1965 func (m *TxRequest) String() string { return proto.CompactTextString(m) } 1966 func (*TxRequest) ProtoMessage() {} 1967 func (*TxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{47} } 1968 1969 func (m *TxRequest) GetRequestType() RequestType { 1970 if m != nil && m.RequestType != nil { 1971 return *m.RequestType 1972 } 1973 return RequestType_TXINPUT 1974 } 1975 1976 func (m *TxRequest) GetDetails() *TxRequestDetailsType { 1977 if m != nil { 1978 return m.Details 1979 } 1980 return nil 1981 } 1982 1983 func (m *TxRequest) GetSerialized() *TxRequestSerializedType { 1984 if m != nil { 1985 return m.Serialized 1986 } 1987 return nil 1988 } 1989 1990 //* 1991 //请求:报告的事务数据 1992 //@前置请求 1993 //下一个TXT请求 1994 type TxAck struct { 1995 Tx *TransactionType `protobuf:"bytes,1,opt,name=tx" json:"tx,omitempty"` 1996 XXX_unrecognized []byte `json:"-"` 1997 } 1998 1999 func (m *TxAck) Reset() { *m = TxAck{} } 2000 func (m *TxAck) String() string { return proto.CompactTextString(m) } 2001 func (*TxAck) ProtoMessage() {} 2002 func (*TxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{48} } 2003 2004 func (m *TxAck) GetTx() *TransactionType { 2005 if m != nil { 2006 return m.Tx 2007 } 2008 return nil 2009 } 2010 2011 //* 2012 //请求:请求设备签署事务 2013 //从协议的角度来看,所有字段都是可选的。如果缺少,则每个字段默认为值“0”。 2014 //注意:第一个最多1024字节的数据必须作为此消息的一部分进行传输。 2015 //@下一个密码请求 2016 //@下一个PinMatrixRequest 2017 //@下一个以太坊MtxRequest 2018 //下一次失败 2019 type EthereumSignTx struct { 2020 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 2021 Nonce []byte `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"` 2022 GasPrice []byte `protobuf:"bytes,3,opt,name=gas_price,json=gasPrice" json:"gas_price,omitempty"` 2023 GasLimit []byte `protobuf:"bytes,4,opt,name=gas_limit,json=gasLimit" json:"gas_limit,omitempty"` 2024 To []byte `protobuf:"bytes,5,opt,name=to" json:"to,omitempty"` 2025 Value []byte `protobuf:"bytes,6,opt,name=value" json:"value,omitempty"` 2026 DataInitialChunk []byte `protobuf:"bytes,7,opt,name=data_initial_chunk,json=dataInitialChunk" json:"data_initial_chunk,omitempty"` 2027 DataLength *uint32 `protobuf:"varint,8,opt,name=data_length,json=dataLength" json:"data_length,omitempty"` 2028 ChainId *uint32 `protobuf:"varint,9,opt,name=chain_id,json=chainId" json:"chain_id,omitempty"` 2029 XXX_unrecognized []byte `json:"-"` 2030 } 2031 2032 func (m *EthereumSignTx) Reset() { *m = EthereumSignTx{} } 2033 func (m *EthereumSignTx) String() string { return proto.CompactTextString(m) } 2034 func (*EthereumSignTx) ProtoMessage() {} 2035 func (*EthereumSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{49} } 2036 2037 func (m *EthereumSignTx) GetAddressN() []uint32 { 2038 if m != nil { 2039 return m.AddressN 2040 } 2041 return nil 2042 } 2043 2044 func (m *EthereumSignTx) GetNonce() []byte { 2045 if m != nil { 2046 return m.Nonce 2047 } 2048 return nil 2049 } 2050 2051 func (m *EthereumSignTx) GetGasPrice() []byte { 2052 if m != nil { 2053 return m.GasPrice 2054 } 2055 return nil 2056 } 2057 2058 func (m *EthereumSignTx) GetGasLimit() []byte { 2059 if m != nil { 2060 return m.GasLimit 2061 } 2062 return nil 2063 } 2064 2065 func (m *EthereumSignTx) GetTo() []byte { 2066 if m != nil { 2067 return m.To 2068 } 2069 return nil 2070 } 2071 2072 func (m *EthereumSignTx) GetValue() []byte { 2073 if m != nil { 2074 return m.Value 2075 } 2076 return nil 2077 } 2078 2079 func (m *EthereumSignTx) GetDataInitialChunk() []byte { 2080 if m != nil { 2081 return m.DataInitialChunk 2082 } 2083 return nil 2084 } 2085 2086 func (m *EthereumSignTx) GetDataLength() uint32 { 2087 if m != nil && m.DataLength != nil { 2088 return *m.DataLength 2089 } 2090 return 0 2091 } 2092 2093 func (m *EthereumSignTx) GetChainId() uint32 { 2094 if m != nil && m.ChainId != nil { 2095 return *m.ChainId 2096 } 2097 return 0 2098 } 2099 2100 //* 2101 //响应:设备从事务负载请求更多数据,或返回签名。 2102 //如果设置了数据长度,设备将等待更多字节的有效负载。 2103 //否则,签名字段包含计算出的事务签名。所有三个字段都将显示。 2104 //@prev以太坊GNTX 2105 //@下一个以太坊 2106 type EthereumTxRequest struct { 2107 DataLength *uint32 `protobuf:"varint,1,opt,name=data_length,json=dataLength" json:"data_length,omitempty"` 2108 SignatureV *uint32 `protobuf:"varint,2,opt,name=signature_v,json=signatureV" json:"signature_v,omitempty"` 2109 SignatureR []byte `protobuf:"bytes,3,opt,name=signature_r,json=signatureR" json:"signature_r,omitempty"` 2110 SignatureS []byte `protobuf:"bytes,4,opt,name=signature_s,json=signatureS" json:"signature_s,omitempty"` 2111 XXX_unrecognized []byte `json:"-"` 2112 } 2113 2114 func (m *EthereumTxRequest) Reset() { *m = EthereumTxRequest{} } 2115 func (m *EthereumTxRequest) String() string { return proto.CompactTextString(m) } 2116 func (*EthereumTxRequest) ProtoMessage() {} 2117 func (*EthereumTxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{50} } 2118 2119 func (m *EthereumTxRequest) GetDataLength() uint32 { 2120 if m != nil && m.DataLength != nil { 2121 return *m.DataLength 2122 } 2123 return 0 2124 } 2125 2126 func (m *EthereumTxRequest) GetSignatureV() uint32 { 2127 if m != nil && m.SignatureV != nil { 2128 return *m.SignatureV 2129 } 2130 return 0 2131 } 2132 2133 func (m *EthereumTxRequest) GetSignatureR() []byte { 2134 if m != nil { 2135 return m.SignatureR 2136 } 2137 return nil 2138 } 2139 2140 func (m *EthereumTxRequest) GetSignatureS() []byte { 2141 if m != nil { 2142 return m.SignatureS 2143 } 2144 return nil 2145 } 2146 2147 //* 2148 //请求:事务有效负载数据。 2149 //@上一个以太坊请求 2150 //@下一个以太坊MtxRequest 2151 type EthereumTxAck struct { 2152 DataChunk []byte `protobuf:"bytes,1,opt,name=data_chunk,json=dataChunk" json:"data_chunk,omitempty"` 2153 XXX_unrecognized []byte `json:"-"` 2154 } 2155 2156 func (m *EthereumTxAck) Reset() { *m = EthereumTxAck{} } 2157 func (m *EthereumTxAck) String() string { return proto.CompactTextString(m) } 2158 func (*EthereumTxAck) ProtoMessage() {} 2159 func (*EthereumTxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{51} } 2160 2161 func (m *EthereumTxAck) GetDataChunk() []byte { 2162 if m != nil { 2163 return m.DataChunk 2164 } 2165 return nil 2166 } 2167 2168 //* 2169 //请求:要求设备签署消息 2170 //@下一个以太坊推荐签名 2171 //下一次失败 2172 type EthereumSignMessage struct { 2173 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 2174 Message []byte `protobuf:"bytes,2,req,name=message" json:"message,omitempty"` 2175 XXX_unrecognized []byte `json:"-"` 2176 } 2177 2178 func (m *EthereumSignMessage) Reset() { *m = EthereumSignMessage{} } 2179 func (m *EthereumSignMessage) String() string { return proto.CompactTextString(m) } 2180 func (*EthereumSignMessage) ProtoMessage() {} 2181 func (*EthereumSignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{52} } 2182 2183 func (m *EthereumSignMessage) GetAddressN() []uint32 { 2184 if m != nil { 2185 return m.AddressN 2186 } 2187 return nil 2188 } 2189 2190 func (m *EthereumSignMessage) GetMessage() []byte { 2191 if m != nil { 2192 return m.Message 2193 } 2194 return nil 2195 } 2196 2197 //* 2198 //请求:请求设备验证消息 2199 //下一个成功 2200 //下一次失败 2201 type EthereumVerifyMessage struct { 2202 Address []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 2203 Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` 2204 Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` 2205 XXX_unrecognized []byte `json:"-"` 2206 } 2207 2208 func (m *EthereumVerifyMessage) Reset() { *m = EthereumVerifyMessage{} } 2209 func (m *EthereumVerifyMessage) String() string { return proto.CompactTextString(m) } 2210 func (*EthereumVerifyMessage) ProtoMessage() {} 2211 func (*EthereumVerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{53} } 2212 2213 func (m *EthereumVerifyMessage) GetAddress() []byte { 2214 if m != nil { 2215 return m.Address 2216 } 2217 return nil 2218 } 2219 2220 func (m *EthereumVerifyMessage) GetSignature() []byte { 2221 if m != nil { 2222 return m.Signature 2223 } 2224 return nil 2225 } 2226 2227 func (m *EthereumVerifyMessage) GetMessage() []byte { 2228 if m != nil { 2229 return m.Message 2230 } 2231 return nil 2232 } 2233 2234 //* 2235 //响应:签名消息 2236 //@prev以太坊消息 2237 type EthereumMessageSignature struct { 2238 Address []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 2239 Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` 2240 XXX_unrecognized []byte `json:"-"` 2241 } 2242 2243 func (m *EthereumMessageSignature) Reset() { *m = EthereumMessageSignature{} } 2244 func (m *EthereumMessageSignature) String() string { return proto.CompactTextString(m) } 2245 func (*EthereumMessageSignature) ProtoMessage() {} 2246 func (*EthereumMessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{54} } 2247 2248 func (m *EthereumMessageSignature) GetAddress() []byte { 2249 if m != nil { 2250 return m.Address 2251 } 2252 return nil 2253 } 2254 2255 func (m *EthereumMessageSignature) GetSignature() []byte { 2256 if m != nil { 2257 return m.Signature 2258 } 2259 return nil 2260 } 2261 2262 //* 2263 //请求:请求设备签名身份 2264 //@下一个签名的实体 2265 //下一次失败 2266 type SignIdentity struct { 2267 Identity *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"` 2268 ChallengeHidden []byte `protobuf:"bytes,2,opt,name=challenge_hidden,json=challengeHidden" json:"challenge_hidden,omitempty"` 2269 ChallengeVisual *string `protobuf:"bytes,3,opt,name=challenge_visual,json=challengeVisual" json:"challenge_visual,omitempty"` 2270 EcdsaCurveName *string `protobuf:"bytes,4,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` 2271 XXX_unrecognized []byte `json:"-"` 2272 } 2273 2274 func (m *SignIdentity) Reset() { *m = SignIdentity{} } 2275 func (m *SignIdentity) String() string { return proto.CompactTextString(m) } 2276 func (*SignIdentity) ProtoMessage() {} 2277 func (*SignIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{55} } 2278 2279 func (m *SignIdentity) GetIdentity() *IdentityType { 2280 if m != nil { 2281 return m.Identity 2282 } 2283 return nil 2284 } 2285 2286 func (m *SignIdentity) GetChallengeHidden() []byte { 2287 if m != nil { 2288 return m.ChallengeHidden 2289 } 2290 return nil 2291 } 2292 2293 func (m *SignIdentity) GetChallengeVisual() string { 2294 if m != nil && m.ChallengeVisual != nil { 2295 return *m.ChallengeVisual 2296 } 2297 return "" 2298 } 2299 2300 func (m *SignIdentity) GetEcdsaCurveName() string { 2301 if m != nil && m.EcdsaCurveName != nil { 2302 return *m.EcdsaCurveName 2303 } 2304 return "" 2305 } 2306 2307 //* 2308 //响应:设备提供签名标识 2309 //@上一个签名标识 2310 type SignedIdentity struct { 2311 Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 2312 PublicKey []byte `protobuf:"bytes,2,opt,name=public_key,json=publicKey" json:"public_key,omitempty"` 2313 Signature []byte `protobuf:"bytes,3,opt,name=signature" json:"signature,omitempty"` 2314 XXX_unrecognized []byte `json:"-"` 2315 } 2316 2317 func (m *SignedIdentity) Reset() { *m = SignedIdentity{} } 2318 func (m *SignedIdentity) String() string { return proto.CompactTextString(m) } 2319 func (*SignedIdentity) ProtoMessage() {} 2320 func (*SignedIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{56} } 2321 2322 func (m *SignedIdentity) GetAddress() string { 2323 if m != nil && m.Address != nil { 2324 return *m.Address 2325 } 2326 return "" 2327 } 2328 2329 func (m *SignedIdentity) GetPublicKey() []byte { 2330 if m != nil { 2331 return m.PublicKey 2332 } 2333 return nil 2334 } 2335 2336 func (m *SignedIdentity) GetSignature() []byte { 2337 if m != nil { 2338 return m.Signature 2339 } 2340 return nil 2341 } 2342 2343 //* 2344 //请求:请求设备生成ECDH会话密钥 2345 //@下一个ecdhsessionkey 2346 //下一次失败 2347 type GetECDHSessionKey struct { 2348 Identity *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"` 2349 PeerPublicKey []byte `protobuf:"bytes,2,opt,name=peer_public_key,json=peerPublicKey" json:"peer_public_key,omitempty"` 2350 EcdsaCurveName *string `protobuf:"bytes,3,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` 2351 XXX_unrecognized []byte `json:"-"` 2352 } 2353 2354 func (m *GetECDHSessionKey) Reset() { *m = GetECDHSessionKey{} } 2355 func (m *GetECDHSessionKey) String() string { return proto.CompactTextString(m) } 2356 func (*GetECDHSessionKey) ProtoMessage() {} 2357 func (*GetECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{57} } 2358 2359 func (m *GetECDHSessionKey) GetIdentity() *IdentityType { 2360 if m != nil { 2361 return m.Identity 2362 } 2363 return nil 2364 } 2365 2366 func (m *GetECDHSessionKey) GetPeerPublicKey() []byte { 2367 if m != nil { 2368 return m.PeerPublicKey 2369 } 2370 return nil 2371 } 2372 2373 func (m *GetECDHSessionKey) GetEcdsaCurveName() string { 2374 if m != nil && m.EcdsaCurveName != nil { 2375 return *m.EcdsaCurveName 2376 } 2377 return "" 2378 } 2379 2380 //* 2381 //响应:设备提供ECDH会话密钥 2382 //@prev getecdhsessionkey 2383 type ECDHSessionKey struct { 2384 SessionKey []byte `protobuf:"bytes,1,opt,name=session_key,json=sessionKey" json:"session_key,omitempty"` 2385 XXX_unrecognized []byte `json:"-"` 2386 } 2387 2388 func (m *ECDHSessionKey) Reset() { *m = ECDHSessionKey{} } 2389 func (m *ECDHSessionKey) String() string { return proto.CompactTextString(m) } 2390 func (*ECDHSessionKey) ProtoMessage() {} 2391 func (*ECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{58} } 2392 2393 func (m *ECDHSessionKey) GetSessionKey() []byte { 2394 if m != nil { 2395 return m.SessionKey 2396 } 2397 return nil 2398 } 2399 2400 //* 2401 //请求:设置U2F计数器 2402 //下一个成功 2403 type SetU2FCounter struct { 2404 U2FCounter *uint32 `protobuf:"varint,1,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` 2405 XXX_unrecognized []byte `json:"-"` 2406 } 2407 2408 func (m *SetU2FCounter) Reset() { *m = SetU2FCounter{} } 2409 func (m *SetU2FCounter) String() string { return proto.CompactTextString(m) } 2410 func (*SetU2FCounter) ProtoMessage() {} 2411 func (*SetU2FCounter) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{59} } 2412 2413 func (m *SetU2FCounter) GetU2FCounter() uint32 { 2414 if m != nil && m.U2FCounter != nil { 2415 return *m.U2FCounter 2416 } 2417 return 0 2418 } 2419 2420 //* 2421 //请求:要求设备删除其固件(以便可以通过firmwareupload进行更换) 2422 //下一个成功 2423 //@下一个固件请求 2424 //下一次失败 2425 type FirmwareErase struct { 2426 Length *uint32 `protobuf:"varint,1,opt,name=length" json:"length,omitempty"` 2427 XXX_unrecognized []byte `json:"-"` 2428 } 2429 2430 func (m *FirmwareErase) Reset() { *m = FirmwareErase{} } 2431 func (m *FirmwareErase) String() string { return proto.CompactTextString(m) } 2432 func (*FirmwareErase) ProtoMessage() {} 2433 func (*FirmwareErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{60} } 2434 2435 func (m *FirmwareErase) GetLength() uint32 { 2436 if m != nil && m.Length != nil { 2437 return *m.Length 2438 } 2439 return 0 2440 } 2441 2442 //* 2443 //响应:请求固件块 2444 //@下一个firmwareupload 2445 type FirmwareRequest struct { 2446 Offset *uint32 `protobuf:"varint,1,opt,name=offset" json:"offset,omitempty"` 2447 Length *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"` 2448 XXX_unrecognized []byte `json:"-"` 2449 } 2450 2451 func (m *FirmwareRequest) Reset() { *m = FirmwareRequest{} } 2452 func (m *FirmwareRequest) String() string { return proto.CompactTextString(m) } 2453 func (*FirmwareRequest) ProtoMessage() {} 2454 func (*FirmwareRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{61} } 2455 2456 func (m *FirmwareRequest) GetOffset() uint32 { 2457 if m != nil && m.Offset != nil { 2458 return *m.Offset 2459 } 2460 return 0 2461 } 2462 2463 func (m *FirmwareRequest) GetLength() uint32 { 2464 if m != nil && m.Length != nil { 2465 return *m.Length 2466 } 2467 return 0 2468 } 2469 2470 //* 2471 //请求:以二进制形式向设备发送固件 2472 //下一个成功 2473 //下一次失败 2474 type FirmwareUpload struct { 2475 Payload []byte `protobuf:"bytes,1,req,name=payload" json:"payload,omitempty"` 2476 Hash []byte `protobuf:"bytes,2,opt,name=hash" json:"hash,omitempty"` 2477 XXX_unrecognized []byte `json:"-"` 2478 } 2479 2480 func (m *FirmwareUpload) Reset() { *m = FirmwareUpload{} } 2481 func (m *FirmwareUpload) String() string { return proto.CompactTextString(m) } 2482 func (*FirmwareUpload) ProtoMessage() {} 2483 func (*FirmwareUpload) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{62} } 2484 2485 func (m *FirmwareUpload) GetPayload() []byte { 2486 if m != nil { 2487 return m.Payload 2488 } 2489 return nil 2490 } 2491 2492 func (m *FirmwareUpload) GetHash() []byte { 2493 if m != nil { 2494 return m.Hash 2495 } 2496 return nil 2497 } 2498 2499 //* 2500 //请求:执行设备自检 2501 //下一个成功 2502 //下一次失败 2503 type SelfTest struct { 2504 Payload []byte `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` 2505 XXX_unrecognized []byte `json:"-"` 2506 } 2507 2508 func (m *SelfTest) Reset() { *m = SelfTest{} } 2509 func (m *SelfTest) String() string { return proto.CompactTextString(m) } 2510 func (*SelfTest) ProtoMessage() {} 2511 func (*SelfTest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{63} } 2512 2513 func (m *SelfTest) GetPayload() []byte { 2514 if m != nil { 2515 return m.Payload 2516 } 2517 return nil 2518 } 2519 2520 //* 2521 //请求:“按下”设备上的按钮 2522 //下一个成功 2523 type DebugLinkDecision struct { 2524 YesNo *bool `protobuf:"varint,1,req,name=yes_no,json=yesNo" json:"yes_no,omitempty"` 2525 XXX_unrecognized []byte `json:"-"` 2526 } 2527 2528 func (m *DebugLinkDecision) Reset() { *m = DebugLinkDecision{} } 2529 func (m *DebugLinkDecision) String() string { return proto.CompactTextString(m) } 2530 func (*DebugLinkDecision) ProtoMessage() {} 2531 func (*DebugLinkDecision) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{64} } 2532 2533 func (m *DebugLinkDecision) GetYesNo() bool { 2534 if m != nil && m.YesNo != nil { 2535 return *m.YesNo 2536 } 2537 return false 2538 } 2539 2540 //* 2541 //请求:计算机请求设备状态 2542 //@下一个debuglinkstate 2543 type DebugLinkGetState struct { 2544 XXX_unrecognized []byte `json:"-"` 2545 } 2546 2547 func (m *DebugLinkGetState) Reset() { *m = DebugLinkGetState{} } 2548 func (m *DebugLinkGetState) String() string { return proto.CompactTextString(m) } 2549 func (*DebugLinkGetState) ProtoMessage() {} 2550 func (*DebugLinkGetState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{65} } 2551 2552 //* 2553 //响应:设备当前状态 2554 //@prev调试获取状态 2555 type DebugLinkState struct { 2556 Layout []byte `protobuf:"bytes,1,opt,name=layout" json:"layout,omitempty"` 2557 Pin *string `protobuf:"bytes,2,opt,name=pin" json:"pin,omitempty"` 2558 Matrix *string `protobuf:"bytes,3,opt,name=matrix" json:"matrix,omitempty"` 2559 Mnemonic *string `protobuf:"bytes,4,opt,name=mnemonic" json:"mnemonic,omitempty"` 2560 Node *HDNodeType `protobuf:"bytes,5,opt,name=node" json:"node,omitempty"` 2561 PassphraseProtection *bool `protobuf:"varint,6,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 2562 ResetWord *string `protobuf:"bytes,7,opt,name=reset_word,json=resetWord" json:"reset_word,omitempty"` 2563 ResetEntropy []byte `protobuf:"bytes,8,opt,name=reset_entropy,json=resetEntropy" json:"reset_entropy,omitempty"` 2564 RecoveryFakeWord *string `protobuf:"bytes,9,opt,name=recovery_fake_word,json=recoveryFakeWord" json:"recovery_fake_word,omitempty"` 2565 RecoveryWordPos *uint32 `protobuf:"varint,10,opt,name=recovery_word_pos,json=recoveryWordPos" json:"recovery_word_pos,omitempty"` 2566 XXX_unrecognized []byte `json:"-"` 2567 } 2568 2569 func (m *DebugLinkState) Reset() { *m = DebugLinkState{} } 2570 func (m *DebugLinkState) String() string { return proto.CompactTextString(m) } 2571 func (*DebugLinkState) ProtoMessage() {} 2572 func (*DebugLinkState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{66} } 2573 2574 func (m *DebugLinkState) GetLayout() []byte { 2575 if m != nil { 2576 return m.Layout 2577 } 2578 return nil 2579 } 2580 2581 func (m *DebugLinkState) GetPin() string { 2582 if m != nil && m.Pin != nil { 2583 return *m.Pin 2584 } 2585 return "" 2586 } 2587 2588 func (m *DebugLinkState) GetMatrix() string { 2589 if m != nil && m.Matrix != nil { 2590 return *m.Matrix 2591 } 2592 return "" 2593 } 2594 2595 func (m *DebugLinkState) GetMnemonic() string { 2596 if m != nil && m.Mnemonic != nil { 2597 return *m.Mnemonic 2598 } 2599 return "" 2600 } 2601 2602 func (m *DebugLinkState) GetNode() *HDNodeType { 2603 if m != nil { 2604 return m.Node 2605 } 2606 return nil 2607 } 2608 2609 func (m *DebugLinkState) GetPassphraseProtection() bool { 2610 if m != nil && m.PassphraseProtection != nil { 2611 return *m.PassphraseProtection 2612 } 2613 return false 2614 } 2615 2616 func (m *DebugLinkState) GetResetWord() string { 2617 if m != nil && m.ResetWord != nil { 2618 return *m.ResetWord 2619 } 2620 return "" 2621 } 2622 2623 func (m *DebugLinkState) GetResetEntropy() []byte { 2624 if m != nil { 2625 return m.ResetEntropy 2626 } 2627 return nil 2628 } 2629 2630 func (m *DebugLinkState) GetRecoveryFakeWord() string { 2631 if m != nil && m.RecoveryFakeWord != nil { 2632 return *m.RecoveryFakeWord 2633 } 2634 return "" 2635 } 2636 2637 func (m *DebugLinkState) GetRecoveryWordPos() uint32 { 2638 if m != nil && m.RecoveryWordPos != nil { 2639 return *m.RecoveryWordPos 2640 } 2641 return 0 2642 } 2643 2644 //* 2645 // 2646 type DebugLinkStop struct { 2647 XXX_unrecognized []byte `json:"-"` 2648 } 2649 2650 func (m *DebugLinkStop) Reset() { *m = DebugLinkStop{} } 2651 func (m *DebugLinkStop) String() string { return proto.CompactTextString(m) } 2652 func (*DebugLinkStop) ProtoMessage() {} 2653 func (*DebugLinkStop) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{67} } 2654 2655 //* 2656 //响应:设备希望主机记录事件 2657 type DebugLinkLog struct { 2658 Level *uint32 `protobuf:"varint,1,opt,name=level" json:"level,omitempty"` 2659 Bucket *string `protobuf:"bytes,2,opt,name=bucket" json:"bucket,omitempty"` 2660 Text *string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"` 2661 XXX_unrecognized []byte `json:"-"` 2662 } 2663 2664 func (m *DebugLinkLog) Reset() { *m = DebugLinkLog{} } 2665 func (m *DebugLinkLog) String() string { return proto.CompactTextString(m) } 2666 func (*DebugLinkLog) ProtoMessage() {} 2667 func (*DebugLinkLog) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{68} } 2668 2669 func (m *DebugLinkLog) GetLevel() uint32 { 2670 if m != nil && m.Level != nil { 2671 return *m.Level 2672 } 2673 return 0 2674 } 2675 2676 func (m *DebugLinkLog) GetBucket() string { 2677 if m != nil && m.Bucket != nil { 2678 return *m.Bucket 2679 } 2680 return "" 2681 } 2682 2683 func (m *DebugLinkLog) GetText() string { 2684 if m != nil && m.Text != nil { 2685 return *m.Text 2686 } 2687 return "" 2688 } 2689 2690 //* 2691 //请求:从设备读取内存 2692 //@下一个debuglinkmemory 2693 type DebugLinkMemoryRead struct { 2694 Address *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"` 2695 Length *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"` 2696 XXX_unrecognized []byte `json:"-"` 2697 } 2698 2699 func (m *DebugLinkMemoryRead) Reset() { *m = DebugLinkMemoryRead{} } 2700 func (m *DebugLinkMemoryRead) String() string { return proto.CompactTextString(m) } 2701 func (*DebugLinkMemoryRead) ProtoMessage() {} 2702 func (*DebugLinkMemoryRead) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{69} } 2703 2704 func (m *DebugLinkMemoryRead) GetAddress() uint32 { 2705 if m != nil && m.Address != nil { 2706 return *m.Address 2707 } 2708 return 0 2709 } 2710 2711 func (m *DebugLinkMemoryRead) GetLength() uint32 { 2712 if m != nil && m.Length != nil { 2713 return *m.Length 2714 } 2715 return 0 2716 } 2717 2718 //* 2719 //响应:设备将内存发送回 2720 //@prev debuglinkmemoryread(上一个debuglinkmemoryread) 2721 type DebugLinkMemory struct { 2722 Memory []byte `protobuf:"bytes,1,opt,name=memory" json:"memory,omitempty"` 2723 XXX_unrecognized []byte `json:"-"` 2724 } 2725 2726 func (m *DebugLinkMemory) Reset() { *m = DebugLinkMemory{} } 2727 func (m *DebugLinkMemory) String() string { return proto.CompactTextString(m) } 2728 func (*DebugLinkMemory) ProtoMessage() {} 2729 func (*DebugLinkMemory) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{70} } 2730 2731 func (m *DebugLinkMemory) GetMemory() []byte { 2732 if m != nil { 2733 return m.Memory 2734 } 2735 return nil 2736 } 2737 2738 //* 2739 //请求:将内存写入设备。 2740 //警告:写入错误位置可能会导致设备无法修复地损坏。 2741 type DebugLinkMemoryWrite struct { 2742 Address *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"` 2743 Memory []byte `protobuf:"bytes,2,opt,name=memory" json:"memory,omitempty"` 2744 Flash *bool `protobuf:"varint,3,opt,name=flash" json:"flash,omitempty"` 2745 XXX_unrecognized []byte `json:"-"` 2746 } 2747 2748 func (m *DebugLinkMemoryWrite) Reset() { *m = DebugLinkMemoryWrite{} } 2749 func (m *DebugLinkMemoryWrite) String() string { return proto.CompactTextString(m) } 2750 func (*DebugLinkMemoryWrite) ProtoMessage() {} 2751 func (*DebugLinkMemoryWrite) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{71} } 2752 2753 func (m *DebugLinkMemoryWrite) GetAddress() uint32 { 2754 if m != nil && m.Address != nil { 2755 return *m.Address 2756 } 2757 return 0 2758 } 2759 2760 func (m *DebugLinkMemoryWrite) GetMemory() []byte { 2761 if m != nil { 2762 return m.Memory 2763 } 2764 return nil 2765 } 2766 2767 func (m *DebugLinkMemoryWrite) GetFlash() bool { 2768 if m != nil && m.Flash != nil { 2769 return *m.Flash 2770 } 2771 return false 2772 } 2773 2774 //* 2775 //请求:清除设备上的闪存块 2776 //警告:写入错误位置可能会导致设备无法修复地损坏。 2777 type DebugLinkFlashErase struct { 2778 Sector *uint32 `protobuf:"varint,1,opt,name=sector" json:"sector,omitempty"` 2779 XXX_unrecognized []byte `json:"-"` 2780 } 2781 2782 func (m *DebugLinkFlashErase) Reset() { *m = DebugLinkFlashErase{} } 2783 func (m *DebugLinkFlashErase) String() string { return proto.CompactTextString(m) } 2784 func (*DebugLinkFlashErase) ProtoMessage() {} 2785 func (*DebugLinkFlashErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{72} } 2786 2787 func (m *DebugLinkFlashErase) GetSector() uint32 { 2788 if m != nil && m.Sector != nil { 2789 return *m.Sector 2790 } 2791 return 0 2792 } 2793 2794 func init() { 2795 proto.RegisterType((*Initialize)(nil), "Initialize") 2796 proto.RegisterType((*GetFeatures)(nil), "GetFeatures") 2797 proto.RegisterType((*Features)(nil), "Features") 2798 proto.RegisterType((*ClearSession)(nil), "ClearSession") 2799 proto.RegisterType((*ApplySettings)(nil), "ApplySettings") 2800 proto.RegisterType((*ApplyFlags)(nil), "ApplyFlags") 2801 proto.RegisterType((*ChangePin)(nil), "ChangePin") 2802 proto.RegisterType((*Ping)(nil), "Ping") 2803 proto.RegisterType((*Success)(nil), "Success") 2804 proto.RegisterType((*Failure)(nil), "Failure") 2805 proto.RegisterType((*ButtonRequest)(nil), "ButtonRequest") 2806 proto.RegisterType((*ButtonAck)(nil), "ButtonAck") 2807 proto.RegisterType((*PinMatrixRequest)(nil), "PinMatrixRequest") 2808 proto.RegisterType((*PinMatrixAck)(nil), "PinMatrixAck") 2809 proto.RegisterType((*Cancel)(nil), "Cancel") 2810 proto.RegisterType((*PassphraseRequest)(nil), "PassphraseRequest") 2811 proto.RegisterType((*PassphraseAck)(nil), "PassphraseAck") 2812 proto.RegisterType((*GetEntropy)(nil), "GetEntropy") 2813 proto.RegisterType((*Entropy)(nil), "Entropy") 2814 proto.RegisterType((*GetPublicKey)(nil), "GetPublicKey") 2815 proto.RegisterType((*PublicKey)(nil), "PublicKey") 2816 proto.RegisterType((*GetAddress)(nil), "GetAddress") 2817 proto.RegisterType((*EthereumGetAddress)(nil), "EthereumGetAddress") 2818 proto.RegisterType((*Address)(nil), "Address") 2819 proto.RegisterType((*EthereumAddress)(nil), "EthereumAddress") 2820 proto.RegisterType((*WipeDevice)(nil), "WipeDevice") 2821 proto.RegisterType((*LoadDevice)(nil), "LoadDevice") 2822 proto.RegisterType((*ResetDevice)(nil), "ResetDevice") 2823 proto.RegisterType((*BackupDevice)(nil), "BackupDevice") 2824 proto.RegisterType((*EntropyRequest)(nil), "EntropyRequest") 2825 proto.RegisterType((*EntropyAck)(nil), "EntropyAck") 2826 proto.RegisterType((*RecoveryDevice)(nil), "RecoveryDevice") 2827 proto.RegisterType((*WordRequest)(nil), "WordRequest") 2828 proto.RegisterType((*WordAck)(nil), "WordAck") 2829 proto.RegisterType((*SignMessage)(nil), "SignMessage") 2830 proto.RegisterType((*VerifyMessage)(nil), "VerifyMessage") 2831 proto.RegisterType((*MessageSignature)(nil), "MessageSignature") 2832 proto.RegisterType((*EncryptMessage)(nil), "EncryptMessage") 2833 proto.RegisterType((*EncryptedMessage)(nil), "EncryptedMessage") 2834 proto.RegisterType((*DecryptMessage)(nil), "DecryptMessage") 2835 proto.RegisterType((*DecryptedMessage)(nil), "DecryptedMessage") 2836 proto.RegisterType((*CipherKeyValue)(nil), "CipherKeyValue") 2837 proto.RegisterType((*CipheredKeyValue)(nil), "CipheredKeyValue") 2838 proto.RegisterType((*EstimateTxSize)(nil), "EstimateTxSize") 2839 proto.RegisterType((*TxSize)(nil), "TxSize") 2840 proto.RegisterType((*SignTx)(nil), "SignTx") 2841 proto.RegisterType((*SimpleSignTx)(nil), "SimpleSignTx") 2842 proto.RegisterType((*TxRequest)(nil), "TxRequest") 2843 proto.RegisterType((*TxAck)(nil), "TxAck") 2844 proto.RegisterType((*EthereumSignTx)(nil), "EthereumSignTx") 2845 proto.RegisterType((*EthereumTxRequest)(nil), "EthereumTxRequest") 2846 proto.RegisterType((*EthereumTxAck)(nil), "EthereumTxAck") 2847 proto.RegisterType((*EthereumSignMessage)(nil), "EthereumSignMessage") 2848 proto.RegisterType((*EthereumVerifyMessage)(nil), "EthereumVerifyMessage") 2849 proto.RegisterType((*EthereumMessageSignature)(nil), "EthereumMessageSignature") 2850 proto.RegisterType((*SignIdentity)(nil), "SignIdentity") 2851 proto.RegisterType((*SignedIdentity)(nil), "SignedIdentity") 2852 proto.RegisterType((*GetECDHSessionKey)(nil), "GetECDHSessionKey") 2853 proto.RegisterType((*ECDHSessionKey)(nil), "ECDHSessionKey") 2854 proto.RegisterType((*SetU2FCounter)(nil), "SetU2FCounter") 2855 proto.RegisterType((*FirmwareErase)(nil), "FirmwareErase") 2856 proto.RegisterType((*FirmwareRequest)(nil), "FirmwareRequest") 2857 proto.RegisterType((*FirmwareUpload)(nil), "FirmwareUpload") 2858 proto.RegisterType((*SelfTest)(nil), "SelfTest") 2859 proto.RegisterType((*DebugLinkDecision)(nil), "DebugLinkDecision") 2860 proto.RegisterType((*DebugLinkGetState)(nil), "DebugLinkGetState") 2861 proto.RegisterType((*DebugLinkState)(nil), "DebugLinkState") 2862 proto.RegisterType((*DebugLinkStop)(nil), "DebugLinkStop") 2863 proto.RegisterType((*DebugLinkLog)(nil), "DebugLinkLog") 2864 proto.RegisterType((*DebugLinkMemoryRead)(nil), "DebugLinkMemoryRead") 2865 proto.RegisterType((*DebugLinkMemory)(nil), "DebugLinkMemory") 2866 proto.RegisterType((*DebugLinkMemoryWrite)(nil), "DebugLinkMemoryWrite") 2867 proto.RegisterType((*DebugLinkFlashErase)(nil), "DebugLinkFlashErase") 2868 proto.RegisterEnum("MessageType", MessageType_name, MessageType_value) 2869 } 2870 2871 func init() { proto.RegisterFile("messages.proto", fileDescriptor1) } 2872 2873 var fileDescriptor1 = []byte{ 2874 //gzip文件描述符或协议的3424字节 2875 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xcb, 0x6f, 0xdc, 0x46, 2876 0x9a, 0x5f, 0x76, 0xb7, 0xfa, 0xf1, 0x35, 0xbb, 0x55, 0xa2, 0x2d, 0xbb, 0x2d, 0x5b, 0xb6, 0x4c, 2877 0xc9, 0xb6, 0x64, 0x27, 0xed, 0x44, 0x79, 0x6c, 0xd6, 0xbb, 0x79, 0xc8, 0x7a, 0xd8, 0xde, 0xd8, 2878 0x8e, 0xc0, 0x56, 0x9c, 0xdb, 0x12, 0x14, 0x59, 0xea, 0xae, 0x55, 0x37, 0xc9, 0xf0, 0xa1, 0xa8, 2879 0x7d, 0xd8, 0xeb, 0xee, 0x65, 0x81, 0xec, 0x69, 0x73, 0x1a, 0xe4, 0x36, 0x19, 0x04, 0x18, 0x0c, 2880 0x30, 0x18, 0x60, 0x72, 0x9a, 0x3f, 0x60, 0xfe, 0x8b, 0x39, 0xce, 0x1f, 0x30, 0xe7, 0x41, 0x3d, 2881 0x48, 0x16, 0x29, 0xb6, 0x6c, 0x27, 0xc0, 0x5c, 0x04, 0xd6, 0x57, 0xbf, 0xfe, 0xea, 0x7b, 0xd5, 2882 0x57, 0x5f, 0x7d, 0x25, 0xe8, 0x4e, 0x70, 0x18, 0x5a, 0x43, 0x1c, 0xf6, 0xfd, 0xc0, 0x8b, 0xbc, 2883 0xa5, 0x76, 0x34, 0xf5, 0x93, 0x81, 0xae, 0x02, 0x3c, 0x71, 0x49, 0x44, 0xac, 0x31, 0x79, 0x89, 2884 0xf5, 0x0e, 0xb4, 0x1f, 0xe1, 0x68, 0x0f, 0x5b, 0x51, 0x1c, 0xe0, 0x50, 0xff, 0x69, 0x0e, 0x9a, 2885 0xc9, 0x40, 0xbb, 0x04, 0xf5, 0x13, 0xec, 0x3a, 0x5e, 0xd0, 0x53, 0x56, 0x94, 0xf5, 0x96, 0x21, 2886 0x46, 0xda, 0x2a, 0x74, 0x26, 0xd6, 0x7f, 0x7a, 0x81, 0x79, 0x82, 0x83, 0x90, 0x78, 0x6e, 0xaf, 2887 0xb2, 0xa2, 0xac, 0x77, 0x0c, 0x95, 0x11, 0x5f, 0x70, 0x1a, 0x03, 0x11, 0x57, 0x02, 0x55, 0x05, 2888 0x88, 0x12, 0x25, 0x90, 0x6f, 0x45, 0xf6, 0x28, 0x05, 0xd5, 0x38, 0x88, 0x11, 0x13, 0xd0, 0x1d, 2889 0x98, 0x3f, 0xf4, 0xbc, 0x68, 0xec, 0x59, 0x0e, 0x0e, 0xcc, 0x89, 0xe7, 0xe0, 0xde, 0xdc, 0x8a, 2890 0xb2, 0xde, 0x34, 0xba, 0x19, 0xf9, 0x99, 0xe7, 0x60, 0xed, 0x2a, 0xb4, 0x1c, 0x7c, 0x42, 0x6c, 2891 0x6c, 0x12, 0xa7, 0x57, 0x67, 0x22, 0x37, 0x39, 0xe1, 0x89, 0xa3, 0xdd, 0x82, 0xae, 0x4f, 0x5c, 2892 0x93, 0xda, 0x00, 0xdb, 0x11, 0x5d, 0xab, 0xc1, 0x98, 0x74, 0x7c, 0xe2, 0xee, 0xa7, 0x44, 0xed, 2893 0x3d, 0x58, 0xf4, 0xad, 0x30, 0xf4, 0x47, 0x81, 0x15, 0x62, 0x19, 0xdd, 0x64, 0xe8, 0x8b, 0xd9, 2894 0xa4, 0xf4, 0xa3, 0x25, 0x68, 0x8e, 0x2d, 0x77, 0x18, 0x5b, 0x43, 0xdc, 0x6b, 0xf1, 0x75, 0x93, 2895 0xb1, 0x76, 0x11, 0xe6, 0xc6, 0xd6, 0x21, 0x1e, 0xf7, 0x80, 0x4d, 0xf0, 0x81, 0x76, 0x03, 0xe6, 2896 0x6c, 0x8f, 0xb8, 0x61, 0xaf, 0xbd, 0x52, 0x5d, 0x6f, 0x6f, 0xb6, 0xfa, 0xdb, 0x1e, 0x71, 0x0f, 2897 0xa6, 0x3e, 0x36, 0x38, 0x5d, 0x5b, 0x81, 0x36, 0x49, 0xbd, 0xe4, 0xf4, 0x54, 0xb6, 0xba, 0x4c, 2898 0xa2, 0x8b, 0x06, 0xf8, 0x84, 0x30, 0xb3, 0x75, 0x56, 0x94, 0x75, 0xd5, 0x48, 0xc7, 0x05, 0x93, 2899 0x8d, 0xac, 0x70, 0xd4, 0xeb, 0x32, 0x88, 0x64, 0xb2, 0xc7, 0x56, 0x38, 0xa2, 0x4c, 0xc8, 0xc4, 2900 0xf7, 0x82, 0x08, 0x3b, 0xbd, 0x79, 0xb6, 0x46, 0x3a, 0xd6, 0x96, 0x01, 0xa8, 0xc5, 0x6c, 0xcb, 2901 0x1e, 0x61, 0xa7, 0x87, 0xd8, 0x6c, 0xcb, 0x27, 0xee, 0x36, 0x23, 0x68, 0xf7, 0x60, 0x41, 0xb2, 2902 0x94, 0x40, 0x2d, 0x30, 0x14, 0xca, 0x26, 0x04, 0x78, 0x03, 0xd0, 0x11, 0x09, 0x26, 0xdf, 0x58, 2903 0x01, 0x35, 0x2a, 0x0e, 0xb1, 0x1b, 0xf5, 0x34, 0x86, 0x9d, 0x4f, 0xe8, 0xfb, 0x9c, 0xac, 0xdd, 2904 0x04, 0xd5, 0xc5, 0xd8, 0x09, 0xcd, 0x43, 0xcb, 0x3e, 0x8e, 0xfd, 0xde, 0x05, 0xae, 0x3a, 0xa3, 2905 0x3d, 0x64, 0x24, 0x6a, 0xd3, 0xa3, 0xb1, 0x35, 0x0c, 0x7b, 0x17, 0x59, 0xb8, 0xf0, 0x81, 0xde, 2906 0x05, 0x75, 0x7b, 0x8c, 0xad, 0x60, 0x80, 0x43, 0x6a, 0x04, 0xfd, 0x7f, 0x14, 0xe8, 0x6c, 0xf9, 2907 0xfe, 0x78, 0x3a, 0xc0, 0x51, 0x44, 0xdc, 0x61, 0x98, 0xf3, 0x93, 0x32, 0xcb, 0x4f, 0x15, 0xd9, 2908 0x4f, 0xb7, 0xa0, 0x1b, 0xd3, 0x38, 0x48, 0xf5, 0x61, 0x61, 0xdc, 0x34, 0x3a, 0x71, 0x88, 0xf7, 2909 0x53, 0xa2, 0x76, 0x1d, 0x60, 0xe4, 0x4d, 0x70, 0x68, 0x07, 0x18, 0xf3, 0x20, 0x56, 0x0d, 0x89, 2910 0xa2, 0xeb, 0x00, 0x4c, 0x92, 0x3d, 0x2a, 0x68, 0x26, 0xbe, 0x22, 0x8b, 0xbf, 0x0a, 0xad, 0xed, 2911 0x91, 0xe5, 0x0e, 0xf1, 0x3e, 0x71, 0xe9, 0xd6, 0x0b, 0xf0, 0xc4, 0x3b, 0xe1, 0x72, 0x36, 0x0d, 2912 0x31, 0xd2, 0x7f, 0xa3, 0x40, 0x6d, 0x9f, 0xb8, 0x43, 0xad, 0x07, 0x0d, 0xb1, 0xc9, 0x85, 0x26, 2913 0xc9, 0x90, 0xfa, 0xe5, 0x30, 0x8e, 0x22, 0x2f, 0x17, 0xeb, 0x15, 0xee, 0x17, 0x3e, 0x21, 0x45, 2914 0xee, 0xd9, 0x5d, 0x51, 0x7d, 0xa3, 0x5d, 0x51, 0x9b, 0xbd, 0x2b, 0xf4, 0x55, 0x68, 0x0c, 0x62, 2915 0xdb, 0xc6, 0x61, 0x38, 0x5b, 0x5a, 0x7d, 0x17, 0x1a, 0x7b, 0x16, 0x19, 0xc7, 0x01, 0xd6, 0x56, 2916 0xa0, 0x66, 0xd3, 0xcd, 0x4d, 0x11, 0xdd, 0x4d, 0xb5, 0x2f, 0xe8, 0x6c, 0x57, 0xb0, 0x19, 0x99, 2917 0x4d, 0x25, 0xcf, 0xe6, 0x73, 0xe8, 0x3c, 0x64, 0xba, 0x19, 0xf8, 0xeb, 0x18, 0x87, 0x91, 0x76, 2918 0x3b, 0xc7, 0x4c, 0xeb, 0xe7, 0x66, 0x25, 0x96, 0x1a, 0xd4, 0x1c, 0x2b, 0xb2, 0x04, 0x3f, 0xf6, 2919 0xad, 0xb7, 0xa1, 0xc5, 0xe1, 0x5b, 0xf6, 0xb1, 0xfe, 0x31, 0xa0, 0x7d, 0xe2, 0x3e, 0xb3, 0xa2, 2920 0x80, 0x9c, 0x26, 0xcc, 0x37, 0xa0, 0x46, 0x33, 0xaa, 0x60, 0xbe, 0xd8, 0x2f, 0x02, 0x38, 0x7f, 2921 0x0a, 0xd1, 0x57, 0x40, 0x4d, 0x67, 0xb7, 0xec, 0x63, 0x0d, 0x41, 0xd5, 0x27, 0x6e, 0x4f, 0x59, 2922 0xa9, 0xac, 0xb7, 0x0c, 0xfa, 0xa9, 0x37, 0xa1, 0xbe, 0x6d, 0xb9, 0x36, 0x1e, 0xeb, 0x17, 0x60, 2923 0x21, 0x8b, 0x29, 0xc1, 0x4a, 0xbf, 0x0f, 0x9d, 0x8c, 0x48, 0x39, 0x5c, 0x07, 0x90, 0xc2, 0x91, 2924 0x33, 0x92, 0x28, 0xfa, 0x0a, 0xc0, 0x23, 0x1c, 0xed, 0xba, 0x51, 0xe0, 0xf9, 0x53, 0xaa, 0x5f, 2925 0x48, 0x5e, 0x72, 0x5c, 0xc7, 0x60, 0xdf, 0xd4, 0x31, 0xc9, 0x74, 0x0f, 0x1a, 0x98, 0x7f, 0x32, 2926 0x84, 0x6a, 0x24, 0x43, 0xfd, 0x57, 0x0a, 0xa8, 0x8f, 0x70, 0xb4, 0x1f, 0x1f, 0x8e, 0x89, 0xfd, 2927 0x39, 0x9e, 0xd2, 0xec, 0x6a, 0x39, 0x4e, 0x80, 0xc3, 0xd0, 0xa4, 0xf2, 0x57, 0xd7, 0x3b, 0x46, 2928 0x53, 0x10, 0x9e, 0x6b, 0xeb, 0x80, 0xb0, 0xed, 0x84, 0x96, 0x69, 0xc7, 0xc1, 0x09, 0x36, 0x5d, 2929 0x6b, 0x92, 0xb8, 0xa8, 0xcb, 0xe8, 0xdb, 0x94, 0xfc, 0xdc, 0x9a, 0x60, 0xba, 0xbd, 0xc3, 0x91, 2930 0xf7, 0x8d, 0xe9, 0x90, 0xd0, 0x1f, 0x5b, 0x53, 0x11, 0x6f, 0x6d, 0x4a, 0xdb, 0xe1, 0x24, 0x6d, 2931 0x0d, 0x5a, 0x34, 0x09, 0x72, 0x2e, 0x34, 0xc2, 0x5a, 0x0f, 0x1a, 0x0f, 0x49, 0x44, 0x69, 0x46, 2932 0x93, 0xfe, 0xa5, 0x8c, 0xf4, 0xcf, 0xa0, 0x95, 0x09, 0x77, 0x03, 0x6a, 0x2e, 0x77, 0x77, 0x65, 2933 0xbd, 0xbd, 0xd9, 0xee, 0x3f, 0xde, 0x79, 0xee, 0x39, 0x22, 0x74, 0x5c, 0xe1, 0xe7, 0x53, 0x3f, 2934 0x3e, 0x4c, 0xfc, 0x4c, 0xbf, 0xf5, 0xbf, 0x2a, 0xcc, 0x54, 0x5b, 0x5c, 0x89, 0xf3, 0x15, 0xcc, 2935 0xc9, 0x54, 0x99, 0x21, 0xd3, 0xeb, 0x28, 0xf7, 0x01, 0x34, 0x27, 0xf1, 0x38, 0x22, 0x21, 0x19, 2936 0x32, 0xdd, 0xda, 0x9b, 0x57, 0xfa, 0xcf, 0x04, 0xc1, 0xc0, 0x0e, 0xc6, 0x93, 0x81, 0x1d, 0x10, 2937 0x9f, 0xc7, 0x50, 0x0a, 0xd5, 0x3e, 0x85, 0x76, 0xc8, 0xe8, 0x26, 0x8b, 0xbc, 0x39, 0x16, 0x79, 2938 0xa8, 0xff, 0xc4, 0xf5, 0xe3, 0x28, 0xfb, 0xc1, 0x03, 0x75, 0xb0, 0xbf, 0xfb, 0x7c, 0x67, 0x6b, 2939 0x67, 0xc7, 0xd8, 0x1d, 0x0c, 0x0c, 0x08, 0xd3, 0x19, 0xfd, 0x00, 0xb4, 0xdd, 0x68, 0x84, 0x03, 2940 0x1c, 0x4f, 0x5e, 0x57, 0xe7, 0xa2, 0x36, 0x95, 0x33, 0xda, 0xd0, 0x50, 0x4a, 0x58, 0xf5, 0xa0, 2941 0x21, 0x7e, 0x29, 0x82, 0x32, 0x19, 0xea, 0xf7, 0x60, 0x3e, 0x59, 0x7a, 0x06, 0x58, 0xcd, 0xc0, 2942 0x2a, 0xc0, 0x57, 0xc4, 0xc7, 0x3b, 0xec, 0xdc, 0xd6, 0xff, 0xaf, 0x02, 0xf0, 0xd4, 0xb3, 0x1c, 2943 0x3e, 0xa4, 0x09, 0x7c, 0xe2, 0xe2, 0x89, 0xe7, 0x12, 0x3b, 0x49, 0xe0, 0xc9, 0x38, 0x0d, 0x81, 2944 0x0a, 0x33, 0x6a, 0x49, 0x08, 0x88, 0xad, 0x57, 0x65, 0xbf, 0xa3, 0x9f, 0x3f, 0x2b, 0xad, 0x69, 2945 0xab, 0xd2, 0x21, 0x32, 0xc7, 0x03, 0x01, 0xbb, 0xc3, 0x31, 0x09, 0x47, 0x65, 0xa7, 0x49, 0x5d, 2946 0x3e, 0x4d, 0x56, 0xa1, 0x13, 0x1e, 0x13, 0xdf, 0xb4, 0x47, 0xd8, 0x3e, 0x0e, 0xe3, 0x89, 0x28, 2947 0x41, 0x54, 0x4a, 0xdc, 0x16, 0x34, 0xed, 0x06, 0xb4, 0xe3, 0xcd, 0x23, 0xd3, 0xf6, 0x62, 0x37, 2948 0xc2, 0x01, 0xab, 0x3b, 0x3a, 0x06, 0xc4, 0x9b, 0x47, 0xdb, 0x9c, 0xa2, 0xff, 0xb6, 0x02, 0x6d, 2949 0x03, 0x87, 0x38, 0x12, 0x46, 0xb9, 0x05, 0x5d, 0xe1, 0x21, 0x33, 0xb0, 0x5c, 0xc7, 0x9b, 0x88, 2950 0x33, 0xa3, 0x23, 0xa8, 0x06, 0x23, 0x6a, 0x37, 0xa0, 0x19, 0x46, 0x01, 0x76, 0x87, 0xd1, 0x88, 2951 0x17, 0x6c, 0x0f, 0xaa, 0x9b, 0x1f, 0x7c, 0x68, 0xa4, 0xc4, 0xd9, 0xd6, 0xa8, 0x9e, 0x63, 0x8d, 2952 0xb3, 0x07, 0x48, 0xad, 0xec, 0x00, 0xf9, 0x05, 0x46, 0x2b, 0xd8, 0xa3, 0x51, 0xb4, 0x07, 0x05, 2953 0x30, 0xab, 0x8a, 0x7a, 0x81, 0x17, 0x6a, 0x40, 0x49, 0xbc, 0x5c, 0xa0, 0x85, 0x01, 0xff, 0x12, 2954 0x41, 0x85, 0xa0, 0x2b, 0xf2, 0x5f, 0x92, 0x64, 0x6f, 0x03, 0x08, 0x0a, 0xcd, 0xb0, 0xb9, 0xa4, 2955 0xa8, 0xc8, 0x49, 0xf1, 0x4f, 0x15, 0xe8, 0x1a, 0xd8, 0xf6, 0x4e, 0x70, 0x30, 0x15, 0xd6, 0x5f, 2956 0x06, 0xf8, 0xc6, 0x0b, 0x1c, 0x2e, 0x9f, 0x38, 0xd1, 0x5b, 0x94, 0xc2, 0xc4, 0x9b, 0x6d, 0xd4, 2957 0xca, 0x1b, 0x19, 0xb5, 0xfa, 0x2a, 0xa3, 0xd6, 0x5e, 0x69, 0xd4, 0x39, 0xd9, 0xa8, 0x1b, 0x80, 2958 0xb0, 0x7b, 0xe4, 0x05, 0x36, 0x36, 0xa9, 0xac, 0x63, 0x12, 0x46, 0xcc, 0xea, 0x4d, 0x63, 0x5e, 2959 0xd0, 0xbf, 0x12, 0x64, 0x9a, 0x39, 0x59, 0xca, 0xe1, 0x81, 0xc8, 0xbe, 0x8b, 0x3e, 0x69, 0x9d, 2960 0xf1, 0xc9, 0x65, 0x68, 0x38, 0xc1, 0xd4, 0x0c, 0x62, 0x97, 0xd5, 0xbd, 0x4d, 0xa3, 0xee, 0x04, 2961 0x53, 0x23, 0x76, 0xf5, 0xf7, 0xa0, 0x4d, 0x39, 0x27, 0x27, 0xe9, 0x5a, 0xee, 0x24, 0x45, 0x7d, 2962 0x69, 0x4e, 0x3a, 0x44, 0x97, 0xa1, 0x41, 0x27, 0xa8, 0x6f, 0x34, 0xa8, 0x51, 0x81, 0x45, 0x8a, 2963 0x61, 0xdf, 0xfa, 0x8f, 0x0a, 0xb4, 0x07, 0x64, 0xe8, 0x3e, 0x13, 0x15, 0xd0, 0xb9, 0x49, 0x2d, 2964 0x57, 0x43, 0xb0, 0xcc, 0x93, 0x14, 0x4e, 0xb9, 0x14, 0x5f, 0x9d, 0x95, 0xe2, 0x0b, 0x89, 0xb8, 2965 0xf6, 0xc6, 0x89, 0xf8, 0xbf, 0x15, 0xe8, 0xbc, 0xc0, 0x01, 0x39, 0x9a, 0x26, 0xf2, 0xe6, 0x92, 2966 0xa1, 0x22, 0x65, 0x4e, 0xed, 0x1a, 0xb4, 0x42, 0x32, 0x74, 0xd9, 0x7d, 0x8c, 0x45, 0x8c, 0x6a, 2967 0x64, 0x04, 0x59, 0x95, 0x2a, 0x8f, 0xd3, 0x52, 0x55, 0x66, 0x9e, 0xa0, 0xff, 0x0e, 0x48, 0x88, 2968 0x30, 0x90, 0x79, 0xfe, 0x1c, 0x59, 0xf4, 0x1f, 0x14, 0xba, 0xa9, 0xec, 0x60, 0xea, 0x47, 0x89, 2969 0x5a, 0x97, 0xa0, 0xee, 0xc7, 0x87, 0xc7, 0x38, 0xd9, 0x45, 0x62, 0x54, 0xac, 0xe2, 0x24, 0xb1, 2970 0x6f, 0x82, 0x9a, 0x64, 0x32, 0xcf, 0x1d, 0xa7, 0xc7, 0xa7, 0xa0, 0x7d, 0xe1, 0x8e, 0x0b, 0x55, 2971 0x48, 0xed, 0xbc, 0x43, 0x7a, 0x6e, 0x96, 0xda, 0x2f, 0x00, 0x09, 0x49, 0xb1, 0x93, 0xc8, 0x7a, 2972 0x11, 0xe6, 0x5c, 0xcf, 0xb5, 0xb1, 0x10, 0x95, 0x0f, 0xce, 0x91, 0x54, 0x83, 0xda, 0x68, 0x62, 2973 0xd9, 0xc2, 0xee, 0xec, 0x5b, 0xff, 0x1a, 0xba, 0x3b, 0x38, 0x67, 0x81, 0x73, 0x03, 0x31, 0x5d, 2974 0xb2, 0x32, 0x63, 0xc9, 0x6a, 0xf9, 0x92, 0x35, 0x69, 0xc9, 0x3d, 0x40, 0x62, 0xc9, 0x4c, 0x95, 2975 0x42, 0xad, 0x2d, 0x71, 0x90, 0x7c, 0x5b, 0xc9, 0xf9, 0x56, 0xff, 0xb3, 0x02, 0xdd, 0x6d, 0xe2, 2976 0x8f, 0x70, 0xf0, 0x39, 0x9e, 0xbe, 0xb0, 0xc6, 0xf1, 0x2b, 0x64, 0x47, 0x50, 0xa5, 0x7e, 0xe5, 2977 0x5c, 0xe8, 0x27, 0xd5, 0xe6, 0x84, 0xfe, 0x4e, 0x48, 0xcd, 0x07, 0x3c, 0x93, 0x32, 0xf9, 0xc4, 2978 0xb1, 0x90, 0x0c, 0xb5, 0x35, 0xe8, 0x5a, 0xe1, 0xb1, 0xe9, 0xb9, 0x66, 0x02, 0xe0, 0x77, 0x7a, 2979 0xd5, 0x0a, 0x8f, 0xbf, 0x70, 0x77, 0xcf, 0xa0, 0x1c, 0xae, 0xa6, 0x48, 0x52, 0x1c, 0x25, 0x54, 2980 0xd7, 0xba, 0x50, 0x21, 0x27, 0xec, 0x60, 0x50, 0x8d, 0x0a, 0x39, 0xd1, 0xd7, 0x01, 0x71, 0x65, 2981 0xb0, 0x93, 0xaa, 0x93, 0xca, 0xa7, 0x48, 0xf2, 0xe9, 0xff, 0x05, 0xdd, 0xdd, 0x30, 0x22, 0x13, 2982 0x2b, 0xc2, 0x07, 0xa7, 0x03, 0xf2, 0x12, 0xd3, 0x23, 0xda, 0x8b, 0x23, 0x3f, 0x8e, 0xc2, 0x34, 2983 0xa3, 0xd3, 0xc2, 0x59, 0x15, 0x44, 0x9e, 0xd4, 0x6f, 0x82, 0x4a, 0x5c, 0x09, 0x53, 0x61, 0x98, 2984 0x36, 0xa7, 0x71, 0xc8, 0x6b, 0x25, 0x13, 0xfd, 0x26, 0xd4, 0xc5, 0xba, 0x97, 0xa1, 0x11, 0x9d, 2985 0x9a, 0xa2, 0x54, 0xa7, 0xd9, 0xb4, 0x1e, 0xb1, 0x09, 0xfd, 0xf7, 0x0a, 0xd4, 0xe9, 0xf6, 0x3c, 2986 0x38, 0xfd, 0xc7, 0xca, 0xa6, 0x5d, 0x85, 0x46, 0xae, 0x2b, 0xf3, 0x40, 0x79, 0xd7, 0x48, 0x28, 2987 0xda, 0x75, 0x68, 0x8d, 0x3d, 0xfb, 0xd8, 0x8c, 0x88, 0xd8, 0x69, 0x9d, 0x07, 0xca, 0x3b, 0x46, 2988 0x93, 0xd2, 0x0e, 0xc8, 0x04, 0xeb, 0x7f, 0x53, 0x40, 0x1d, 0x90, 0x89, 0x3f, 0xc6, 0x42, 0xf6, 2989 0x35, 0xa8, 0x73, 0x11, 0x58, 0x2c, 0xb5, 0x37, 0xd5, 0xfe, 0xc1, 0x29, 0xcb, 0x99, 0x2c, 0xcd, 2990 0x8b, 0x39, 0xed, 0x0e, 0x34, 0x84, 0x32, 0xbd, 0x0a, 0x83, 0x75, 0xfa, 0x07, 0xa7, 0x5f, 0x30, 2991 0x0a, 0xc3, 0x25, 0xb3, 0xda, 0xfb, 0xa0, 0x46, 0x81, 0xe5, 0x86, 0x16, 0x3b, 0x09, 0xc3, 0x5e, 2992 0x95, 0xa1, 0x51, 0xff, 0x20, 0x23, 0xb2, 0x1f, 0xe4, 0x50, 0xaf, 0x97, 0x16, 0x65, 0xc5, 0xe7, 2993 0xce, 0x57, 0xbc, 0x7e, 0x56, 0xf1, 0x5f, 0x2b, 0xd0, 0x3a, 0x48, 0x2f, 0x8a, 0xf7, 0x41, 0x0d, 2994 0xf8, 0xa7, 0x29, 0x1d, 0x73, 0x6a, 0x5f, 0x3e, 0xe2, 0xda, 0x41, 0x36, 0xd0, 0xee, 0x43, 0xc3, 2995 0xc1, 0x91, 0x45, 0xc6, 0xa1, 0xa8, 0x63, 0x17, 0xfb, 0x29, 0xb7, 0x1d, 0x3e, 0xc1, 0x0d, 0x21, 2996 0x50, 0xda, 0x47, 0x00, 0x21, 0x0e, 0x92, 0x36, 0x51, 0x95, 0xfd, 0xa6, 0x97, 0xfd, 0x66, 0x90, 2997 0xce, 0xb1, 0x9f, 0x49, 0x58, 0x7d, 0x03, 0xe6, 0x0e, 0xd8, 0x95, 0x74, 0x05, 0x2a, 0xd1, 0x29, 2998 0x13, 0xad, 0xcc, 0x82, 0x95, 0xe8, 0x54, 0xff, 0xdf, 0x0a, 0x74, 0x93, 0x0a, 0x5e, 0xf8, 0xf3, 2999 0x67, 0xa4, 0xb6, 0xab, 0xd0, 0x1a, 0x5a, 0xa1, 0xe9, 0x07, 0xc4, 0x4e, 0xd2, 0x44, 0x73, 0x68, 3000 0x85, 0xfb, 0x74, 0x9c, 0x4c, 0x8e, 0xc9, 0x84, 0x44, 0x22, 0xc5, 0xd1, 0xc9, 0xa7, 0x74, 0x4c, 3001 0x37, 0x78, 0xe4, 0x31, 0x67, 0xa8, 0x46, 0x25, 0xf2, 0xb2, 0xcd, 0x5c, 0x97, 0x93, 0xcd, 0x5b, 3002 0xa0, 0xd1, 0xeb, 0xbb, 0x29, 0x9a, 0x64, 0xa6, 0x3d, 0x8a, 0xdd, 0x63, 0x91, 0x16, 0x10, 0x9d, 3003 0x11, 0x6d, 0xcf, 0x6d, 0x4a, 0xa7, 0x25, 0x0c, 0x43, 0x8f, 0x79, 0x45, 0x2c, 0xca, 0x6c, 0x4a, 3004 0x7a, 0xca, 0xcb, 0xe1, 0x2b, 0xd0, 0xb4, 0x47, 0x16, 0x71, 0x4d, 0xe2, 0x88, 0x02, 0xa7, 0xc1, 3005 0xc6, 0x4f, 0x1c, 0xfd, 0xff, 0x15, 0x58, 0x48, 0xec, 0x91, 0x39, 0xbb, 0xc0, 0x51, 0x39, 0xc3, 3006 0x91, 0x16, 0xaa, 0xc9, 0x81, 0x69, 0x9e, 0x88, 0xae, 0x29, 0xa4, 0xa4, 0x17, 0x79, 0x40, 0x20, 3007 0x6c, 0x94, 0x01, 0x8c, 0x3c, 0x20, 0x4c, 0x1a, 0x4d, 0x29, 0x69, 0xa0, 0xf7, 0xa1, 0x93, 0x09, 3008 0x46, 0x9d, 0xbb, 0x0c, 0x4c, 0x02, 0x61, 0x0c, 0x9e, 0xfc, 0x5a, 0x94, 0xc2, 0xac, 0xa0, 0x3f, 3009 0x85, 0x0b, 0xb2, 0x63, 0x7f, 0x59, 0x05, 0xa5, 0x13, 0x58, 0x4c, 0xb8, 0x9d, 0x5b, 0xe1, 0xa8, 3010 0xbf, 0xb8, 0xc2, 0xd1, 0x0d, 0xe8, 0x25, 0x4b, 0xbd, 0xaa, 0x86, 0x79, 0xdd, 0xd5, 0xf4, 0x9f, 3011 0x58, 0xd2, 0x1a, 0xba, 0x4f, 0x1c, 0xec, 0x46, 0x24, 0x9a, 0x6a, 0x1b, 0xd0, 0x24, 0xe2, 0x5b, 3012 0xec, 0x8f, 0x4e, 0x3f, 0x99, 0xe4, 0xf7, 0x73, 0x92, 0x41, 0x91, 0x3d, 0xb2, 0xc6, 0xd4, 0xf7, 3013 0xd8, 0x1c, 0x11, 0xc7, 0xc1, 0xae, 0x58, 0x60, 0x3e, 0xa5, 0x3f, 0x66, 0xe4, 0x3c, 0xf4, 0x84, 3014 0x84, 0xb1, 0x35, 0x16, 0x97, 0xd2, 0x0c, 0xfa, 0x82, 0x91, 0x4b, 0xdb, 0x2a, 0xb5, 0xb2, 0xb6, 3015 0x8a, 0x3e, 0x84, 0x2e, 0x15, 0x1d, 0x3b, 0xa9, 0xf0, 0xb3, 0x2b, 0xb9, 0x65, 0x00, 0x9f, 0x75, 3016 0x4e, 0xcc, 0xe4, 0x10, 0x57, 0x8d, 0x96, 0x9f, 0xf6, 0x52, 0x72, 0x46, 0xaa, 0x16, 0x8d, 0xf4, 3017 0xad, 0x02, 0x0b, 0x8f, 0x70, 0xb4, 0xbb, 0xbd, 0xf3, 0x58, 0x34, 0x5a, 0xe9, 0x6f, 0xde, 0xc0, 3018 0x52, 0xb7, 0x61, 0xde, 0xc7, 0x38, 0x30, 0xcf, 0x88, 0xd0, 0xa1, 0xe4, 0xac, 0xa5, 0x53, 0xa6, 3019 0x7b, 0xb5, 0x54, 0xf7, 0x77, 0xa1, 0x5b, 0x10, 0x87, 0xee, 0x13, 0x3e, 0x32, 0xb3, 0xfa, 0x13, 3020 0xc2, 0x14, 0xa0, 0xbf, 0x03, 0x9d, 0x01, 0x8e, 0xbe, 0xdc, 0xdc, 0x93, 0x2e, 0x91, 0xf2, 0x8d, 3021 0x46, 0x39, 0x73, 0xeb, 0xbe, 0x03, 0x9d, 0x3d, 0xd1, 0xa9, 0xde, 0x65, 0x3d, 0xdf, 0x4b, 0x50, 3022 0xcf, 0xed, 0x74, 0x31, 0xd2, 0xb7, 0x60, 0x3e, 0x01, 0x26, 0x99, 0xe1, 0x12, 0xd4, 0xbd, 0xa3, 3023 0xa3, 0x10, 0x27, 0xf7, 0x43, 0x31, 0x92, 0x58, 0x54, 0x72, 0x2c, 0x3e, 0x81, 0x6e, 0xc2, 0xe2, 3024 0x4b, 0x7f, 0xec, 0x59, 0x0e, 0x75, 0xa6, 0x6f, 0x4d, 0xe9, 0x67, 0xd2, 0x2f, 0x11, 0x43, 0x56, 3025 0x16, 0x5a, 0xe1, 0x48, 0xd8, 0x90, 0x7d, 0xeb, 0x6b, 0xd0, 0x1c, 0xe0, 0xf1, 0xd1, 0x01, 0x5d, 3026 0x3b, 0xf7, 0x4b, 0x45, 0xfa, 0xa5, 0x7e, 0x17, 0x16, 0x76, 0xf0, 0x61, 0x3c, 0x7c, 0x4a, 0xdc, 3027 0xe3, 0x1d, 0x6c, 0xf3, 0x97, 0x83, 0x45, 0xa8, 0x4f, 0x71, 0x68, 0xba, 0x1e, 0x5b, 0xa7, 0x69, 3028 0xcc, 0x4d, 0x71, 0xf8, 0xdc, 0xd3, 0x2f, 0x48, 0xd8, 0x47, 0x38, 0x1a, 0x44, 0x56, 0x84, 0xf5, 3029 0xbf, 0x54, 0x68, 0xc5, 0x2b, 0xa8, 0x8c, 0xc4, 0x34, 0xb2, 0xa6, 0x5e, 0x1c, 0x25, 0x35, 0x3f, 3030 0x1f, 0x25, 0xbd, 0x97, 0x4a, 0xd6, 0x7b, 0xb9, 0x04, 0xf5, 0x09, 0xeb, 0x8a, 0x0a, 0xa7, 0x8a, 3031 0x51, 0xae, 0xc5, 0x53, 0x9b, 0xd1, 0xe2, 0x99, 0x9b, 0xd5, 0xe2, 0x99, 0x79, 0xdb, 0xae, 0x9f, 3032 0x73, 0xdb, 0x5e, 0x06, 0x08, 0x70, 0x88, 0x23, 0x76, 0x13, 0x66, 0xe7, 0x45, 0xcb, 0x68, 0x31, 3033 0x0a, 0xbd, 0x74, 0xd2, 0xaa, 0x8b, 0x4f, 0x27, 0x3d, 0x81, 0x26, 0xd3, 0x4c, 0x65, 0xc4, 0xa4, 3034 0x8f, 0xfa, 0x16, 0x68, 0x81, 0xe8, 0x0b, 0x98, 0x47, 0xd6, 0x31, 0xbf, 0x55, 0x8b, 0xb7, 0x20, 3035 0x94, 0xcc, 0xec, 0x59, 0xc7, 0xec, 0x5a, 0xad, 0xdd, 0x85, 0x85, 0x14, 0xcd, 0x9a, 0x07, 0xbe, 3036 0x17, 0xb2, 0x7b, 0x72, 0xc7, 0x98, 0x4f, 0x26, 0x28, 0x70, 0xdf, 0x0b, 0xf5, 0x79, 0xe8, 0x48, 3037 0x36, 0xf6, 0x7c, 0x7d, 0x1f, 0xd4, 0x94, 0xf0, 0xd4, 0x1b, 0xb2, 0x0b, 0x3e, 0x3e, 0xc1, 0xe3, 3038 0xe4, 0x35, 0x81, 0x0d, 0xa8, 0x79, 0x0f, 0x63, 0xfb, 0x18, 0x47, 0xc2, 0xe6, 0x62, 0xc4, 0x6e, 3039 0xf3, 0xf8, 0x34, 0x12, 0x46, 0x67, 0xdf, 0xfa, 0x23, 0xb8, 0x90, 0x72, 0x7c, 0x86, 0x27, 0x5e, 3040 0x30, 0x35, 0x30, 0x8f, 0x39, 0x39, 0x81, 0x74, 0xb2, 0x04, 0x32, 0x2b, 0x6e, 0x37, 0x60, 0xbe, 3041 0xc0, 0x88, 0xb9, 0x99, 0x7d, 0x25, 0x01, 0xc1, 0x47, 0xfa, 0x7f, 0xc0, 0xc5, 0x02, 0xf4, 0xab, 3042 0x80, 0x44, 0xf8, 0xfc, 0x45, 0x05, 0xa7, 0x8a, 0xcc, 0x49, 0xbc, 0xa6, 0x84, 0x23, 0x71, 0x5b, 3043 0xe4, 0x03, 0xfd, 0x6d, 0x49, 0xa7, 0x3d, 0x4a, 0x49, 0x37, 0x6d, 0x88, 0xed, 0xc8, 0x4b, 0x76, 3044 0xb8, 0x18, 0xdd, 0xfd, 0x71, 0x11, 0xda, 0xe2, 0x1c, 0x61, 0x75, 0xd8, 0x0a, 0x5c, 0x92, 0x86, 3045 0x66, 0xf6, 0x60, 0x8a, 0xfe, 0x69, 0xa9, 0xf6, 0xed, 0x1f, 0x7a, 0x8a, 0xb6, 0x94, 0x5e, 0x9e, 3046 0x19, 0x62, 0x9f, 0xb8, 0x43, 0xa4, 0x88, 0xb9, 0x65, 0xb8, 0x20, 0xcf, 0x89, 0x57, 0x10, 0x54, 3047 0x59, 0xaa, 0x7d, 0x57, 0x32, 0x2d, 0xde, 0x39, 0x50, 0x55, 0x4c, 0xdf, 0x80, 0x45, 0x79, 0x3a, 3048 0x7d, 0x14, 0x42, 0x35, 0xc1, 0xbe, 0x20, 0x5c, 0xd6, 0x2e, 0x45, 0x73, 0x02, 0x71, 0x07, 0xae, 3049 0xe4, 0x56, 0x90, 0x13, 0x17, 0xaa, 0x2f, 0x35, 0x29, 0xe8, 0x8f, 0x14, 0xb8, 0x0e, 0x4b, 0x65, 3050 0x40, 0x9e, 0x75, 0x50, 0x43, 0x42, 0x6e, 0xc0, 0xd5, 0x32, 0xa4, 0x48, 0x71, 0xa8, 0xb9, 0xd4, 3051 0xfc, 0x2e, 0x81, 0x16, 0xe4, 0xcb, 0x5e, 0x23, 0x50, 0xab, 0xdc, 0x40, 0xc9, 0x34, 0x08, 0x0b, 3052 0xe8, 0xd0, 0x2b, 0x30, 0x48, 0x8f, 0x05, 0xd4, 0x16, 0x2c, 0x0a, 0x56, 0xca, 0x00, 0xaa, 0x60, 3053 0x52, 0x90, 0x22, 0xeb, 0x22, 0xa3, 0x8e, 0x60, 0x71, 0x13, 0x2e, 0xcb, 0x08, 0xa9, 0xa7, 0x8a, 3054 0xba, 0x02, 0x72, 0x0d, 0xb4, 0x9c, 0x27, 0x59, 0xf1, 0x8b, 0xe6, 0xc5, 0xec, 0x5a, 0x5e, 0x4e, 3055 0xf9, 0xc2, 0x83, 0xd0, 0x52, 0x9d, 0x62, 0x9a, 0x8a, 0x76, 0x1d, 0x2e, 0xe6, 0x2c, 0x27, 0x9e, 3056 0xd7, 0xd1, 0x82, 0x10, 0xf4, 0x36, 0x5c, 0x2b, 0x44, 0x52, 0xee, 0x31, 0x09, 0x69, 0x29, 0xae, 3057 0x57, 0x8a, 0xdb, 0xb2, 0x8f, 0xd1, 0x05, 0xee, 0xa9, 0xdf, 0x95, 0xc8, 0xcc, 0x1f, 0x97, 0xd0, 3058 0xc5, 0x72, 0xbb, 0xa5, 0xe5, 0x2b, 0x5a, 0x14, 0xcb, 0x5c, 0x85, 0x85, 0x3c, 0x80, 0xf2, 0xbf, 3059 0x94, 0x6a, 0x9c, 0x8b, 0x97, 0x7c, 0xcf, 0x00, 0x5d, 0x16, 0xa8, 0x82, 0xff, 0xe4, 0x57, 0x59, 3060 0xd4, 0x13, 0x98, 0xd5, 0x7c, 0x88, 0xe6, 0x1e, 0x6a, 0xd1, 0x95, 0x72, 0x50, 0xee, 0x11, 0x0f, 3061 0x2d, 0x09, 0x81, 0x57, 0xf3, 0x1a, 0xa5, 0x4f, 0x77, 0xe8, 0xaa, 0x64, 0x94, 0x42, 0x34, 0x64, 3062 0xaf, 0xb1, 0xe8, 0x5a, 0xf9, 0xae, 0xca, 0x1e, 0x49, 0xd0, 0x72, 0x79, 0xd4, 0x26, 0xd3, 0xd7, 3063 0xd3, 0xa8, 0xcd, 0xf9, 0x39, 0x39, 0x81, 0xd1, 0x8a, 0xb4, 0x8b, 0x0a, 0x96, 0x91, 0xdb, 0xd2, 3064 0x48, 0x2f, 0xb7, 0x71, 0xbe, 0x55, 0x8d, 0x56, 0xcb, 0xc3, 0x3b, 0x6b, 0x5f, 0xa3, 0xb5, 0xf2, 3065 0xf0, 0x96, 0xea, 0x7b, 0x74, 0xbb, 0xdc, 0xbe, 0xb9, 0xa2, 0x1d, 0xdd, 0x11, 0xa0, 0x42, 0x7c, 3066 0x16, 0xcb, 0x6d, 0xb4, 0x2e, 0x24, 0xba, 0x03, 0xcb, 0xb9, 0xf8, 0x2c, 0x3e, 0x65, 0xa2, 0x8d, 3067 0x14, 0x78, 0xa5, 0x1c, 0x48, 0xa5, 0xbf, 0x2b, 0x39, 0xed, 0x76, 0xc1, 0x12, 0xb9, 0x56, 0x0d, 3068 0xba, 0x27, 0xed, 0x30, 0x2d, 0x1f, 0xb2, 0x6c, 0xfe, 0xad, 0xa5, 0xfa, 0x77, 0x7c, 0xbe, 0x60, 3069 0xd1, 0x7c, 0x07, 0x1f, 0xbd, 0x5d, 0x6e, 0x2f, 0xa9, 0x15, 0x8d, 0xfa, 0xe5, 0x99, 0x5b, 0x34, 3070 0xa5, 0xd1, 0xfd, 0x72, 0x4b, 0x15, 0x9b, 0x50, 0xe8, 0x9d, 0x74, 0x27, 0x17, 0x3c, 0x2c, 0x77, 3071 0x0d, 0xd1, 0xbb, 0xa9, 0x5e, 0xeb, 0x79, 0x7e, 0xc5, 0xae, 0x25, 0xda, 0x4c, 0x35, 0x2c, 0x70, 3072 0xcc, 0xf7, 0x21, 0xd1, 0x7b, 0xb3, 0x38, 0x16, 0x9b, 0x87, 0xe8, 0xfd, 0x94, 0xa3, 0x5e, 0xcc, 3073 0x6d, 0xd9, 0xbd, 0x08, 0x7d, 0x50, 0x1e, 0xa9, 0xf9, 0x0b, 0x08, 0xfa, 0x50, 0x68, 0x5b, 0xb0, 3074 0xab, 0xf4, 0xef, 0x46, 0xe8, 0x9f, 0x05, 0xa3, 0x75, 0xb8, 0x9e, 0x53, 0xf4, 0xcc, 0x43, 0x25, 3075 0xfa, 0x48, 0x20, 0x6f, 0xe5, 0x8f, 0xa1, 0xc2, 0xbb, 0x22, 0xfa, 0x17, 0xb1, 0x66, 0x71, 0x0f, 3076 0xe5, 0x9a, 0x17, 0xe8, 0x41, 0x7a, 0x4c, 0x2e, 0x97, 0xa1, 0xb2, 0x9c, 0xf8, 0xaf, 0x69, 0x8a, 3077 0xb9, 0x52, 0x0e, 0xa4, 0xde, 0xff, 0xb7, 0x72, 0x6e, 0x67, 0x2e, 0x49, 0xe8, 0xe3, 0x19, 0x1b, 3078 0x3c, 0x8f, 0xfa, 0xa4, 0x7c, 0xcd, 0xdc, 0x75, 0x05, 0x7d, 0x2a, 0x58, 0x6d, 0xc0, 0x8d, 0x59, 3079 0x7a, 0x26, 0x2e, 0xfd, 0x4c, 0x40, 0xef, 0xc1, 0xcd, 0x32, 0x68, 0x7e, 0xcf, 0x6f, 0x09, 0x70, 3080 0x1f, 0xd6, 0xca, 0xc0, 0x67, 0xf6, 0xfe, 0x43, 0x21, 0xec, 0xbd, 0xbc, 0xee, 0x67, 0xee, 0x15, 3081 0xc8, 0x59, 0x6a, 0x7e, 0x9f, 0x6c, 0xeb, 0x3b, 0x33, 0xc0, 0xc9, 0xc5, 0x02, 0xe1, 0xa5, 0xda, 3082 0xf7, 0x25, 0x86, 0xca, 0xdf, 0x35, 0xd0, 0xd1, 0x52, 0xed, 0x87, 0x12, 0x43, 0xe5, 0xaa, 0x65, 3083 0x34, 0x14, 0xac, 0x0a, 0xe1, 0x2c, 0x57, 0xd0, 0x68, 0x24, 0x18, 0x15, 0x8c, 0x59, 0x52, 0x13, 3084 0x23, 0x57, 0xb0, 0x2b, 0x84, 0x61, 0x01, 0x8a, 0x3c, 0xc1, 0xf1, 0x2e, 0xac, 0x9c, 0x03, 0x63, 3085 0x15, 0x2f, 0xf2, 0x05, 0xcb, 0x59, 0xab, 0x67, 0xd5, 0x2b, 0xfa, 0x9a, 0x43, 0x1f, 0xbe, 0x0f, 3086 0xab, 0xb6, 0x37, 0xe9, 0x87, 0x56, 0xe4, 0x85, 0x23, 0x32, 0xb6, 0x0e, 0xc3, 0x7e, 0x14, 0xe0, 3087 0x97, 0x5e, 0xd0, 0x1f, 0x93, 0x43, 0xfe, 0x6f, 0x7e, 0x87, 0xf1, 0xd1, 0xc3, 0xce, 0x01, 0x23, 3088 0x0a, 0xae, 0x7f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xe4, 0xc0, 0x85, 0x16, 0x28, 0x00, 0x00, 3089 }