@bitgo-beta/utxo-bin 2.8.3-beta.9 → 2.8.3-beta.900

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +107 -86
  2. package/dist/bin/index.js +11 -2
  3. package/dist/src/AddressParser.d.ts +1 -1
  4. package/dist/src/AddressParser.d.ts.map +1 -1
  5. package/dist/src/AddressParser.js +19 -7
  6. package/dist/src/InputParser.d.ts +43 -0
  7. package/dist/src/InputParser.d.ts.map +1 -0
  8. package/dist/src/InputParser.js +249 -0
  9. package/dist/src/OutputParser.d.ts +24 -0
  10. package/dist/src/OutputParser.d.ts.map +1 -0
  11. package/dist/src/OutputParser.js +65 -0
  12. package/dist/src/Parser.d.ts +9 -3
  13. package/dist/src/Parser.d.ts.map +1 -1
  14. package/dist/src/Parser.js +35 -1
  15. package/dist/src/ParserTx.d.ts +27 -0
  16. package/dist/src/ParserTx.d.ts.map +1 -0
  17. package/dist/src/ParserTx.js +93 -0
  18. package/dist/src/ScriptParser.d.ts +23 -0
  19. package/dist/src/ScriptParser.d.ts.map +1 -0
  20. package/dist/src/ScriptParser.js +96 -0
  21. package/dist/src/TxParser.d.ts +12 -8
  22. package/dist/src/TxParser.d.ts.map +1 -1
  23. package/dist/src/TxParser.js +26 -28
  24. package/dist/src/args/format.d.ts +8 -0
  25. package/dist/src/args/format.d.ts.map +1 -0
  26. package/dist/src/args/format.js +15 -0
  27. package/dist/src/args/index.d.ts +5 -0
  28. package/dist/src/args/index.d.ts.map +1 -0
  29. package/dist/src/args/index.js +21 -0
  30. package/dist/src/args/parseNetwork.d.ts +25 -0
  31. package/dist/src/args/parseNetwork.d.ts.map +1 -0
  32. package/dist/src/args/parseNetwork.js +75 -0
  33. package/dist/src/args/parseString.d.ts +40 -0
  34. package/dist/src/args/parseString.d.ts.map +1 -0
  35. package/dist/src/args/parseString.js +120 -0
  36. package/dist/src/args/walletKeys.d.ts +38 -0
  37. package/dist/src/args/walletKeys.d.ts.map +1 -0
  38. package/dist/src/args/walletKeys.js +28 -0
  39. package/dist/src/bip32.d.ts +5 -0
  40. package/dist/src/bip32.d.ts.map +1 -0
  41. package/dist/src/bip32.js +23 -0
  42. package/dist/src/commands/cmdAddress/cmdGenerate.d.ts +21 -0
  43. package/dist/src/commands/cmdAddress/cmdGenerate.d.ts.map +1 -0
  44. package/dist/src/commands/cmdAddress/cmdGenerate.js +89 -0
  45. package/dist/src/commands/cmdAddress/cmdParse.d.ts +20 -0
  46. package/dist/src/commands/cmdAddress/cmdParse.d.ts.map +1 -0
  47. package/dist/src/commands/cmdAddress/cmdParse.js +28 -0
  48. package/dist/src/commands/cmdAddress/index.d.ts +3 -0
  49. package/dist/src/commands/cmdAddress/index.d.ts.map +1 -0
  50. package/dist/src/commands/cmdAddress/index.js +16 -0
  51. package/dist/src/commands/cmdBip32.d.ts +16 -0
  52. package/dist/src/commands/cmdBip32.d.ts.map +1 -0
  53. package/dist/src/commands/cmdBip32.js +45 -0
  54. package/dist/src/commands/cmdParseScript.d.ts +18 -0
  55. package/dist/src/commands/cmdParseScript.d.ts.map +1 -0
  56. package/dist/src/commands/cmdParseScript.js +27 -0
  57. package/dist/src/commands/cmdParseTx.d.ts +30 -0
  58. package/dist/src/commands/cmdParseTx.d.ts.map +1 -0
  59. package/dist/src/commands/cmdParseTx.js +120 -0
  60. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.d.ts +13 -0
  61. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.d.ts.map +1 -0
  62. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.js +67 -0
  63. package/dist/src/commands/cmdPsbt/cmdAddOutput.d.ts +11 -0
  64. package/dist/src/commands/cmdPsbt/cmdAddOutput.d.ts.map +1 -0
  65. package/dist/src/commands/cmdPsbt/cmdAddOutput.js +89 -0
  66. package/dist/src/commands/cmdPsbt/cmdCreate.d.ts +9 -0
  67. package/dist/src/commands/cmdPsbt/cmdCreate.d.ts.map +1 -0
  68. package/dist/src/commands/cmdPsbt/cmdCreate.js +23 -0
  69. package/dist/src/commands/cmdPsbt/cmdFinalize.d.ts +11 -0
  70. package/dist/src/commands/cmdPsbt/cmdFinalize.d.ts.map +1 -0
  71. package/dist/src/commands/cmdPsbt/cmdFinalize.js +43 -0
  72. package/dist/src/commands/cmdPsbt/cmdSign.d.ts +7 -0
  73. package/dist/src/commands/cmdPsbt/cmdSign.d.ts.map +1 -0
  74. package/dist/src/commands/cmdPsbt/cmdSign.js +24 -0
  75. package/dist/src/commands/cmdPsbt/index.d.ts +8 -0
  76. package/dist/src/commands/cmdPsbt/index.d.ts.map +1 -0
  77. package/dist/src/commands/cmdPsbt/index.js +27 -0
  78. package/dist/src/commands/cmdPsbt/withPsbt.d.ts +63 -0
  79. package/dist/src/commands/cmdPsbt/withPsbt.d.ts.map +1 -0
  80. package/dist/src/commands/cmdPsbt/withPsbt.js +66 -0
  81. package/dist/src/commands/cmdPsbt/wrap.d.ts +5 -0
  82. package/dist/src/commands/cmdPsbt/wrap.d.ts.map +1 -0
  83. package/dist/src/commands/cmdPsbt/wrap.js +27 -0
  84. package/dist/src/commands/formatString.d.ts +8 -0
  85. package/dist/src/commands/formatString.d.ts.map +1 -0
  86. package/dist/src/commands/formatString.js +14 -0
  87. package/dist/src/commands/index.d.ts +6 -0
  88. package/dist/src/commands/index.d.ts.map +1 -0
  89. package/dist/src/commands/index.js +22 -0
  90. package/dist/src/ecdsa.d.ts +1 -2
  91. package/dist/src/ecdsa.d.ts.map +1 -1
  92. package/dist/src/ecdsa.js +9 -9
  93. package/dist/src/fetch.d.ts +12 -4
  94. package/dist/src/fetch.d.ts.map +1 -1
  95. package/dist/src/fetch.js +55 -11
  96. package/dist/src/format.d.ts +1 -1
  97. package/dist/src/format.d.ts.map +1 -1
  98. package/dist/src/format.js +18 -10
  99. package/dist/src/generateAddress.d.ts +47 -0
  100. package/dist/src/generateAddress.d.ts.map +1 -0
  101. package/dist/src/generateAddress.js +141 -0
  102. package/dist/src/hollowSegwitSpend.d.ts +1 -1
  103. package/dist/src/hollowSegwitSpend.d.ts.map +1 -1
  104. package/dist/src/hollowSegwitSpend.js +3 -4
  105. package/dist/src/parseUnknown.d.ts +5 -0
  106. package/dist/src/parseUnknown.d.ts.map +1 -0
  107. package/dist/src/parseUnknown.js +49 -0
  108. package/dist/test/args/stringToBuffer.d.ts +2 -0
  109. package/dist/test/args/stringToBuffer.d.ts.map +1 -0
  110. package/dist/test/args/stringToBuffer.js +16 -0
  111. package/dist/test/bip32.d.ts +2 -0
  112. package/dist/test/bip32.d.ts.map +1 -0
  113. package/dist/test/bip32.js +22 -0
  114. package/dist/test/bip32.util.d.ts +6 -0
  115. package/dist/test/bip32.util.d.ts.map +1 -0
  116. package/dist/test/bip32.util.js +13 -0
  117. package/dist/test/cmdPsbt.d.ts +2 -0
  118. package/dist/test/cmdPsbt.d.ts.map +1 -0
  119. package/dist/test/cmdPsbt.js +102 -0
  120. package/dist/test/fixtures.d.ts +24 -0
  121. package/dist/test/fixtures.d.ts.map +1 -0
  122. package/dist/test/fixtures.js +94 -0
  123. package/dist/test/generateAddress.d.ts +2 -0
  124. package/dist/test/generateAddress.d.ts.map +1 -0
  125. package/dist/test/generateAddress.js +46 -0
  126. package/dist/test/parseAddress.d.ts +6 -0
  127. package/dist/test/parseAddress.d.ts.map +1 -0
  128. package/dist/test/parseAddress.js +83 -0
  129. package/dist/test/parseScript.d.ts +2 -0
  130. package/dist/test/parseScript.d.ts.map +1 -0
  131. package/dist/test/parseScript.js +41 -0
  132. package/dist/test/parseTransaction.d.ts +2 -0
  133. package/dist/test/parseTransaction.d.ts.map +1 -0
  134. package/dist/test/parseTransaction.js +67 -0
  135. package/dist/tsconfig.tsbuildinfo +1 -4635
  136. package/package.json +11 -8
  137. package/dist/src/InputOutputParser.d.ts +0 -35
  138. package/dist/src/InputOutputParser.d.ts.map +0 -1
  139. package/dist/src/InputOutputParser.js +0 -196
  140. package/dist/src/commands.d.ts +0 -43
  141. package/dist/src/commands.d.ts.map +0 -1
  142. package/dist/src/commands.js +0 -152
