@bitgo-beta/sdk-coin-ada 1.1.1-beta.3 → 1.1.1-beta.30
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.
- package/dist/src/ada.d.ts +33 -0
- package/dist/src/ada.d.ts.map +1 -1
- package/dist/src/ada.js +158 -1
- package/dist/src/lib/stakingWithdrawRewardsBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingWithdrawRewardsBuilder.js +4 -30
- package/dist/src/lib/transaction.js +5 -5
- package/dist/src/lib/utils.d.ts +1 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +12 -1
- package/package.json +7 -6
package/dist/src/ada.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, ParsedTransaction, ParseTransactionOptions as BaseParseTransactionOptions, SignedTransaction, SignTransactionOptions as BaseSignTransactionOptions, TransactionExplanation, VerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
|
|
3
3
|
import { BaseCoin as StaticsBaseCoin, CoinFamily } from '@bitgo-beta/statics';
|
|
4
|
+
import * as request from 'superagent';
|
|
4
5
|
export interface TransactionPrebuild {
|
|
5
6
|
txHex: string;
|
|
6
7
|
}
|
|
@@ -14,6 +15,20 @@ export interface SignTransactionOptions extends BaseSignTransactionOptions {
|
|
|
14
15
|
txPrebuild: TransactionPrebuild;
|
|
15
16
|
prv: string;
|
|
16
17
|
}
|
|
18
|
+
interface RecoveryOptions {
|
|
19
|
+
userKey?: string;
|
|
20
|
+
backupKey?: string;
|
|
21
|
+
bitgoKey: string;
|
|
22
|
+
recoveryDestination: string;
|
|
23
|
+
krsProvider?: string;
|
|
24
|
+
walletPassphrase?: string;
|
|
25
|
+
startingScanIndex?: number;
|
|
26
|
+
scan?: number;
|
|
27
|
+
}
|
|
28
|
+
interface AdaTx {
|
|
29
|
+
serializedTx: string;
|
|
30
|
+
scanIndex: number;
|
|
31
|
+
}
|
|
17
32
|
export declare type AdaTransactionExplanation = TransactionExplanation;
|
|
18
33
|
export declare class Ada extends BaseCoin {
|
|
19
34
|
protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
|
|
@@ -52,6 +67,23 @@ export declare class Ada extends BaseCoin {
|
|
|
52
67
|
isValidPrv(prv: string): boolean;
|
|
53
68
|
isValidAddress(address: string): boolean;
|
|
54
69
|
signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
|
|
70
|
+
protected getPublicNodeUrl(): string;
|
|
71
|
+
protected getDataFromNode(endpoint: string, requestBody?: Record<string, unknown>): Promise<request.Response>;
|
|
72
|
+
protected getAddressInfo(walletAddr: string): Promise<{
|
|
73
|
+
balance: number;
|
|
74
|
+
utxoSet: Array<Record<string, any>>;
|
|
75
|
+
}>;
|
|
76
|
+
protected getChainTipInfo(): Promise<Record<string, string>>;
|
|
77
|
+
/**
|
|
78
|
+
* Builds a funds recovery transaction without BitGo
|
|
79
|
+
*
|
|
80
|
+
* @param {RecoveryOptions} params parameters needed to construct and
|
|
81
|
+
* (maybe) sign the transaction
|
|
82
|
+
*
|
|
83
|
+
* @returns {AdaTx} the serialized transaction hex string and index
|
|
84
|
+
* of the address being swept
|
|
85
|
+
*/
|
|
86
|
+
recover(params: RecoveryOptions): Promise<AdaTx>;
|
|
55
87
|
/** inherited doc */
|
|
56
88
|
supportsTss(): boolean;
|
|
57
89
|
/** inherited doc */
|
|
@@ -60,4 +92,5 @@ export declare class Ada extends BaseCoin {
|
|
|
60
92
|
allowsAccountConsolidations(): boolean;
|
|
61
93
|
private getBuilder;
|
|
62
94
|
}
|
|
95
|
+
export {};
|
|
63
96
|
//# sourceMappingURL=ada.d.ts.map
|
package/dist/src/ada.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ada.d.ts","sourceRoot":"","sources":["../../src/ada.ts"],"names":[],"mappings":";AACA,OAAO,EACL,QAAQ,EAER,SAAS,EAET,OAAO,EACP,YAAY,EAEZ,iBAAiB,EACjB,uBAAuB,IAAI,2BAA2B,EACtD,iBAAiB,EACjB,sBAAsB,IAAI,0BAA0B,EACpD,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"ada.d.ts","sourceRoot":"","sources":["../../src/ada.ts"],"names":[],"mappings":"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"}
|
package/dist/src/ada.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
23
|
};
|
|
@@ -9,6 +28,7 @@ const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
|
9
28
|
const lib_1 = require("./lib");
|
|
10
29
|
const statics_1 = require("@bitgo-beta/statics");
|
|
11
30
|
const utils_1 = __importDefault(require("./lib/utils"));
|
|
31
|
+
const request = __importStar(require("superagent"));
|
|
12
32
|
class Ada extends sdk_core_1.BaseCoin {
|
|
13
33
|
constructor(bitgo, staticsCoin) {
|
|
14
34
|
super(bitgo);
|
|
@@ -153,6 +173,143 @@ class Ada extends sdk_core_1.BaseCoin {
|
|
|
153
173
|
txHex: serializedTx,
|
|
154
174
|
};
|
|
155
175
|
}
|
|
176
|
+
getPublicNodeUrl() {
|
|
177
|
+
return sdk_core_1.Environments[this.bitgo.getEnv()].adaNodeUrl;
|
|
178
|
+
}
|
|
179
|
+
async getDataFromNode(endpoint, requestBody) {
|
|
180
|
+
const restEndpoint = this.getPublicNodeUrl() + '/' + endpoint;
|
|
181
|
+
try {
|
|
182
|
+
const res = await request.post(restEndpoint).send(requestBody);
|
|
183
|
+
return res;
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
console.debug(e);
|
|
187
|
+
}
|
|
188
|
+
throw new Error(`Unable to call endpoint ${restEndpoint}`);
|
|
189
|
+
}
|
|
190
|
+
async getAddressInfo(walletAddr) {
|
|
191
|
+
const requestBody = { _addresses: [walletAddr] };
|
|
192
|
+
const res = await this.getDataFromNode('address_info', requestBody);
|
|
193
|
+
if (res.status != 200) {
|
|
194
|
+
throw new Error(`Failed to retrieve address info for address ${walletAddr}`);
|
|
195
|
+
}
|
|
196
|
+
const body = res.body[0];
|
|
197
|
+
return { balance: body.balance, utxoSet: body.utxo_set };
|
|
198
|
+
}
|
|
199
|
+
async getChainTipInfo() {
|
|
200
|
+
const res = await this.getDataFromNode('tip');
|
|
201
|
+
if (res.status != 200) {
|
|
202
|
+
throw new Error('Failed to retrieve chain tip info');
|
|
203
|
+
}
|
|
204
|
+
const body = res.body[0];
|
|
205
|
+
return body;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Builds a funds recovery transaction without BitGo
|
|
209
|
+
*
|
|
210
|
+
* @param {RecoveryOptions} params parameters needed to construct and
|
|
211
|
+
* (maybe) sign the transaction
|
|
212
|
+
*
|
|
213
|
+
* @returns {AdaTx} the serialized transaction hex string and index
|
|
214
|
+
* of the address being swept
|
|
215
|
+
*/
|
|
216
|
+
async recover(params) {
|
|
217
|
+
if (!params.bitgoKey) {
|
|
218
|
+
throw new Error('missing bitgoKey');
|
|
219
|
+
}
|
|
220
|
+
if (!params.recoveryDestination || !this.isValidAddress(params.recoveryDestination)) {
|
|
221
|
+
throw new Error('invalid recoveryDestination');
|
|
222
|
+
}
|
|
223
|
+
let addrFormat = sdk_core_1.AddressFormat.testnet;
|
|
224
|
+
if (this.getChain() === 'ada') {
|
|
225
|
+
addrFormat = sdk_core_1.AddressFormat.mainnet;
|
|
226
|
+
}
|
|
227
|
+
let startIdx = params.startingScanIndex;
|
|
228
|
+
if (startIdx === undefined) {
|
|
229
|
+
startIdx = 0;
|
|
230
|
+
}
|
|
231
|
+
else if (!Number.isInteger(startIdx) || startIdx < 0) {
|
|
232
|
+
throw new Error('Invalid starting index to scan for addresses');
|
|
233
|
+
}
|
|
234
|
+
let numIteration = params.scan;
|
|
235
|
+
if (numIteration === undefined) {
|
|
236
|
+
numIteration = 20;
|
|
237
|
+
}
|
|
238
|
+
else if (!Number.isInteger(numIteration) || numIteration <= 0) {
|
|
239
|
+
throw new Error('Invalid scanning factor');
|
|
240
|
+
}
|
|
241
|
+
const bitgoKey = params.bitgoKey.replace(/\s/g, '');
|
|
242
|
+
const isUnsignedSweep = !params.userKey && !params.backupKey && !params.walletPassphrase;
|
|
243
|
+
const MPC = await sdk_core_1.EDDSAMethods.getInitializedMpcInstance();
|
|
244
|
+
for (let i = startIdx; i < numIteration + startIdx; i++) {
|
|
245
|
+
const currPath = `m/${i}`;
|
|
246
|
+
const accountId = MPC.deriveUnhardened(bitgoKey, currPath).slice(0, 64);
|
|
247
|
+
const keyPair = new lib_1.KeyPair({ pub: accountId });
|
|
248
|
+
const senderAddr = keyPair.getAddress(addrFormat);
|
|
249
|
+
const { balance, utxoSet } = await this.getAddressInfo(senderAddr);
|
|
250
|
+
if (balance <= 0) {
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
// first build the unsigned txn
|
|
254
|
+
const tipAbsSlot = await this.getChainTipInfo();
|
|
255
|
+
const txBuilder = this.getBuilder().getTransferBuilder();
|
|
256
|
+
txBuilder.changeAddress(params.recoveryDestination, balance.toString());
|
|
257
|
+
for (const utxo of utxoSet) {
|
|
258
|
+
txBuilder.input({ transaction_id: utxo.tx_hash, transaction_index: utxo.tx_index });
|
|
259
|
+
}
|
|
260
|
+
// each slot is about 1 second, so this transaction should be valid for
|
|
261
|
+
// 7 * 86,400 seconds (7 days) after creation
|
|
262
|
+
txBuilder.ttl(Number(tipAbsSlot.abs_slot) + 7 * 86400);
|
|
263
|
+
const unsignedTransaction = (await txBuilder.build());
|
|
264
|
+
let serializedTx = unsignedTransaction.toBroadcastFormat();
|
|
265
|
+
if (!isUnsignedSweep) {
|
|
266
|
+
if (!params.userKey) {
|
|
267
|
+
throw new Error('missing userKey');
|
|
268
|
+
}
|
|
269
|
+
if (!params.backupKey) {
|
|
270
|
+
throw new Error('missing backupKey');
|
|
271
|
+
}
|
|
272
|
+
if (!params.walletPassphrase) {
|
|
273
|
+
throw new Error('missing wallet passphrase');
|
|
274
|
+
}
|
|
275
|
+
// Clean up whitespace from entered values
|
|
276
|
+
const userKey = params.userKey.replace(/\s/g, '');
|
|
277
|
+
const backupKey = params.backupKey.replace(/\s/g, '');
|
|
278
|
+
// Decrypt private keys from KeyCard values
|
|
279
|
+
let userPrv;
|
|
280
|
+
try {
|
|
281
|
+
userPrv = this.bitgo.decrypt({
|
|
282
|
+
input: userKey,
|
|
283
|
+
password: params.walletPassphrase,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
catch (e) {
|
|
287
|
+
throw new Error(`Error decrypting user keychain: ${e.message}`);
|
|
288
|
+
}
|
|
289
|
+
/** TODO BG-52419 Implement Codec for parsing */
|
|
290
|
+
const userSigningMaterial = JSON.parse(userPrv);
|
|
291
|
+
let backupPrv;
|
|
292
|
+
try {
|
|
293
|
+
backupPrv = this.bitgo.decrypt({
|
|
294
|
+
input: backupKey,
|
|
295
|
+
password: params.walletPassphrase,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
catch (e) {
|
|
299
|
+
throw new Error(`Error decrypting backup keychain: ${e.message}`);
|
|
300
|
+
}
|
|
301
|
+
const backupSigningMaterial = JSON.parse(backupPrv);
|
|
302
|
+
// add signature
|
|
303
|
+
const signatureHex = await sdk_core_1.EDDSAMethods.getTSSSignature(userSigningMaterial, backupSigningMaterial, currPath, unsignedTransaction);
|
|
304
|
+
const adaKeyPair = new lib_1.KeyPair({ pub: accountId });
|
|
305
|
+
txBuilder.addSignature({ pub: adaKeyPair.getKeys().pub }, signatureHex);
|
|
306
|
+
const signedTransaction = await txBuilder.build();
|
|
307
|
+
serializedTx = signedTransaction.toBroadcastFormat();
|
|
308
|
+
}
|
|
309
|
+
return { serializedTx: serializedTx, scanIndex: i };
|
|
310
|
+
}
|
|
311
|
+
throw new Error('Did not find an address with funds to recover');
|
|
312
|
+
}
|
|
156
313
|
/** inherited doc */
|
|
157
314
|
supportsTss() {
|
|
158
315
|
return true;
|
|
@@ -170,4 +327,4 @@ class Ada extends sdk_core_1.BaseCoin {
|
|
|
170
327
|
}
|
|
171
328
|
}
|
|
172
329
|
exports.Ada = Ada;
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbURBZThCO0FBQzlCLCtCQUFzRjtBQUN0RixpREFBcUY7QUFDckYsd0RBQW1DO0FBcUJuQyxNQUFhLEdBQUksU0FBUSxtQkFBUTtJQUUvQixZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNEOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFnQztRQUN0RCxJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM5QyxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRCxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFFL0IsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRXJELElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JDLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTtvQkFDM0MsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO29CQUNqQixLQUFLLE1BQU0sTUFBTSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7d0JBQ3hDLElBQUksU0FBUyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRTs0QkFDOUUsSUFBSSxHQUFHLElBQUksQ0FBQzt5QkFDYjtxQkFDRjtvQkFDRCxJQUFJLENBQUMsSUFBSSxFQUFFO3dCQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztxQkFDN0Q7aUJBQ0Y7YUFDRjtTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsWUFBWSwrQkFBb0IsRUFBRTtnQkFDckMsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxNQUFNLENBQUMsQ0FBQzthQUNUO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBNEI7UUFDMUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqQyxNQUFNLElBQUksOEJBQW1CLENBQUMsNEJBQTRCLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDdEU7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFZLEVBQUUsT0FBd0I7UUFDdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxhQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDcEQsTUFBTSxVQUFVLEdBQUcsT0FBTyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRWpGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFpQztRQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxrQkFBbUMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUV0QyxJQUFJO1lBQ0YsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLGtCQUFrQixHQUFHLE1BQU0sa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdkQ7UUFBQyxNQUFNO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsT0FBTyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBa0M7UUFDdkQsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUMzRCxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN4QztRQUVELE9BQU8sc0JBQXNELENBQUM7SUFDaEUsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFhO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxhQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQVUsRUFBRSxDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRDtRQUNELE9BQU87WUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sZUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixPQUFPLGVBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWU7UUFDNUIsT0FBTyxlQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQThCO1FBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBb0IsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFN0QsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDeEM7UUFFRCxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVyRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLFlBQVk7U0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixlQUFlO1FBQ2IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELG9CQUFvQjtJQUNwQiwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQTNMRCxrQkEyTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBCaXRHb0Jhc2UsXG4gIEludmFsaWRBZGRyZXNzRXJyb3IsXG4gIEtleVBhaXIsXG4gIE1QQ0FsZ29yaXRobSxcbiAgTm9kZUVudmlyb25tZW50RXJyb3IsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyBhcyBCYXNlUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGFzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBLZXlQYWlyIGFzIEFkYUtleVBhaXIsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBDb2luRmFtaWx5LCBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IGFkYVV0aWxzIGZyb20gJy4vbGliL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblByZWJ1aWxkIHtcbiAgdHhIZXg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4UHJlYnVpbGQ6IFRyYW5zYWN0aW9uUHJlYnVpbGQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgcHJ2OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFkYVRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuXG5leHBvcnQgY2xhc3MgQWRhIGV4dGVuZHMgQmFzZUNvaW4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IEFkYShiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvciBiZXR3ZWVuIHRoZSBjb2luJ3MgYmFzZSB1bml0IGFuZCBpdHMgc21hbGxlc3Qgc3ViZGl2aXNvblxuICAgKi9cbiAgcHVibGljIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMWU2O1xuICB9XG5cbiAgcHVibGljIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmFtaWx5KCk6IENvaW5GYW1pbHkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mYW1pbHk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZnVsbE5hbWU7XG4gIH1cblxuICBnZXRCYXNlQ2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGFpbigpO1xuICB9XG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBhIHRyYW5zYWN0aW9uIHByZWJ1aWxkIGNvbXBsaWVzIHdpdGggdGhlIG9yaWdpbmFsIGludGVudGlvblxuICAgKiAgQSBwcmVidWlsZCB0cmFuc2FjdGlvbiBoYXMgdG8gYmUgcGFyc2VkIGNvcnJlY3RseSBhbmQgaW50ZW5kZWQgcmVjaXBpZW50cyBoYXMgdG8gYmVcbiAgICogIGluIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRcbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcy50eFByZWJ1aWxkIHByZWJ1aWxkIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBwYXJhbXMudHhQYXJhbXMgdHJhbnNhY3Rpb24gcGFyYW1ldGVyc1xuICAgKiBAcmV0dXJuIHRydWUgaWYgdmVyaWZpY2F0aW9uIHN1Y2Nlc3NcbiAgICpcbiAgICovXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKTtcbiAgICAgIGNvbnN0IHsgdHhQcmVidWlsZDogdHhQcmVidWlsZCwgdHhQYXJhbXM6IHR4UGFyYW1zIH0gPSBwYXJhbXM7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihjb2luQ29uZmlnKTtcbiAgICAgIGFzc2VydCh0eFByZWJ1aWxkLnR4SGV4LCBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKSk7XG4gICAgICBjb25zdCByYXdUeCA9IHR4UHJlYnVpbGQudHhIZXg7XG5cbiAgICAgIHRyYW5zYWN0aW9uLmZyb21SYXdUcmFuc2FjdGlvbihyYXdUeCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUeCA9IHRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgcmVjaXBpZW50IG9mIHR4UGFyYW1zLnJlY2lwaWVudHMpIHtcbiAgICAgICAgICBsZXQgZmluZCA9IGZhbHNlO1xuICAgICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIGV4cGxhaW5lZFR4Lm91dHB1dHMpIHtcbiAgICAgICAgICAgIGlmIChyZWNpcGllbnQuYWRkcmVzcyA9PT0gb3V0cHV0LmFkZHJlc3MgJiYgcmVjaXBpZW50LmFtb3VudCA9PT0gb3V0cHV0LmFtb3VudCkge1xuICAgICAgICAgICAgICBmaW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFmaW5kKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmaW5kIHJlY2lwaWVudCBpbiBleHBlY3RlZCBvdXRwdXQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5vZGVFbnZpcm9ubWVudEVycm9yKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgYWRkcmVzcyB9ID0gcGFyYW1zO1xuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYEludmFsaWQgQ2FyZGFubyBBZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogS2V5UGFpciwgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCBhZGFLZXlwYWlyID0gbmV3IEFkYUtleVBhaXIoeyBwcnY6IGtleS5wcnYgfSk7XG4gICAgY29uc3QgbWVzc2FnZUhleCA9IG1lc3NhZ2UgaW5zdGFuY2VvZiBCdWZmZXIgPyBtZXNzYWdlLnRvU3RyaW5nKCdoZXgnKSA6IG1lc3NhZ2U7XG5cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYWRhS2V5cGFpci5zaWduTWVzc2FnZShtZXNzYWdlSGV4KSk7XG4gIH1cblxuICAvKipcbiAgICogRXhwbGFpbi9wYXJzZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxBZGFUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPiB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZ2V0QnVpbGRlcigpO1xuICAgIGxldCByZWJ1aWx0VHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbjtcbiAgICBjb25zdCB0eFJhdyA9IHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uQnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0eFJhdyk7XG4gICAgICByZWJ1aWx0VHJhbnNhY3Rpb24gPSBhd2FpdCB0cmFuc2FjdGlvbkJ1aWxkZXIuYnVpbGQoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiByZWJ1aWx0VHJhbnNhY3Rpb24uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogQWRhUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IGF3YWl0IHRoaXMuZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgIHR4UHJlYnVpbGQ6IHBhcmFtcy50eFByZWJ1aWxkLFxuICAgIH0pO1xuXG4gICAgaWYgKCF0cmFuc2FjdGlvbkV4cGxhbmF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyB1bmtub3duIGFzIFBhcnNlZFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBBZGFLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBBZGFLZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhZGFVdGlscy5pc1ZhbGlkUHVibGljS2V5KHB1Yik7XG4gIH1cblxuICBpc1ZhbGlkUHJ2KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFkYVV0aWxzLmlzVmFsaWRQcml2YXRlS2V5KHBydik7XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYWRhVXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICBhc3luYyBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXIoKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocGFyYW1zLnR4UHJlYnVpbGQudHhIZXgpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBwYXJhbXMucHJ2IH0pO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uOiBCYXNlVHJhbnNhY3Rpb24gPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlcmlhbGl6ZWRUeCA9IHRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHhIZXg6IHNlcmlhbGl6ZWRUeCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VkZHNhJztcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGFsbG93c0FjY291bnRDb25zb2xpZGF0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KHRoaXMuZ2V0QmFzZUNoYWluKCkpKTtcbiAgfVxufVxuIl19
|
|
330
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQW1COEI7QUFDOUIsK0JBQXNGO0FBQ3RGLGlEQUFxRjtBQUNyRix3REFBbUM7QUFDbkMsb0RBQXNDO0FBcUN0QyxNQUFhLEdBQUksU0FBUSxtQkFBUTtJQUUvQixZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNEOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFnQztRQUN0RCxJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLEdB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ekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQWxWRCxrQkFrVkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBCaXRHb0Jhc2UsXG4gIEludmFsaWRBZGRyZXNzRXJyb3IsXG4gIEtleVBhaXIsXG4gIE1QQ0FsZ29yaXRobSxcbiAgTm9kZUVudmlyb25tZW50RXJyb3IsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyBhcyBCYXNlUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGFzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBFRERTQU1ldGhvZHMsXG4gIEVERFNBTWV0aG9kVHlwZXMsXG4gIEFkZHJlc3NGb3JtYXQsXG4gIEVudmlyb25tZW50cyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgS2V5UGFpciBhcyBBZGFLZXlQYWlyLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vbGliJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiwgQ29pbkZhbWlseSwgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBhZGFVdGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgKiBhcyByZXF1ZXN0IGZyb20gJ3N1cGVyYWdlbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uUHJlYnVpbGQge1xuICB0eEhleDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkYVBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJlY292ZXJ5T3B0aW9ucyB7XG4gIHVzZXJLZXk/OiBzdHJpbmc7IC8vIEJveCBBXG4gIGJhY2t1cEtleT86IHN0cmluZzsgLy8gQm94IEJcbiAgYml0Z29LZXk6IHN0cmluZzsgLy8gQm94IENcbiAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogc3RyaW5nO1xuICBrcnNQcm92aWRlcj86IHN0cmluZztcbiAgd2FsbGV0UGFzc3BocmFzZT86IHN0cmluZztcbiAgc3RhcnRpbmdTY2FuSW5kZXg/OiBudW1iZXI7XG4gIHNjYW4/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBBZGFUeCB7XG4gIHNlcmlhbGl6ZWRUeDogc3RyaW5nO1xuICBzY2FuSW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQWRhVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb247XG5cbmV4cG9ydCBjbGFzcyBBZGEgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgQWRhKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yIGJldHdlZW4gdGhlIGNvaW4ncyBiYXNlIHVuaXQgYW5kIGl0cyBzbWFsbGVzdCBzdWJkaXZpc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiAxZTY7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4ubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGYW1pbHkoKTogQ29pbkZhbWlseSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZhbWlseTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mdWxsTmFtZTtcbiAgfVxuXG4gIGdldEJhc2VDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENoYWluKCk7XG4gIH1cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rpb24gcHJlYnVpbGQgY29tcGxpZXMgd2l0aCB0aGUgb3JpZ2luYWwgaW50ZW50aW9uXG4gICAqICBBIHByZWJ1aWxkIHRyYW5zYWN0aW9uIGhhcyB0byBiZSBwYXJzZWQgY29ycmVjdGx5IGFuZCBpbnRlbmRlZCByZWNpcGllbnRzIGhhcyB0byBiZVxuICAgKiAgaW4gdGhlIHRyYW5zYWN0aW9uIG91dHB1dFxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLnR4UHJlYnVpbGQgcHJlYnVpbGQgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHBhcmFtcy50eFBhcmFtcyB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzXG4gICAqIEByZXR1cm4gdHJ1ZSBpZiB2ZXJpZmljYXRpb24gc3VjY2Vzc1xuICAgKlxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCh0aGlzLmdldENoYWluKCkpO1xuICAgICAgY29uc3QgeyB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkLCB0eFBhcmFtczogdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5Db25maWcpO1xuICAgICAgYXNzZXJ0KHR4UHJlYnVpbGQudHhIZXgsIG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpKTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdHhQcmVidWlsZC50eEhleDtcblxuICAgICAgdHJhbnNhY3Rpb24uZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1R4KTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gdHJhbnNhY3Rpb24uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG5cbiAgICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCByZWNpcGllbnQgb2YgdHhQYXJhbXMucmVjaXBpZW50cykge1xuICAgICAgICAgIGxldCBmaW5kID0gZmFsc2U7XG4gICAgICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgZXhwbGFpbmVkVHgub3V0cHV0cykge1xuICAgICAgICAgICAgaWYgKHJlY2lwaWVudC5hZGRyZXNzID09PSBvdXRwdXQuYWRkcmVzcyAmJiByZWNpcGllbnQuYW1vdW50ID09PSBvdXRwdXQuYW1vdW50KSB7XG4gICAgICAgICAgICAgIGZpbmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWZpbmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGZpbmQgcmVjaXBpZW50IGluIGV4cGVjdGVkIG91dHB1dCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgTm9kZUVudmlyb25tZW50RXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBhZGRyZXNzIH0gPSBwYXJhbXM7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgSW52YWxpZCBDYXJkYW5vIEFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYXN5bmMgc2lnbk1lc3NhZ2Uoa2V5OiBLZXlQYWlyLCBtZXNzYWdlOiBzdHJpbmcgfCBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0IGFkYUtleXBhaXIgPSBuZXcgQWRhS2V5UGFpcih7IHBydjoga2V5LnBydiB9KTtcbiAgICBjb25zdCBtZXNzYWdlSGV4ID0gbWVzc2FnZSBpbnN0YW5jZW9mIEJ1ZmZlciA/IG1lc3NhZ2UudG9TdHJpbmcoJ2hleCcpIDogbWVzc2FnZTtcblxuICAgIHJldHVybiBCdWZmZXIuZnJvbShhZGFLZXlwYWlyLnNpZ25NZXNzYWdlKG1lc3NhZ2VIZXgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluL3BhcnNlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPEFkYVRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgbGV0IHJlYnVpbHRUcmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IHR4UmF3ID0gcGFyYW1zLnR4UHJlYnVpbGQudHhIZXg7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25CdWlsZGVyID0gZmFjdG9yeS5mcm9tKHR4UmF3KTtcbiAgICAgIHJlYnVpbHRUcmFuc2FjdGlvbiA9IGF3YWl0IHRyYW5zYWN0aW9uQnVpbGRlci5idWlsZCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlYnVpbHRUcmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIGFzeW5jIHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBBZGFQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgdGhpcy5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgdHhQcmVidWlsZDogcGFyYW1zLnR4UHJlYnVpbGQsXG4gICAgfSk7XG5cbiAgICBpZiAoIXRyYW5zYWN0aW9uRXhwbGFuYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIHVua25vd24gYXMgUGFyc2VkVHJhbnNhY3Rpb247XG4gIH1cblxuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IEFkYUtleVBhaXIoeyBzZWVkIH0pIDogbmV3IEFkYUtleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1Yjoga2V5cy5wdWIsXG4gICAgICBwcnY6IGtleXMucHJ2LFxuICAgIH07XG4gIH1cblxuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFkYVV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHViKTtcbiAgfVxuXG4gIGlzVmFsaWRQcnYocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYWRhVXRpbHMuaXNWYWxpZFByaXZhdGVLZXkocHJ2KTtcbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhZGFVdGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZ2V0QnVpbGRlcigpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbShwYXJhbXMudHhQcmVidWlsZC50eEhleCk7XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHBhcmFtcy5wcnYgfSk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbiA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VyaWFsaXplZFR4ID0gdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0eEhleDogc2VyaWFsaXplZFR4LFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UHVibGljTm9kZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBFbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0uYWRhTm9kZVVybDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXREYXRhRnJvbU5vZGUoZW5kcG9pbnQ6IHN0cmluZywgcmVxdWVzdEJvZHk/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFByb21pc2U8cmVxdWVzdC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlc3RFbmRwb2ludCA9IHRoaXMuZ2V0UHVibGljTm9kZVVybCgpICsgJy8nICsgZW5kcG9pbnQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3QucG9zdChyZXN0RW5kcG9pbnQpLnNlbmQocmVxdWVzdEJvZHkpO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGUpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjYWxsIGVuZHBvaW50ICR7cmVzdEVuZHBvaW50fWApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEFkZHJlc3NJbmZvKFxuICAgIHdhbGxldEFkZHI6IHN0cmluZ1xuICApOiBQcm9taXNlPHsgYmFsYW5jZTogbnVtYmVyOyB1dHhvU2V0OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB9PiB7XG4gICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7IF9hZGRyZXNzZXM6IFt3YWxsZXRBZGRyXSB9O1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2V0RGF0YUZyb21Ob2RlKCdhZGRyZXNzX2luZm8nLCByZXF1ZXN0Qm9keSk7XG4gICAgaWYgKHJlcy5zdGF0dXMgIT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBhZGRyZXNzIGluZm8gZm9yIGFkZHJlc3MgJHt3YWxsZXRBZGRyfWApO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gcmVzLmJvZHlbMF07XG4gICAgcmV0dXJuIHsgYmFsYW5jZTogYm9keS5iYWxhbmNlLCB1dHhvU2V0OiBib2R5LnV0eG9fc2V0IH07XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0Q2hhaW5UaXBJbmZvKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2V0RGF0YUZyb21Ob2RlKCd0aXAnKTtcbiAgICBpZiAocmVzLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHJldHJpZXZlIGNoYWluIHRpcCBpbmZvJyk7XG4gICAgfVxuICAgIGNvbnN0IGJvZHkgPSByZXMuYm9keVswXTtcbiAgICByZXR1cm4gYm9keTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBmdW5kcyByZWNvdmVyeSB0cmFuc2FjdGlvbiB3aXRob3V0IEJpdEdvXG4gICAqXG4gICAqIEBwYXJhbSB7UmVjb3ZlcnlPcHRpb25zfSBwYXJhbXMgcGFyYW1ldGVycyBuZWVkZWQgdG8gY29uc3RydWN0IGFuZFxuICAgKiAobWF5YmUpIHNpZ24gdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEByZXR1cm5zIHtBZGFUeH0gdGhlIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gaGV4IHN0cmluZyBhbmQgaW5kZXhcbiAgICogb2YgdGhlIGFkZHJlc3MgYmVpbmcgc3dlcHRcbiAgICovXG4gIGFzeW5jIHJlY292ZXIocGFyYW1zOiBSZWNvdmVyeU9wdGlvbnMpOiBQcm9taXNlPEFkYVR4PiB7XG4gICAgaWYgKCFwYXJhbXMuYml0Z29LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBiaXRnb0tleScpO1xuICAgIH1cbiAgICBpZiAoIXBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uIHx8ICF0aGlzLmlzVmFsaWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24nKTtcbiAgICB9XG4gICAgbGV0IGFkZHJGb3JtYXQgPSBBZGRyZXNzRm9ybWF0LnRlc3RuZXQ7XG4gICAgaWYgKHRoaXMuZ2V0Q2hhaW4oKSA9PT0gJ2FkYScpIHtcbiAgICAgIGFkZHJGb3JtYXQgPSBBZGRyZXNzRm9ybWF0Lm1haW5uZXQ7XG4gICAgfVxuICAgIGxldCBzdGFydElkeCA9IHBhcmFtcy5zdGFydGluZ1NjYW5JbmRleDtcbiAgICBpZiAoc3RhcnRJZHggPT09IHVuZGVmaW5lZCkge1xuICAgICAgc3RhcnRJZHggPSAwO1xuICAgIH0gZWxzZSBpZiAoIU51bWJlci5pc0ludGVnZXIoc3RhcnRJZHgpIHx8IHN0YXJ0SWR4IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0YXJ0aW5nIGluZGV4IHRvIHNjYW4gZm9yIGFkZHJlc3NlcycpO1xuICAgIH1cbiAgICBsZXQgbnVtSXRlcmF0aW9uID0gcGFyYW1zLnNjYW47XG4gICAgaWYgKG51bUl0ZXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBudW1JdGVyYXRpb24gPSAyMDtcbiAgICB9IGVsc2UgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG51bUl0ZXJhdGlvbikgfHwgbnVtSXRlcmF0aW9uIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzY2FubmluZyBmYWN0b3InKTtcbiAgICB9XG4gICAgY29uc3QgYml0Z29LZXkgPSBwYXJhbXMuYml0Z29LZXkucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICBjb25zdCBpc1Vuc2lnbmVkU3dlZXAgPSAhcGFyYW1zLnVzZXJLZXkgJiYgIXBhcmFtcy5iYWNrdXBLZXkgJiYgIXBhcmFtcy53YWxsZXRQYXNzcGhyYXNlO1xuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG5cbiAgICBmb3IgKGxldCBpID0gc3RhcnRJZHg7IGkgPCBudW1JdGVyYXRpb24gKyBzdGFydElkeDsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyUGF0aCA9IGBtLyR7aX1gO1xuICAgICAgY29uc3QgYWNjb3VudElkID0gTVBDLmRlcml2ZVVuaGFyZGVuZWQoYml0Z29LZXksIGN1cnJQYXRoKS5zbGljZSgwLCA2NCk7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEFkYUtleVBhaXIoeyBwdWI6IGFjY291bnRJZCB9KTtcbiAgICAgIGNvbnN0IHNlbmRlckFkZHIgPSBrZXlQYWlyLmdldEFkZHJlc3MoYWRkckZvcm1hdCk7XG4gICAgICBjb25zdCB7IGJhbGFuY2UsIHV0eG9TZXQgfSA9IGF3YWl0IHRoaXMuZ2V0QWRkcmVzc0luZm8oc2VuZGVyQWRkcik7XG4gICAgICBpZiAoYmFsYW5jZSA8PSAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBmaXJzdCBidWlsZCB0aGUgdW5zaWduZWQgdHhuXG4gICAgICBjb25zdCB0aXBBYnNTbG90ID0gYXdhaXQgdGhpcy5nZXRDaGFpblRpcEluZm8oKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IHRoaXMuZ2V0QnVpbGRlcigpLmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLmNoYW5nZUFkZHJlc3MocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sIGJhbGFuY2UudG9TdHJpbmcoKSk7XG4gICAgICBmb3IgKGNvbnN0IHV0eG8gb2YgdXR4b1NldCkge1xuICAgICAgICB0eEJ1aWxkZXIuaW5wdXQoeyB0cmFuc2FjdGlvbl9pZDogdXR4by50eF9oYXNoLCB0cmFuc2FjdGlvbl9pbmRleDogdXR4by50eF9pbmRleCB9KTtcbiAgICAgIH1cbiAgICAgIC8vIGVhY2ggc2xvdCBpcyBhYm91dCAxIHNlY29uZCwgc28gdGhpcyB0cmFuc2FjdGlvbiBzaG91bGQgYmUgdmFsaWQgZm9yXG4gICAgICAvLyA3ICogODYsNDAwIHNlY29uZHMgKDcgZGF5cykgYWZ0ZXIgY3JlYXRpb25cbiAgICAgIHR4QnVpbGRlci50dGwoTnVtYmVyKHRpcEFic1Nsb3QuYWJzX3Nsb3QpICsgNyAqIDg2NDAwKTtcbiAgICAgIGNvbnN0IHVuc2lnbmVkVHJhbnNhY3Rpb24gPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICBsZXQgc2VyaWFsaXplZFR4ID0gdW5zaWduZWRUcmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgaWYgKCFpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAgICAgaWYgKCFwYXJhbXMudXNlcktleSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB1c2VyS2V5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXJhbXMuYmFja3VwS2V5KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGJhY2t1cEtleScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGFyYW1zLndhbGxldFBhc3NwaHJhc2UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3Npbmcgd2FsbGV0IHBhc3NwaHJhc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENsZWFuIHVwIHdoaXRlc3BhY2UgZnJvbSBlbnRlcmVkIHZhbHVlc1xuICAgICAgICBjb25zdCB1c2VyS2V5ID0gcGFyYW1zLnVzZXJLZXkucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICAgICAgY29uc3QgYmFja3VwS2V5ID0gcGFyYW1zLmJhY2t1cEtleS5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG4gICAgICAgIC8vIERlY3J5cHQgcHJpdmF0ZSBrZXlzIGZyb20gS2V5Q2FyZCB2YWx1ZXNcbiAgICAgICAgbGV0IHVzZXJQcnY7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdXNlclBydiA9IHRoaXMuYml0Z28uZGVjcnlwdCh7XG4gICAgICAgICAgICBpbnB1dDogdXNlcktleSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZGVjcnlwdGluZyB1c2VyIGtleWNoYWluOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICAvKiogVE9ETyBCRy01MjQxOSBJbXBsZW1lbnQgQ29kZWMgZm9yIHBhcnNpbmcgKi9cbiAgICAgICAgY29uc3QgdXNlclNpZ25pbmdNYXRlcmlhbCA9IEpTT04ucGFyc2UodXNlclBydikgYXMgRUREU0FNZXRob2RUeXBlcy5Vc2VyU2lnbmluZ01hdGVyaWFsO1xuXG4gICAgICAgIGxldCBiYWNrdXBQcnY7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYmFja3VwUHJ2ID0gdGhpcy5iaXRnby5kZWNyeXB0KHtcbiAgICAgICAgICAgIGlucHV0OiBiYWNrdXBLZXksXG4gICAgICAgICAgICBwYXNzd29yZDogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGRlY3J5cHRpbmcgYmFja3VwIGtleWNoYWluOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiYWNrdXBTaWduaW5nTWF0ZXJpYWwgPSBKU09OLnBhcnNlKGJhY2t1cFBydikgYXMgRUREU0FNZXRob2RUeXBlcy5CYWNrdXBTaWduaW5nTWF0ZXJpYWw7XG5cbiAgICAgICAgLy8gYWRkIHNpZ25hdHVyZVxuICAgICAgICBjb25zdCBzaWduYXR1cmVIZXggPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0VFNTU2lnbmF0dXJlKFxuICAgICAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwsXG4gICAgICAgICAgYmFja3VwU2lnbmluZ01hdGVyaWFsLFxuICAgICAgICAgIGN1cnJQYXRoLFxuICAgICAgICAgIHVuc2lnbmVkVHJhbnNhY3Rpb25cbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWRhS2V5UGFpciA9IG5ldyBBZGFLZXlQYWlyKHsgcHViOiBhY2NvdW50SWQgfSk7XG4gICAgICAgIHR4QnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGFkYUtleVBhaXIuZ2V0S2V5cygpLnB1YiB9LCBzaWduYXR1cmVIZXgpO1xuICAgICAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBzZXJpYWxpemVkVHggPSBzaWduZWRUcmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgc2VyaWFsaXplZFR4OiBzZXJpYWxpemVkVHgsIHNjYW5JbmRleDogaSB9O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpZCBub3QgZmluZCBhbiBhZGRyZXNzIHdpdGggZnVuZHMgdG8gcmVjb3ZlcicpO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VkZHNhJztcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGFsbG93c0FjY291bnRDb25zb2xpZGF0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KHRoaXMuZ2V0QmFzZUNoYWluKCkpKTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stakingWithdrawRewardsBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingWithdrawRewardsBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmB,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBAAa,6BAA8B,SAAQ,kBAAkB;gBACvD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAM3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAIjE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAIvD;;;;;OAKG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"stakingWithdrawRewardsBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingWithdrawRewardsBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmB,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBAAa,6BAA8B,SAAQ,kBAAkB;gBACvD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAM3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAIjE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAIvD;;;;;OAKG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CASnD"}
|
|
@@ -1,28 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
3
|
exports.StakingWithdrawRewardsBuilder = void 0;
|
|
23
4
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
24
5
|
const transactionBuilder_1 = require("./transactionBuilder");
|
|
25
|
-
const
|
|
6
|
+
const __1 = require("../");
|
|
26
7
|
class StakingWithdrawRewardsBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
27
8
|
constructor(_coinConfig) {
|
|
28
9
|
super(_coinConfig);
|
|
@@ -50,20 +31,13 @@ class StakingWithdrawRewardsBuilder extends transactionBuilder_1.TransactionBuil
|
|
|
50
31
|
*/
|
|
51
32
|
addWithdrawal(stakingPubKey, value) {
|
|
52
33
|
const coinName = this._coinConfig.name;
|
|
53
|
-
const
|
|
54
|
-
let rewardAddress;
|
|
55
|
-
if (coinName === 'ada') {
|
|
56
|
-
rewardAddress = CardanoWasm.RewardAddress.new(CardanoWasm.NetworkInfo.mainnet().network_id(), CardanoWasm.StakeCredential.from_keyhash(stakePub.hash()));
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
rewardAddress = CardanoWasm.RewardAddress.new(CardanoWasm.NetworkInfo.testnet().network_id(), CardanoWasm.StakeCredential.from_keyhash(stakePub.hash()));
|
|
60
|
-
}
|
|
34
|
+
const rewardAddress = __1.Utils.default.getRewardAddress(stakingPubKey, coinName);
|
|
61
35
|
this._withdrawals.push({
|
|
62
|
-
stakeAddress: rewardAddress
|
|
36
|
+
stakeAddress: rewardAddress,
|
|
63
37
|
value,
|
|
64
38
|
});
|
|
65
39
|
return this;
|
|
66
40
|
}
|
|
67
41
|
}
|
|
68
42
|
exports.StakingWithdrawRewardsBuilder = StakingWithdrawRewardsBuilder;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0YWtpbmdXaXRoZHJhd1Jld2FyZHNCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFnRTtBQUVoRSw2REFBMEQ7QUFFMUQsMkJBQTRCO0FBRTVCLE1BQWEsNkJBQThCLFNBQVEsdUNBQWtCO0lBQ25FLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxlQUFlLENBQUM7SUFDL0MsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsTUFBTSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QyxFQUFFLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxjQUFzQjtRQUNqRCxPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsYUFBcUIsRUFBRSxLQUFhO1FBQ2hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLFNBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JCLFlBQVksRUFBRSxhQUFhO1lBQzNCLEtBQUs7U0FDTixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQXRDRCxzRUFzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8nO1xuXG5leHBvcnQgY2xhc3MgU3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICAgIHR4LnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3KTtcbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBzdXBlci5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBzdXBlci5zaWduSW1wbGVtZW50YXRpb24oa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgd2l0aGRyYXdhbCB0byBhZGQgdG8gb3VyIHRyYW5zYWN0aW9uIGJvZHkgc28gd2UgY2FuIHdpdGhkcmF3IGZyb20gb3VyIHJld2FyZHMvc3Rha2UgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0gc3Rha2luZ1B1YktleSBVc2VyJ3MgcHVibGljIHN0YWtlIGtleVxuICAgKiBAcGFyYW0gdmFsdWUgQW1vdW50IGZyb20gdGhlIHJld2FyZHMgYWRkcmVzcyB3ZSdyZSB3aXRoZHJhd2luZ1xuICAgKi9cbiAgYWRkV2l0aGRyYXdhbChzdGFraW5nUHViS2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb2luTmFtZSA9IHRoaXMuX2NvaW5Db25maWcubmFtZTtcbiAgICBjb25zdCByZXdhcmRBZGRyZXNzID0gVXRpbHMuZGVmYXVsdC5nZXRSZXdhcmRBZGRyZXNzKHN0YWtpbmdQdWJLZXksIGNvaW5OYW1lKTtcbiAgICB0aGlzLl93aXRoZHJhd2Fscy5wdXNoKHtcbiAgICAgIHN0YWtlQWRkcmVzczogcmV3YXJkQWRkcmVzcyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=
|
|
@@ -163,13 +163,13 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
163
163
|
* @param rawTx
|
|
164
164
|
*/
|
|
165
165
|
fromRawTransaction(rawTx) {
|
|
166
|
+
if (CardanoWasm.Transaction === undefined) {
|
|
167
|
+
// a temp fix until we solve import problem in webpack
|
|
168
|
+
throw new sdk_core_1.NodeEnvironmentError('unable to load cardano serialization library');
|
|
169
|
+
}
|
|
166
170
|
const HEX_REGEX = /^[0-9a-fA-F]+$/;
|
|
167
171
|
const bufferRawTransaction = HEX_REGEX.test(rawTx) ? Buffer.from(rawTx, 'hex') : Buffer.from(rawTx, 'base64');
|
|
168
172
|
try {
|
|
169
|
-
if (CardanoWasm.Transaction === undefined) {
|
|
170
|
-
// a temp fix until we solve import problem in webpack
|
|
171
|
-
throw new sdk_core_1.NodeEnvironmentError('unable to load cardano serialization library');
|
|
172
|
-
}
|
|
173
173
|
const txn = CardanoWasm.Transaction.from_bytes(bufferRawTransaction);
|
|
174
174
|
this._transaction = txn;
|
|
175
175
|
this._id = Buffer.from(CardanoWasm.hash_transaction(txn.body()).to_bytes()).toString('hex');
|
|
@@ -245,4 +245,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
exports.Transaction = Transaction;
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFPOEI7QUFDOUIsc0ZBQXdFO0FBQ3hFLHVDQUFvQztBQWlCcEMsSUFBSyxRQUlKO0FBSkQsV0FBSyxRQUFRO0lBQ1gsdUVBQW9CLENBQUE7SUFDcEIsbUVBQWtCLENBQUE7SUFDbEIsMkVBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUpJLFFBQVEsS0FBUixRQUFRLFFBSVo7QUF5QkQsTUFBYSxXQUFZLFNBQVEsMEJBQWU7SUFJOUMsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsRUFBMkI7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLElBQUk7WUFDRixJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE1BQU07WUFDTixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLE1BQU0s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QUcsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUF4UEQsa0NBd1BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBFbnRyeSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIE5vZGVFbnZpcm9ubWVudEVycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIENhcmRhbm9XYXNtIGZyb20gJ0BlbXVyZ28vY2FyZGFuby1zZXJpYWxpemF0aW9uLWxpYi1ub2RlanMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25JbnB1dCB7XG4gIHRyYW5zYWN0aW9uX2lkOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uX2luZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25PdXRwdXQge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdG5lc3Mge1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG59XG5lbnVtIENlcnRUeXBlIHtcbiAgU3Rha2VLZXlSZWdpc3RyYXRpb24sXG4gIFN0YWtlS2V5RGVsZWdhdGlvbixcbiAgU3Rha2VLZXlEZXJlZ2lzdHJhdGlvbixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDZXJ0IHtcbiAgdHlwZTogQ2VydFR5cGU7XG4gIHN0YWtlQ3JlZGVudGlhbEhhc2g6IHN0cmluZztcbiAgcG9vbEtleUhhc2g/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdhbCB7XG4gIHN0YWtlQWRkcmVzczogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuLyoqXG4gKiBUaGUgdHJhbnNhY3Rpb24gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSB0b0pzb24oKSBmdW5jdGlvbiBvZiBhIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHhEYXRhIHtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBpbnB1dHM6IFRyYW5zYWN0aW9uSW5wdXRbXTtcbiAgb3V0cHV0czogVHJhbnNhY3Rpb25PdXRwdXRbXTtcbiAgd2l0bmVzc2VzOiBXaXRuZXNzW107XG4gIGNlcnRzOiBDZXJ0W107XG4gIHdpdGhkcmF3YWxzOiBXaXRoZHJhd2FsW107XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBDYXJkYW5vV2FzbS5UcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfZmVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCB0cmFuc2FjdGlvbigpOiBDYXJkYW5vV2FzbS5UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHRyYW5zYWN0aW9uKHR4OiBDYXJkYW5vV2FzbS5UcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gICAgdGhpcy5faWQgPSBCdWZmZXIuZnJvbShDYXJkYW5vV2FzbS5oYXNoX3RyYW5zYWN0aW9uKHR4LmJvZHkoKSkudG9fYnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3RyYW5zYWN0aW9uLnRvX2J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgdHlwZTogdGhpcy5fdHlwZSBhcyBUcmFuc2FjdGlvblR5cGUsXG4gICAgICBpbnB1dHM6IFtdLFxuICAgICAgb3V0cHV0czogW10sXG4gICAgICB3aXRuZXNzZXM6IFtdLFxuICAgICAgY2VydHM6IFtdLFxuICAgICAgd2l0aGRyYXdhbHM6IFtdLFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3RyYW5zYWN0aW9uLmJvZHkoKS5pbnB1dHMoKS5sZW4oKTsgaSsrKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IHRoaXMuX3RyYW5zYWN0aW9uLmJvZHkoKS5pbnB1dHMoKS5nZXQoaSk7XG4gICAgICByZXN1bHQuaW5wdXRzLnB1c2goe1xuICAgICAgICB0cmFuc2FjdGlvbl9pZDogQnVmZmVyLmZyb20oaW5wdXQudHJhbnNhY3Rpb25faWQoKS50b19ieXRlcygpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHRyYW5zYWN0aW9uX2luZGV4OiBpbnB1dC5pbmRleCgpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkub3V0cHV0cygpLmxlbigpOyBpKyspIHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuX3RyYW5zYWN0aW9uLmJvZHkoKS5vdXRwdXRzKCkuZ2V0KGkpO1xuICAgICAgcmVzdWx0Lm91dHB1dHMucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6IG91dHB1dC5hZGRyZXNzKCkudG9fYmVjaDMyKCksXG4gICAgICAgIGFtb3VudDogb3V0cHV0LmFtb3VudCgpLmNvaW4oKS50b19zdHIoKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkuY2VydHMoKSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkuY2VydHMoKSEubGVuKCk7IGkrKykge1xuICAgICAgICBjb25zdCBjZXJ0ID0gdGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpLmNlcnRzKCkhLmdldChpKTtcbiAgICAgICAgaWYgKGNlcnQuYXNfc3Rha2VfcmVnaXN0cmF0aW9uKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IHN0YWtlUmVnaXN0cmF0aW9uID0gY2VydC5hc19zdGFrZV9yZWdpc3RyYXRpb24oKSBhcyBDYXJkYW5vV2FzbS5TdGFrZVJlZ2lzdHJhdGlvbjtcbiAgICAgICAgICByZXN1bHQuY2VydHMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBDZXJ0VHlwZS5TdGFrZUtleVJlZ2lzdHJhdGlvbixcbiAgICAgICAgICAgIHN0YWtlQ3JlZGVudGlhbEhhc2g6IEJ1ZmZlci5mcm9tKHN0YWtlUmVnaXN0cmF0aW9uLnN0YWtlX2NyZWRlbnRpYWwoKS50b19ieXRlcygpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNlcnQuYXNfc3Rha2VfZGVyZWdpc3RyYXRpb24oKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgc3Rha2VEZXJlZ2lzdHJhdGlvbiA9IGNlcnQuYXNfc3Rha2VfZGVyZWdpc3RyYXRpb24oKSBhcyBDYXJkYW5vV2FzbS5TdGFrZURlcmVnaXN0cmF0aW9uO1xuICAgICAgICAgIHJlc3VsdC5jZXJ0cy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IENlcnRUeXBlLlN0YWtlS2V5RGVyZWdpc3RyYXRpb24sXG4gICAgICAgICAgICBzdGFrZUNyZWRlbnRpYWxIYXNoOiBCdWZmZXIuZnJvbShzdGFrZURlcmVnaXN0cmF0aW9uLnN0YWtlX2NyZWRlbnRpYWwoKS50b19ieXRlcygpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNlcnQuYXNfc3Rha2VfZGVsZWdhdGlvbigpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFrZURlbGVnYXRpb24gPSBjZXJ0LmFzX3N0YWtlX2RlbGVnYXRpb24oKSBhcyBDYXJkYW5vV2FzbS5TdGFrZURlbGVnYXRpb247XG4gICAgICAgICAgcmVzdWx0LmNlcnRzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogQ2VydFR5cGUuU3Rha2VLZXlEZWxlZ2F0aW9uLFxuICAgICAgICAgICAgc3Rha2VDcmVkZW50aWFsSGFzaDogQnVmZmVyLmZyb20oc3Rha2VEZWxlZ2F0aW9uLnN0YWtlX2NyZWRlbnRpYWwoKS50b19ieXRlcygpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgICBwb29sS2V5SGFzaDogQnVmZmVyLmZyb20oc3Rha2VEZWxlZ2F0aW9uLnBvb2xfa2V5aGFzaCgpLnRvX2J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkud2l0aGRyYXdhbHMoKSkge1xuICAgICAgY29uc3Qgd2l0aGRyYXdhbHMgPSB0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkud2l0aGRyYXdhbHMoKSBhcyBDYXJkYW5vV2FzbS5XaXRoZHJhd2FscztcbiAgICAgIGNvbnN0IGtleXMgPSB3aXRoZHJhd2Fscy5rZXlzKCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuKCk7IGkrKykge1xuICAgICAgICBjb25zdCByZXdhcmRBZGRyZXNzID0ga2V5cy5nZXQoaSk7XG4gICAgICAgIGNvbnN0IHJld2FyZCA9IHdpdGhkcmF3YWxzLmdldChyZXdhcmRBZGRyZXNzKSBhcyBDYXJkYW5vV2FzbS5CaWdOdW07XG4gICAgICAgIHJlc3VsdC53aXRoZHJhd2Fscy5wdXNoKHtcbiAgICAgICAgICBzdGFrZUFkZHJlc3M6IHJld2FyZEFkZHJlc3MudG9fYWRkcmVzcygpLnRvX2J5dGVzKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICB2YWx1ZTogcmV3YXJkLnRvX3N0cigpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24ud2l0bmVzc19zZXQoKS52a2V5cygpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHZrZXlzID0gdGhpcy5fdHJhbnNhY3Rpb24ud2l0bmVzc19zZXQoKS52a2V5cygpIGFzIENhcmRhbm9XYXNtLlZrZXl3aXRuZXNzZXM7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZrZXlzLmxlbigpOyBpKyspIHtcbiAgICAgICAgY29uc3QgdmtleSA9ICh0aGlzLl90cmFuc2FjdGlvbi53aXRuZXNzX3NldCgpLnZrZXlzKCkgYXMgQ2FyZGFub1dhc20uVmtleXdpdG5lc3NlcykuZ2V0KGkpO1xuICAgICAgICByZXN1bHQud2l0bmVzc2VzLnB1c2goe1xuICAgICAgICAgIHB1YmxpY0tleTogdmtleT8udmtleSgpLnB1YmxpY19rZXkoKS50b19iZWNoMzIoKSxcbiAgICAgICAgICBzaWduYXR1cmU6IHZrZXk/LnNpZ25hdHVyZSgpLnRvX2hleCgpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBpbnB1dCBhbmQgb3V0cHV0IGZpZWxkIGZvciB0aGlzIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBjb25zdCBvdXRwdXRzOiBFbnRyeVtdID0gW107XG4gICAgY29uc3QgaW5wdXRzOiBFbnRyeVtdID0gW107XG5cbiAgICBjb25zdCB0eF9vdXRwdXRzID0gdGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpLm91dHB1dHMoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR4X291dHB1dHMubGVuKCk7IGkrKykge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gdHhfb3V0cHV0cy5nZXQoaSk7XG4gICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcygpLnRvX2JlY2gzMigpLFxuICAgICAgICB2YWx1ZTogb3V0cHV0LmFtb3VudCgpLmNvaW4oKS50b19zdHIoKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX291dHB1dHMgPSBvdXRwdXRzO1xuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKENhcmRhbm9XYXNtLmhhc2hfdHJhbnNhY3Rpb24odGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpKS50b19ieXRlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0gcmF3VHhcbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUeDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgSEVYX1JFR0VYID0gL15bMC05YS1mQS1GXSskLztcbiAgICBjb25zdCBidWZmZXJSYXdUcmFuc2FjdGlvbiA9IEhFWF9SRUdFWC50ZXN0KHJhd1R4KSA/IEJ1ZmZlci5mcm9tKHJhd1R4LCAnaGV4JykgOiBCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoQ2FyZGFub1dhc20uVHJhbnNhY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBhIHRlbXAgZml4IHVudGlsIHdlIHNvbHZlIGltcG9ydCBwcm9ibGVtIGluIHdlYnBhY2tcbiAgICAgICAgdGhyb3cgbmV3IE5vZGVFbnZpcm9ubWVudEVycm9yKCd1bmFibGUgdG8gbG9hZCBjYXJkYW5vIHNlcmlhbGl6YXRpb24gbGlicmFyeScpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHhuID0gQ2FyZGFub1dhc20uVHJhbnNhY3Rpb24uZnJvbV9ieXRlcyhidWZmZXJSYXdUcmFuc2FjdGlvbik7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4bjtcbiAgICAgIHRoaXMuX2lkID0gQnVmZmVyLmZyb20oQ2FyZGFub1dhc20uaGFzaF90cmFuc2FjdGlvbih0eG4uYm9keSgpKS50b19ieXRlcygpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpLmNlcnRzKCkpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkuY2VydHMoKSEubGVuKCk7IGkrKykge1xuICAgICAgICAgIGNvbnN0IGNlcnQgPSB0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkuY2VydHMoKSEuZ2V0KGkpO1xuICAgICAgICAgIGlmIChjZXJ0LmFzX3N0YWtlX3JlZ2lzdHJhdGlvbigpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2VydC5hc19zdGFrZV9kZXJlZ2lzdHJhdGlvbigpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpLndpdGhkcmF3YWxzKCkpIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2ZlZSA9IHR4bi5ib2R5KCkuZmVlKCkudG9fc3RyKCk7XG4gICAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd1bmFibGUgdG8gYnVpbGQgdHJhbnNhY3Rpb24gZnJvbSByYXcnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IHtcbiAgICBvdXRwdXRzOiB7IGFtb3VudDogc3RyaW5nOyBhZGRyZXNzOiBzdHJpbmcgfVtdO1xuICAgIGNlcnRpZmljYXRlczogQ2VydFtdO1xuICAgIGNoYW5nZU91dHB1dHM6IHN0cmluZ1tdO1xuICAgIG91dHB1dEFtb3VudDogc3RyaW5nO1xuICAgIGZlZTogeyBmZWU6IHN0cmluZyB9O1xuICAgIGRpc3BsYXlPcmRlcjogc3RyaW5nW107XG4gICAgaWQ6IHN0cmluZztcbiAgICBjaGFuZ2VBbW91bnQ6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgd2l0aGRyYXdhbHM6IFdpdGhkcmF3YWxbXTtcbiAgfSB7XG4gICAgY29uc3QgdHhKc29uID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VBbW91bnQnLCAnb3V0cHV0cycsICdjaGFuZ2VPdXRwdXRzJywgJ2ZlZScsICd0eXBlJ107XG4gICAgY29uc3QgYW1vdW50ID0gdHhKc29uLm91dHB1dHMubWFwKChvKSA9PiAoeyBhbW91bnQ6IEJpZ0ludChvLmFtb3VudCkgfSkpO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IGFtb3VudC5yZWR1Y2UoKHAsIG4pID0+IHAgKyBCaWdJbnQobi5hbW91bnQpLCBCaWdJbnQoJzAnKSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCB0eXBlID1cbiAgICAgIHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kXG4gICAgICAgID8gJ1RyYW5zZmVyJ1xuICAgICAgICA6IHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGVcbiAgICAgICAgPyAnU3Rha2luZ0FjdGl2YXRlJ1xuICAgICAgICA6IHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXdcbiAgICAgICAgPyAnU3Rha2luZ1dpdGhkcmF3J1xuICAgICAgICA6ICdTdGFraW5nRGVhY3RpdmF0ZSc7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0eEpzb24uaWQsXG4gICAgICBvdXRwdXRzOiB0eEpzb24ub3V0cHV0cy5tYXAoKG8pID0+ICh7IGFkZHJlc3M6IG8uYWRkcmVzcywgYW1vdW50OiBvLmFtb3VudCB9KSksXG4gICAgICBvdXRwdXRBbW91bnQ6IG91dHB1dEFtb3VudCxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiB0aGlzLl9mZWUgfSxcbiAgICAgIHR5cGUsXG4gICAgICBjZXJ0aWZpY2F0ZXM6IHR4SnNvbi5jZXJ0cyxcbiAgICAgIHdpdGhkcmF3YWxzOiB0eEpzb24ud2l0aGRyYXdhbHMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdHJhbnNhY3Rpb24gZmVlXG4gICAqL1xuICBnZXQgZ2V0RmVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdHJhbnNhY3Rpb24gZmVlXG4gICAqXG4gICAqIEBwYXJhbSBmZWVcbiAgICovXG4gIGZlZShmZWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZlZSA9IGZlZTtcbiAgfVxufVxuIl19
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFPOEI7QUFDOUIsc0ZBQXdFO0FBQ3hFLHVDQUFvQztBQWlCcEMsSUFBSyxRQUlKO0FBSkQsV0FBSyxRQUFRO0lBQ1gsdUVBQW9CLENBQUE7SUFDcEIsbUVBQWtCLENBQUE7SUFDbEIsMkVBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUpJLFFBQVEsS0FBUixRQUFRLFFBSVo7QUF5QkQsTUFBYSxXQUFZLFNBQVEsMEJBQWU7SUFJOUMsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsRUFBMkI7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLElBQUk7WUFDRixJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE1BQU07WUFDTixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLE1BQU0s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LENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBeFBELGtDQXdQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgRW50cnksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBOb2RlRW52aXJvbm1lbnRFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBDYXJkYW5vV2FzbSBmcm9tICdAZW11cmdvL2NhcmRhbm8tc2VyaWFsaXphdGlvbi1saWItbm9kZWpzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uSW5wdXQge1xuICB0cmFuc2FjdGlvbl9pZDogc3RyaW5nO1xuICB0cmFuc2FjdGlvbl9pbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uT3V0cHV0IHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRuZXNzIHtcbiAgcHVibGljS2V5OiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xufVxuZW51bSBDZXJ0VHlwZSB7XG4gIFN0YWtlS2V5UmVnaXN0cmF0aW9uLFxuICBTdGFrZUtleURlbGVnYXRpb24sXG4gIFN0YWtlS2V5RGVyZWdpc3RyYXRpb24sXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VydCB7XG4gIHR5cGU6IENlcnRUeXBlO1xuICBzdGFrZUNyZWRlbnRpYWxIYXNoOiBzdHJpbmc7XG4gIHBvb2xLZXlIYXNoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3YWwge1xuICBzdGFrZUFkZHJlc3M6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgaW5wdXRzOiBUcmFuc2FjdGlvbklucHV0W107XG4gIG91dHB1dHM6IFRyYW5zYWN0aW9uT3V0cHV0W107XG4gIHdpdG5lc3NlczogV2l0bmVzc1tdO1xuICBjZXJ0czogQ2VydFtdO1xuICB3aXRoZHJhd2FsczogV2l0aGRyYXdhbFtdO1xufVxuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogQ2FyZGFub1dhc20uVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX2ZlZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgdHJhbnNhY3Rpb24oKTogQ2FyZGFub1dhc20uVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldCB0cmFuc2FjdGlvbih0eDogQ2FyZGFub1dhc20uVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuICAgIHRoaXMuX2lkID0gQnVmZmVyLmZyb20oQ2FyZGFub1dhc20uaGFzaF90cmFuc2FjdGlvbih0eC5ib2R5KCkpLnRvX2J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLl90cmFuc2FjdGlvbi50b19ieXRlcygpKS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUgYXMgVHJhbnNhY3Rpb25UeXBlLFxuICAgICAgaW5wdXRzOiBbXSxcbiAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgd2l0bmVzc2VzOiBbXSxcbiAgICAgIGNlcnRzOiBbXSxcbiAgICAgIHdpdGhkcmF3YWxzOiBbXSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkuaW5wdXRzKCkubGVuKCk7IGkrKykge1xuICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkuaW5wdXRzKCkuZ2V0KGkpO1xuICAgICAgcmVzdWx0LmlucHV0cy5wdXNoKHtcbiAgICAgICAgdHJhbnNhY3Rpb25faWQ6IEJ1ZmZlci5mcm9tKGlucHV0LnRyYW5zYWN0aW9uX2lkKCkudG9fYnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB0cmFuc2FjdGlvbl9pbmRleDogaW5wdXQuaW5kZXgoKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpLm91dHB1dHMoKS5sZW4oKTsgaSsrKSB7XG4gICAgICBjb25zdCBvdXRwdXQgPSB0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkub3V0cHV0cygpLmdldChpKTtcbiAgICAgIHJlc3VsdC5vdXRwdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcygpLnRvX2JlY2gzMigpLFxuICAgICAgICBhbW91bnQ6IG91dHB1dC5hbW91bnQoKS5jb2luKCkudG9fc3RyKCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpLmNlcnRzKCkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpLmNlcnRzKCkhLmxlbigpOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2VydCA9IHRoaXMuX3RyYW5zYWN0aW9uLmJvZHkoKS5jZXJ0cygpIS5nZXQoaSk7XG4gICAgICAgIGlmIChjZXJ0LmFzX3N0YWtlX3JlZ2lzdHJhdGlvbigpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFrZVJlZ2lzdHJhdGlvbiA9IGNlcnQuYXNfc3Rha2VfcmVnaXN0cmF0aW9uKCkgYXMgQ2FyZGFub1dhc20uU3Rha2VSZWdpc3RyYXRpb247XG4gICAgICAgICAgcmVzdWx0LmNlcnRzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogQ2VydFR5cGUuU3Rha2VLZXlSZWdpc3RyYXRpb24sXG4gICAgICAgICAgICBzdGFrZUNyZWRlbnRpYWxIYXNoOiBCdWZmZXIuZnJvbShzdGFrZVJlZ2lzdHJhdGlvbi5zdGFrZV9jcmVkZW50aWFsKCkudG9fYnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZXJ0LmFzX3N0YWtlX2RlcmVnaXN0cmF0aW9uKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IHN0YWtlRGVyZWdpc3RyYXRpb24gPSBjZXJ0LmFzX3N0YWtlX2RlcmVnaXN0cmF0aW9uKCkgYXMgQ2FyZGFub1dhc20uU3Rha2VEZXJlZ2lzdHJhdGlvbjtcbiAgICAgICAgICByZXN1bHQuY2VydHMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBDZXJ0VHlwZS5TdGFrZUtleURlcmVnaXN0cmF0aW9uLFxuICAgICAgICAgICAgc3Rha2VDcmVkZW50aWFsSGFzaDogQnVmZmVyLmZyb20oc3Rha2VEZXJlZ2lzdHJhdGlvbi5zdGFrZV9jcmVkZW50aWFsKCkudG9fYnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZXJ0LmFzX3N0YWtlX2RlbGVnYXRpb24oKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgc3Rha2VEZWxlZ2F0aW9uID0gY2VydC5hc19zdGFrZV9kZWxlZ2F0aW9uKCkgYXMgQ2FyZGFub1dhc20uU3Rha2VEZWxlZ2F0aW9uO1xuICAgICAgICAgIHJlc3VsdC5jZXJ0cy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IENlcnRUeXBlLlN0YWtlS2V5RGVsZWdhdGlvbixcbiAgICAgICAgICAgIHN0YWtlQ3JlZGVudGlhbEhhc2g6IEJ1ZmZlci5mcm9tKHN0YWtlRGVsZWdhdGlvbi5zdGFrZV9jcmVkZW50aWFsKCkudG9fYnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgICAgcG9vbEtleUhhc2g6IEJ1ZmZlci5mcm9tKHN0YWtlRGVsZWdhdGlvbi5wb29sX2tleWhhc2goKS50b19ieXRlcygpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpLndpdGhkcmF3YWxzKCkpIHtcbiAgICAgIGNvbnN0IHdpdGhkcmF3YWxzID0gdGhpcy5fdHJhbnNhY3Rpb24uYm9keSgpLndpdGhkcmF3YWxzKCkgYXMgQ2FyZGFub1dhc20uV2l0aGRyYXdhbHM7XG4gICAgICBjb25zdCBrZXlzID0gd2l0aGRyYXdhbHMua2V5cygpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbigpOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmV3YXJkQWRkcmVzcyA9IGtleXMuZ2V0KGkpO1xuICAgICAgICBjb25zdCByZXdhcmQgPSB3aXRoZHJhd2Fscy5nZXQocmV3YXJkQWRkcmVzcykgYXMgQ2FyZGFub1dhc20uQmlnTnVtO1xuICAgICAgICByZXN1bHQud2l0aGRyYXdhbHMucHVzaCh7XG4gICAgICAgICAgc3Rha2VBZGRyZXNzOiByZXdhcmRBZGRyZXNzLnRvX2FkZHJlc3MoKS50b19ieXRlcygpLnRvU3RyaW5nKCksXG4gICAgICAgICAgdmFsdWU6IHJld2FyZC50b19zdHIoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uLndpdG5lc3Nfc2V0KCkudmtleXMoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB2a2V5cyA9IHRoaXMuX3RyYW5zYWN0aW9uLndpdG5lc3Nfc2V0KCkudmtleXMoKSBhcyBDYXJkYW5vV2FzbS5Wa2V5d2l0bmVzc2VzO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2a2V5cy5sZW4oKTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHZrZXkgPSAodGhpcy5fdHJhbnNhY3Rpb24ud2l0bmVzc19zZXQoKS52a2V5cygpIGFzIENhcmRhbm9XYXNtLlZrZXl3aXRuZXNzZXMpLmdldChpKTtcbiAgICAgICAgcmVzdWx0LndpdG5lc3Nlcy5wdXNoKHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHZrZXk/LnZrZXkoKS5wdWJsaWNfa2V5KCkudG9fYmVjaDMyKCksXG4gICAgICAgICAgc2lnbmF0dXJlOiB2a2V5Py5zaWduYXR1cmUoKS50b19oZXgoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgaW5wdXQgYW5kIG91dHB1dCBmaWVsZCBmb3IgdGhpcyB0cmFuc2FjdGlvblxuICAgKlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgY29uc3Qgb3V0cHV0czogRW50cnlbXSA9IFtdO1xuICAgIGNvbnN0IGlucHV0czogRW50cnlbXSA9IFtdO1xuXG4gICAgY29uc3QgdHhfb3V0cHV0cyA9IHRoaXMuX3RyYW5zYWN0aW9uLmJvZHkoKS5vdXRwdXRzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eF9vdXRwdXRzLmxlbigpOyBpKyspIHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHR4X291dHB1dHMuZ2V0KGkpO1xuICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MoKS50b19iZWNoMzIoKSxcbiAgICAgICAgdmFsdWU6IG91dHB1dC5hbW91bnQoKS5jb2luKCkudG9fc3RyKCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9vdXRwdXRzID0gb3V0cHV0cztcbiAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShDYXJkYW5vV2FzbS5oYXNoX3RyYW5zYWN0aW9uKHRoaXMuX3RyYW5zYWN0aW9uLmJvZHkoKSkudG9fYnl0ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHJhd1R4XG4gICAqL1xuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHg6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChDYXJkYW5vV2FzbS5UcmFuc2FjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBhIHRlbXAgZml4IHVudGlsIHdlIHNvbHZlIGltcG9ydCBwcm9ibGVtIGluIHdlYnBhY2tcbiAgICAgIHRocm93IG5ldyBOb2RlRW52aXJvbm1lbnRFcnJvcigndW5hYmxlIHRvIGxvYWQgY2FyZGFubyBzZXJpYWxpemF0aW9uIGxpYnJhcnknKTtcbiAgICB9XG4gICAgY29uc3QgSEVYX1JFR0VYID0gL15bMC05YS1mQS1GXSskLztcbiAgICBjb25zdCBidWZmZXJSYXdUcmFuc2FjdGlvbiA9IEhFWF9SRUdFWC50ZXN0KHJhd1R4KSA/IEJ1ZmZlci5mcm9tKHJhd1R4LCAnaGV4JykgOiBCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eG4gPSBDYXJkYW5vV2FzbS5UcmFuc2FjdGlvbi5mcm9tX2J5dGVzKGJ1ZmZlclJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHhuO1xuICAgICAgdGhpcy5faWQgPSBCdWZmZXIuZnJvbShDYXJkYW5vV2FzbS5oYXNoX3RyYW5zYWN0aW9uKHR4bi5ib2R5KCkpLnRvX2J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkuY2VydHMoKSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3RyYW5zYWN0aW9uLmJvZHkoKS5jZXJ0cygpIS5sZW4oKTsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgY2VydCA9IHRoaXMuX3RyYW5zYWN0aW9uLmJvZHkoKS5jZXJ0cygpIS5nZXQoaSk7XG4gICAgICAgICAgaWYgKGNlcnQuYXNfc3Rha2VfcmVnaXN0cmF0aW9uKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjZXJ0LmFzX3N0YWtlX2RlcmVnaXN0cmF0aW9uKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi5ib2R5KCkud2l0aGRyYXdhbHMoKSkge1xuICAgICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZmVlID0gdHhuLmJvZHkoKS5mZWUoKS50b19zdHIoKTtcbiAgICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3VuYWJsZSB0byBidWlsZCB0cmFuc2FjdGlvbiBmcm9tIHJhdycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKToge1xuICAgIG91dHB1dHM6IHsgYW1vdW50OiBzdHJpbmc7IGFkZHJlc3M6IHN0cmluZyB9W107XG4gICAgY2VydGlmaWNhdGVzOiBDZXJ0W107XG4gICAgY2hhbmdlT3V0cHV0czogc3RyaW5nW107XG4gICAgb3V0cHV0QW1vdW50OiBzdHJpbmc7XG4gICAgZmVlOiB7IGZlZTogc3RyaW5nIH07XG4gICAgZGlzcGxheU9yZGVyOiBzdHJpbmdbXTtcbiAgICBpZDogc3RyaW5nO1xuICAgIGNoYW5nZUFtb3VudDogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICB3aXRoZHJhd2FsczogV2l0aGRyYXdhbFtdO1xuICB9IHtcbiAgICBjb25zdCB0eEpzb24gPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZUFtb3VudCcsICdvdXRwdXRzJywgJ2NoYW5nZU91dHB1dHMnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBhbW91bnQgPSB0eEpzb24ub3V0cHV0cy5tYXAoKG8pID0+ICh7IGFtb3VudDogQmlnSW50KG8uYW1vdW50KSB9KSk7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gYW1vdW50LnJlZHVjZSgocCwgbikgPT4gcCArIEJpZ0ludChuLmFtb3VudCksIEJpZ0ludCgnMCcpKS50b1N0cmluZygpO1xuICAgIGNvbnN0IHR5cGUgPVxuICAgICAgdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmRcbiAgICAgICAgPyAnVHJhbnNmZXInXG4gICAgICAgIDogdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZVxuICAgICAgICA/ICdTdGFraW5nQWN0aXZhdGUnXG4gICAgICAgIDogdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhd1xuICAgICAgICA/ICdTdGFraW5nV2l0aGRyYXcnXG4gICAgICAgIDogJ1N0YWtpbmdEZWFjdGl2YXRlJztcbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHR4SnNvbi5pZCxcbiAgICAgIG91dHB1dHM6IHR4SnNvbi5vdXRwdXRzLm1hcCgobykgPT4gKHsgYWRkcmVzczogby5hZGRyZXNzLCBhbW91bnQ6IG8uYW1vdW50IH0pKSxcbiAgICAgIG91dHB1dEFtb3VudDogb3V0cHV0QW1vdW50LFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuX2ZlZSB9LFxuICAgICAgdHlwZSxcbiAgICAgIGNlcnRpZmljYXRlczogdHhKc29uLmNlcnRzLFxuICAgICAgd2l0aGRyYXdhbHM6IHR4SnNvbi53aXRoZHJhd2FscyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0cmFuc2FjdGlvbiBmZWVcbiAgICovXG4gIGdldCBnZXRGZWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0cmFuc2FjdGlvbiBmZWVcbiAgICpcbiAgICogQHBhcmFtIGZlZVxuICAgKi9cbiAgZmVlKGZlZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmVlID0gZmVlO1xuICB9XG59XG4iXX0=
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { KeyPair } from './keyPair';
|
|
|
3
3
|
export declare class Utils implements BaseUtils {
|
|
4
4
|
createBaseAddressWithStakeAndPaymentKey(stakeKeyPair: KeyPair, paymentKeyPair: KeyPair, network: AddressFormat): string;
|
|
5
5
|
validateBlake2b(hash: string): boolean;
|
|
6
|
+
getRewardAddress(stakingPubKey: string, coinName: string): string;
|
|
6
7
|
/** @inheritdoc */
|
|
7
8
|
isValidAddress(address: string): boolean;
|
|
8
9
|
/** @inheritdoc */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAShE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,qBAAa,KAAM,YAAW,SAAS;IACrC,uCAAuC,CACrC,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,aAAa,GACrB,MAAM;IAiCT,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUtC,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBjE,kBAAkB;IAElB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAyBxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASzC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAS5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG5C;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
|
package/dist/src/lib/utils.js
CHANGED
|
@@ -40,6 +40,17 @@ class Utils {
|
|
|
40
40
|
}
|
|
41
41
|
return hash.match(/^[a-zA-Z0-9]+$/) !== null;
|
|
42
42
|
}
|
|
43
|
+
getRewardAddress(stakingPubKey, coinName) {
|
|
44
|
+
const stakePub = cardano_serialization_lib_nodejs_1.PublicKey.from_bytes(Buffer.from(stakingPubKey, 'hex'));
|
|
45
|
+
let rewardAddress;
|
|
46
|
+
if (coinName === 'ada') {
|
|
47
|
+
rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.mainnet().network_id(), cardano_serialization_lib_nodejs_1.StakeCredential.from_keyhash(stakePub.hash()));
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.testnet().network_id(), cardano_serialization_lib_nodejs_1.StakeCredential.from_keyhash(stakePub.hash()));
|
|
51
|
+
}
|
|
52
|
+
return rewardAddress.to_address().to_bech32();
|
|
53
|
+
}
|
|
43
54
|
/** @inheritdoc */
|
|
44
55
|
// this will validate both stake and payment addresses
|
|
45
56
|
isValidAddress(address) {
|
|
@@ -110,4 +121,4 @@ class Utils {
|
|
|
110
121
|
exports.Utils = Utils;
|
|
111
122
|
const utils = new Utils();
|
|
112
123
|
exports.default = utils;
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFnRTtBQUNoRSwrRkFNa0Q7QUFDbEQsdUNBQW9DO0FBQ3BDLG1DQUFnQztBQUVoQyxNQUFhLEtBQUs7SUFDaEIsdUNBQXVDLENBQ3JDLFlBQXFCLEVBQ3JCLGNBQXVCLEVBQ3ZCLE9BQXNCO1FBRXRCLElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxPQUFPLEtBQUssd0JBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDckMseUJBQXlCO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFFdkMsTUFBTSxRQUFRLEdBQUcsNENBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRCwyQkFBMkI7WUFDM0IsTUFBTSxVQUFVLEdBQUcsNENBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUYsMENBQTBDO1lBQzFDLFFBQVEsR0FBRyw4Q0FBVyxDQUFDLEdBQUcsQ0FDeEIsOENBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFDbEMsa0RBQWUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQy9DLGtEQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDMUM7YUFBTSxJQUFJLE9BQU8sS0FBSyx3QkFBYSxDQUFDLE9BQU8sRUFBRTtZQUM1Qyx5QkFBeUI7WUFDekIs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QkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE1BQU07WUFDTixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxTQUFpQjtRQUNoQyxJQUFJO1lBQ0YsbURBQWdCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG9CQUFvQixDQUFDLElBQVk7UUFDL0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQXZIRCxzQkF1SEM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZHJlc3NGb3JtYXQsIEJhc2VVdGlscyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIEJhc2VBZGRyZXNzLFxuICBQdWJsaWNLZXksXG4gIEVkMjU1MTlTaWduYXR1cmUsXG4gIE5ldHdvcmtJbmZvLFxuICBTdGFrZUNyZWRlbnRpYWwsXG59IGZyb20gJ0BlbXVyZ28vY2FyZGFuby1zZXJpYWxpemF0aW9uLWxpYi1ub2RlanMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInO1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICBjcmVhdGVCYXNlQWRkcmVzc1dpdGhTdGFrZUFuZFBheW1lbnRLZXkoXG4gICAgc3Rha2VLZXlQYWlyOiBLZXlQYWlyLFxuICAgIHBheW1lbnRLZXlQYWlyOiBLZXlQYWlyLFxuICAgIG5ldHdvcms6IEFkZHJlc3NGb3JtYXRcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgYmFzZUFkZHI7XG4gICAgaWYgKG5ldHdvcmsgPT09IEFkZHJlc3NGb3JtYXQubWFpbm5ldCkge1xuICAgICAgLy8gMS4gY3JlYXRlIHN0YWtlIHB1YktleVxuICAgICAgY29uc3Qga2V5ID0gc3Rha2VLZXlQYWlyLmdldEtleXMoKS5wdWI7XG5cbiAgICAgIGNvbnN0IHN0YWtlUHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20oa2V5LCAnaGV4JykpO1xuICAgICAgLy8gMi4gY3JlYXRlIHBheW1lbnQgcHViS2V5XG4gICAgICBjb25zdCBwYXltZW50UHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20ocGF5bWVudEtleVBhaXIuZ2V0S2V5cygpLnB1YiwgJ2hleCcpKTtcbiAgICAgIC8vIDMuIGNyZWF0ZSBmdWxsIGJhc2UgYWRkcmVzcyBmb3Igc3Rha2luZ1xuICAgICAgYmFzZUFkZHIgPSBCYXNlQWRkcmVzcy5uZXcoXG4gICAgICAgIE5ldHdvcmtJbmZvLm1haW5uZXQoKS5uZXR3b3JrX2lkKCksXG4gICAgICAgIFN0YWtlQ3JlZGVudGlhbC5mcm9tX2tleWhhc2gocGF5bWVudFB1Yi5oYXNoKCkpLFxuICAgICAgICBTdGFrZUNyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHN0YWtlUHViLmhhc2goKSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gYmFzZUFkZHIudG9fYWRkcmVzcygpLnRvX2JlY2gzMigpO1xuICAgIH0gZWxzZSBpZiAobmV0d29yayA9PT0gQWRkcmVzc0Zvcm1hdC50ZXN0bmV0KSB7XG4gICAgICAvLyAxLiBjcmVhdGUgc3Rha2UgcHViS2V5XG4gICAgICBjb25zdCBzdGFrZVB1YiA9IFB1YmxpY0tleS5mcm9tX2J5dGVzKEJ1ZmZlci5mcm9tKHN0YWtlS2V5UGFpci5nZXRLZXlzKCkucHViLCAnaGV4JykpO1xuICAgICAgLy8gMi4gY3JlYXRlIHBheW1lbnQgcHViS2V5XG4gICAgICBjb25zdCBwYXltZW50UHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20ocGF5bWVudEtleVBhaXIuZ2V0S2V5cygpLnB1YiwgJ2hleCcpKTtcbiAgICAgIC8vIDMuIGNyZWF0ZSBmdWxsIGJhc2UgYWRkcmVzcyBmb3Igc3Rha2luZ1xuICAgICAgY29uc3QgYmFzZUFkZHIgPSBCYXNlQWRkcmVzcy5uZXcoXG4gICAgICAgIE5ldHdvcmtJbmZvLnRlc3RuZXQoKS5uZXR3b3JrX2lkKCksXG4gICAgICAgIFN0YWtlQ3JlZGVudGlhbC5mcm9tX2tleWhhc2gocGF5bWVudFB1Yi5oYXNoKCkpLFxuICAgICAgICBTdGFrZUNyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHN0YWtlUHViLmhhc2goKSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gYmFzZUFkZHIudG9fYWRkcmVzcygpLnRvX2JlY2gzMigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ltcHJvcGVyIE5ldHdvcmsgVHlwZSEnKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUJsYWtlMmIoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFoYXNoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChoYXNoLmxlbmd0aCAhPT0gNjQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc2gubWF0Y2goL15bYS16QS1aMC05XSskLykgIT09IG51bGw7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgLy8gdGhpcyB3aWxsIHZhbGlkYXRlIGJvdGggc3Rha2UgYW5kIHBheW1lbnQgYWRkcmVzc2VzXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJlY2gzMlByZWZpeExpc3QgPSBbJ2FkZHInLCAnYWRkcl90ZXN0JywgJ3N0YWtlJywgJ3N0YWtlX3Rlc3QnXTtcbiAgICBjb25zdCBCQVNFX0FERFJfTEVOID0gOTI7XG4gICAgY29uc3QgUkVXQVJEX0FORF9FTlRFUlBSSVNFX0FERFJfTEVOID0gNDc7XG4gICAgY29uc3QgUE9JTlRFUl9BRERSX0xFTiA9IDUyO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRCZWNoID0gYmVjaDMyLmRlY29kZShhZGRyZXNzLCAxMDgpO1xuICAgICAgY29uc3Qgd29yZExlbmd0aCA9IGRlY29kZWRCZWNoLndvcmRzLmxlbmd0aDtcbiAgICAgIGlmICghYmVjaDMyUHJlZml4TGlzdC5pbmNsdWRlcyhkZWNvZGVkQmVjaC5wcmVmaXgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgd29yZExlbmd0aCAhPT0gQkFTRV9BRERSX0xFTiAmJlxuICAgICAgICB3b3JkTGVuZ3RoICE9PSBSRVdBUkRfQU5EX0VOVEVSUFJJU0VfQUREUl9MRU4gJiZcbiAgICAgICAgd29yZExlbmd0aCAhPT0gUE9JTlRFUl9BRERSX0xFTlxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUJsYWtlMmIoaGFzaCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyB0aGlzIHdpbGwgcmV0dXJuIHRydWUgZm9yIGJvdGggZXh0ZW5kZWQgYW5kIG5vbi1leHRlbmRlZCBFRDI1NTE5IGtleXNcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkS2V5KGtleSk7XG4gIH1cblxuICBpc1ZhbGlkS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShwdWJLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHB1YjogcHViS2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgRWQyNTUxOVNpZ25hdHVyZS5mcm9tX2hleChzaWduYXR1cmUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQmxha2UyYih0eElkKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFnRTtBQUNoRSwrRkFPa0Q7QUFDbEQsdUNBQW9DO0FBQ3BDLG1DQUFnQztBQUVoQyxNQUFhLEtBQUs7SUFDaEIsdUNBQXVDLENBQ3JDLFlBQXFCLEVBQ3JCLGNBQXVCLEVBQ3ZCLE9BQXNCO1FBRXRCLElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxPQUFPLEtBQUssd0JBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDckMseUJBQXlCO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFFdkMsTUFBTSxRQUFRLEdBQUcsNENBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRCwyQkFBMkI7WUFDM0IsTUFBTSxVQUFVLEdBQUcsNENBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUYsMENBQTBDO1lBQzFDLFFBQVEsR0FBRyw4Q0FBVyxDQUFDLEdBQUcsQ0FDeEIsOENBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFDbEMsa0RBQWUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQy9DLGtEQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDMUM7YUFBTSxJQUFJLE9BQU8sS0FBSyx3QkFBYSxDQUFDLE9BQU8sRUFBRTtZQUM1Qyx5QkFBeUI7WUFDekIs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Q0FBQztDQUNGO0FBeElELHNCQXdJQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCwgQmFzZVV0aWxzIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIFB1YmxpY0tleSxcbiAgRWQyNTUxOVNpZ25hdHVyZSxcbiAgTmV0d29ya0luZm8sXG4gIFN0YWtlQ3JlZGVudGlhbCxcbiAgUmV3YXJkQWRkcmVzcyxcbn0gZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGJlY2gzMiB9IGZyb20gJ2JlY2gzMic7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIGNyZWF0ZUJhc2VBZGRyZXNzV2l0aFN0YWtlQW5kUGF5bWVudEtleShcbiAgICBzdGFrZUtleVBhaXI6IEtleVBhaXIsXG4gICAgcGF5bWVudEtleVBhaXI6IEtleVBhaXIsXG4gICAgbmV0d29yazogQWRkcmVzc0Zvcm1hdFxuICApOiBzdHJpbmcge1xuICAgIGxldCBiYXNlQWRkcjtcbiAgICBpZiAobmV0d29yayA9PT0gQWRkcmVzc0Zvcm1hdC5tYWlubmV0KSB7XG4gICAgICAvLyAxLiBjcmVhdGUgc3Rha2UgcHViS2V5XG4gICAgICBjb25zdCBrZXkgPSBzdGFrZUtleVBhaXIuZ2V0S2V5cygpLnB1YjtcblxuICAgICAgY29uc3Qgc3Rha2VQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShrZXksICdoZXgnKSk7XG4gICAgICAvLyAyLiBjcmVhdGUgcGF5bWVudCBwdWJLZXlcbiAgICAgIGNvbnN0IHBheW1lbnRQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShwYXltZW50S2V5UGFpci5nZXRLZXlzKCkucHViLCAnaGV4JykpO1xuICAgICAgLy8gMy4gY3JlYXRlIGZ1bGwgYmFzZSBhZGRyZXNzIGZvciBzdGFraW5nXG4gICAgICBiYXNlQWRkciA9IEJhc2VBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8ubWFpbm5ldCgpLm5ldHdvcmtfaWQoKSxcbiAgICAgICAgU3Rha2VDcmVkZW50aWFsLmZyb21fa2V5aGFzaChwYXltZW50UHViLmhhc2goKSksXG4gICAgICAgIFN0YWtlQ3JlZGVudGlhbC5mcm9tX2tleWhhc2goc3Rha2VQdWIuaGFzaCgpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBiYXNlQWRkci50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gICAgfSBlbHNlIGlmIChuZXR3b3JrID09PSBBZGRyZXNzRm9ybWF0LnRlc3RuZXQpIHtcbiAgICAgIC8vIDEuIGNyZWF0ZSBzdGFrZSBwdWJLZXlcbiAgICAgIGNvbnN0IHN0YWtlUHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20oc3Rha2VLZXlQYWlyLmdldEtleXMoKS5wdWIsICdoZXgnKSk7XG4gICAgICAvLyAyLiBjcmVhdGUgcGF5bWVudCBwdWJLZXlcbiAgICAgIGNvbnN0IHBheW1lbnRQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShwYXltZW50S2V5UGFpci5nZXRLZXlzKCkucHViLCAnaGV4JykpO1xuICAgICAgLy8gMy4gY3JlYXRlIGZ1bGwgYmFzZSBhZGRyZXNzIGZvciBzdGFraW5nXG4gICAgICBjb25zdCBiYXNlQWRkciA9IEJhc2VBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8udGVzdG5ldCgpLm5ldHdvcmtfaWQoKSxcbiAgICAgICAgU3Rha2VDcmVkZW50aWFsLmZyb21fa2V5aGFzaChwYXltZW50UHViLmhhc2goKSksXG4gICAgICAgIFN0YWtlQ3JlZGVudGlhbC5mcm9tX2tleWhhc2goc3Rha2VQdWIuaGFzaCgpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBiYXNlQWRkci50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW1wcm9wZXIgTmV0d29yayBUeXBlIScpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlQmxha2UyYihoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWhhc2gpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGhhc2gubGVuZ3RoICE9PSA2NCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzaC5tYXRjaCgvXlthLXpBLVowLTldKyQvKSAhPT0gbnVsbDtcbiAgfVxuXG4gIGdldFJld2FyZEFkZHJlc3Moc3Rha2luZ1B1YktleTogc3RyaW5nLCBjb2luTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFrZVB1YiA9IFB1YmxpY0tleS5mcm9tX2J5dGVzKEJ1ZmZlci5mcm9tKHN0YWtpbmdQdWJLZXksICdoZXgnKSk7XG4gICAgbGV0IHJld2FyZEFkZHJlc3M7XG4gICAgaWYgKGNvaW5OYW1lID09PSAnYWRhJykge1xuICAgICAgcmV3YXJkQWRkcmVzcyA9IFJld2FyZEFkZHJlc3MubmV3KFxuICAgICAgICBOZXR3b3JrSW5mby5tYWlubmV0KCkubmV0d29ya19pZCgpLFxuICAgICAgICBTdGFrZUNyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHN0YWtlUHViLmhhc2goKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJld2FyZEFkZHJlc3MgPSBSZXdhcmRBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8udGVzdG5ldCgpLm5ldHdvcmtfaWQoKSxcbiAgICAgICAgU3Rha2VDcmVkZW50aWFsLmZyb21fa2V5aGFzaChzdGFrZVB1Yi5oYXNoKCkpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmV3YXJkQWRkcmVzcy50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgLy8gdGhpcyB3aWxsIHZhbGlkYXRlIGJvdGggc3Rha2UgYW5kIHBheW1lbnQgYWRkcmVzc2VzXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJlY2gzMlByZWZpeExpc3QgPSBbJ2FkZHInLCAnYWRkcl90ZXN0JywgJ3N0YWtlJywgJ3N0YWtlX3Rlc3QnXTtcbiAgICBjb25zdCBCQVNFX0FERFJfTEVOID0gOTI7XG4gICAgY29uc3QgUkVXQVJEX0FORF9FTlRFUlBSSVNFX0FERFJfTEVOID0gNDc7XG4gICAgY29uc3QgUE9JTlRFUl9BRERSX0xFTiA9IDUyO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRCZWNoID0gYmVjaDMyLmRlY29kZShhZGRyZXNzLCAxMDgpO1xuICAgICAgY29uc3Qgd29yZExlbmd0aCA9IGRlY29kZWRCZWNoLndvcmRzLmxlbmd0aDtcbiAgICAgIGlmICghYmVjaDMyUHJlZml4TGlzdC5pbmNsdWRlcyhkZWNvZGVkQmVjaC5wcmVmaXgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgd29yZExlbmd0aCAhPT0gQkFTRV9BRERSX0xFTiAmJlxuICAgICAgICB3b3JkTGVuZ3RoICE9PSBSRVdBUkRfQU5EX0VOVEVSUFJJU0VfQUREUl9MRU4gJiZcbiAgICAgICAgd29yZExlbmd0aCAhPT0gUE9JTlRFUl9BRERSX0xFTlxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUJsYWtlMmIoaGFzaCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyB0aGlzIHdpbGwgcmV0dXJuIHRydWUgZm9yIGJvdGggZXh0ZW5kZWQgYW5kIG5vbi1leHRlbmRlZCBFRDI1NTE5IGtleXNcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkS2V5KGtleSk7XG4gIH1cblxuICBpc1ZhbGlkS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShwdWJLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHB1YjogcHViS2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgRWQyNTUxOVNpZ25hdHVyZS5mcm9tX2hleChzaWduYXR1cmUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQmxha2UyYih0eElkKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/sdk-coin-ada",
|
|
3
|
-
"version": "1.1.1-beta.
|
|
3
|
+
"version": "1.1.1-beta.30",
|
|
4
4
|
"description": "BitGo SDK coin library for Ada",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -40,18 +40,19 @@
|
|
|
40
40
|
]
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@bitgo-beta/sdk-core": "1.1.1-beta.
|
|
44
|
-
"@bitgo-beta/statics": "7.0.1-beta.
|
|
43
|
+
"@bitgo-beta/sdk-core": "1.1.1-beta.30",
|
|
44
|
+
"@bitgo-beta/statics": "7.0.1-beta.30",
|
|
45
45
|
"@emurgo/cardano-serialization-lib-browser": "^10.2.0",
|
|
46
46
|
"@emurgo/cardano-serialization-lib-nodejs": "^10.2.0",
|
|
47
47
|
"bech32": "^2.0.0",
|
|
48
48
|
"bignumber.js": "^9.0.2",
|
|
49
49
|
"lodash": "^4.17.21",
|
|
50
|
+
"superagent": "^3.8.3",
|
|
50
51
|
"tweetnacl": "^1.0.3"
|
|
51
52
|
},
|
|
52
53
|
"devDependencies": {
|
|
53
|
-
"@bitgo-beta/sdk-api": "1.1.1-beta.
|
|
54
|
-
"@bitgo-beta/sdk-test": "^1.0.
|
|
54
|
+
"@bitgo-beta/sdk-api": "1.1.1-beta.30",
|
|
55
|
+
"@bitgo-beta/sdk-test": "^1.0.3"
|
|
55
56
|
},
|
|
56
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "358814b6828a7bc53a6363553742bf56318b3712"
|
|
57
58
|
}
|