@bitgo-beta/sdk-coin-xtz 1.4.3-alpha.404 → 1.4.3-alpha.405

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"offlineTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../test/unit/offlineTransactionBuilder.ts"],"names":[],"mappings":""}
@@ -1,291 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const should_1 = __importDefault(require("should"));
7
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
- const statics_1 = require("@bitgo-beta/statics");
9
- const src_1 = require("../../src");
10
- const nock_1 = __importDefault(require("nock"));
11
- const sdk_test_1 = require("@bitgo-beta/sdk-test");
12
- const sdk_api_1 = require("@bitgo-beta/sdk-api");
13
- const fixtures_1 = require("../fixtures");
14
- describe('Offline Tezos Transaction builder', function () {
15
- let bitgo;
16
- before(() => {
17
- bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
18
- bitgo.safeRegister('txtz', src_1.Txtz.createInstance);
19
- });
20
- const defaultKeyPair = new src_1.XtzLib.KeyPair({
21
- prv: 'xprv9s21ZrQH143K3D8TXfvAJgHVfTEeQNW5Ys9wZtnUZkqPzFzSjbEJrWC1vZ4GnXCvR7rQL2UFX3RSuYeU9MrERm1XBvACow7c36vnz5iYyj2',
22
- });
23
- describe('should build and sign', () => {
24
- const baseUrl = sdk_core_1.common.Environments.test.xtzExplorerBaseUrl;
25
- it('an init transaction', async () => {
26
- const txBuilder = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
27
- txBuilder.type(sdk_core_1.TransactionType.WalletInitialization);
28
- txBuilder.fee({
29
- fee: '4764',
30
- gasLimit: '33971',
31
- storageLimit: '1292',
32
- });
33
- txBuilder.source(defaultKeyPair.getAddress());
34
- txBuilder.initialBalance('1000000');
35
- txBuilder.counter('0');
36
- txBuilder.owner('sppk7ZWB8diU2TWehxdkWCV2DTFvn1hPz4qLjiD3nJQozKnoSEnSC8b');
37
- txBuilder.owner('sppk7Zq9KPtwkzkgAsha4jU29C43McgP2skK56tjd7KJjhcmH6AZC1F');
38
- txBuilder.owner('sppk7d2ztzbrLdBaTB7yzaWRkPfcWGsrNQNJdkBE9bCTSSzekLNzpvf');
39
- txBuilder.branch('BM8QdZ92VyaH1s5nwAF9rUXjiPZ3g3Nsn6oYbdKqj2RgHxvWXVS');
40
- const tx = await txBuilder.build();
41
- tx.id.should.equal('');
42
- tx.type.should.equal(sdk_core_1.TransactionType.WalletInitialization);
43
- tx.source.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
44
- should_1.default.equal(tx.inputs.length, 1);
45
- should_1.default.equal(tx.outputs.length, 1);
46
- tx.inputs[0].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
47
- tx.inputs[0].value.should.equal('1004764');
48
- tx.outputs[0].address.should.equal('');
49
- tx.outputs[0].value.should.equal('1000000');
50
- tx.signature.length.should.equal(0);
51
- const offlineTxBuilder = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
52
- offlineTxBuilder.from(tx.toBroadcastFormat());
53
- offlineTxBuilder.source(defaultKeyPair.getAddress());
54
- offlineTxBuilder.sign({ key: defaultKeyPair.getKeys().prv });
55
- const signedTx = await offlineTxBuilder.build();
56
- signedTx.id.should.equal('opNfjjEfWk7HsnY8fQrUoPFuXZfABweubA6D4bVScmqoVzcZVFA');
57
- signedTx.type.should.equal(sdk_core_1.TransactionType.WalletInitialization);
58
- should_1.default.equal(signedTx.inputs.length, 1);
59
- should_1.default.equal(signedTx.outputs.length, 1);
60
- signedTx.inputs[0].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
61
- signedTx.inputs[0].value.should.equal('1004764');
62
- signedTx.outputs[0].address.should.equal('KT1J9LfhDV6FQxR7aMaK7R6Rw8mBpfhP5MA3');
63
- signedTx.outputs[0].value.should.equal('1000000');
64
- signedTx.signature.length.should.equal(1);
65
- signedTx.signature[0].should.equal('sigVD57haAMCobHrCwH9ABfbFvdmyR9ZspZC3Zihb9tEPfhtzCKS1F8fLoVpodvor3PUoo7ry4j46xYETEzELmtnrNTaTPX4');
66
- });
67
- it('a reveal transaction', async () => {
68
- const txBuilder = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
69
- txBuilder.type(sdk_core_1.TransactionType.AccountUpdate);
70
- txBuilder.source(defaultKeyPair.getAddress());
71
- txBuilder.counter('0');
72
- txBuilder.branch('BM8QdZ92VyaH1s5nwAF9rUXjiPZ3g3Nsn6oYbdKqj2RgHxvWXVS');
73
- txBuilder.publicKeyToReveal(defaultKeyPair.getKeys().pub);
74
- const tx = await txBuilder.build();
75
- tx.id.should.equal('');
76
- tx.type.should.equal(sdk_core_1.TransactionType.AccountUpdate);
77
- tx.source.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
78
- should_1.default.equal(tx.inputs.length, 1);
79
- should_1.default.equal(tx.outputs.length, 0);
80
- tx.inputs[0].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
81
- tx.inputs[0].value.should.equal('1420');
82
- const offlineTxBuilder = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
83
- offlineTxBuilder.from(tx.toBroadcastFormat());
84
- offlineTxBuilder.source(defaultKeyPair.getAddress());
85
- offlineTxBuilder.sign({ key: defaultKeyPair.getKeys().prv });
86
- const signedTx = await offlineTxBuilder.build();
87
- signedTx.id.should.equal('oomXs6PuWtmGwMKoXTNsu9XJHnGXtuRujcHMeYS9y37Xj6sXPHb');
88
- signedTx.type.should.equal(sdk_core_1.TransactionType.AccountUpdate);
89
- signedTx.source.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
90
- should_1.default.equal(signedTx.inputs.length, 1);
91
- should_1.default.equal(signedTx.outputs.length, 0);
92
- signedTx.inputs[0].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
93
- signedTx.inputs[0].value.should.equal('1420');
94
- signedTx.signature.length.should.equal(1);
95
- signedTx.signature[0].should.equal('sigQyYsfhtrJBKZuJSEizDdxoejNVvJWRZPDMWdpXVvdTVix37HzURwXfXsi9METnRzskvjgsBSgiF4pr7RVxzWLuixxJL8U');
96
- });
97
- it('a send transaction to single destinations', async () => {
98
- const testDataToSign = '0507070a000000160196369c90625575ba44594b23794832a9337f7a2d0007070000050502000000320320053d036d0743035d0a00000015006b5ddaef3fb5d7c151cfb36fbe43a7a066777394031e0743036a0001034f034d031b';
99
- const txBuilder = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
100
- txBuilder.type(sdk_core_1.TransactionType.Send);
101
- txBuilder.branch('BM8QdZ92VyaH1s5nwAF9rUXjiPZ3g3Nsn6oYbdKqj2RgHxvWXVS');
102
- txBuilder.counter('0');
103
- txBuilder.source(defaultKeyPair.getAddress());
104
- txBuilder
105
- .transfer('100')
106
- .from('KT1NH2M23xovhw7uwWVuoGTYxykeCcVfSqhL')
107
- .to('KT1HUrt6kfvYyDEYCJ2GSjvTPZ6KmRfxLBU8')
108
- .fee('4764')
109
- .counter('1');
110
- const tx = await txBuilder.build();
111
- tx.toBroadcastFormat().should.equal('ba7a04fab1a3f77eda96b551947dd343e165d1b91b6f9f806648b63e57c88cc86c01aaca87bdbcdc4e6117b667e29f9b504362c831bb9c2500e8528102000196369c90625575ba44594b23794832a9337f7a2d00ffff046d61696e000000760707070700010505020000005e0320053d036d0743036e01000000244b543148557274366b66765979444559434a3247536a7654505a364b6d5266784c4255380555036c0200000015072f02000000090200000004034f032702000000000743036a00a401034f034d031b0200000006030603060306');
112
- // Offline signing from location 1 with a transfer key
113
- const offlineTxBuilder1 = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
114
- offlineTxBuilder1.from(tx.toBroadcastFormat());
115
- offlineTxBuilder1.source(defaultKeyPair.getAddress());
116
- // Since dataToSign cannot me calculated, it has to be passed to the new builder so we can
117
- // generate the signatures
118
- offlineTxBuilder1.overrideDataToSign({ dataToSign: testDataToSign });
119
- offlineTxBuilder1.sign({
120
- key: new src_1.XtzLib.KeyPair({ prv: 'spsk2cbiVsAvpGKmau9XcMscL3NRwjkyT575N5AyAofcoj41x6g6TL' }).getKeys().prv,
121
- });
122
- const signedTx1 = await offlineTxBuilder1.build();
123
- // Offline signing from location 2 with another transfer key
124
- const offlineTxBuilder2 = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
125
- offlineTxBuilder2.from(signedTx1.toBroadcastFormat());
126
- offlineTxBuilder2.source(defaultKeyPair.getAddress());
127
- offlineTxBuilder2.overrideDataToSign({ dataToSign: testDataToSign });
128
- offlineTxBuilder2.sign({ key: new src_1.XtzLib.KeyPair({ seed: Buffer.alloc(16) }).getKeys().prv });
129
- const signedTx2 = await offlineTxBuilder2.build();
130
- // Offline signing from location 3 with the fee key
131
- const offlineTxBuilder3 = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
132
- offlineTxBuilder3.from(signedTx2.toBroadcastFormat());
133
- offlineTxBuilder3.source(defaultKeyPair.getAddress());
134
- offlineTxBuilder3.sign({ key: defaultKeyPair.getKeys().prv });
135
- const signedTx = await offlineTxBuilder3.build();
136
- signedTx.id.should.equal('onkHwfuYJMrtxNdyL6eHeNEHuE1n5HPH75CXUNh91agjbQAxwzT');
137
- signedTx.type.should.equal(sdk_core_1.TransactionType.Send);
138
- should_1.default.equal(signedTx.inputs.length, 2);
139
- should_1.default.equal(signedTx.outputs.length, 1);
140
- signedTx.inputs[0].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
141
- signedTx.inputs[0].value.should.equal('4764');
142
- signedTx.inputs[1].address.should.equal('KT1NH2M23xovhw7uwWVuoGTYxykeCcVfSqhL');
143
- signedTx.inputs[1].value.should.equal('100');
144
- signedTx.outputs[0].address.should.equal('KT1HUrt6kfvYyDEYCJ2GSjvTPZ6KmRfxLBU8');
145
- signedTx.outputs[0].value.should.equal('100');
146
- signedTx.signature.length.should.equal(1);
147
- signedTx.signature[0].should.equal('sigd8B36JUVyDqpCvV1GtbLpP398gpmwfxvGQM6eQ45JG5z4LgDRX55YPAPTMW2pAciwaA3jv8wgyxR9cnEjsCFs1QRPfQ9G');
148
- signedTx
149
- .toBroadcastFormat()
150
- .should.equal('ba7a04fab1a3f77eda96b551947dd343e165d1b91b6f9f806648b63e57c88cc86c01aaca87bdbcdc4e6117b667e29f9b504362c831bb9c2500e8528102000196369c90625575ba44594b23794832a9337f7a2d00ffff046d61696e000001400707070700010505020000005e0320053d036d0743036e01000000244b543148557274366b66765979444559434a3247536a7654505a364b6d5266784c4255380555036c0200000015072f02000000090200000004034f032702000000000743036a00a401034f034d031b02000000d0050901000000607369674e6a4436344e75566e554b376f56423263325350333256596a376454796b626e527879446f5339424776676167766e4d6354346859636361626246476f397464565154344d3436657a594a644c32707a594453776b665236797270705905090100000060736967596656594a5561694b4b5a58347a737a575a3752463239326e56325036584d346e4b656b325967575138424c533172323275346139534376474d63623839426a546674546e327667557a435451475332634a4e766259747547516a4750030673b1393fbda4f24e07958136dc7951e0d020748e54bd29b847323ef2bc85c399657f4359fc10a13e5afe7b7068b584ea2e578736250881481e212e9793bfbf88');
151
- });
152
- it('a send transaction to multiple destinations', async () => {
153
- const testDataToSign = '0507070a000000160196369c90625575ba44594b23794832a9337f7a2d0007070000050502000000320320053d036d0743035d0a00000015006b5ddaef3fb5d7c151cfb36fbe43a7a066777394031e0743036a0001034f034d031b';
154
- const txBuilder = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
155
- txBuilder.type(sdk_core_1.TransactionType.Send);
156
- txBuilder.branch('BM8QdZ92VyaH1s5nwAF9rUXjiPZ3g3Nsn6oYbdKqj2RgHxvWXVS');
157
- txBuilder.counter('0');
158
- txBuilder.source(defaultKeyPair.getAddress());
159
- txBuilder
160
- .transfer('100')
161
- .from('KT1NH2M23xovhw7uwWVuoGTYxykeCcVfSqhL')
162
- .to('KT1HUrt6kfvYyDEYCJ2GSjvTPZ6KmRfxLBU8')
163
- .fee('4764')
164
- .counter('1');
165
- txBuilder
166
- .transfer('100')
167
- .from('KT1NH2M23xovhw7uwWVuoGTYxykeCcVfSqhL')
168
- .to('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A')
169
- .fee('4764')
170
- .counter('2');
171
- const tx = await txBuilder.build();
172
- tx.toBroadcastFormat().should.equal('ba7a04fab1a3f77eda96b551947dd343e165d1b91b6f9f806648b63e57c88cc86c01aaca87bdbcdc4e6117b667e29f9b504362c831bb9c2500e8528102000196369c90625575ba44594b23794832a9337f7a2d00ffff046d61696e000000760707070700010505020000005e0320053d036d0743036e01000000244b543148557274366b66765979444559434a3247536a7654505a364b6d5266784c4255380555036c0200000015072f02000000090200000004034f032702000000000743036a00a401034f034d031b02000000060306030603066c01aaca87bdbcdc4e6117b667e29f9b504362c831bb9c2501e8528102000196369c90625575ba44594b23794832a9337f7a2d00ffff046d61696e0000005a070707070002050502000000420320053d036d0743035d0100000024747a3156526a5270564b6e76313641567072464831746b446e3454446656714138393341031e0743036a00a401034f034d031b0200000006030603060306');
173
- // Offline signing from location 1 with a transfer key
174
- const offlineTxBuilder1 = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
175
- offlineTxBuilder1.from(tx.toBroadcastFormat());
176
- offlineTxBuilder1.source(defaultKeyPair.getAddress());
177
- // Since dataToSign cannot me calculated, it has to be passed to the new builder so we can
178
- // generate the signatures
179
- offlineTxBuilder1.overrideDataToSign({ dataToSign: testDataToSign, index: 0 });
180
- offlineTxBuilder1.overrideDataToSign({ dataToSign: testDataToSign, index: 1 });
181
- offlineTxBuilder1.sign({
182
- key: new src_1.XtzLib.KeyPair({ prv: 'spsk2cbiVsAvpGKmau9XcMscL3NRwjkyT575N5AyAofcoj41x6g6TL' }).getKeys().prv,
183
- });
184
- const signedTx1 = await offlineTxBuilder1.build();
185
- // Offline signing from location 2 with another transfer key
186
- const offlineTxBuilder2 = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
187
- offlineTxBuilder2.from(signedTx1.toBroadcastFormat());
188
- offlineTxBuilder2.source(defaultKeyPair.getAddress());
189
- offlineTxBuilder2.overrideDataToSign({ dataToSign: testDataToSign, index: 0 });
190
- offlineTxBuilder2.overrideDataToSign({ dataToSign: testDataToSign, index: 1 });
191
- offlineTxBuilder2.sign({ key: new src_1.XtzLib.KeyPair({ seed: Buffer.alloc(16) }).getKeys().prv, index: 1 });
192
- const signedTx2 = await offlineTxBuilder2.build();
193
- // Offline signing from location 3 with the fee key
194
- const offlineTxBuilder3 = new src_1.XtzLib.TransactionBuilder(statics_1.coins.get('xtz'));
195
- offlineTxBuilder3.from(signedTx2.toBroadcastFormat());
196
- offlineTxBuilder3.source(defaultKeyPair.getAddress());
197
- offlineTxBuilder3.sign({ key: defaultKeyPair.getKeys().prv });
198
- const signedTx = await offlineTxBuilder3.build();
199
- signedTx.id.should.equal('onyGaWs6z4bVVcfn3h9KbBrktEhuDyJLYEVB4aJRM6YNngjDxE4');
200
- signedTx.type.should.equal(sdk_core_1.TransactionType.Send);
201
- signedTx.source.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
202
- should_1.default.equal(signedTx.inputs.length, 4);
203
- should_1.default.equal(signedTx.outputs.length, 2);
204
- signedTx.inputs[0].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
205
- signedTx.inputs[0].value.should.equal('4764');
206
- signedTx.inputs[1].address.should.equal('KT1NH2M23xovhw7uwWVuoGTYxykeCcVfSqhL');
207
- signedTx.inputs[1].value.should.equal('100');
208
- signedTx.inputs[2].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
209
- signedTx.inputs[2].value.should.equal('4764');
210
- signedTx.inputs[3].address.should.equal('KT1NH2M23xovhw7uwWVuoGTYxykeCcVfSqhL');
211
- signedTx.inputs[3].value.should.equal('100');
212
- signedTx.outputs[0].address.should.equal('KT1HUrt6kfvYyDEYCJ2GSjvTPZ6KmRfxLBU8');
213
- signedTx.outputs[0].value.should.equal('100');
214
- signedTx.outputs[1].address.should.equal('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A');
215
- signedTx.outputs[1].value.should.equal('100');
216
- signedTx.signature.length.should.equal(1);
217
- signedTx.signature[0].should.equal('sigdUpzCxmi9NWhdbFGfvqVyH8Xfr2UiPc2fkqNrQ4CHvrk19ZDksDksEc4DJsTbphenV8jCNZFqzL4sCVRzM93HnSSqgJz7');
218
- const firstTransferSignatures = signedTx.getTransferSignatures();
219
- firstTransferSignatures.length.should.equal(2);
220
- firstTransferSignatures[0].signature.should.equal('sigNjD64NuVnUK7oVB2c2SP32VYj7dTykbnRxyDoS9BGvgagvnMcT4hYccabbFGo9tdVQT4M46ezYJdL2pzYDSwkfR6yrppY');
221
- firstTransferSignatures[0].index.should.equal(0);
222
- firstTransferSignatures[1].signature.should.equal('sigYfVYJUaiKKZX4zszWZ7RF292nV2P6XM4nKek2YgWQ8BLS1r22u4a9SCvGMcb89BjTftTn2vgUzCTQGS2cJNvbYtuGQjGP');
223
- firstTransferSignatures[1].index.should.equal(1);
224
- // Note: Signatures are the same here because the data to sign used in the test is the same
225
- const secondTransferSignatures = signedTx.getTransferSignatures(1);
226
- secondTransferSignatures.length.should.equal(2);
227
- secondTransferSignatures[0].signature.should.equal('sigNjD64NuVnUK7oVB2c2SP32VYj7dTykbnRxyDoS9BGvgagvnMcT4hYccabbFGo9tdVQT4M46ezYJdL2pzYDSwkfR6yrppY');
228
- secondTransferSignatures[0].index.should.equal(0);
229
- secondTransferSignatures[1].signature.should.equal('sigYfVYJUaiKKZX4zszWZ7RF292nV2P6XM4nKek2YgWQ8BLS1r22u4a9SCvGMcb89BjTftTn2vgUzCTQGS2cJNvbYtuGQjGP');
230
- secondTransferSignatures[1].index.should.equal(1);
231
- signedTx
232
- .toBroadcastFormat()
233
- .should.equal('ba7a04fab1a3f77eda96b551947dd343e165d1b91b6f9f806648b63e57c88cc86c01aaca87bdbcdc4e6117b667e29f9b504362c831bb9c2500e8528102000196369c90625575ba44594b23794832a9337f7a2d00ffff046d61696e000001400707070700010505020000005e0320053d036d0743036e01000000244b543148557274366b66765979444559434a3247536a7654505a364b6d5266784c4255380555036c0200000015072f02000000090200000004034f032702000000000743036a00a401034f034d031b02000000d0050901000000607369674e6a4436344e75566e554b376f56423263325350333256596a376454796b626e527879446f5339424776676167766e4d6354346859636361626246476f397464565154344d3436657a594a644c32707a594453776b665236797270705905090100000060736967596656594a5561694b4b5a58347a737a575a3752463239326e56325036584d346e4b656b325967575138424c533172323275346139534376474d63623839426a546674546e327667557a435451475332634a4e766259747547516a475003066c01aaca87bdbcdc4e6117b667e29f9b504362c831bb9c2501e8528102000196369c90625575ba44594b23794832a9337f7a2d00ffff046d61696e00000124070707070002050502000000420320053d036d0743035d0100000024747a3156526a5270564b6e76313641567072464831746b446e3454446656714138393341031e0743036a00a401034f034d031b02000000d0050901000000607369674e6a4436344e75566e554b376f56423263325350333256596a376454796b626e527879446f5339424776676167766e4d6354346859636361626246476f397464565154344d3436657a594a644c32707a594453776b665236797270705905090100000060736967596656594a5561694b4b5a58347a737a575a3752463239326e56325036584d346e4b656b325967575138424c533172323275346139534376474d63623839426a546674546e327667557a435451475332634a4e766259747547516a47500306766a0b1f6cb035bf537887ba9004c489bb458d8c8e72b5033b6cee8ad52f84ec27b719f5d0b98cdf2d0744b255301263688692645eafc9cdf1b48b5053c51dca');
234
- });
235
- it('should build a fully signed recovery transaction', async function () {
236
- const basecoin = bitgo.coin('txtz');
237
- const params = fixtures_1.paramsDetailsForRecovery;
238
- (0, nock_1.default)(baseUrl).get(`/v1/accounts/${params.walletContractAddress}`).times(1).reply(200, fixtures_1.contractAddressDetails);
239
- (0, nock_1.default)(baseUrl).get(`/v1/accounts/${params.feeAddress}`).times(1).reply(200, fixtures_1.feeAddressDetails);
240
- (0, nock_1.default)(baseUrl).get(`/v1/head`).times(1).reply(200, fixtures_1.chainheadData);
241
- (0, nock_1.default)(baseUrl).get(`/v1/contracts/${params.walletContractAddress}`).times(2).reply(200, fixtures_1.contractAddressDetails2);
242
- (0, nock_1.default)(sdk_core_1.common.Environments.test.xtzRpcUrl)
243
- .post(`/chains/main/blocks/head/helpers/scripts/pack_data`, fixtures_1.dataToPack)
244
- .times(1)
245
- .reply(200, fixtures_1.packDataToSign);
246
- const consolidationResult = await basecoin.recover({
247
- userKey: params.userKey,
248
- backupKey: params.backupKey, // Box B Data
249
- recoveryDestination: params.recoveryDestination, // Destination Address
250
- walletContractAddress: params.walletContractAddress,
251
- walletPassphrase: params.walletPassphrase,
252
- });
253
- should_1.default.exist(consolidationResult);
254
- consolidationResult.id.should.equal('opNrMMvnmQ6cE9JqRD8g14B6XfwGEUs7L9Bgn9qEkTtLeFEX9Tk');
255
- consolidationResult.tx.should.equal('ed8f6833f4db890c1f923d51074aa7b3982f7281f42da80212b819ad68c223776b01c62f80a80ce748a8b5ffcf97004b9807cb59b0b78c0bc1f5851ae852000102e8c94e3e18d8a493a2f0baa81eb0ab7fac5d23fe672f9133048ebc8cccc6f5066c01c62f80a80ce748a8b5ffcf97004b9807cb59b0b798f402c2f5851af02eac020001bda70b50cf607aee95c10322a8bff9fc4df50f8500ffff046d61696e0000005f070707070081eb8b34050502000000440320053d036d0743035d0100000024747a3252746e76454c564157356455547473424e47366362534132655146695974345270031e0743036a009482fd11034f034d031b020000000603060306030661836db09de792bfba0cb422fbb61c77b77fd80e22386cc9d7380fb7da67347f594bd8d809bfaf3d1ff172b329263ac1ad9ef2e3eacf1a199f918e33c2bd4adb');
256
- });
257
- it('should build an unsigned recovery transaction', async function () {
258
- const basecoin = bitgo.coin('txtz');
259
- const params = fixtures_1.paramsDetailsForUnsignedSweepRecovery;
260
- (0, nock_1.default)(baseUrl)
261
- .get(`/v1/accounts/${params.walletContractAddress}`)
262
- .times(1)
263
- .reply(200, fixtures_1.unsignedSweepContractDetails);
264
- (0, nock_1.default)(baseUrl).get(`/v1/accounts/${params.feeAddress}`).times(1).reply(200, fixtures_1.unsignedSweepFeeAddressDetails);
265
- (0, nock_1.default)(baseUrl).get(`/v1/head`).times(1).reply(200, fixtures_1.chainheadData);
266
- (0, nock_1.default)(baseUrl)
267
- .get(`/v1/contracts/${params.walletContractAddress}`)
268
- .times(2)
269
- .reply(200, fixtures_1.unsignedSweepContractDetails2);
270
- (0, nock_1.default)(sdk_core_1.common.Environments.test.xtzRpcUrl)
271
- .post(`/chains/main/blocks/head/helpers/scripts/pack_data`, fixtures_1.unsignedSweepDataToPack)
272
- .times(1)
273
- .reply(200, fixtures_1.unsignedSweepPackDataToSign);
274
- const consolidationResult = await basecoin.recover({
275
- userKey: params.userKey,
276
- backupKey: params.backupKey, // Box B Data
277
- recoveryDestination: params.recoveryDestination, // Destination Address
278
- walletContractAddress: params.walletContractAddress,
279
- isUnsignedSweep: true,
280
- });
281
- should_1.default.exist(consolidationResult);
282
- consolidationResult.txHex.should.equal('ed8f6833f4db890c1f923d51074aa7b3982f7281f42da80212b819ad68c223776b01b6da9737d1b4b75053a387d9122c22598ead2d3d8c0bcfda9c1ae852000102f1eb6b09e45afffb3aca4215637edf54d2ea3c4491726128ce5a6071a57dac0e6c01b6da9737d1b4b75053a387d9122c22598ead2d3d98f402d0da9c1af02eac020001ea4d295f3387e9efbf6d791475cb936839eb8d5800ffff046d61696e0000005e07070707008fb5b934050502000000430320053d036d0743035d0100000024747a3252746e76454c564157356455547473424e47366362534132655146695974345270031e0743036a0080897a034f034d031b0200000006030603060306');
283
- consolidationResult.source.should.equal('KT1Vwe7wFy6JmspMv4UmFFJU3JLtbfghBTBM');
284
- consolidationResult.dataToSign.should.equal('0507070a0000001601ea4d295f3387e9efbf6d791475cb936839eb8d58000707008fb5b934050502000000340320053d036d0743035d0a0000001501c0d2caabc69b734fc54453ba5fab901b4fbec41b031e0743036a0080897a034f034d031b');
285
- consolidationResult.txInfo.branch.should.equal('BMWuVUCyg5gruMRzhsQMPkF47WEG8Z2BgSxfBnoLBvzvq977XPi');
286
- consolidationResult.sourceCounter.should.equal('54996303');
287
- consolidationResult.transferCounters[0].should.equal('54996303');
288
- });
289
- });
290
- });
291
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZVRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9vZmZsaW5lVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLG1EQUErRDtBQUMvRCxpREFBNEM7QUFDNUMsbUNBQThDO0FBQzlDLGdEQUF3QjtBQUN4QixtREFBK0Q7QUFDL0QsaURBQStDO0FBQy9DLDBDQWNxQjtBQUVyQixRQUFRLENBQUMsbUNBQW1DLEVBQUU7SUFDNUMsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDVixLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sY0FBYyxHQUFHLElBQUksWUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN4QyxHQUFHLEVBQUUsaUhBQWlIO0tBQ3ZILENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7UUFDckMsTUFBTSxPQUFPLEdBQUcsaUJBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUE0QixDQUFDO1FBQ3RFLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNuQyxNQUFNLFNBQVMsR0FBUSxJQUFJLFlBQU0sQ0FBQyxrQkFBa0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkUsU0FBUyxDQUFDLElBQUksQ0FBQywwQkFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDckQsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFD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Q0FBQztZQUNqRCxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUNyRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6QyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDaEYsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDaEYsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDaEYsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDaEYsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENB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cmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHh0eiwgWHR6LCBYdHpMaWIgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IG5vY2sgZnJvbSAnbm9jayc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQge1xuICBjaGFpbmhlYWREYXRhLFxuICBjb250cmFjdEFkZHJlc3NEZXRhaWxzLFxuICBjb250cmFjdEFkZHJlc3NEZXRhaWxzMixcbiAgZGF0YVRvUGFjayxcbiAgZmVlQWRkcmVzc0RldGFpbHMsXG4gIHBhY2tEYXRhVG9TaWduLFxuICBwYXJhbXNEZXRhaWxzRm9yUmVjb3ZlcnksXG4gIHBhcmFtc0RldGFpbHNGb3JVbnNpZ25lZFN3ZWVwUmVjb3ZlcnksXG4gIHVuc2lnbmVkU3dlZXBDb250cmFjdERldGFpbHMsXG4gIHVuc2lnbmVkU3dlZXBDb250cmFjdERldGFpbHMyLFxuICB1bnNpZ25lZFN3ZWVwRGF0YVRvUGFjayxcbiAgdW5zaWduZWRTd2VlcEZlZUFkZHJlc3NEZXRhaWxzLFxuICB1bnNpZ25lZFN3ZWVwUGFja0RhdGFUb1NpZ24sXG59IGZyb20gJy4uL2ZpeHR1cmVzJztcblxuZGVzY3JpYmUoJ09mZmxpbmUgVGV6b3MgVHJhbnNhY3Rpb24gYnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGJlZm9yZSgoKSA9PiB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0eHR6JywgVHh0ei5jcmVhdGVJbnN0YW5jZSk7XG4gIH0pO1xuICBjb25zdCBkZWZhdWx0S2V5UGFpciA9IG5ldyBYdHpMaWIuS2V5UGFpcih7XG4gICAgcHJ2OiAneHBydjlzMjFaclFIMTQzSzNEOFRYZnZBSmdIVmZURWVRTlc1WXM5d1p0blVaa3FQekZ6U2piRUpyV0Mxdlo0R25YQ3ZSN3JRTDJVRlgzUlN1WWVVOU1yRVJtMVhCdkFDb3c3YzM2dm56NWlZeWoyJyxcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBidWlsZCBhbmQgc2lnbicsICgpID0+IHtcbiAgICBjb25zdCBiYXNlVXJsID0gY29tbW9uLkVudmlyb25tZW50cy50ZXN0Lnh0ekV4cGxvcmVyQmFzZVVybCBhcyBzdHJpbmc7XG4gICAgaXQoJ2FuIGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoe1xuICAgICAgICBmZWU6ICc0NzY0JyxcbiAgICAgICAgZ2FzTGltaXQ6ICczMzk3MScsXG4gICAgICAgIHN0b3JhZ2VMaW1pdDogJzEyOTInLFxuICAgICAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXIuaW5pdGlhbEJhbGFuY2UoJzEwMDAwMDAnKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3WldCOGRpVTJUV2VoeGRrV0NWMkRURnZuMWhQejRxTGppRDNuSlFvektub1NFblNDOGInKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcignc3BwazdacTlLUHR3a3prZ0FzaGE0alUyOUM0M01jZ1Ayc2tLNTZ0amQ3S0pqaGNtSDZBWkMxRicpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyKCdzcHBrN2QyenR6YnJMZEJhVEI3eXphV1JrUGZjV0dzck5RTkpka0JFOWJDVFNTemVrTE56cHZmJyk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCgnJyk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHguc291cmNlLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0cy5sZW5ndGgsIDEpO1xuICAgICAgdHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDQ3NjQnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJycpO1xuICAgICAgdHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAnKTtcbiAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuXG4gICAgICBjb25zdCBvZmZsaW5lVHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICBvZmZsaW5lVHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBjb25zdCBzaWduZWRUeCA9IGF3YWl0IG9mZmxpbmVUeEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgc2lnbmVkVHguaWQuc2hvdWxkLmVxdWFsKCdvcE5mampFZldrN0hzblk4ZlFyVW9QRnVYWmZBQndldWJBNkQ0YlZTY21xb1Z6Y1pWRkEnKTtcbiAgICAgIHNpZ25lZFR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHgub3V0cHV0cy5sZW5ndGgsIDEpO1xuICAgICAgc2lnbmVkVHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNpZ25lZFR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDQ3NjQnKTtcbiAgICAgIHNpZ25lZFR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMUo5TGZoRFY2RlF4UjdhTWFLN1I2Unc4bUJwZmhQNU1BMycpO1xuICAgICAgc2lnbmVkVHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAnKTtcbiAgICAgIHNpZ25lZFR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc2lnbmVkVHguc2lnbmF0dXJlWzBdLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ1ZENTdoYUFNQ29iSHJDd0g5QUJmYkZ2ZG15Ujlac3BaQzNaaWhiOXRFUGZodHpDS1MxRjhmTG9WcG9kdm9yM1BVb283cnk0ajQ2eFlFVEV6RUxtdG5yTlRhVFBYNCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSByZXZlYWwgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkFjY291bnRVcGRhdGUpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgdHhCdWlsZGVyLnB1YmxpY0tleVRvUmV2ZWFsKGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wdWIpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKCcnKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50VXBkYXRlKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAwKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxNDIwJyk7XG5cbiAgICAgIGNvbnN0IG9mZmxpbmVUeEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgb2ZmbGluZVR4QnVpbGRlci5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgb2ZmbGluZVR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgb2ZmbGluZVR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBzaWduZWRUeC5pZC5zaG91bGQuZXF1YWwoJ29vbVhzNlB1V3RtR3dNS29YVE5zdTlYSkhuR1h0dVJ1amNITWVZUzl5MzdYajZzWFBIYicpO1xuICAgICAgc2lnbmVkVHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkFjY291bnRVcGRhdGUpO1xuICAgICAgc2lnbmVkVHguc291cmNlLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHgub3V0cHV0cy5sZW5ndGgsIDApO1xuICAgICAgc2lnbmVkVHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNpZ25lZFR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzE0MjAnKTtcbiAgICAgIHNpZ25lZFR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc2lnbmVkVHguc2lnbmF0dXJlWzBdLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ1F5WXNmaHRySkJLWnVKU0VpekRkeG9lak5WdkpXUlpQRE1XZHBYVnZkVFZpeDM3SHpVUndYZlhzaTlNRVRuUnpza3ZqZ3NCU2dpRjRwcjdSVnh6V0x1aXh4Skw4VSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBzZW5kIHRyYW5zYWN0aW9uIHRvIHNpbmdsZSBkZXN0aW5hdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXN0RGF0YVRvU2lnbiA9XG4gICAgICAgICcwNTA3MDcwYTAwMDAwMDE2MDE5NjM2OWM5MDYyNTU3NWJhNDQ1OTRiMjM3OTQ4MzJhOTMzN2Y3YTJkMDAwNzA3MDAwMDA1MDUwMjAwMDAwMDMyMDMyMDA1M2QwMzZkMDc0MzAzNWQwYTAwMDAwMDE1MDA2YjVkZGFlZjNmYjVkN2MxNTFjZmIzNmZiZTQzYTdhMDY2Nzc3Mzk0MDMxZTA3NDMwMzZhMDAwMTAzNGYwMzRkMDMxYic7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQk04UWRaOTJWeWFIMXM1bndBRjlyVVhqaVBaM2czTnNuNm9ZYmRLcWoyUmdIeHZXWFZTJyk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMCcpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC50cmFuc2ZlcignMTAwJylcbiAgICAgICAgLmZyb20oJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpXG4gICAgICAgIC50bygnS1QxSFVydDZrZnZZeURFWUNKMkdTanZUUFo2S21SZnhMQlU4JylcbiAgICAgICAgLmZlZSgnNDc2NCcpXG4gICAgICAgIC5jb3VudGVyKCcxJyk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdiYTdhMDRmYWIxYTNmNzdlZGE5NmI1NTE5NDdkZDM0M2UxNjVkMWI5MWI2ZjlmODA2NjQ4YjYzZTU3Yzg4Y2M4NmMwMWFhY2E4N2JkYmNkYzRlNjExN2I2NjdlMjlmOWI1MDQzNjJjODMxYmI5YzI1MDBlODUyODEwMjAwMDE5NjM2OWM5MDYyNTU3NWJhNDQ1OTRiMjM3OTQ4MzJhOTMzN2Y3YTJkMDBmZmZmMDQ2ZDYxNjk2ZTAwMDAwMDc2MDcwNzA3MDcwMDAxMDUwNTAyMDAwMDAwNWUwMzIwMDUzZDAzNmQwNzQzMDM2ZTAxMDAwMDAwMjQ0YjU0MzE0ODU1NzI3NDM2NmI2Njc2NTk3OTQ0NDU1OTQzNGEzMjQ3NTM2YTc2NTQ1MDVhMzY0YjZkNTI2Njc4NGM0MjU1MzgwNTU1MDM2YzAyMDAwMDAwMTUwNzJmMDIwMDAwMDAwOTAyMDAwMDAwMDQwMzRmMDMyNzAyMDAwMDAwMDAwNzQzMDM2YTAwYTQwMTAzNGYwMzRkMDMxYjAyMDAwMDAwMDYwMzA2MDMwNjAzMDYnXG4gICAgICApO1xuXG4gICAgICAvLyBPZmZsaW5lIHNpZ25pbmcgZnJvbSBsb2NhdGlvbiAxIHdpdGggYSB0cmFuc2ZlciBrZXlcbiAgICAgIGNvbnN0IG9mZmxpbmVUeEJ1aWxkZXIxOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIxLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBvZmZsaW5lVHhCdWlsZGVyMS5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIC8vIFNpbmNlIGRhdGFUb1NpZ24gY2Fubm90IG1lIGNhbGN1bGF0ZWQsIGl0IGhhcyB0byBiZSBwYXNzZWQgdG8gdGhlIG5ldyBidWlsZGVyIHNvIHdlIGNhblxuICAgICAgLy8gZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZXNcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIxLm92ZXJyaWRlRGF0YVRvU2lnbih7IGRhdGFUb1NpZ246IHRlc3REYXRhVG9TaWduIH0pO1xuICAgICAgb2ZmbGluZVR4QnVpbGRlcjEuc2lnbih7XG4gICAgICAgIGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHJ2OiAnc3BzazJjYmlWc0F2cEdLbWF1OVhjTXNjTDNOUndqa3lUNTc1TjVBeUFvZmNvajQxeDZnNlRMJyB9KS5nZXRLZXlzKCkucHJ2LFxuICAgICAgfSk7XG4gICAgICBjb25zdCBzaWduZWRUeDEgPSBhd2FpdCBvZmZsaW5lVHhCdWlsZGVyMS5idWlsZCgpO1xuXG4gICAgICAvLyBPZmZsaW5lIHNpZ25pbmcgZnJvbSBsb2NhdGlvbiAyIHdpdGggYW5vdGhlciB0cmFuc2ZlciBrZXlcbiAgICAgIGNvbnN0IG9mZmxpbmVUeEJ1aWxkZXIyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIyLmZyb20oc2lnbmVkVHgxLnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgb2ZmbGluZVR4QnVpbGRlcjIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICBvZmZsaW5lVHhCdWlsZGVyMi5vdmVycmlkZURhdGFUb1NpZ24oeyBkYXRhVG9TaWduOiB0ZXN0RGF0YVRvU2lnbiB9KTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcih7IHNlZWQ6IEJ1ZmZlci5hbGxvYygxNikgfSkuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGNvbnN0IHNpZ25lZFR4MiA9IGF3YWl0IG9mZmxpbmVUeEJ1aWxkZXIyLmJ1aWxkKCk7XG5cbiAgICAgIC8vIE9mZmxpbmUgc2lnbmluZyBmcm9tIGxvY2F0aW9uIDMgd2l0aCB0aGUgZmVlIGtleVxuICAgICAgY29uc3Qgb2ZmbGluZVR4QnVpbGRlcjM6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgb2ZmbGluZVR4QnVpbGRlcjMuZnJvbShzaWduZWRUeDIudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBvZmZsaW5lVHhCdWlsZGVyMy5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIzLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBjb25zdCBzaWduZWRUeCA9IGF3YWl0IG9mZmxpbmVUeEJ1aWxkZXIzLmJ1aWxkKCk7XG5cbiAgICAgIHNpZ25lZFR4LmlkLnNob3VsZC5lcXVhbCgnb25rSHdmdVlKTXJ0eE5keUw2ZUhlTkVIdUUxbjVIUEg3NUNYVU5oOTFhZ2piUUF4d3pUJyk7XG4gICAgICBzaWduZWRUeC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHguaW5wdXRzLmxlbmd0aCwgMik7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHgub3V0cHV0cy5sZW5ndGgsIDEpO1xuICAgICAgc2lnbmVkVHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNpZ25lZFR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzQ3NjQnKTtcbiAgICAgIHNpZ25lZFR4LmlucHV0c1sxXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJyk7XG4gICAgICBzaWduZWRUeC5pbnB1dHNbMV0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAnKTtcbiAgICAgIHNpZ25lZFR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMUhVcnQ2a2Z2WXlERVlDSjJHU2p2VFBaNkttUmZ4TEJVOCcpO1xuICAgICAgc2lnbmVkVHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMCcpO1xuICAgICAgc2lnbmVkVHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzaWduZWRUeC5zaWduYXR1cmVbMF0uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnZDhCMzZKVVZ5RHFwQ3ZWMUd0YkxwUDM5OGdwbXdmeHZHUU02ZVE0NUpHNXo0TGdEUlg1NVlQQVBUTVcycEFjaXdhQTNqdjh3Z3l4UjljbkVqc0NGczFRUlBmUTlHJ1xuICAgICAgKTtcbiAgICAgIHNpZ25lZFR4XG4gICAgICAgIC50b0Jyb2FkY2FzdEZvcm1hdCgpXG4gICAgICAgIC5zaG91bGQuZXF1YWwoXG4gICAgICAgICAgJ2JhN2EwNGZhYjFhM2Y3N2VkYTk2YjU1MTk0N2RkMzQzZTE2NWQxYjkxYjZmOWY4MDY2NDhiNjNlNTdjODhjYzg2YzAxYWFjYTg3YmRiY2RjNGU2MTE3YjY2N2UyOWY5YjUwNDM2MmM4MzFiYjljMjUwMGU4NTI4MTAyMDAwMTk2MzY5YzkwNjI1NTc1YmE0NDU5NGIyMzc5NDgzMmE5MzM3ZjdhMmQwMGZmZmYwNDZkNjE2OTZlMDAwMDAxNDAwNzA3MDcwNzAwMDEwNTA1MDIwMDAwMDA1ZTAzMjAwNTNkMDM2ZDA3NDMwMzZlMDEwMDAwMDAyNDRiNTQzMTQ4NTU3Mjc0MzY2YjY2NzY1OTc5NDQ0NTU5NDM0YTMyNDc1MzZhNzY1NDUwNWEzNjRiNmQ1MjY2Nzg0YzQyNTUzODA1NTUwMzZjMDIwMDAwMDAxNTA3MmYwMjAwMDAwMDA5MDIwMDAwMDAwNDAzNGYwMzI3MDIwMDAwMDAwMDA3NDMwMzZhMDBhNDAxMDM0ZjAzNGQwMzFiMDIwMDAwMDBkMDA1MDkwMTAwMDAwMDYwNzM2OTY3NGU2YTQ0MzYzNDRlNzU1NjZlNTU0YjM3NmY1NjQyMzI2MzMyNTM1MDMzMzI1NjU5NmEzNzY0NTQ3OTZiNjI2ZTUyNzg3OTQ0NmY1MzM5NDI0Nzc2Njc2MTY3NzY2ZTRkNjM1NDM0Njg1OTYzNjM2MTYyNjI0NjQ3NmYzOTc0NjQ1NjUxNTQzNDRkMzQzNjY1N2E1OTRhNjQ0YzMyNzA3YTU5NDQ1Mzc3NmI2NjUyMzY3OTcyNzA3MDU5MDUwOTAxMDAwMDAwNjA3MzY5Njc1OTY2NTY1OTRhNTU2MTY5NGI0YjVhNTgzNDdhNzM3YTU3NWEzNzUyNDYzMjM5MzI2ZTU2MzI1MDM2NTg0ZDM0NmU0YjY1NmIzMjU5Njc1NzUxMzg0MjRjNTMzMTcyMzIzMjc1MzQ2MTM5NTM0Mzc2NDc0ZDYzNjIzODM5NDI2YTU0NjY3NDU0NmUzMjc2Njc1NTdhNDM1NDUxNDc1MzMyNjM0YTRlNzY2MjU5NzQ3NTQ3NTE2YTQ3NTAwMzA2NzNiMTM5M2ZiZGE0ZjI0ZTA3OTU4MTM2ZGM3OTUxZTBkMDIwNzQ4ZTU0YmQyOWI4NDczMjNlZjJiYzg1YzM5OTY1N2Y0MzU5ZmMxMGExM2U1YWZlN2I3MDY4YjU4NGVhMmU1Nzg3MzYyNTA4ODE0ODFlMjEyZTk3OTNiZmJmODgnXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBzZW5kIHRyYW5zYWN0aW9uIHRvIG11bHRpcGxlIGRlc3RpbmF0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3REYXRhVG9TaWduID1cbiAgICAgICAgJzA1MDcwNzBhMDAwMDAwMTYwMTk2MzY5YzkwNjI1NTc1YmE0NDU5NGIyMzc5NDgzMmE5MzM3ZjdhMmQwMDA3MDcwMDAwMDUwNTAyMDAwMDAwMzIwMzIwMDUzZDAzNmQwNzQzMDM1ZDBhMDAwMDAwMTUwMDZiNWRkYWVmM2ZiNWQ3YzE1MWNmYjM2ZmJlNDNhN2EwNjY3NzczOTQwMzFlMDc0MzAzNmEwMDAxMDM0ZjAzNGQwMzFiJztcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnRyYW5zZmVyKCcxMDAnKVxuICAgICAgICAuZnJvbSgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJylcbiAgICAgICAgLnRvKCdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnKVxuICAgICAgICAuZmVlKCc0NzY0JylcbiAgICAgICAgLmNvdW50ZXIoJzEnKTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudHJhbnNmZXIoJzEwMCcpXG4gICAgICAgIC5mcm9tKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKVxuICAgICAgICAudG8oJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpXG4gICAgICAgIC5mZWUoJzQ3NjQnKVxuICAgICAgICAuY291bnRlcignMicpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnYmE3YTA0ZmFiMWEzZjc3ZWRhOTZiNTUxOTQ3ZGQzNDNlMTY1ZDFiOTFiNmY5ZjgwNjY0OGI2M2U1N2M4OGNjODZjMDFhYWNhODdiZGJjZGM0ZTYxMTdiNjY3ZTI5ZjliNTA0MzYyYzgzMWJiOWMyNTAwZTg1MjgxMDIwMDAxOTYzNjljOTA2MjU1NzViYTQ0NTk0YjIzNzk0ODMyYTkzMzdmN2EyZDAwZmZmZjA0NmQ2MTY5NmUwMDAwMDA3NjA3MDcwNzA3MDAwMTA1MDUwMjAwMDAwMDVlMDMyMDA1M2QwMzZkMDc0MzAzNmUwMTAwMDAwMDI0NGI1NDMxNDg1NTcyNzQzNjZiNjY3NjU5Nzk0NDQ1NTk0MzRhMzI0NzUzNmE3NjU0NTA1YTM2NGI2ZDUyNjY3ODRjNDI1NTM4MDU1NTAzNmMwMjAwMDAwMDE1MDcyZjAyMDAwMDAwMDkwMjAwMDAwMDA0MDM0ZjAzMjcwMjAwMDAwMDAwMDc0MzAzNmEwMGE0MDEwMzRmMDM0ZDAzMWIwMjAwMDAwMDA2MDMwNjAzMDYwMzA2NmMwMWFhY2E4N2JkYmNkYzRlNjExN2I2NjdlMjlmOWI1MDQzNjJjODMxYmI5YzI1MDFlODUyODEwMjAwMDE5NjM2OWM5MDYyNTU3NWJhNDQ1OTRiMjM3OTQ4MzJhOTMzN2Y3YTJkMDBmZmZmMDQ2ZDYxNjk2ZTAwMDAwMDVhMDcwNzA3MDcwMDAyMDUwNTAyMDAwMDAwNDIwMzIwMDUzZDAzNmQwNzQzMDM1ZDAxMDAwMDAwMjQ3NDdhMzE1NjUyNmE1MjcwNTY0YjZlNzYzMTM2NDE1NjcwNzI0NjQ4MzE3NDZiNDQ2ZTM0NTQ0NDY2NTY3MTQxMzgzOTMzNDEwMzFlMDc0MzAzNmEwMGE0MDEwMzRmMDM0ZDAzMWIwMjAwMDAwMDA2MDMwNjAzMDYwMzA2J1xuICAgICAgKTtcblxuICAgICAgLy8gT2ZmbGluZSBzaWduaW5nIGZyb20gbG9jYXRpb24gMSB3aXRoIGEgdHJhbnNmZXIga2V5XG4gICAgICBjb25zdCBvZmZsaW5lVHhCdWlsZGVyMTogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICBvZmZsaW5lVHhCdWlsZGVyMS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgb2ZmbGluZVR4QnVpbGRlcjEuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICAvLyBTaW5jZSBkYXRhVG9TaWduIGNhbm5vdCBtZSBjYWxjdWxhdGVkLCBpdCBoYXMgdG8gYmUgcGFzc2VkIHRvIHRoZSBuZXcgYnVpbGRlciBzbyB3ZSBjYW5cbiAgICAgIC8vIGdlbmVyYXRlIHRoZSBzaWduYXR1cmVzXG4gICAgICBvZmZsaW5lVHhCdWlsZGVyMS5vdmVycmlkZURhdGFUb1NpZ24oeyBkYXRhVG9TaWduOiB0ZXN0RGF0YVRvU2lnbiwgaW5kZXg6IDAgfSk7XG4gICAgICBvZmZsaW5lVHhCdWlsZGVyMS5vdmVycmlkZURhdGFUb1NpZ24oeyBkYXRhVG9TaWduOiB0ZXN0RGF0YVRvU2lnbiwgaW5kZXg6IDEgfSk7XG4gICAgICBvZmZsaW5lVHhCdWlsZGVyMS5zaWduKHtcbiAgICAgICAga2V5OiBuZXcgWHR6TGliLktleVBhaXIoeyBwcnY6ICdzcHNrMmNiaVZzQXZwR0ttYXU5WGNNc2NMM05Sd2preVQ1NzVONUF5QW9mY29qNDF4Nmc2VEwnIH0pLmdldEtleXMoKS5wcnYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNpZ25lZFR4MSA9IGF3YWl0IG9mZmxpbmVUeEJ1aWxkZXIxLmJ1aWxkKCk7XG5cbiAgICAgIC8vIE9mZmxpbmUgc2lnbmluZyBmcm9tIGxvY2F0aW9uIDIgd2l0aCBhbm90aGVyIHRyYW5zZmVyIGtleVxuICAgICAgY29uc3Qgb2ZmbGluZVR4QnVpbGRlcjI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgb2ZmbGluZVR4QnVpbGRlcjIuZnJvbShzaWduZWRUeDEudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBvZmZsaW5lVHhCdWlsZGVyMi5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIyLm92ZXJyaWRlRGF0YVRvU2lnbih7IGRhdGFUb1NpZ246IHRlc3REYXRhVG9TaWduLCBpbmRleDogMCB9KTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIyLm92ZXJyaWRlRGF0YVRvU2lnbih7IGRhdGFUb1NpZ246IHRlc3REYXRhVG9TaWduLCBpbmRleDogMSB9KTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcih7IHNlZWQ6IEJ1ZmZlci5hbGxvYygxNikgfSkuZ2V0S2V5cygpLnBydiwgaW5kZXg6IDEgfSk7XG4gICAgICBjb25zdCBzaWduZWRUeDIgPSBhd2FpdCBvZmZsaW5lVHhCdWlsZGVyMi5idWlsZCgpO1xuXG4gICAgICAvLyBPZmZsaW5lIHNpZ25pbmcgZnJvbSBsb2NhdGlvbiAzIHdpdGggdGhlIGZlZSBrZXlcbiAgICAgIGNvbnN0IG9mZmxpbmVUeEJ1aWxkZXIzOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIG9mZmxpbmVUeEJ1aWxkZXIzLmZyb20oc2lnbmVkVHgyLnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgb2ZmbGluZVR4QnVpbGRlcjMuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICBvZmZsaW5lVHhCdWlsZGVyMy5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCBvZmZsaW5lVHhCdWlsZGVyMy5idWlsZCgpO1xuXG4gICAgICBzaWduZWRUeC5pZC5zaG91bGQuZXF1YWwoJ29ueUdhV3M2ejRiVlZjZm4zaDlLYkJya3RFaHVEeUpMWUVWQjRhSlJNNllObmdqRHhFNCcpO1xuICAgICAgc2lnbmVkVHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgc2lnbmVkVHguc291cmNlLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHguaW5wdXRzLmxlbmd0aCwgNCk7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHgub3V0cHV0cy5sZW5ndGgsIDIpO1xuICAgICAgc2lnbmVkVHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNpZ25lZFR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzQ3NjQnKTtcbiAgICAgIHNpZ25lZFR4LmlucHV0c1sxXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJyk7XG4gICAgICBzaWduZWRUeC5pbnB1dHNbMV0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAnKTtcbiAgICAgIHNpZ25lZFR4LmlucHV0c1syXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICBzaWduZWRUeC5pbnB1dHNbMl0udmFsdWUuc2hvdWxkLmVxdWFsKCc0NzY0Jyk7XG4gICAgICBzaWduZWRUeC5pbnB1dHNbM10uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpO1xuICAgICAgc2lnbmVkVHguaW5wdXRzWzNdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwJyk7XG4gICAgICBzaWduZWRUeC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnKTtcbiAgICAgIHNpZ25lZFR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAnKTtcbiAgICAgIHNpZ25lZFR4Lm91dHB1dHNbMV0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpO1xuICAgICAgc2lnbmVkVHgub3V0cHV0c1sxXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMCcpO1xuICAgICAgc2lnbmVkVHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzaWduZWRUeC5zaWduYXR1cmVbMF0uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnZFVwekN4bWk5TldoZGJGR2Z2cVZ5SDhYZnIyVWlQYzJma3FOclE0Q0h2cmsxOVpEa3NEa3NFYzRESnNUYnBoZW5WOGpDTlpGcXpMNHNDVlJ6TTkzSG5TU3FnSno3J1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGZpcnN0VHJhbnNmZXJTaWduYXR1cmVzID0gc2lnbmVkVHguZ2V0VHJhbnNmZXJTaWduYXR1cmVzKCk7XG4gICAgICBmaXJzdFRyYW5zZmVyU2lnbmF0dXJlcy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgZmlyc3RUcmFuc2ZlclNpZ25hdHVyZXNbMF0uc2lnbmF0dXJlLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ05qRDY0TnVWblVLN29WQjJjMlNQMzJWWWo3ZFR5a2JuUnh5RG9TOUJHdmdhZ3ZuTWNUNGhZY2NhYmJGR285dGRWUVQ0TTQ2ZXpZSmRMMnB6WURTd2tmUjZ5cnBwWSdcbiAgICAgICk7XG4gICAgICBmaXJzdFRyYW5zZmVyU2lnbmF0dXJlc1swXS5pbmRleC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBmaXJzdFRyYW5zZmVyU2lnbmF0dXJlc1sxXS5zaWduYXR1cmUuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnWWZWWUpVYWlLS1pYNHpzeldaN1JGMjkyblYyUDZYTTRuS2VrMllnV1E4QkxTMXIyMnU0YTlTQ3ZHTWNiODlCalRmdFRuMnZnVXpDVFFHUzJjSk52Yll0dUdRakdQJ1xuICAgICAgKTtcbiAgICAgIGZpcnN0VHJhbnNmZXJTaWduYXR1cmVzWzFdLmluZGV4LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIC8vIE5vdGU6IFNpZ25hdHVyZXMgYXJlIHRoZSBzYW1lIGhlcmUgYmVjYXVzZSB0aGUgZGF0YSB0byBzaWduIHVzZWQgaW4gdGhlIHRlc3QgaXMgdGhlIHNhbWVcbiAgICAgIGNvbnN0IHNlY29uZFRyYW5zZmVyU2lnbmF0dXJlcyA9IHNpZ25lZFR4LmdldFRyYW5zZmVyU2lnbmF0dXJlcygxKTtcbiAgICAgIHNlY29uZFRyYW5zZmVyU2lnbmF0dXJlcy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgc2Vjb25kVHJhbnNmZXJTaWduYXR1cmVzWzBdLnNpZ25hdHVyZS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdOakQ2NE51Vm5VSzdvVkIyYzJTUDMyVllqN2RUeWtiblJ4eURvUzlCR3ZnYWd2bk1jVDRoWWNjYWJiRkdvOXRkVlFUNE00NmV6WUpkTDJwellEU3drZlI2eXJwcFknXG4gICAgICApO1xuICAgICAgc2Vjb25kVHJhbnNmZXJTaWduYXR1cmVzWzBdLmluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHNlY29uZFRyYW5zZmVyU2lnbmF0dXJlc1sxXS5zaWduYXR1cmUuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnWWZWWUpVYWlLS1pYNHpzeldaN1JGMjkyblYyUDZYTTRuS2VrMllnV1E4QkxTMXIyMnU0YTlTQ3ZHTWNiODlCalRmdFRuMnZnVXpDVFFHUzJjSk52Yll0dUdRakdQJ1xuICAgICAgKTtcbiAgICAgIHNlY29uZFRyYW5zZmVyU2lnbmF0dXJlc1sxXS5pbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzaWduZWRUeFxuICAgICAgICAudG9Ccm9hZGNhc3RGb3JtYXQoKVxuICAgICAgICAuc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICdiYTdhMDRmYWIxYTNmNzdlZGE5NmI1NTE5NDdkZDM0M2UxNjVkMWI5MWI2ZjlmODA2NjQ4YjYzZTU3Yzg4Y2M4NmMwMWFhY2E4N2JkYmNkYzRlNjExN2I2NjdlMjlmOWI1MDQzNjJjODMxYmI5YzI1MDBlODUyODEwMjAwMDE5NjM2OWM5MDYyNTU3NWJhNDQ1OTRiMjM3OTQ4MzJhOTMzN2Y3YTJkMDBmZmZmMDQ2ZDYxNjk2ZTAwMDAwMTQwMDcwNzA3MDcwMDAxMDUwNTAyMDAwMDAwNWUwMzIwMDUzZDAzNmQwNzQzMDM2ZTAxMDAwMDAwMjQ0YjU0MzE0ODU1NzI3NDM2NmI2Njc2NTk3OTQ0NDU1OTQzNGEzMjQ3NTM2YTc2NTQ1MDVhMzY0YjZkNTI2Njc4NGM0MjU1MzgwNTU1MDM2YzAyMDAwMDAwMTUwNzJmMDIwMDAwMDAwOTAyMDAwMDAwMDQwMzRmMDMyNzAyMDAwMDAwMDAwNzQzMDM2YTAwYTQwMTAzNGYwMzRkMDMxYjAyMDAwMDAwZDAwNTA5MDEwMDAwMDA2MDczNjk2NzRlNmE0NDM2MzQ0ZTc1NTY2ZTU1NGIzNzZmNTY0MjMyNjMzMjUzNTAzMzMyNTY1OTZhMzc2NDU0Nzk2YjYyNmU1Mjc4Nzk0NDZmNTMzOTQyNDc3NjY3NjE2Nzc2NmU0ZDYzNTQzNDY4NTk2MzYzNjE2MjYyNDY0NzZmMzk3NDY0NTY1MTU0MzQ0ZDM0MzY2NTdhNTk0YTY0NGMzMjcwN2E1OTQ0NTM3NzZiNjY1MjM2Nzk3MjcwNzA1OTA1MDkwMTAwMDAwMDYwNzM2OTY3NTk2NjU2NTk0YTU1NjE2OTRiNGI1YTU4MzQ3YTczN2E1NzVhMzc1MjQ2MzIzOTMyNmU1NjMyNTAzNjU4NGQzNDZlNGI2NTZiMzI1OTY3NTc1MTM4NDI0YzUzMzE3MjMyMzI3NTM0NjEzOTUzNDM3NjQ3NGQ2MzYyMzgzOTQyNmE1NDY2NzQ1NDZlMzI3NjY3NTU3YTQzNTQ1MTQ3NTMzMjYzNGE0ZTc2NjI1OTc0NzU0NzUxNmE0NzUwMDMwNjZjMDFhYWNhODdiZGJjZGM0ZTYxMTdiNjY3ZTI5ZjliNTA0MzYyYzgzMWJiOWMyNTAxZTg1MjgxMDIwMDAxOTYzNjljOTA2MjU1NzViYTQ0NTk0YjIzNzk0ODMyYTkzMzdmN2EyZDAwZmZmZjA0NmQ2MTY5NmUwMDAwMDEyNDA3MDcwNzA3MDAwMjA1MDUwMjAwMDAwMDQyMDMyMDA1M2QwMzZkMDc0MzAzNWQwMTAwMDAwMDI0NzQ3YTMxNTY1MjZhNTI3MDU2NGI2ZTc2MzEzNjQxNTY3MDcyNDY0ODMxNzQ2YjQ0NmUzNDU0NDQ2NjU2NzE0MTM4MzkzMzQxMDMxZTA3NDMwMzZhMDBhNDAxMDM0ZjAzNGQwMzFiMDIwMDAwMDBkMDA1MDkwMTAwMDAwMDYwNzM2OTY3NGU2YTQ0MzYzNDRlNzU1NjZlNTU0YjM3NmY1NjQyMzI2MzMyNTM1MDMzMzI1NjU5NmEzNzY0NTQ3OTZiNjI2ZTUyNzg3OTQ0NmY1MzM5NDI0Nzc2Njc2MTY3NzY2ZTRkNjM1NDM0Njg1OTYzNjM2MTYyNjI0NjQ3NmYzOTc0NjQ1NjUxNTQzNDRkMzQzNjY1N2E1OTRhNjQ0YzMyNzA3YTU5NDQ1Mzc3NmI2NjUyMzY3OTcyNzA3MDU5MDUwOTAxMDAwMDAwNjA3MzY5Njc1OTY2NTY1OTRhNTU2MTY5NGI0YjVhNTgzNDdhNzM3YTU3NWEzNzUyNDYzMjM5MzI2ZTU2MzI1MDM2NTg0ZDM0NmU0YjY1NmIzMjU5Njc1NzUxMzg0MjRjNTMzMTcyMzIzMjc1MzQ2MTM5NTM0Mzc2NDc0ZDYzNjIzODM5NDI2YTU0NjY3NDU0NmUzMjc2Njc1NTdhNDM1NDUxNDc1MzMyNjM0YTRlNzY2MjU5NzQ3NTQ3NTE2YTQ3NTAwMzA2NzY2YTBiMWY2Y2IwMzViZjUzNzg4N2JhOTAwNGM0ODliYjQ1OGQ4YzhlNzJiNTAzM2I2Y2VlOGFkNTJmODRlYzI3YjcxOWY1ZDBiOThjZGYyZDA3NDRiMjU1MzAxMjYzNjg4NjkyNjQ1ZWFmYzljZGYxYjQ4YjUwNTNjNTFkY2EnXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgZnVsbHkgc2lnbmVkIHJlY292ZXJ5IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0eHR6JykgYXMgWHR6O1xuICAgICAgY29uc3QgcGFyYW1zID0gcGFyYW1zRGV0YWlsc0ZvclJlY292ZXJ5O1xuXG4gICAgICBub2NrKGJhc2VVcmwpLmdldChgL3YxL2FjY291bnRzLyR7cGFyYW1zLndhbGxldENvbnRyYWN0QWRkcmVzc31gKS50aW1lcygxKS5yZXBseSgyMDAsIGNvbnRyYWN0QWRkcmVzc0RldGFpbHMpO1xuICAgICAgbm9jayhiYXNlVXJsKS5nZXQoYC92MS9hY2NvdW50cy8ke3BhcmFtcy5mZWVBZGRyZXNzfWApLnRpbWVzKDEpLnJlcGx5KDIwMCwgZmVlQWRkcmVzc0RldGFpbHMpO1xuICAgICAgbm9jayhiYXNlVXJsKS5nZXQoYC92MS9oZWFkYCkudGltZXMoMSkucmVwbHkoMjAwLCBjaGFpbmhlYWREYXRhKTtcbiAgICAgIG5vY2soYmFzZVVybCkuZ2V0KGAvdjEvY29udHJhY3RzLyR7cGFyYW1zLndhbGxldENvbnRyYWN0QWRkcmVzc31gKS50aW1lcygyKS5yZXBseSgyMDAsIGNvbnRyYWN0QWRkcmVzc0RldGFpbHMyKTtcbiAgICAgIG5vY2soY29tbW9uLkVudmlyb25tZW50cy50ZXN0Lnh0elJwY1VybCBhcyBzdHJpbmcpXG4gICAgICAgIC5wb3N0KGAvY2hhaW5zL21haW4vYmxvY2tzL2hlYWQvaGVscGVycy9zY3JpcHRzL3BhY2tfZGF0YWAsIGRhdGFUb1BhY2spXG4gICAgICAgIC50aW1lcygxKVxuICAgICAgICAucmVwbHkoMjAwLCBwYWNrRGF0YVRvU2lnbik7XG5cbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25SZXN1bHQ6IGFueSA9IGF3YWl0IChiYXNlY29pbiBhcyBYdHopLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiBwYXJhbXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBwYXJhbXMuYmFja3VwS2V5LCAvLyBCb3ggQiBEYXRhXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uLCAvLyBEZXN0aW5hdGlvbiBBZGRyZXNzXG4gICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogcGFyYW1zLndhbGxldENvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICB9KTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGNvbnNvbGlkYXRpb25SZXN1bHQpO1xuICAgICAgY29uc29saWRhdGlvblJlc3VsdC5pZC5zaG91bGQuZXF1YWwoJ29wTnJNTXZubVE2Y0U5SnFSRDhnMTRCNlhmd0dFVXM3TDlCZ245cUVrVHRMZUZFWDlUaycpO1xuICAgICAgY29uc29saWRhdGlvblJlc3VsdC50eC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdlZDhmNjgzM2Y0ZGI4OTBjMWY5MjNkNTEwNzRhYTdiMzk4MmY3MjgxZjQyZGE4MDIxMmI4MTlhZDY4YzIyMzc3NmIwMWM2MmY4MGE4MGNlNzQ4YThiNWZmY2Y5NzAwNGI5ODA3Y2I1OWIwYjc4YzBiYzFmNTg1MWFlODUyMDAwMTAyZThjOTRlM2UxOGQ4YTQ5M2EyZjBiYWE4MWViMGFiN2ZhYzVkMjNmZTY3MmY5MTMzMDQ4ZWJjOGNjY2M2ZjUwNjZjMDFjNjJmODBhODBjZTc0OGE4YjVmZmNmOTcwMDRiOTgwN2NiNTliMGI3OThmNDAyYzJmNTg1MWFmMDJlYWMwMjAwMDFiZGE3MGI1MGNmNjA3YWVlOTVjMTAzMjJhOGJmZjlmYzRkZjUwZjg1MDBmZmZmMDQ2ZDYxNjk2ZTAwMDAwMDVmMDcwNzA3MDcwMDgxZWI4YjM0MDUwNTAyMDAwMDAwNDQwMzIwMDUzZDAzNmQwNzQzMDM1ZDAxMDAwMDAwMjQ3NDdhMzI1Mjc0NmU3NjQ1NGM1NjQxNTczNTY0NTU1NDc0NzM0MjRlNDczNjYzNjI1MzQxMzI2NTUxNDY2OTU5NzQzNDUyNzAwMzFlMDc0MzAzNmEwMDk0ODJmZDExMDM0ZjAzNGQwMzFiMDIwMDAwMDAwNjAzMDYwMzA2MDMwNjYxODM2ZGIwOWRlNzkyYmZiYTBjYjQyMmZiYjYxYzc3Yjc3ZmQ4MGUyMjM4NmNjOWQ3MzgwZmI3ZGE2NzM0N2Y1OTRiZDhkODA5YmZhZjNkMWZmMTcyYjMyOTI2M2FjMWFkOWVmMmUzZWFjZjFhMTk5ZjkxOGUzM2MyYmQ0YWRiJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gdW5zaWduZWQgcmVjb3ZlcnkgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBiYXNlY29pbiA9IGJpdGdvLmNvaW4oJ3R4dHonKSBhcyBYdHo7XG4gICAgICBjb25zdCBwYXJhbXMgPSBwYXJhbXNEZXRhaWxzRm9yVW5zaWduZWRTd2VlcFJlY292ZXJ5O1xuXG4gICAgICBub2NrKGJhc2VVcmwpXG4gICAgICAgIC5nZXQoYC92MS9hY2NvdW50cy8ke3BhcmFtcy53YWxsZXRDb250cmFjdEFkZHJlc3N9YClcbiAgICAgICAgLnRpbWVzKDEpXG4gICAgICAgIC5yZXBseSgyMDAsIHVuc2lnbmVkU3dlZXBDb250cmFjdERldGFpbHMpO1xuICAgICAgbm9jayhiYXNlVXJsKS5nZXQoYC92MS9hY2NvdW50cy8ke3BhcmFtcy5mZWVBZGRyZXNzfWApLnRpbWVzKDEpLnJlcGx5KDIwMCwgdW5zaWduZWRTd2VlcEZlZUFkZHJlc3NEZXRhaWxzKTtcbiAgICAgIG5vY2soYmFzZVVybCkuZ2V0KGAvdjEvaGVhZGApLnRpbWVzKDEpLnJlcGx5KDIwMCwgY2hhaW5oZWFkRGF0YSk7XG4gICAgICBub2NrKGJhc2VVcmwpXG4gICAgICAgIC5nZXQoYC92MS9jb250cmFjdHMvJHtwYXJhbXMud2FsbGV0Q29udHJhY3RBZGRyZXNzfWApXG4gICAgICAgIC50aW1lcygyKVxuICAgICAgICAucmVwbHkoMjAwLCB1bnNpZ25lZFN3ZWVwQ29udHJhY3REZXRhaWxzMik7XG4gICAgICBub2NrKGNvbW1vbi5FbnZpcm9ubWVudHMudGVzdC54dHpScGNVcmwgYXMgc3RyaW5nKVxuICAgICAgICAucG9zdChgL2NoYWlucy9tYWluL2Jsb2Nrcy9oZWFkL2hlbHBlcnMvc2NyaXB0cy9wYWNrX2RhdGFgLCB1bnNpZ25lZFN3ZWVwRGF0YVRvUGFjaylcbiAgICAgICAgLnRpbWVzKDEpXG4gICAgICAgIC5yZXBseSgyMDAsIHVuc2lnbmVkU3dlZXBQYWNrRGF0YVRvU2lnbik7XG5cbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25SZXN1bHQ6IGFueSA9IGF3YWl0IChiYXNlY29pbiBhcyBYdHopLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiBwYXJhbXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBwYXJhbXMuYmFja3VwS2V5LCAvLyBCb3ggQiBEYXRhXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uLCAvLyBEZXN0aW5hdGlvbiBBZGRyZXNzXG4gICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogcGFyYW1zLndhbGxldENvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgaXNVbnNpZ25lZFN3ZWVwOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIHNob3VsZC5leGlzdChjb25zb2xpZGF0aW9uUmVzdWx0KTtcbiAgICAgIGNvbnNvbGlkYXRpb25SZXN1bHQudHhIZXguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnZWQ4ZjY4MzNmNGRiODkwYzFmOTIzZDUxMDc0YWE3YjM5ODJmNzI4MWY0MmRhODAyMTJiODE5YWQ2OGMyMjM3NzZiMDFiNmRhOTczN2QxYjRiNzUwNTNhMzg3ZDkxMjJjMjI1OThlYWQyZDNkOGMwYmNmZGE5YzFhZTg1MjAwMDEwMmYxZWI2YjA5ZTQ1YWZmZmIzYWNhNDIxNTYzN2VkZjU0ZDJlYTNjNDQ5MTcyNjEyOGNlNWE2MDcxYTU3ZGFjMGU2YzAxYjZkYTk3MzdkMWI0Yjc1MDUzYTM4N2Q5MTIyYzIyNTk4ZWFkMmQzZDk4ZjQwMmQwZGE5YzFhZjAyZWFjMDIwMDAxZWE0ZDI5NWYzMzg3ZTllZmJmNmQ3OTE0NzVjYjkzNjgzOWViOGQ1ODAwZmZmZjA0NmQ2MTY5NmUwMDAwMDA1ZTA3MDcwNzA3MDA4ZmI1YjkzNDA1MDUwMjAwMDAwMDQzMDMyMDA1M2QwMzZkMDc0MzAzNWQwMTAwMDAwMDI0NzQ3YTMyNTI3NDZlNzY0NTRjNTY0MTU3MzU2NDU1NTQ3NDczNDI0ZTQ3MzY2MzYyNTM0MTMyNjU1MTQ2Njk1OTc0MzQ1MjcwMDMxZTA3NDMwMzZhMDA4MDg5N2EwMzRmMDM0ZDAzMWIwMjAwMDAwMDA2MDMwNjAzMDYwMzA2J1xuICAgICAgKTtcbiAgICAgIGNvbnNvbGlkYXRpb25SZXN1bHQuc291cmNlLnNob3VsZC5lcXVhbCgnS1QxVndlN3dGeTZKbXNwTXY0VW1GRkpVM0pMdGJmZ2hCVEJNJyk7XG4gICAgICBjb25zb2xpZGF0aW9uUmVzdWx0LmRhdGFUb1NpZ24uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnMDUwNzA3MGEwMDAwMDAxNjAxZWE0ZDI5NWYzMzg3ZTllZmJmNmQ3OTE0NzVjYjkzNjgzOWViOGQ1ODAwMDcwNzAwOGZiNWI5MzQwNTA1MDIwMDAwMDAzNDAzMjAwNTNkMDM2ZDA3NDMwMzVkMGEwMDAwMDAxNTAxYzBkMmNhYWJjNjliNzM0ZmM1NDQ1M2JhNWZhYjkwMWI0ZmJlYzQxYjAzMWUwNzQzMDM2YTAwODA4OTdhMDM0ZjAzNGQwMzFiJ1xuICAgICAgKTtcbiAgICAgIGNvbnNvbGlkYXRpb25SZXN1bHQudHhJbmZvLmJyYW5jaC5zaG91bGQuZXF1YWwoJ0JNV3VWVUN5ZzVncnVNUnpoc1FNUGtGNDdXRUc4WjJCZ1N4ZkJub0xCdnp2cTk3N1hQaScpO1xuICAgICAgY29uc29saWRhdGlvblJlc3VsdC5zb3VyY2VDb3VudGVyLnNob3VsZC5lcXVhbCgnNTQ5OTYzMDMnKTtcbiAgICAgIGNvbnNvbGlkYXRpb25SZXN1bHQudHJhbnNmZXJDb3VudGVyc1swXS5zaG91bGQuZXF1YWwoJzU0OTk2MzAzJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=transaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../test/unit/transaction.ts"],"names":[],"mappings":""}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const assert_1 = __importDefault(require("assert"));
7
- const should_1 = __importDefault(require("should"));
8
- const statics_1 = require("@bitgo-beta/statics");
9
- const resources_1 = require("../resources");
10
- const src_1 = require("../../src");
11
- describe('Tezos transaction', function () {
12
- describe('should parse', () => {
13
- it('unsigned transaction', async () => {
14
- const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
15
- await tx.initFromSerializedTransaction(resources_1.unsignedSerializedOriginationTransaction);
16
- should_1.default.equal(tx.inputs.length, 1);
17
- tx.inputs.length.should.equal(1);
18
- tx.inputs[0].address.should.equal('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A');
19
- tx.inputs[0].value.should.equal('1004764');
20
- tx.outputs.length.should.equal(1);
21
- tx.outputs[0].address.should.equal('');
22
- tx.outputs[0].value.should.equal('1000000');
23
- should_1.default.not.exist(tx.delegate);
24
- JSON.stringify(tx.toJson()).should.equal(JSON.stringify(resources_1.parsedTransaction));
25
- tx.toBroadcastFormat().should.equal(resources_1.unsignedSerializedOriginationTransaction);
26
- });
27
- it('signed transaction', async () => {
28
- const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
29
- await tx.initFromSerializedTransaction(resources_1.signedSerializedOriginationTransaction);
30
- should_1.default.equal(tx.inputs.length, 1);
31
- tx.inputs.length.should.equal(1);
32
- tx.inputs[0].address.should.equal('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A');
33
- tx.inputs[0].value.should.equal('1004764');
34
- tx.outputs.length.should.equal(1);
35
- tx.outputs[0].address.should.equal('KT1LJvp55fbdNwbisJFign9wA4cPgq9T9oc4');
36
- tx.outputs[0].value.should.equal('1000000');
37
- should_1.default.not.exist(tx.delegate);
38
- JSON.stringify(tx.toJson()).should.equal(JSON.stringify(resources_1.parsedTransaction));
39
- tx.toBroadcastFormat().should.equal(resources_1.signedSerializedOriginationTransaction);
40
- });
41
- });
42
- describe('should sign', () => {
43
- it('an unsigned origination transaction', async () => {
44
- const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
45
- await tx.initFromSerializedTransaction(resources_1.unsignedSerializedOriginationTransaction);
46
- const signer = new src_1.XtzLib.KeyPair({ prv: 'spsk2cbiVsAvpGKmau9XcMscL3NRwjkyT575N5AyAofcoj41x6g6TL' });
47
- await tx.sign(signer);
48
- should_1.default.equal(tx.inputs.length, 1);
49
- tx.inputs.length.should.equal(1);
50
- tx.inputs[0].address.should.equal('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A');
51
- tx.inputs[0].value.should.equal('1004764');
52
- tx.outputs.length.should.equal(1);
53
- tx.outputs[0].address.should.equal('KT1Dh62qPZhJvMMtL4rAnDS2uASptT6GNLMy');
54
- tx.outputs[0].value.should.equal('1000000');
55
- should_1.default.not.exist(tx.delegate);
56
- tx.signature.length.should.equal(1);
57
- tx.signature[0].should.equal('sigu3cjQh8rf79aXG555fRxKzuTa2byZnvMJqkJENpdKjEwCri6SUM9fLywDC3w8e6dHRT8RRaJVQiijC9yzwqL6FSm2Jj9a');
58
- });
59
- it('a signed origination transaction', async () => {
60
- const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
61
- await tx.initFromSerializedTransaction(resources_1.signedSerializedOriginationTransaction);
62
- const signer = new src_1.XtzLib.KeyPair({ prv: 'spsk2cbiVsAvpGKmau9XcMscL3NRwjkyT575N5AyAofcoj41x6g6TL' });
63
- await tx.sign(signer);
64
- should_1.default.equal(tx.inputs.length, 1);
65
- tx.inputs.length.should.equal(1);
66
- tx.inputs[0].address.should.equal('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A');
67
- tx.inputs[0].value.should.equal('1004764');
68
- tx.outputs.length.should.equal(1);
69
- tx.outputs[0].address.should.equal('KT1Dh62qPZhJvMMtL4rAnDS2uASptT6GNLMy');
70
- tx.outputs[0].value.should.equal('1000000');
71
- should_1.default.not.exist(tx.delegate);
72
- tx.signature.length.should.equal(1);
73
- tx.signature[0].should.equal('sigu3cjQh8rf79aXG555fRxKzuTa2byZnvMJqkJENpdKjEwCri6SUM9fLywDC3w8e6dHRT8RRaJVQiijC9yzwqL6FSm2Jj9a');
74
- });
75
- });
76
- describe('should fail', () => {
77
- it('to parse and invalid parsed transaction', async () => {
78
- const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
79
- await tx.initFromParsedTransaction({}).should.be.rejected();
80
- });
81
- it('to get the transaction JSON if it is empty', async () => {
82
- const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
83
- assert_1.default.throws(() => tx.toJson());
84
- });
85
- it('to sign if the transaction is empty', async () => {
86
- const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
87
- const signer = new src_1.XtzLib.KeyPair({ prv: 'spsk2cbiVsAvpGKmau9XcMscL3NRwjkyT575N5AyAofcoj41x6g6TL' });
88
- await tx.sign(signer).should.be.rejectedWith('Empty transaction');
89
- });
90
- it('to sign the transaction if the keys are invalid', async () => {
91
- const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
92
- await tx.initFromParsedTransaction(resources_1.parsedTransaction);
93
- const signer = new src_1.XtzLib.KeyPair({ pub: 'sppk7ZWB8diU2TWehxdkWCV2DTFvn1hPz4qLjiD3nJQozKnoSEnSC8b' });
94
- await tx.sign(signer).should.be.rejectedWith('Missing private key');
95
- });
96
- });
97
- });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLGlEQUE0QztBQUM1Qyw0Q0FJc0I7QUFDdEIsbUNBQW1DO0FBRW5DLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUM1QixFQUFFLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDcEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxZQUFNLENBQUMsV0FBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyRCxNQUFNLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxvREFBd0MsQ0FBQyxDQUFDO1lBRWpGLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQzFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0MsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUs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S0FBSyxJQUFJLEVBQUU7WUFDL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxZQUFNLENBQUMsV0FBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyRCxNQUFNLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyw2QkFBaUIsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSx5REFBeUQsRUFBRSxDQUFDLENBQUM7WUFDdEcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIHVuc2lnbmVkU2VyaWFsaXplZE9yaWdpbmF0aW9uVHJhbnNhY3Rpb24sXG4gIHNpZ25lZFNlcmlhbGl6ZWRPcmlnaW5hdGlvblRyYW5zYWN0aW9uLFxuICBwYXJzZWRUcmFuc2FjdGlvbixcbn0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IFh0ekxpYiB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdUZXpvcyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ3Nob3VsZCBwYXJzZScsICgpID0+IHtcbiAgICBpdCgndW5zaWduZWQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0eHR6JykpO1xuICAgICAgYXdhaXQgdHguaW5pdEZyb21TZXJpYWxpemVkVHJhbnNhY3Rpb24odW5zaWduZWRTZXJpYWxpemVkT3JpZ2luYXRpb25UcmFuc2FjdGlvbik7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejFWUmpScFZLbnYxNkFWcHJGSDF0a0RuNFREZlZxQTg5M0EnKTtcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDQ3NjQnKTtcbiAgICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJycpO1xuICAgICAgdHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QodHguZGVsZWdhdGUpO1xuICAgICAgSlNPTi5zdHJpbmdpZnkodHgudG9Kc29uKCkpLnNob3VsZC5lcXVhbChKU09OLnN0cmluZ2lmeShwYXJzZWRUcmFuc2FjdGlvbikpO1xuICAgICAgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwodW5zaWduZWRTZXJpYWxpemVkT3JpZ2luYXRpb25UcmFuc2FjdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2lnbmVkIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHh0eicpKTtcbiAgICAgIGF3YWl0IHR4LmluaXRGcm9tU2VyaWFsaXplZFRyYW5zYWN0aW9uKHNpZ25lZFNlcmlhbGl6ZWRPcmlnaW5hdGlvblRyYW5zYWN0aW9uKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwNDc2NCcpO1xuICAgICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnS1QxTEp2cDU1ZmJkTndiaXNKRmlnbjl3QTRjUGdxOVQ5b2M0Jyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMDAwMCcpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh0eC5kZWxlZ2F0ZSk7XG4gICAgICBKU09OLnN0cmluZ2lmeSh0eC50b0pzb24oKSkuc2hvdWxkLmVxdWFsKEpTT04uc3RyaW5naWZ5KHBhcnNlZFRyYW5zYWN0aW9uKSk7XG4gICAgICB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLnNob3VsZC5lcXVhbChzaWduZWRTZXJpYWxpemVkT3JpZ2luYXRpb25UcmFuc2FjdGlvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgc2lnbicsICgpID0+IHtcbiAgICBpdCgnYW4gdW5zaWduZWQgb3JpZ2luYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0eHR6JykpO1xuICAgICAgYXdhaXQgdHguaW5pdEZyb21TZXJpYWxpemVkVHJhbnNhY3Rpb24odW5zaWduZWRTZXJpYWxpemVkT3JpZ2luYXRpb25UcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHNpZ25lciA9IG5ldyBYdHpMaWIuS2V5UGFpcih7IHBydjogJ3Nwc2syY2JpVnNBdnBHS21hdTlYY01zY0wzTlJ3amt5VDU3NU41QXlBb2Zjb2o0MXg2ZzZUTCcgfSk7XG4gICAgICBhd2FpdCB0eC5zaWduKHNpZ25lcik7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoxVlJqUnBWS252MTZBVnByRkgxdGtEbjRURGZWcUE4OTNBJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDA0NzY0Jyk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdLVDFEaDYycVBaaEp2TU10TDRyQW5EUzJ1QVNwdFQ2R05MTXknKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAwMDAwJyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHR4LmRlbGVnYXRlKTtcbiAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHguc2lnbmF0dXJlWzBdLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ3UzY2pRaDhyZjc5YVhHNTU1ZlJ4S3p1VGEyYnlabnZNSnFrSkVOcGRLakV3Q3JpNlNVTTlmTHl3REMzdzhlNmRIUlQ4UlJhSlZRaWlqQzl5endxTDZGU20ySmo5YSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBzaWduZWQgb3JpZ2luYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0eHR6JykpO1xuICAgICAgYXdhaXQgdHguaW5pdEZyb21TZXJpYWxpemVkVHJhbnNhY3Rpb24oc2lnbmVkU2VyaWFsaXplZE9yaWdpbmF0aW9uVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBzaWduZXIgPSBuZXcgWHR6TGliLktleVBhaXIoeyBwcnY6ICdzcHNrMmNiaVZzQXZwR0ttYXU5WGNNc2NMM05Sd2preVQ1NzVONUF5QW9mY29qNDF4Nmc2VEwnIH0pO1xuICAgICAgYXdhaXQgdHguc2lnbihzaWduZXIpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwNDc2NCcpO1xuICAgICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnS1QxRGg2MnFQWmhKdk1NdEw0ckFuRFMydUFTcHRUNkdOTE15Jyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMDAwMCcpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh0eC5kZWxlZ2F0ZSk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWd1M2NqUWg4cmY3OWFYRzU1NWZSeEt6dVRhMmJ5Wm52TUpxa0pFTnBkS2pFd0NyaTZTVU05Zkx5d0RDM3c4ZTZkSFJUOFJSYUpWUWlpakM5eXp3cUw2RlNtMkpqOWEnXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIGZhaWwnLCAoKSA9PiB7XG4gICAgaXQoJ3RvIHBhcnNlIGFuZCBpbnZhbGlkIHBhcnNlZCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbihjb2lucy5nZXQoJ3R4dHonKSk7XG4gICAgICBhd2FpdCB0eC5pbml0RnJvbVBhcnNlZFRyYW5zYWN0aW9uKHt9IGFzIFh0ekxpYi5JbnRlcmZhY2UuUGFyc2VkVHJhbnNhY3Rpb24pLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3RvIGdldCB0aGUgdHJhbnNhY3Rpb24gSlNPTiBpZiBpdCBpcyBlbXB0eScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbihjb2lucy5nZXQoJ3R4dHonKSk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4LnRvSnNvbigpKTtcbiAgICB9KTtcblxuICAgIGl0KCd0byBzaWduIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBlbXB0eScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbihjb2lucy5nZXQoJ3R4dHonKSk7XG4gICAgICBjb25zdCBzaWduZXIgPSBuZXcgWHR6TGliLktleVBhaXIoeyBwcnY6ICdzcHNrMmNiaVZzQXZwR0ttYXU5WGNNc2NMM05Sd2preVQ1NzVONUF5QW9mY29qNDF4Nmc2VEwnIH0pO1xuICAgICAgYXdhaXQgdHguc2lnbihzaWduZXIpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfSk7XG5cbiAgICBpdCgndG8gc2lnbiB0aGUgdHJhbnNhY3Rpb24gaWYgdGhlIGtleXMgYXJlIGludmFsaWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0eHR6JykpO1xuICAgICAgYXdhaXQgdHguaW5pdEZyb21QYXJzZWRUcmFuc2FjdGlvbihwYXJzZWRUcmFuc2FjdGlvbik7XG4gICAgICBjb25zdCBzaWduZXIgPSBuZXcgWHR6TGliLktleVBhaXIoeyBwdWI6ICdzcHBrN1pXQjhkaVUyVFdlaHhka1dDVjJEVEZ2bjFoUHo0cUxqaUQzbkpRb3pLbm9TRW5TQzhiJyB9KTtcbiAgICAgIGF3YWl0IHR4LnNpZ24oc2lnbmVyKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../test/unit/transactionBuilder.ts"],"names":[],"mappings":""}