package/README.md CHANGED
@@ -3,90 +3,111 @@
3
3
  This repository contains a CLI tool for parsing BitGo wallet transactions (withdrawals) and
4
4
  formatting them for terminal output.
5
5
 
6
- ## Sample Usage
7
-
8
- ```
9
- » jq -r '.transaction.hex' \
10
- ../utxo-lib/test/integration_local_rpc/fixtures/testnet/v1/spend_p2shP2wsh.json |
11
- yarn ts-node bin/index.ts parse -n bitcoin -
12
-
13
- reading from stdin
14
- transaction
15
- ├── id: a7b64a92c6fb7e0c6ea0b95c0db8a3253347d22f76562df4dc187ed5d442767b
16
- ├── version: 1
17
- ├── hasWitnesses: true
18
- ├─┬ inputs: 2
19
- │ ├─┬ 0: 61268e441d4078474679c063d1c268b5098163410553329dac0c8069f51bba97:0
20
- │ │ ├── script: 2200201553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
21
- │ │ ├── witness: witnessscripthash
22
- │ │ └─┬ signature: p2shP2wsh
23
- │ │ └── buffers: 72 72
24
- │ └─┬ 1: 1761eea952ede40e9f363134f8ee4fb72658f02c4fbb13c882bb2f020a9e512e:1
25
- │ ├── script: 2200201553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
26
- │ ├── witness: witnessscripthash
27
- │ └─┬ signature: p2shP2wsh
28
- │ └── buffers: 72 71
29
- └─┬ outputs: 2
30
- └─┬ 0: 34qSMWWEvrKnykAwMYLyjsKUfD976EjRJL
31
- └── value: 1.99999
32
- ```
33
-
34
- With `--all`:
35
-
36
- ```
37
- » jq -r '.transaction.hex' \
38
- ../utxo-lib/test/integration_local_rpc/fixtures/testnet/v1/spend_p2shP2wsh.json |
39
- yarn ts-node bin/index.ts parse --all -n bitcoin -
40
-
41
- reading from stdin
42
- transaction
43
- ├── id: a7b64a92c6fb7e0c6ea0b95c0db8a3253347d22f76562df4dc187ed5d442767b
44
- ├── version: 1
45
- ├── hasWitnesses: true
46
- ├─┬ inputs: 2
47
- │ ├─┬ 0: 61268e441d4078474679c063d1c268b5098163410553329dac0c8069f51bba97:0
48
- │ │ ├─┬ script: scripthash
49
- │ │ │ └─┬ 0: 00201553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
50
- │ │ │ └── asm:
51
- │ │ │ OP_0
52
- │ │ │ 1553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
53
- │ │ ├─┬ witness: witnessscripthash
54
- │ │ │ ├── 0: []
55
- │ │ │ ├── 1: 3045022100cb6125485a4e9e2d98dafde8074a29d43ef28ffdd34f0d7f8048423f1fd54c01022065798d67d21f18383db7c4e9532e497b1b54d7e9c3676a079d9502cd0663963c01
56
- │ │ │ ├── 2: 3045022100c3a36135223671fac881d4a48f16b2698500887ac91530b4145000ba4950967902200737c216d2cc705b3d6d88d8443870be168c9bfad2525795ac14ec4ea3598ca801
57
- │ │ │ └─┬ 3: 5221028fedaf75b5b08cddf3bf4631c658b68ee6766a8e999467a641d7cb7aaaecec972103316bc27d95b96418349afc6298c259bb999c6e8f39a7217787ad53602be7c1472102e21c29b4a7eeace9c7a8cefb568ca00c86ff9bf5e79e07e5442c29d4a0950d0453ae
58
- │ │ │ └── asm:
59
- │ │ │ OP_2
60
- │ │ │ 028fedaf75b5b08cddf3bf4631c658b68ee6766a8e999467a641d7cb7aaaecec97
61
- │ │ │ 03316bc27d95b96418349afc6298c259bb999c6e8f39a7217787ad53602be7c147
62
- │ │ │ 02e21c29b4a7eeace9c7a8cefb568ca00c86ff9bf5e79e07e5442c29d4a0950d04
63
- │ │ │ OP_3
64
- │ │ │ OP_CHECKMULTISIG
65
- │ │ └─┬ signature: p2shP2wsh
66
- │ │ ├── 0: 3045022100cb6125485a4e9e2d98dafde8074a29d43ef28ffdd34f0d7f8048423f1fd54c01022065798d67d21f18383db7c4e9532e497b1b54d7e9c3676a079d9502cd0663963c01
67
- │ │ └── 1: 3045022100c3a36135223671fac881d4a48f16b2698500887ac91530b4145000ba4950967902200737c216d2cc705b3d6d88d8443870be168c9bfad2525795ac14ec4ea3598ca801
68
- │ └─┬ 1: 1761eea952ede40e9f363134f8ee4fb72658f02c4fbb13c882bb2f020a9e512e:1
69
- │ ├─┬ script: scripthash
70
- │ │ └─┬ 0: 00201553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
71
- │ │ └── asm:
72
- │ │ OP_0
73
- │ │ 1553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
74
- │ ├─┬ witness: witnessscripthash
75
- │ │ ├── 0: []
76
- │ │ ├── 1: 3045022100f0279fa27d0f85c4c3ee7ea3104963bd88ec02f62f23ae0b73d122293e58c7b8022024b8c9dca8d9d77bda69da70282a45422c2baf0d4a05ecbe57a48b65f92d950d01
77
- │ │ ├── 2: 304402203bb213db0b4842ea5f8c1b9290c8b42dbe65f72bee29e4ad7e8d57e5f16390010220347df34c34a4df5fabe8571c7168c8111df7275a56672126f434bdc44fea6c5901
78
- │ │ └─┬ 3: 5221028fedaf75b5b08cddf3bf4631c658b68ee6766a8e999467a641d7cb7aaaecec972103316bc27d95b96418349afc6298c259bb999c6e8f39a7217787ad53602be7c1472102e21c29b4a7eeace9c7a8cefb568ca00c86ff9bf5e79e07e5442c29d4a0950d0453ae
79
- │ │ └── asm:
80
- │ │ OP_2
81
- │ │ 028fedaf75b5b08cddf3bf4631c658b68ee6766a8e999467a641d7cb7aaaecec97
82
- │ │ 03316bc27d95b96418349afc6298c259bb999c6e8f39a7217787ad53602be7c147
83
- │ │ 02e21c29b4a7eeace9c7a8cefb568ca00c86ff9bf5e79e07e5442c29d4a0950d04
84
- │ │ OP_3
85
- │ │ OP_CHECKMULTISIG
86
- │ └─┬ signature: p2shP2wsh
87
- │ ├── 0: 3045022100f0279fa27d0f85c4c3ee7ea3104963bd88ec02f62f23ae0b73d122293e58c7b8022024b8c9dca8d9d77bda69da70282a45422c2baf0d4a05ecbe57a48b65f92d950d01
88
- │ └── 1: 304402203bb213db0b4842ea5f8c1b9290c8b42dbe65f72bee29e4ad7e8d57e5f16390010220347df34c34a4df5fabe8571c7168c8111df7275a56672126f434bdc44fea6c5901
89
- └─┬ outputs: 2
90
- └─┬ 0: 34qSMWWEvrKnykAwMYLyjsKUfD976EjRJL
91
- └── value: 1.99999
6
+ # Installation
7
+
8
+ ## npm
9
+
10
+ To install the tool globally, run
11
+
12
+ ```bash
13
+ npm install --global @bitgo/utxo-bin
92
14
  ```
15
+
16
+ This will enable the `utxo-bin` tool to be run from anywhere on your system.
17
+
18
+ ## npx
19
+
20
+ To run the tool without installing, you can use `npx`. Be aware that this will download the
21
+ package every time you run it.
22
+
23
+ ```bash
24
+ npx @bitgo/utxo-bin ...
25
+ ```
26
+
27
+ ## parseTx
28
+
29
+ #### From file
30
+
31
+ ```bash
32
+ utxo-bin -n bitcoin parseTx <path-to-file>
33
+ ```
34
+
35
+ #### From hex or base64
36
+
37
+ ```bash
38
+ utxo-bin -n bitcoin parseTx --data <hex/base64>
39
+ ```
40
+
41
+ #### From stdin
42
+
43
+ ```bash
44
+ echo <txhex> | utxo-bin -n bitcoin parseTx --stdin
45
+ ```
46
+
47
+ ```bash
48
+ utxo-bin -n bitcoin parseTx --stdin
49
+ <paste txhex>
50
+ <CTRL-D>
51
+ ```
52
+
53
+ #### From clipboard
54
+
55
+ ```bash
56
+ utxo-bin -n bitcoin parseTx --clipboard
57
+ ```
58
+
59
+ #### From txid
60
+
61
+ ```bash
62
+ utxo-bin -n bitcoin parseTx --txid b0b7e5c2fbbbeb42478f91e1c14b300624a9419631e70dd1564084fb28a55155
63
+ ```
64
+
65
+ #### Lookup inputs
66
+
67
+ ```bash
68
+ utxo-bin -n bitcoin parseTx \
69
+ --txid b0b7e5c2fbbbeb42478f91e1c14b300624a9419631e70dd1564084fb28a55155 \
70
+ --fetchInputs
71
+ ```
72
+
73
+ #### Formats
74
+
75
+ Supported transactions formats are
76
+
77
+ - full-signed transactions
78
+ - half-signed transactions in proprietary bitcoinjs-lib format ("legacy")
79
+ - half-signed transactions in PSBT/BIP174 format
80
+
81
+ Supported encodings are hex and base64.
82
+
83
+ ## parseAddress
84
+
85
+ ```
86
+ utxo-bin -n bitcoin parseAddress 3QJmV3qfvL9SuYo34YihAf3sRCW3qSinyC
87
+ ```
88
+
89
+ Convert to other networks:
90
+
91
+ ```
92
+ utxo-bin -n bitcoin parseAddress 3QJmV3qfvL9SuYo34YihAf3sRCW3qSinyC --convert
93
+ ```
94
+
95
+ ## Generate addresses
96
+
97
+ ```
98
+ utxo-bin generateAddresses \
99
+ --userKey xpub661MyMwAqRbcEvoSo4qrsT5xhByHzUoBjm88hdCPohF1rdQ4TkntuHfccN2N7FbmAmBgmaBxD7VY1QZ43YfgGRLBL37BBkBhYbezgnsPRVP \
100
+ --backupKey xpub661MyMwAqRbcF8Evdu2twZS3ELM8Wg6DqSrVR8GpvCeXMgj3rNPf4nasU1FBzX9yeWYTfyikk7rfuWS5FkMqGnh3HpxeeYtuQEx7FVq5FZa \
101
+ --bitgoKey xpub661MyMwAqRbcEnKX5fhLKdrixijBk4sYCZ7gQ1qRUmib2dXragQVAjv9GmXL4tusTKRwcrYAGrXGETFkFxKFSBCFUAuqdbdM9u2uyQtYkUW
102
+ ```
103
+
104
+ ## Development
105
+
106
+ ```bash
107
+ git clone https://github.com/BitGo/BitGoJS.git
108
+ yarn install
109
+ cd modules/utxo-bin
110
+ yarn ts-node bin/index.ts ...
111
+ ```
112
+
113
+ See the toplevel [DEVELOPERS.md](../../DEVELOPERS.md) for more information.
package/dist/bin/index.js CHANGED
@@ -3,5 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const yargs = require("yargs");
5
5
  const commands_1 = require("../src/commands");
6
- yargs.command(commands_1.cmdParseTx).command(commands_1.cmdParseAddress).help().parse();
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQStCO0FBQy9CLDhDQUE4RDtBQUM5RCxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsMEJBQWUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgY21kUGFyc2VBZGRyZXNzLCBjbWRQYXJzZVR4IH0gZnJvbSAnLi4vc3JjL2NvbW1hbmRzJztcbnlhcmdzLmNvbW1hbmQoY21kUGFyc2VUeCkuY29tbWFuZChjbWRQYXJzZUFkZHJlc3MpLmhlbHAoKS5wYXJzZSgpO1xuIl19
6
+ yargs
7
+ .command(commands_1.cmdParseTx)
8
+ .command(commands_1.cmdAddress)
9
+ .command(commands_1.cmdParseScript)
10
+ .command(commands_1.cmdPsbt)
11
+ .command(commands_1.cmdBip32)
12
+ .strict()
13
+ .demandCommand()
14
+ .help()
15
+ .parse();
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQStCO0FBRS9CLDhDQUE0RjtBQUU1RixLQUFLO0tBQ0YsT0FBTyxDQUFDLHFCQUFVLENBQUM7S0FDbkIsT0FBTyxDQUFDLHFCQUFVLENBQUM7S0FDbkIsT0FBTyxDQUFDLHlCQUFjLENBQUM7S0FDdkIsT0FBTyxDQUFDLGtCQUFPLENBQUM7S0FDaEIsT0FBTyxDQUFDLG1CQUFRLENBQUM7S0FDakIsTUFBTSxFQUFFO0tBQ1IsYUFBYSxFQUFFO0tBQ2YsSUFBSSxFQUFFO0tBQ04sS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5cbmltcG9ydCB7IGNtZFBhcnNlVHgsIGNtZFBhcnNlU2NyaXB0LCBjbWRCaXAzMiwgY21kUHNidCwgY21kQWRkcmVzcyB9IGZyb20gJy4uL3NyYy9jb21tYW5kcyc7XG5cbnlhcmdzXG4gIC5jb21tYW5kKGNtZFBhcnNlVHgpXG4gIC5jb21tYW5kKGNtZEFkZHJlc3MpXG4gIC5jb21tYW5kKGNtZFBhcnNlU2NyaXB0KVxuICAuY29tbWFuZChjbWRQc2J0KVxuICAuY29tbWFuZChjbWRCaXAzMilcbiAgLnN0cmljdCgpXG4gIC5kZW1hbmRDb21tYW5kKClcbiAgLmhlbHAoKVxuICAucGFyc2UoKTtcbiJdfQ==
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import * as utxolib from '@bitgo-beta/utxo-lib';
3
2
  import * as bech32 from 'bech32';
4
3
  import { Parser, ParserNode } from './Parser';
@@ -16,6 +15,7 @@ export declare class AddressParser extends Parser {
16
15
  tryParseOpReturn(script: Buffer): ParserNode[];
17
16
  parseOutputScript(buffer: Buffer): ParserNode[];
18
17
  parseBase58(address: string): ParserNode[];
18
+ parseBase58Check(address: string): ParserNode[];
19
19
  parseWithBechLib(bechlib: bech32.BechLib, address: string): ParserNode[];
20
20
  parseBech32(address: string): ParserNode[];
21
21
  parseBech32m(address: string): ParserNode[];
@@ -1 +1 @@
1
- {"version":3,"file":"AddressParser.d.ts","sourceRoot":"","sources":["../../src/AddressParser.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAU9C,qBAAa,aAAc,SAAQ,MAAM;IAE9B,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;gBAJM,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;IAKH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAwB9C,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAU/C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS1C,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IASxE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI1C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI3C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS5C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;IAsBzC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;IAkBzC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;CAuCjC"}
1
+ {"version":3,"file":"AddressParser.d.ts","sourceRoot":"","sources":["../../src/AddressParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAY9C,qBAAa,aAAc,SAAQ,MAAM;IAE9B,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;gBAJM,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;IAKH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAwB9C,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAU/C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAK1C,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS/C,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IASxE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI1C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI3C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS5C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;IA2BzC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;IAmBzC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;CAuCjC"}
@@ -4,6 +4,8 @@ exports.AddressParser = void 0;
4
4
  const utxolib = require("@bitgo-beta/utxo-lib");
5
5
  const bech32 = require("bech32");
6
6
  const Parser_1 = require("./Parser");
7
+ const args_1 = require("./args");
8
+ const bs58 = require('bs58');
7
9
  const bs58check = require('bs58check');
8
10
  const cashaddress = require('cashaddress');
9
11
  function isPrintable(s) {
@@ -50,6 +52,10 @@ class AddressParser extends Parser_1.Parser {
50
52
  ];
51
53
  }
52
54
  parseBase58(address) {
55
+ const payload = bs58.decode(address);
56
+ return [this.node('payload', payload)];
57
+ }
58
+ parseBase58Check(address) {
53
59
  const payload = bs58check.decode(address);
54
60
  return [
55
61
  this.node('payload', payload),
@@ -80,15 +86,20 @@ class AddressParser extends Parser_1.Parser {
80
86
  ];
81
87
  }
82
88
  convert(outputScript) {
83
- return this.node('converted', undefined, utxolib.getNetworkList().flatMap((network) => utxolib.addressFormat.addressFormats
89
+ function getWidth(list) {
90
+ return Math.max(...list.map((s) => s.length));
91
+ }
92
+ const networkWith = getWidth((0, args_1.getNetworkList)().map(args_1.getNetworkName));
93
+ const addressFormatWith = getWidth(utxolib.addressFormat.addressFormats);
94
+ return this.node('converted', undefined, (0, args_1.getNetworkList)().flatMap((network) => utxolib.addressFormat.addressFormats
84
95
  .filter((f) => utxolib.addressFormat.isSupportedAddressFormat(f, network))
85
96
  .map((addressFormat) => {
86
- const name = utxolib.getNetworkName(network);
97
+ const label = `${(0, args_1.getNetworkName)(network).padEnd(networkWith)} ${addressFormat.padEnd(addressFormatWith)}`;
87
98
  try {
88
- return this.node(`${name} ${addressFormat}`, utxolib.addressFormat.fromOutputScriptWithFormat(outputScript, addressFormat, network));
99
+ return this.node(label, utxolib.addressFormat.fromOutputScriptWithFormat(outputScript, addressFormat, network));
89
100
  }
90
101
  catch (e) {
91
- return this.node(`${name} ${addressFormat}`, 'undefined');
102
+ return this.node(label, 'undefined');
92
103
  }
93
104
  })));
94
105
  }
@@ -103,13 +114,14 @@ class AddressParser extends Parser_1.Parser {
103
114
  };
104
115
  return [
105
116
  ...decodeWith('base58', this.parseBase58.bind(this)),
117
+ ...decodeWith('base58Check', this.parseBase58Check.bind(this)),
106
118
  ...decodeWith('bech32', this.parseBech32.bind(this)),
107
119
  ...decodeWith('bech32m', this.parseBech32m.bind(this)),
108
120
  ...decodeWith('cashaddr', this.parseCashaddr.bind(this)),
109
121
  ];
110
122
  }
111
123
  parse(input) {
112
- const networks = this.params.network ? [this.params.network] : utxolib.getNetworkList();
124
+ const networks = this.params.network ? [this.params.network] : (0, args_1.getNetworkList)();
113
125
  const matches = networks.flatMap((network) => {
114
126
  try {
115
127
  const [addressFormat, buffer] = utxolib.addressFormat.toOutputScriptAndFormat(input, network);
@@ -129,7 +141,7 @@ class AddressParser extends Parser_1.Parser {
129
141
  }
130
142
  nodes.push(this.node('format', firstMatch.addressFormat));
131
143
  nodes.push(this.node('outputScript', firstMatch.buffer, this.parseOutputScript(firstMatch.buffer)));
132
- nodes.push(this.node('network', matches.map((m) => utxolib.getNetworkName(m.network)).join(', ')));
144
+ nodes.push(this.node('network', matches.map((m) => (0, args_1.getNetworkName)(m.network)).join(', ')));
133
145
  if (this.params.all || this.params.convert) {
134
146
  nodes.push(this.convert(firstMatch.buffer));
135
147
  }
@@ -138,4 +150,4 @@ class AddressParser extends Parser_1.Parser {
138
150
  }
139
151
  }
140
152
  exports.AddressParser = AddressParser;
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkcmVzc1BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BZGRyZXNzUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUFnRDtBQUNoRCxpQ0FBaUM7QUFFakMscUNBQThDO0FBRTlDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN2QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFM0MsU0FBUyxXQUFXLENBQUMsQ0FBUztJQUM1Qix1Q0FBdUM7SUFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBYSxhQUFjLFNBQVEsZUFBTTtJQUN2QyxZQUNTLE1BSU47UUFFRCxLQUFLLEVBQUUsQ0FBQztRQU5ELFdBQU0sR0FBTixNQUFNLENBSVo7SUFHSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBYztRQUM3QixJQUFJLElBQTBCLENBQUM7UUFDL0IsSUFBSTtZQUNGLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLFNBQVM7U0FDVjtRQUNELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDO1lBQ1QsSUFBSTtnQkFDRixJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM3QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLFNBQVM7YUFDVjtZQUNELE9BQU8sSUFBSSxDQUFD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TyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRW5HLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUM3QztTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBL0pELHNDQStKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgYmVjaDMyIGZyb20gJ2JlY2gzMic7XG5cbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcblxuY29uc3QgYnM1OGNoZWNrID0gcmVxdWlyZSgnYnM1OGNoZWNrJyk7XG5jb25zdCBjYXNoYWRkcmVzcyA9IHJlcXVpcmUoJ2Nhc2hhZGRyZXNzJyk7XG5cbmZ1bmN0aW9uIGlzUHJpbnRhYmxlKHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjY0NDc0OTRcbiAgcmV0dXJuICFzLm1hdGNoKC9bXFxwe0NjfVxccHtDbn1cXHB7Q3N9XSsvZ3UpO1xufVxuXG5leHBvcnQgY2xhc3MgQWRkcmVzc1BhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwYXJhbXM6IHtcbiAgICAgIG5ldHdvcms/OiB1dHhvbGliLk5ldHdvcms7XG4gICAgICBhbGw6IGJvb2xlYW47XG4gICAgICBjb252ZXJ0OiBib29sZWFuO1xuICAgIH1cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHRyeVBhcnNlT3BSZXR1cm4oc2NyaXB0OiBCdWZmZXIpOiBQYXJzZXJOb2RlW10ge1xuICAgIGxldCBkYXRhOiBCdWZmZXJbXSB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgKHsgZGF0YSB9ID0gdXR4b2xpYi5wYXltZW50cy5lbWJlZCh7IG91dHB1dDogc2NyaXB0IH0pKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBkYXRhLm1hcCgoYnVmLCBpKSA9PiB7XG4gICAgICBsZXQgdXRmODtcbiAgICAgIHRyeSB7XG4gICAgICAgIHV0ZjggPSBidWYudG9TdHJpbmcoJ3V0ZjgnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKGBPUF9SRVRVUk4gJHtpfWAsIGAke2J1Zi5sZW5ndGh9IGJ5dGVzYCwgW1xuICAgICAgICB0aGlzLm5vZGUoJ2hleCcsIGJ1ZiksXG4gICAgICAgIC4uLih1dGY4ICYmIGlzUHJpbnRhYmxlKHV0ZjgpID8gW3RoaXMubm9kZSgndXRmOCcsIHV0ZjgpXSA6IFtdKSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcGFyc2VPdXRwdXRTY3JpcHQoYnVmZmVyOiBCdWZmZXIpOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoJ3NjcmlwdFB1YktleScsIGBbJHtidWZmZXIubGVuZ3RofWJ5dGVdYCwgW1xuICAgICAgICB0aGlzLm5vZGUoJ3R5cGUnLCB1dHhvbGliLmNsYXNzaWZ5Lm91dHB1dChidWZmZXIpKSxcbiAgICAgICAgdGhpcy5ub2RlKCdoZXgnLCBidWZmZXIudG9TdHJpbmcoJ2hleCcpKSxcbiAgICAgICAgdGhpcy5ub2RlKCdhc20nLCB1dHhvbGliLnNjcmlwdC50b0FTTShidWZmZXIpLCB0aGlzLnRyeVBhcnNlT3BSZXR1cm4oYnVmZmVyKSksXG4gICAgICBdKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2VCYXNlNTgoYWRkcmVzczogc3RyaW5nKTogUGFyc2VyTm9kZVtdIHtcbiAgICBjb25zdCBwYXlsb2FkID0gYnM1OGNoZWNrLmRlY29kZShhZGRyZXNzKTtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdwYXlsb2FkJywgcGF5bG9hZCksXG4gICAgICB0aGlzLm5vZGUoJ3ZlcnNpb24nLCBwYXlsb2FkLnJlYWRVSW50OCgwKS50b1N0cmluZygnMTYnKSksXG4gICAgICB0aGlzLm5vZGUoJ2hhc2gnLCBwYXlsb2FkLnNsaWNlKDEpKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2VXaXRoQmVjaExpYihiZWNobGliOiBiZWNoMzIuQmVjaExpYiwgYWRkcmVzczogc3RyaW5nKTogUGFyc2VyTm9kZVtdIHtcbiAgICBjb25zdCBkZWNvZGVkID0gYmVjaGxpYi5kZWNvZGUoYWRkcmVzcyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMubm9kZSgncHJlZml4JywgZGVjb2RlZC5wcmVmaXgpLFxuICAgICAgdGhpcy5ub2RlKCd3b3JkcycsIEJ1ZmZlci5mcm9tKGRlY29kZWQud29yZHMpKSxcbiAgICAgIHRoaXMubm9kZSgnYnl0ZXMnLCBCdWZmZXIuZnJvbShiZWNobGliLmZyb21Xb3JkcyhkZWNvZGVkLndvcmRzKSkpLFxuICAgIF07XG4gIH1cblxuICBwYXJzZUJlY2gzMihhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiB0aGlzLnBhcnNlV2l0aEJlY2hMaWIoYmVjaDMyLmJlY2gzMiwgYWRkcmVzcyk7XG4gIH1cblxuICBwYXJzZUJlY2gzMm0oYWRkcmVzczogc3RyaW5nKTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVdpdGhCZWNoTGliKGJlY2gzMi5iZWNoMzJtLCBhZGRyZXNzKTtcbiAgfVxuXG4gIHBhcnNlQ2FzaGFkZHIoYWRkcmVzczogc3RyaW5nKTogUGFyc2VyTm9kZVtdIHtcbiAgICBjb25zdCBwYXlsb2FkID0gY2FzaGFkZHJlc3MuZGVjb2RlKGFkZHJlc3MpO1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoJ3ByZWZpeCcsIHBheWxvYWQucHJlZml4KSxcbiAgICAgIHRoaXMubm9kZSgndmVyc2lvbicsIHBheWxvYWQudmVyc2lvbiksXG4gICAgICB0aGlzLm5vZGUoJ2hhc2gnLCBwYXlsb2FkLmhhc2gpLFxuICAgIF07XG4gIH1cblxuICBjb252ZXJ0KG91dHB1dFNjcmlwdDogQnVmZmVyKTogUGFyc2VyTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICdjb252ZXJ0ZWQnLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdXR4b2xpYi5nZXROZXR3b3JrTGlzdCgpLmZsYXRNYXAoKG5ldHdvcmspID0+XG4gICAgICAgIHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5hZGRyZXNzRm9ybWF0c1xuICAgICAgICAgIC5maWx0ZXIoKGYpID0+IHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5pc1N1cHBvcnRlZEFkZHJlc3NGb3JtYXQoZiwgbmV0d29yaykpXG4gICAgICAgICAgLm1hcCgoYWRkcmVzc0Zvcm1hdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHV0eG9saWIuZ2V0TmV0d29ya05hbWUobmV0d29yaykgYXMgc3RyaW5nO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgICAgICAgICBgJHtuYW1lfSAke2FkZHJlc3NGb3JtYXR9YCxcbiAgICAgICAgICAgICAgICB1dHhvbGliLmFkZHJlc3NGb3JtYXQuZnJvbU91dHB1dFNjcmlwdFdpdGhGb3JtYXQob3V0cHV0U2NyaXB0LCBhZGRyZXNzRm9ybWF0LCBuZXR3b3JrKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKGAke25hbWV9ICR7YWRkcmVzc0Zvcm1hdH1gLCAndW5kZWZpbmVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcGFyc2VUb0J5dGVzKGlucHV0OiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIHR5cGUgRGVjb2RlciA9IChhZGRyZXNzOiBzdHJpbmcpID0+IFBhcnNlck5vZGVbXTtcbiAgICBjb25zdCBkZWNvZGVXaXRoID0gKG5hbWU6IHN0cmluZywgZGVjb2RlcjogRGVjb2Rlcik6IFBhcnNlck5vZGVbXSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gW3RoaXMubm9kZShuYW1lLCB1bmRlZmluZWQsIGRlY29kZXIoaW5wdXQpKV07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFtcy5hbGwgPyBbdGhpcy5ub2RlKG5hbWUsIHVuZGVmaW5lZCwgW3RoaXMubm9kZSgnZGVjb2RlRXJyb3InLCBTdHJpbmcoZSkpXSldIDogW107XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBbXG4gICAgICAuLi5kZWNvZGVXaXRoKCdiYXNlNTgnLCB0aGlzLnBhcnNlQmFzZTU4LmJpbmQodGhpcykpLFxuICAgICAgLi4uZGVjb2RlV2l0aCgnYmVjaDMyJywgdGhpcy5wYXJzZUJlY2gzMi5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2JlY2gzMm0nLCB0aGlzLnBhcnNlQmVjaDMybS5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2Nhc2hhZGRyJywgdGhpcy5wYXJzZUNhc2hhZGRyLmJpbmQodGhpcykpLFxuICAgIF07XG4gIH1cblxuICBwYXJzZShpbnB1dDogc3RyaW5nKTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3QgbmV0d29ya3MgPSB0aGlzLnBhcmFtcy5uZXR3b3JrID8gW3RoaXMucGFyYW1zLm5ldHdvcmtdIDogdXR4b2xpYi5nZXROZXR3b3JrTGlzdCgpO1xuXG4gICAgdHlwZSBNYXRjaCA9IHtcbiAgICAgIG5ldHdvcms6IHV0eG9saWIuTmV0d29yaztcbiAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgIGFkZHJlc3NGb3JtYXQ6IHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5BZGRyZXNzRm9ybWF0O1xuICAgICAgYnVmZmVyOiBCdWZmZXI7XG4gICAgfTtcbiAgICBjb25zdCBtYXRjaGVzOiBNYXRjaFtdID0gbmV0d29ya3MuZmxhdE1hcCgobmV0d29yaykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgW2FkZHJlc3NGb3JtYXQsIGJ1ZmZlcl0gPSB1dHhvbGliLmFkZHJlc3NGb3JtYXQudG9PdXRwdXRTY3JpcHRBbmRGb3JtYXQoaW5wdXQsIG5ldHdvcmspO1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LmZyb21PdXRwdXRTY3JpcHRXaXRoRm9ybWF0KGJ1ZmZlciwgYWRkcmVzc0Zvcm1hdCwgbmV0d29yayk7XG4gICAgICAgIHJldHVybiBbeyBuZXR3b3JrLCBhZGRyZXNzLCBhZGRyZXNzRm9ybWF0LCBidWZmZXIgfV07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBmaXJzdE1hdGNoID0gbWF0Y2hlc1swXTtcbiAgICBjb25zdCBub2RlczogUGFyc2VyTm9kZVtdID0gW107XG5cbiAgICBub2Rlcy5wdXNoKC4uLnRoaXMucGFyc2VUb0J5dGVzKGlucHV0KSk7XG5cbiAgICBpZiAoZmlyc3RNYXRjaCkge1xuICAgICAgaWYgKGlucHV0ICE9PSBmaXJzdE1hdGNoLmFkZHJlc3MpIHtcbiAgICAgICAgbm9kZXMucHVzaCh0aGlzLm5vZGUoJ25vcm1hbGl6ZWQnLCBmaXJzdE1hdGNoLmFkZHJlc3MsIHRoaXMucGFyc2VUb0J5dGVzKGZpcnN0TWF0Y2guYWRkcmVzcykpKTtcbiAgICAgIH1cblxuICAgICAgbm9kZXMucHVzaCh0aGlzLm5vZGUoJ2Zvcm1hdCcsIGZpcnN0TWF0Y2guYWRkcmVzc0Zvcm1hdCkpO1xuICAgICAgbm9kZXMucHVzaCh0aGlzLm5vZGUoJ291dHB1dFNjcmlwdCcsIGZpcnN0TWF0Y2guYnVmZmVyLCB0aGlzLnBhcnNlT3V0cHV0U2NyaXB0KGZpcnN0TWF0Y2guYnVmZmVyKSkpO1xuICAgICAgbm9kZXMucHVzaCh0aGlzLm5vZGUoJ25ldHdvcmsnLCBtYXRjaGVzLm1hcCgobSkgPT4gdXR4b2xpYi5nZXROZXR3b3JrTmFtZShtLm5ldHdvcmspKS5qb2luKCcsICcpKSk7XG5cbiAgICAgIGlmICh0aGlzLnBhcmFtcy5hbGwgfHwgdGhpcy5wYXJhbXMuY29udmVydCkge1xuICAgICAgICBub2Rlcy5wdXNoKHRoaXMuY29udmVydChmaXJzdE1hdGNoLmJ1ZmZlcikpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoJ2FkZHJlc3MnLCBpbnB1dCwgbm9kZXMpO1xuICB9XG59XG4iXX0=
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkcmVzc1BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BZGRyZXNzUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUFnRDtBQUNoRCxpQ0FBaUM7QUFFakMscUNBQThDO0FBQzlDLGlDQUF3RDtBQUV4RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0IsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUUzQyxTQUFTLFdBQVcsQ0FBQyxDQUFTO0lBQzVCLHVDQUF1QztJQUN2QyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxNQUFhLGFBQWMsU0FBUSxlQUFNO0lBQ3ZDLFlBQ1MsTUFJTjtRQUVELEtBQUssRUFBRSxDQUFDO1FBTkQsV0FBTSxHQUFOLE1BQU0sQ0FJWjtJQUdILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksSUFBMEIsQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDSCxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsU0FBUztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUM7WUFDVCxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsU0FBUztZQUNYLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLFFBQVEsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO2dCQUNyQixHQUFHLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDaEUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBYztRQUM5QixPQUFPO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxNQUFNLENBQUMsTUFBTSxPQUFPLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDOUUsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWU7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE9BQU87WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQXVCLEVBQUUsT0FBZTtRQUN2RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE9BQU87WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNsRSxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFlO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFlO1FBQzNCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsT0FBTztZQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUFDLFlBQW9CO1FBQzFCLFNBQVMsUUFBUSxDQUFDLElBQXVCO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBQSxxQkFBYyxHQUFFLENBQUMsR0FBRyxDQUFDLHFCQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUNkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsSUFBQSxxQkFBYyxHQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDbkMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjO2FBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDekUsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDckIsTUFBTSxLQUFLLEdBQUcsR0FBRyxJQUFBLHFCQUFjLEVBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQzFHLElBQUksQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQ2QsS0FBSyxFQUNMLE9BQU8sQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FDdkYsQ0FBQztZQUNKLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNMLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUV4QixNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxPQUFnQixFQUFnQixFQUFFO1lBQ2xFLElBQUksQ0FBQztnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BHLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELEdBQUcsVUFBVSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlELEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRCxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pELENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWE7UUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxxQkFBYyxHQUFFLENBQUM7UUFRaEYsTUFBTSxPQUFPLEdBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQztnQkFDSCxNQUFNLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUM5RixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2pHLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsTUFBTSxLQUFLLEdBQWlCLEVBQUUsQ0FBQztRQUUvQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXhDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLEtBQUssS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakcsQ0FBQztZQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDMUQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSxxQkFBYyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFM0YsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUExS0Qsc0NBMEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgKiBhcyBiZWNoMzIgZnJvbSAnYmVjaDMyJztcblxuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZ2V0TmV0d29ya0xpc3QsIGdldE5ldHdvcmtOYW1lIH0gZnJvbSAnLi9hcmdzJztcblxuY29uc3QgYnM1OCA9IHJlcXVpcmUoJ2JzNTgnKTtcbmNvbnN0IGJzNThjaGVjayA9IHJlcXVpcmUoJ2JzNThjaGVjaycpO1xuY29uc3QgY2FzaGFkZHJlc3MgPSByZXF1aXJlKCdjYXNoYWRkcmVzcycpO1xuXG5mdW5jdGlvbiBpc1ByaW50YWJsZShzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzY2NDQ3NDk0XG4gIHJldHVybiAhcy5tYXRjaCgvW1xccHtDY31cXHB7Q259XFxwe0NzfV0rL2d1KTtcbn1cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyYW1zOiB7XG4gICAgICBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrO1xuICAgICAgYWxsOiBib29sZWFuO1xuICAgICAgY29udmVydDogYm9vbGVhbjtcbiAgICB9XG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0cnlQYXJzZU9wUmV0dXJuKHNjcmlwdDogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICBsZXQgZGF0YTogQnVmZmVyW10gfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgICh7IGRhdGEgfSA9IHV0eG9saWIucGF5bWVudHMuZW1iZWQoeyBvdXRwdXQ6IHNjcmlwdCB9KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YS5tYXAoKGJ1ZiwgaSkgPT4ge1xuICAgICAgbGV0IHV0Zjg7XG4gICAgICB0cnkge1xuICAgICAgICB1dGY4ID0gYnVmLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubm9kZShgT1BfUkVUVVJOICR7aX1gLCBgJHtidWYubGVuZ3RofSBieXRlc2AsIFtcbiAgICAgICAgdGhpcy5ub2RlKCdoZXgnLCBidWYpLFxuICAgICAgICAuLi4odXRmOCAmJiBpc1ByaW50YWJsZSh1dGY4KSA/IFt0aGlzLm5vZGUoJ3V0ZjgnLCB1dGY4KV0gOiBbXSksXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlT3V0cHV0U2NyaXB0KGJ1ZmZlcjogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdzY3JpcHRQdWJLZXknLCBgWyR7YnVmZmVyLmxlbmd0aH1ieXRlXWAsIFtcbiAgICAgICAgdGhpcy5ub2RlKCd0eXBlJywgdXR4b2xpYi5jbGFzc2lmeS5vdXRwdXQoYnVmZmVyKSksXG4gICAgICAgIHRoaXMubm9kZSgnaGV4JywgYnVmZmVyLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICAgIHRoaXMubm9kZSgnYXNtJywgdXR4b2xpYi5zY3JpcHQudG9BU00oYnVmZmVyKSwgdGhpcy50cnlQYXJzZU9wUmV0dXJuKGJ1ZmZlcikpLFxuICAgICAgXSksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlQmFzZTU4KGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGJzNTguZGVjb2RlKGFkZHJlc3MpO1xuICAgIHJldHVybiBbdGhpcy5ub2RlKCdwYXlsb2FkJywgcGF5bG9hZCldO1xuICB9XG5cbiAgcGFyc2VCYXNlNThDaGVjayhhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBiczU4Y2hlY2suZGVjb2RlKGFkZHJlc3MpO1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoJ3BheWxvYWQnLCBwYXlsb2FkKSxcbiAgICAgIHRoaXMubm9kZSgndmVyc2lvbicsIHBheWxvYWQucmVhZFVJbnQ4KDApLnRvU3RyaW5nKCcxNicpKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzaCcsIHBheWxvYWQuc2xpY2UoMSkpLFxuICAgIF07XG4gIH1cblxuICBwYXJzZVdpdGhCZWNoTGliKGJlY2hsaWI6IGJlY2gzMi5CZWNoTGliLCBhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IGRlY29kZWQgPSBiZWNobGliLmRlY29kZShhZGRyZXNzKTtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdwcmVmaXgnLCBkZWNvZGVkLnByZWZpeCksXG4gICAgICB0aGlzLm5vZGUoJ3dvcmRzJywgQnVmZmVyLmZyb20oZGVjb2RlZC53b3JkcykpLFxuICAgICAgdGhpcy5ub2RlKCdieXRlcycsIEJ1ZmZlci5mcm9tKGJlY2hsaWIuZnJvbVdvcmRzKGRlY29kZWQud29yZHMpKSksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlQmVjaDMyKGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VXaXRoQmVjaExpYihiZWNoMzIuYmVjaDMyLCBhZGRyZXNzKTtcbiAgfVxuXG4gIHBhcnNlQmVjaDMybShhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiB0aGlzLnBhcnNlV2l0aEJlY2hMaWIoYmVjaDMyLmJlY2gzMm0sIGFkZHJlc3MpO1xuICB9XG5cbiAgcGFyc2VDYXNoYWRkcihhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBjYXNoYWRkcmVzcy5kZWNvZGUoYWRkcmVzcyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMubm9kZSgncHJlZml4JywgcGF5bG9hZC5wcmVmaXgpLFxuICAgICAgdGhpcy5ub2RlKCd2ZXJzaW9uJywgcGF5bG9hZC52ZXJzaW9uKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzaCcsIHBheWxvYWQuaGFzaCksXG4gICAgXTtcbiAgfVxuXG4gIGNvbnZlcnQob3V0cHV0U2NyaXB0OiBCdWZmZXIpOiBQYXJzZXJOb2RlIHtcbiAgICBmdW5jdGlvbiBnZXRXaWR0aChsaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoLi4ubGlzdC5tYXAoKHMpID0+IHMubGVuZ3RoKSk7XG4gICAgfVxuICAgIGNvbnN0IG5ldHdvcmtXaXRoID0gZ2V0V2lkdGgoZ2V0TmV0d29ya0xpc3QoKS5tYXAoZ2V0TmV0d29ya05hbWUpKTtcbiAgICBjb25zdCBhZGRyZXNzRm9ybWF0V2l0aCA9IGdldFdpZHRoKHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5hZGRyZXNzRm9ybWF0cyk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICdjb252ZXJ0ZWQnLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZ2V0TmV0d29ya0xpc3QoKS5mbGF0TWFwKChuZXR3b3JrKSA9PlxuICAgICAgICB1dHhvbGliLmFkZHJlc3NGb3JtYXQuYWRkcmVzc0Zvcm1hdHNcbiAgICAgICAgICAuZmlsdGVyKChmKSA9PiB1dHhvbGliLmFkZHJlc3NGb3JtYXQuaXNTdXBwb3J0ZWRBZGRyZXNzRm9ybWF0KGYsIG5ldHdvcmspKVxuICAgICAgICAgIC5tYXAoKGFkZHJlc3NGb3JtYXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gYCR7Z2V0TmV0d29ya05hbWUobmV0d29yaykucGFkRW5kKG5ldHdvcmtXaXRoKX0gJHthZGRyZXNzRm9ybWF0LnBhZEVuZChhZGRyZXNzRm9ybWF0V2l0aCl9YDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgdXR4b2xpYi5hZGRyZXNzRm9ybWF0LmZyb21PdXRwdXRTY3JpcHRXaXRoRm9ybWF0KG91dHB1dFNjcmlwdCwgYWRkcmVzc0Zvcm1hdCwgbmV0d29yaylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZShsYWJlbCwgJ3VuZGVmaW5lZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlVG9CeXRlcyhpbnB1dDogc3RyaW5nKTogUGFyc2VyTm9kZVtdIHtcbiAgICB0eXBlIERlY29kZXIgPSAoYWRkcmVzczogc3RyaW5nKSA9PiBQYXJzZXJOb2RlW107XG4gICAgY29uc3QgZGVjb2RlV2l0aCA9IChuYW1lOiBzdHJpbmcsIGRlY29kZXI6IERlY29kZXIpOiBQYXJzZXJOb2RlW10gPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLm5vZGUobmFtZSwgdW5kZWZpbmVkLCBkZWNvZGVyKGlucHV0KSldO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJhbXMuYWxsID8gW3RoaXMubm9kZShuYW1lLCB1bmRlZmluZWQsIFt0aGlzLm5vZGUoJ2RlY29kZUVycm9yJywgU3RyaW5nKGUpKV0pXSA6IFtdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uZGVjb2RlV2l0aCgnYmFzZTU4JywgdGhpcy5wYXJzZUJhc2U1OC5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2Jhc2U1OENoZWNrJywgdGhpcy5wYXJzZUJhc2U1OENoZWNrLmJpbmQodGhpcykpLFxuICAgICAgLi4uZGVjb2RlV2l0aCgnYmVjaDMyJywgdGhpcy5wYXJzZUJlY2gzMi5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2JlY2gzMm0nLCB0aGlzLnBhcnNlQmVjaDMybS5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2Nhc2hhZGRyJywgdGhpcy5wYXJzZUNhc2hhZGRyLmJpbmQodGhpcykpLFxuICAgIF07XG4gIH1cblxuICBwYXJzZShpbnB1dDogc3RyaW5nKTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3QgbmV0d29ya3MgPSB0aGlzLnBhcmFtcy5uZXR3b3JrID8gW3RoaXMucGFyYW1zLm5ldHdvcmtdIDogZ2V0TmV0d29ya0xpc3QoKTtcblxuICAgIHR5cGUgTWF0Y2ggPSB7XG4gICAgICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcms7XG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBhZGRyZXNzRm9ybWF0OiB1dHhvbGliLmFkZHJlc3NGb3JtYXQuQWRkcmVzc0Zvcm1hdDtcbiAgICAgIGJ1ZmZlcjogQnVmZmVyO1xuICAgIH07XG4gICAgY29uc3QgbWF0Y2hlczogTWF0Y2hbXSA9IG5ldHdvcmtzLmZsYXRNYXAoKG5ldHdvcmspID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IFthZGRyZXNzRm9ybWF0LCBidWZmZXJdID0gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LnRvT3V0cHV0U2NyaXB0QW5kRm9ybWF0KGlucHV0LCBuZXR3b3JrKTtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5mcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChidWZmZXIsIGFkZHJlc3NGb3JtYXQsIG5ldHdvcmspO1xuICAgICAgICByZXR1cm4gW3sgbmV0d29yaywgYWRkcmVzcywgYWRkcmVzc0Zvcm1hdCwgYnVmZmVyIH1dO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZmlyc3RNYXRjaCA9IG1hdGNoZXNbMF07XG4gICAgY29uc3Qgbm9kZXM6IFBhcnNlck5vZGVbXSA9IFtdO1xuXG4gICAgbm9kZXMucHVzaCguLi50aGlzLnBhcnNlVG9CeXRlcyhpbnB1dCkpO1xuXG4gICAgaWYgKGZpcnN0TWF0Y2gpIHtcbiAgICAgIGlmIChpbnB1dCAhPT0gZmlyc3RNYXRjaC5hZGRyZXNzKSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdub3JtYWxpemVkJywgZmlyc3RNYXRjaC5hZGRyZXNzLCB0aGlzLnBhcnNlVG9CeXRlcyhmaXJzdE1hdGNoLmFkZHJlc3MpKSk7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdmb3JtYXQnLCBmaXJzdE1hdGNoLmFkZHJlc3NGb3JtYXQpKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdvdXRwdXRTY3JpcHQnLCBmaXJzdE1hdGNoLmJ1ZmZlciwgdGhpcy5wYXJzZU91dHB1dFNjcmlwdChmaXJzdE1hdGNoLmJ1ZmZlcikpKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCduZXR3b3JrJywgbWF0Y2hlcy5tYXAoKG0pID0+IGdldE5ldHdvcmtOYW1lKG0ubmV0d29yaykpLmpvaW4oJywgJykpKTtcblxuICAgICAgaWYgKHRoaXMucGFyYW1zLmFsbCB8fCB0aGlzLnBhcmFtcy5jb252ZXJ0KSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5jb252ZXJ0KGZpcnN0TWF0Y2guYnVmZmVyKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZSgnYWRkcmVzcycsIGlucHV0LCBub2Rlcyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { Parser, ParserNode } from './Parser';
3
+ import { ParserTx } from './ParserTx';
4
+ import { HollowSegwitSpend } from './hollowSegwitSpend';
5
+ import { ChainInfo } from './TxParser';
6
+ type ParsedSignatureScript = utxolib.bitgo.ParsedSignatureScriptP2ms | utxolib.bitgo.ParsedSignatureScriptP2shP2pk | utxolib.bitgo.ParsedSignatureScriptTaproot | utxolib.bitgo.ParsedPsbtP2ms | utxolib.bitgo.ParsedPsbtP2shP2pk | utxolib.bitgo.ParsedPsbtTaproot | HollowSegwitSpend;
7
+ export declare class InputParser extends Parser {
8
+ private txid;
9
+ private tx;
10
+ private inputIndex;
11
+ private chainInfo;
12
+ private params;
13
+ private input;
14
+ constructor(txid: string, tx: ParserTx, inputIndex: number, chainInfo: ChainInfo, params: {
15
+ parseOutputScript: boolean;
16
+ parseScriptAsm: boolean;
17
+ parseScriptData: boolean;
18
+ parseSignatureData: {
19
+ script: boolean;
20
+ ecdsa: boolean;
21
+ schnorr: boolean;
22
+ };
23
+ parseError?: 'throw' | 'continue';
24
+ });
25
+ parseScriptAsm(type: string, part: Buffer, i: number, n: number): string | undefined;
26
+ parseScriptParts(type: string, parts: Array<Buffer | number>): ParserNode[];
27
+ parseInputScript(buffer: Buffer | undefined): ParserNode;
28
+ parseWitness(script: Buffer[] | undefined): ParserNode;
29
+ parsePubkeys(parsed: ParsedSignatureScript): ParserNode;
30
+ parseSignatureBuffer(type: utxolib.bitgo.outputScripts.ScriptType2Of3 | utxolib.bitgo.ParsedScriptType2Of3 | utxolib.bitgo.outputScripts.ScriptTypeP2shP2pk, buf: Buffer | 0, signerIndex: number | undefined): ParserNode[];
31
+ parseSignaturesWithSigners(parsed: {
32
+ scriptType: utxolib.bitgo.outputScripts.ScriptType2Of3 | utxolib.bitgo.outputScripts.ScriptTypeP2shP2pk | utxolib.bitgo.ParsedScriptType2Of3;
33
+ signatures: (Buffer | 0)[];
34
+ }, signedByLabels: string[] | undefined, signerIndex: number[] | undefined): ParserNode[];
35
+ parseSignatures(parsed: ParsedSignatureScript): ParserNode;
36
+ parseSigScriptWithType(parsed: ParsedSignatureScript): ParserNode;
37
+ parseSigScript(): ParserNode;
38
+ parsePrevOut(prevOutput: utxolib.TxOutput<bigint> | utxolib.bitgo.PsbtInput): ParserNode[];
39
+ parsePsbtInput(input: utxolib.bitgo.PsbtInput): ParserNode[];
40
+ parseInput(): ParserNode;
41
+ }
42
+ export {};
43
+ //# sourceMappingURL=InputParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputParser.d.ts","sourceRoot":"","sources":["../../src/InputParser.ts"],"names":[],"mappings":"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"}