@bitgo/abstract-utxo 11.6.0 → 11.7.0
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/cjs/src/abstractUtxoCoin.d.ts +20 -39
- package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/cjs/src/abstractUtxoCoin.js +67 -140
- package/dist/cjs/src/impl/doge/doge.d.ts +0 -2
- package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -1
- package/dist/cjs/src/impl/doge/doge.js +1 -4
- package/dist/cjs/src/index.d.ts +0 -1
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.js +1 -2
- package/dist/cjs/src/keychains.d.ts +1 -2
- package/dist/cjs/src/keychains.d.ts.map +1 -1
- package/dist/cjs/src/keychains.js +3 -4
- package/dist/cjs/src/names.d.ts +0 -23
- package/dist/cjs/src/names.d.ts.map +1 -1
- package/dist/cjs/src/names.js +2 -140
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/cjs/src/recovery/backupKeyRecovery.js +3 -3
- package/dist/cjs/src/transaction/decode.d.ts +2 -6
- package/dist/cjs/src/transaction/decode.d.ts.map +1 -1
- package/dist/cjs/src/transaction/decode.js +4 -65
- package/dist/cjs/src/transaction/explainTransaction.d.ts +3 -6
- package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/explainTransaction.js +4 -12
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +1 -37
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +1 -344
- package/dist/cjs/src/transaction/fixedScript/index.d.ts +0 -2
- package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/index.js +2 -6
- package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +1 -2
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +2 -14
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/signTransaction.js +17 -49
- package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +4 -51
- package/dist/cjs/src/transaction/index.d.ts +1 -2
- package/dist/cjs/src/transaction/index.d.ts.map +1 -1
- package/dist/cjs/src/transaction/index.js +2 -4
- package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/signTransaction.js +2 -9
- package/dist/cjs/src/transaction/types.d.ts +1 -4
- package/dist/cjs/src/transaction/types.d.ts.map +1 -1
- package/dist/cjs/src/transaction/types.js +1 -5
- package/dist/cjs/test/unit/address.js +24 -1
- package/dist/cjs/test/unit/buildSignSendLegacyFormat.js +3 -3
- package/dist/cjs/test/unit/customSigner.js +3 -3
- package/dist/cjs/test/unit/prebuildAndSign.js +5 -5
- package/dist/cjs/test/unit/signTransaction.js +9 -9
- package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +25 -47
- package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +19 -84
- package/dist/cjs/test/unit/transaction.js +9 -9
- package/dist/cjs/test/unit/verifyTransaction.js +1 -21
- package/dist/cjs/test/unit/wallet.js +3 -3
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/abstractUtxoCoin.d.ts +20 -39
- package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/esm/abstractUtxoCoin.js +71 -111
- package/dist/esm/impl/doge/doge.d.ts +0 -2
- package/dist/esm/impl/doge/doge.d.ts.map +1 -1
- package/dist/esm/impl/doge/doge.js +1 -4
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/keychains.d.ts +1 -2
- package/dist/esm/keychains.d.ts.map +1 -1
- package/dist/esm/keychains.js +3 -4
- package/dist/esm/names.d.ts +0 -23
- package/dist/esm/names.d.ts.map +1 -1
- package/dist/esm/names.js +1 -102
- package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/esm/recovery/backupKeyRecovery.js +4 -4
- package/dist/esm/transaction/decode.d.ts +2 -6
- package/dist/esm/transaction/decode.d.ts.map +1 -1
- package/dist/esm/transaction/decode.js +4 -31
- package/dist/esm/transaction/explainTransaction.d.ts +3 -6
- package/dist/esm/transaction/explainTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/explainTransaction.js +4 -12
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +1 -37
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/explainTransaction.js +2 -309
- package/dist/esm/transaction/fixedScript/index.d.ts +0 -2
- package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/index.js +1 -3
- package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/parseTransaction.js +1 -2
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts +2 -14
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/signTransaction.js +17 -49
- package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/verifyTransaction.js +4 -18
- package/dist/esm/transaction/index.d.ts +1 -2
- package/dist/esm/transaction/index.d.ts.map +1 -1
- package/dist/esm/transaction/index.js +2 -3
- package/dist/esm/transaction/signTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/signTransaction.js +3 -10
- package/dist/esm/transaction/types.d.ts +1 -4
- package/dist/esm/transaction/types.d.ts.map +1 -1
- package/dist/esm/transaction/types.js +2 -4
- package/package.json +6 -5
- package/dist/cjs/src/transaction/fetchInputs.d.ts +0 -27
- package/dist/cjs/src/transaction/fetchInputs.d.ts.map +0 -1
- package/dist/cjs/src/transaction/fetchInputs.js +0 -111
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +0 -32
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +0 -1
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +0 -163
- package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts +0 -20
- package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts.map +0 -1
- package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.js +0 -157
- package/dist/cjs/src/wasmUtil.d.ts +0 -34
- package/dist/cjs/src/wasmUtil.d.ts.map +0 -1
- package/dist/cjs/src/wasmUtil.js +0 -95
- package/dist/esm/transaction/fetchInputs.d.ts +0 -27
- package/dist/esm/transaction/fetchInputs.d.ts.map +0 -1
- package/dist/esm/transaction/fetchInputs.js +0 -74
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +0 -32
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +0 -1
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +0 -123
- package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts +0 -20
- package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts.map +0 -1
- package/dist/esm/transaction/fixedScript/signPsbtUtxolib.js +0 -117
- package/dist/esm/wasmUtil.d.ts +0 -34
- package/dist/esm/wasmUtil.d.ts.map +0 -1
- package/dist/esm/wasmUtil.js +0 -54
|
@@ -63,7 +63,7 @@ describe('manage unspents', function () {
|
|
|
63
63
|
wallet = new sdk_core_1.Wallet(bitgo, basecoin, walletData);
|
|
64
64
|
});
|
|
65
65
|
it('should pass for bulk consolidating unspents', async function () {
|
|
66
|
-
const psbts = ['p2wsh', 'p2shP2wsh'].map((scriptType) => utxoLib.testutil.constructPsbt([{ scriptType, value: BigInt(1000) }], [{ scriptType, value: BigInt(900) }], basecoin.
|
|
66
|
+
const psbts = ['p2wsh', 'p2shP2wsh'].map((scriptType) => utxoLib.testutil.constructPsbt([{ scriptType, value: BigInt(1000) }], [{ scriptType, value: BigInt(900) }], (0, util_1.getNetworkForCoinName)(basecoin.name), rootWalletKey, 'unsigned'));
|
|
67
67
|
psbts.forEach((psbt) => utxoLib.bitgo.addXpubsToPsbt(psbt, rootWalletKey));
|
|
68
68
|
const txHexes = psbts.map((psbt) => ({ txHex: psbt.toHex() }));
|
|
69
69
|
const nocks = [];
|
|
@@ -78,7 +78,7 @@ describe('manage unspents', function () {
|
|
|
78
78
|
});
|
|
79
79
|
});
|
|
80
80
|
it('should pass for single consolidating unspents', async function () {
|
|
81
|
-
const psbt = utxoLib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(1000) }], [{ scriptType: 'p2shP2wsh', value: BigInt(900) }], basecoin.
|
|
81
|
+
const psbt = utxoLib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(1000) }], [{ scriptType: 'p2shP2wsh', value: BigInt(900) }], (0, util_1.getNetworkForCoinName)(basecoin.name), rootWalletKey, 'unsigned');
|
|
82
82
|
utxoLib.bitgo.addXpubsToPsbt(psbt, rootWalletKey);
|
|
83
83
|
const nocks = [];
|
|
84
84
|
nocks.push(nock(bgUrl)
|
|
@@ -248,4 +248,4 @@ describe('allowPartialSweep verification', function () {
|
|
|
248
248
|
strict_1.default.strictEqual(response.isDone(), true);
|
|
249
249
|
});
|
|
250
250
|
});
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUF3QztBQUV4Qyx5REFBMkM7QUFDM0MsNkJBQThCO0FBQzlCLDBDQUE0QjtBQUM1Qiw4Q0FBd0U7QUFFeEUsaUNBQTRGO0FBRTVGLE1BQU0sS0FBSyxHQUFHLGlCQUFNLENBQUMsWUFBWSxDQUFDLG1CQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDN0QsTUFBTSxLQUFLLEdBQUcsbUJBQVksQ0FBQztBQUUzQixRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsSUFBSSxhQUFhLENBQUM7SUFDbEIsSUFBSSxnQkFBZ0IsQ0FBQztJQUNyQixJQUFJLFFBQVEsQ0FBQztJQUNiLElBQUksTUFBTSxDQUFDO0lBQ1gsSUFBSSxPQUFPLENBQUM7SUFFWixNQUFNLENBQUMsS0FBSztRQUNWLGFBQWEsR0FBRyxJQUFBLDJCQUFvQixHQUFFLENBQUM7UUFDdkMsZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUM7UUFDNUMsT0FBTyxHQUFHLElBQUEsd0JBQWlCLEVBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDN0QsUUFBUSxHQUFHLElBQUEsa0JBQVcsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixNQUFNLFVBQVUsR0FBRztZQUNqQixFQUFFLEVBQUUsMEJBQTBCO1lBQzlCLElBQUksRUFBRSxNQUFNO1lBQ1osSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDL0IsQ0FBQztRQUNGLE1BQU0sR0FBRyxJQUFJLGlCQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxLQUFLO1FBQ3JELE1BQU0sS0FBSyxHQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ2pFLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUM1QixDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUNyQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUNwQyxRQUFRLENBQUMsT0FBTyxFQUNoQixhQUFhLEVBQ2IsVUFBVSxDQUNYLENBQ0YsQ0FBQztRQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sS0FBSyxHQUFpQixFQUFFLENBQUM7UUFDL0IsS0FBSyxDQUFDLElBQUksQ0FDUixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLE1BQU0sQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUMzRyxDQUFDO1FBRUYsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUM5RyxDQUFDO1FBRUYsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDUixJQUFJLENBQ0gsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQ3hELENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQzthQUNBLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDZCxDQUNGLENBQUM7UUFFRixNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRW5FLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUN6QyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDOUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQ2pELFFBQVEsQ0FBQyxPQUFPLEVBQ2hCLGFBQWEsRUFDYixVQUFVLENBQ1gsQ0FBQztRQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVsRCxNQUFNLEtBQUssR0FBaUIsRUFBRSxDQUFDO1FBQy9CLEtBQUssQ0FBQyxJQUFJLENBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNSLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLHNCQUFzQixDQUFDO2FBQzFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDdkMsQ0FBQztRQUVGLEtBQUssQ0FBQyxJQUFJLENBQ1IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDOUcsQ0FBQztRQUVGLEtBQUssQ0FBQyxJQUFJLENBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNSLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7YUFDbEcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUNkLENBQUM7UUFFRixNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUV2RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbEIsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUNILFFBQVEsQ0FBQyxlQUFlLEVBQUU7SUFDeEIsTUFBTSxPQUFPLEdBQUcsMEJBQTBCLENBQUM7SUFDM0MsTUFBTSxVQUFVLEdBQUc7UUFDakI7WUFDRSxPQUFPO1lBQ1AsTUFBTSxFQUFFLEtBQUs7U0FDZDtLQUNGLENBQUM7SUFDRixJQUFJLFFBQVEsQ0FBQztJQUNiLElBQUksTUFBTSxDQUFDO0lBRVgsTUFBTSxDQUFDLEtBQUs7UUFDVixRQUFRLEdBQUcsSUFBQSxrQkFBVyxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEVBQUUsRUFBRSwwQkFBMEI7WUFDOUIsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztTQUNuQyxDQUFDO1FBQ0YsTUFBTSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZEQUE2RCxFQUFFLEtBQUs7UUFDckUsTUFBTSxJQUFJLEdBQUcsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUM7UUFDdkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUN6QixJQUFJLENBQ0gsSUFBSSxFQUNKLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDUixVQUFVO1NBQ1gsQ0FBQyxDQUNILENBQUMsd0ZBQXdGO2FBQ3pGLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVkLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLDBHQUEwRztZQUMxRyw4RUFBOEU7UUFDaEYsQ0FBQztRQUVELGdCQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLDBCQUEwQixDQUFDO0lBQzNDLE1BQU0sVUFBVSxHQUFHO1FBQ2pCO1lBQ0UsT0FBTztZQUNQLE1BQU0sRUFBRSxDQUFDO1NBQ1Y7S0FDRixDQUFDO0lBQ0YsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxNQUFNLENBQUM7SUFFWCxNQUFNLENBQUMsS0FBSztRQUNWLFFBQVEsR0FBRyxJQUFBLGtCQUFXLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsTUFBTSxVQUFVLEdBQUc7WUFDakIsRUFBRSxFQUFFLDBCQUEwQjtZQUM5QixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxDQUFDLDBCQUEwQixDQUFDO1NBQ25DLENBQUM7UUFDRixNQUFNLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsS0FBSztRQUNyRSxNQUFNLElBQUksR0FBRyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQztRQUN2RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0ZBQXdGO2FBQzFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVkLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCwwR0FBMEc7WUFDMUcsOEVBQThFO1FBQ2hGLENBQUM7UUFFRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOERBQThELEVBQUUsS0FBSztRQUN0RSxNQUFNLElBQUksR0FBRyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLHNCQUFzQixDQUFDO1FBQ2xGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDekIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLHdGQUF3RjthQUM5SCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFZCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpGLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCwwR0FBMEc7WUFDMUcseUZBQXlGO1FBQzNGLENBQUM7UUFFRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUVBQW1FLEVBQUUsS0FBSztRQUMzRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLHNCQUFzQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRW5HLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEYsTUFBTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxnQ0FBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVuRixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsS0FBSztRQUNyRSxNQUFNLElBQUksR0FBRyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQztRQUMxRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0ZBQXdGO2FBQ3ZJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVkLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsNEZBQTRGO1lBQzVGLGlGQUFpRjtRQUNuRixDQUFDO1FBRUQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtEQUErRCxFQUFFLEtBQUs7UUFDdkUsTUFBTSxJQUFJLEdBQUcsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQztRQUM3RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyx3RkFBd0Y7YUFDOUgsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxxR0FBcUc7WUFDckcsb0ZBQW9GO1FBQ3RGLENBQUM7UUFFRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRTtJQUN6QyxNQUFNLE9BQU8sR0FBRywwQkFBMEIsQ0FBQztJQUMzQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUMvQixJQUFJLFFBQVEsQ0FBQztJQUNiLElBQUksTUFBTSxDQUFDO0lBRVgsTUFBTSxDQUFDLEtBQUs7UUFDVixRQUFRLEdBQUcsSUFBQSxrQkFBVyxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEVBQUUsRUFBRSwwQkFBMEI7WUFDOUIsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztTQUNuQyxDQUFDO1FBQ0YsTUFBTSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFLEtBQUs7UUFDNUUsTUFBTSxJQUFJLEdBQUcsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUM7UUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0ZBQXdGO2FBQzlJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVkLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCw0RkFBNEY7WUFDNUYsd0ZBQXdGO1FBQzFGLENBQUM7UUFFRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQvc3RyaWN0JztcblxuaW1wb3J0ICogYXMgdXR4b0xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBXYWxsZXQsIE1hbmFnZVVuc3BlbnRzT3B0aW9ucywgY29tbW9uIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgZGVmYXVsdEJpdEdvLCBnZXREZWZhdWx0V2FsbGV0S2V5cywgdG9LZXljaGFpbk9iamVjdHMsIGdldFV0eG9Db2luIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgYmdVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzW2RlZmF1bHRCaXRHby5nZXRFbnYoKV0udXJpO1xuY29uc3QgYml0Z28gPSBkZWZhdWx0Qml0R287XG5cbmRlc2NyaWJlKCdtYW5hZ2UgdW5zcGVudHMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCByb290V2FsbGV0S2V5O1xuICBsZXQgd2FsbGV0UGFzc3BocmFzZTtcbiAgbGV0IGJhc2Vjb2luO1xuICBsZXQgd2FsbGV0O1xuICBsZXQga2V5c09iajtcblxuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIHJvb3RXYWxsZXRLZXkgPSBnZXREZWZhdWx0V2FsbGV0S2V5cygpO1xuICAgIHdhbGxldFBhc3NwaHJhc2UgPSAnZml4dGhlbW9uZXlmaXh0aGV3b3JsZCc7XG4gICAga2V5c09iaiA9IHRvS2V5Y2hhaW5PYmplY3RzKHJvb3RXYWxsZXRLZXksIHdhbGxldFBhc3NwaHJhc2UpO1xuICAgIGJhc2Vjb2luID0gZ2V0VXR4b0NvaW4oJ3RidGMnKTtcbiAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEnLFxuICAgICAgY29pbjogJ3RidGMnLFxuICAgICAga2V5czoga2V5c09iai5tYXAoKGspID0+IGsuaWQpLFxuICAgIH07XG4gICAgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhc3MgZm9yIGJ1bGsgY29uc29saWRhdGluZyB1bnNwZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwc2J0cyA9IChbJ3Ayd3NoJywgJ3Ayc2hQMndzaCddIGFzIGNvbnN0KS5tYXAoKHNjcmlwdFR5cGUpID0+XG4gICAgICB1dHhvTGliLnRlc3R1dGlsLmNvbnN0cnVjdFBzYnQoXG4gICAgICAgIFt7IHNjcmlwdFR5cGUsIHZhbHVlOiBCaWdJbnQoMTAwMCkgfV0sXG4gICAgICAgIFt7IHNjcmlwdFR5cGUsIHZhbHVlOiBCaWdJbnQoOTAwKSB9XSxcbiAgICAgICAgYmFzZWNvaW4ubmV0d29yayxcbiAgICAgICAgcm9vdFdhbGxldEtleSxcbiAgICAgICAgJ3Vuc2lnbmVkJ1xuICAgICAgKVxuICAgICk7XG4gICAgcHNidHMuZm9yRWFjaCgocHNidCkgPT4gdXR4b0xpYi5iaXRnby5hZGRYcHVic1RvUHNidChwc2J0LCByb290V2FsbGV0S2V5KSk7XG4gICAgY29uc3QgdHhIZXhlcyA9IHBzYnRzLm1hcCgocHNidCkgPT4gKHsgdHhIZXg6IHBzYnQudG9IZXgoKSB9KSk7XG5cbiAgICBjb25zdCBub2Nrczogbm9jay5TY29wZVtdID0gW107XG4gICAgbm9ja3MucHVzaChcbiAgICAgIG5vY2soYmdVcmwpLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVVbnNwZW50c2ApLnJlcGx5KDIwMCwgdHhIZXhlcylcbiAgICApO1xuXG4gICAgbm9ja3MucHVzaChcbiAgICAgIC4uLmtleXNPYmoubWFwKChrLCBpKSA9PiBub2NrKGJnVXJsKS5nZXQoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS9rZXkvJHt3YWxsZXQua2V5SWRzKClbaV19YCkucmVwbHkoMjAwLCBrKSlcbiAgICApO1xuXG4gICAgbm9ja3MucHVzaChcbiAgICAgIC4uLnBzYnRzLm1hcCgoKSA9PlxuICAgICAgICBub2NrKGJnVXJsKVxuICAgICAgICAgIC5wb3N0KFxuICAgICAgICAgICAgYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGAsXG4gICAgICAgICAgICBfLm1hdGNoZXMoeyB0eXBlOiAnY29uc29saWRhdGUnLCBidWxrOiB0cnVlIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZXBseSgyMDApXG4gICAgICApXG4gICAgKTtcblxuICAgIGF3YWl0IHdhbGxldC5jb25zb2xpZGF0ZVVuc3BlbnRzKHsgYnVsazogdHJ1ZSwgd2FsbGV0UGFzc3BocmFzZSB9KTtcblxuICAgIG5vY2tzLmZvckVhY2goKG4pID0+IHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChuLmlzRG9uZSgpLCB0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIGZvciBzaW5nbGUgY29uc29saWRhdGluZyB1bnNwZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwc2J0ID0gdXR4b0xpYi50ZXN0dXRpbC5jb25zdHJ1Y3RQc2J0KFxuICAgICAgW3sgc2NyaXB0VHlwZTogJ3Ayd3NoJywgdmFsdWU6IEJpZ0ludCgxMDAwKSB9XSxcbiAgICAgIFt7IHNjcmlwdFR5cGU6ICdwMnNoUDJ3c2gnLCB2YWx1ZTogQmlnSW50KDkwMCkgfV0sXG4gICAgICBiYXNlY29pbi5uZXR3b3JrLFxuICAgICAgcm9vdFdhbGxldEtleSxcbiAgICAgICd1bnNpZ25lZCdcbiAgICApO1xuICAgIHV0eG9MaWIuYml0Z28uYWRkWHB1YnNUb1BzYnQocHNidCwgcm9vdFdhbGxldEtleSk7XG5cbiAgICBjb25zdCBub2Nrczogbm9jay5TY29wZVtdID0gW107XG4gICAgbm9ja3MucHVzaChcbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlVW5zcGVudHNgKVxuICAgICAgICAucmVwbHkoMjAwLCB7IHR4SGV4OiBwc2J0LnRvSGV4KCkgfSlcbiAgICApO1xuXG4gICAgbm9ja3MucHVzaChcbiAgICAgIC4uLmtleXNPYmoubWFwKChrLCBpKSA9PiBub2NrKGJnVXJsKS5nZXQoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS9rZXkvJHt3YWxsZXQua2V5SWRzKClbaV19YCkucmVwbHkoMjAwLCBrKSlcbiAgICApO1xuXG4gICAgbm9ja3MucHVzaChcbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L3R4L3NlbmRgLCBfLm1hdGNoZXMoeyB0eXBlOiAnY29uc29saWRhdGUnIH0pKVxuICAgICAgICAucmVwbHkoMjAwKVxuICAgICk7XG5cbiAgICBhd2FpdCB3YWxsZXQuY29uc29saWRhdGVVbnNwZW50cyh7IHdhbGxldFBhc3NwaHJhc2UgfSk7XG5cbiAgICBub2Nrcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobi5pc0RvbmUoKSwgdHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5kZXNjcmliZSgnbWF4IHJlY2lwaWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYWRkcmVzcyA9ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEnO1xuICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgIHtcbiAgICAgIGFkZHJlc3MsXG4gICAgICBhbW91bnQ6ICdtYXgnLFxuICAgIH0sXG4gIF07XG4gIGxldCBiYXNlY29pbjtcbiAgbGV0IHdhbGxldDtcblxuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGJhc2Vjb2luID0gZ2V0VXR4b0NvaW4oJ3RidGMnKTtcbiAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEnLFxuICAgICAgY29pbjogJ3RidGMnLFxuICAgICAga2V5czogWyc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUnXSxcbiAgICB9O1xuICAgIHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIG1heEZlZVJhdGUgcGFyYW1ldGVyIHdoZW4gYnVpbGRpbmcgdHJhbnNhY3Rpb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhdGggPSBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9idWlsZGA7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBub2NrKGJnVXJsKVxuICAgICAgLnBvc3QoXG4gICAgICAgIHBhdGgsXG4gICAgICAgIF8ubWF0Y2hlcyh7XG4gICAgICAgICAgcmVjaXBpZW50cyxcbiAgICAgICAgfSlcbiAgICAgICkgLy8gdXNlIF8ubWF0Y2hlcyB0byBkbyBhIHBhcnRpYWwgbWF0Y2ggb24gcmVxdWVzdCBib2R5IG9iamVjdCBpbnN0ZWFkIG9mIHN0cmljdCBtYXRjaGluZ1xuICAgICAgLnJlcGx5KDIwMCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FsbGV0LnByZWJ1aWxkVHJhbnNhY3Rpb24oeyByZWNpcGllbnRzIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHRoZSBwcmVidWlsZFRyYW5zYWN0aW9uIG1ldGhvZCB3aWxsIHByb2JhYmx5IHRocm93IGFuIGV4Y2VwdGlvbiBmb3Igbm90IGhhdmluZyBhbGwgb2YgdGhlIGNvcnJlY3Qgbm9ja3NcbiAgICAgIC8vIHdlIG9ubHkgY2FyZSBhYm91dCAvdHgvYnVpbGQgYW5kIHdoZXRoZXIgbWF4RmVlUmF0ZSBpcyBhbiBhbGxvd2VkIHBhcmFtZXRlclxuICAgIH1cblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXNwb25zZS5pc0RvbmUoKSwgdHJ1ZSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdtYXhGZWVSYXRlIHZlcmlmaWNhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYWRkcmVzcyA9ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEnO1xuICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgIHtcbiAgICAgIGFkZHJlc3MsXG4gICAgICBhbW91bnQ6IDAsXG4gICAgfSxcbiAgXTtcbiAgY29uc3QgbWF4RmVlUmF0ZSA9IDEwMDAwO1xuICBsZXQgYmFzZWNvaW47XG4gIGxldCB3YWxsZXQ7XG5cbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBiYXNlY29pbiA9IGdldFV0eG9Db2luKCd0YnRjJyk7XG4gICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhJyxcbiAgICAgIGNvaW46ICd0YnRjJyxcbiAgICAgIGtleXM6IFsnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1J10sXG4gICAgfTtcbiAgICB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFzcyBtYXhGZWVSYXRlIHBhcmFtZXRlciB3aGVuIGJ1aWxkaW5nIHRyYW5zYWN0aW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwYXRoID0gYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvYnVpbGRgO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gbm9jayhiZ1VybClcbiAgICAgIC5wb3N0KHBhdGgsIF8ubWF0Y2hlcyh7IHJlY2lwaWVudHMsIG1heEZlZVJhdGUgfSkpIC8vIHVzZSBfLm1hdGNoZXMgdG8gZG8gYSBwYXJ0aWFsIG1hdGNoIG9uIHJlcXVlc3QgYm9keSBvYmplY3QgaW5zdGVhZCBvZiBzdHJpY3QgbWF0Y2hpbmdcbiAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhbGxldC5wcmVidWlsZFRyYW5zYWN0aW9uKHsgcmVjaXBpZW50cywgbWF4RmVlUmF0ZSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyB0aGUgcHJlYnVpbGRUcmFuc2FjdGlvbiBtZXRob2Qgd2lsbCBwcm9iYWJseSB0aHJvdyBhbiBleGNlcHRpb24gZm9yIG5vdCBoYXZpbmcgYWxsIG9mIHRoZSBjb3JyZWN0IG5vY2tzXG4gICAgICAvLyB3ZSBvbmx5IGNhcmUgYWJvdXQgL3R4L2J1aWxkIGFuZCB3aGV0aGVyIG1heEZlZVJhdGUgaXMgYW4gYWxsb3dlZCBwYXJhbWV0ZXJcbiAgICB9XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzcG9uc2UuaXNEb25lKCksIHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhc3MgbWF4RmVlUmF0ZSBwYXJhbWV0ZXIgd2hlbiBjb25zb2xpZGF0aW5nIHVuc3BlbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhdGggPSBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZVVuc3BlbnRzYDtcbiAgICBjb25zdCByZXNwb25zZSA9IG5vY2soYmdVcmwpXG4gICAgICAucG9zdChwYXRoLCBfLm1hdGNoZXMoeyBtYXhGZWVSYXRlIH0pKSAvLyB1c2UgXy5tYXRjaGVzIHRvIGRvIGEgcGFydGlhbCBtYXRjaCBvbiByZXF1ZXN0IGJvZHkgb2JqZWN0IGluc3RlYWQgb2Ygc3RyaWN0IG1hdGNoaW5nXG4gICAgICAucmVwbHkoMjAwKTtcblxuICAgIG5vY2soYmdVcmwpLmdldChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L2tleS8ke3dhbGxldC5rZXlJZHMoKVswXX1gKS5yZXBseSgyMDApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhbGxldC5jb25zb2xpZGF0ZVVuc3BlbnRzKHsgcmVjaXBpZW50cywgbWF4RmVlUmF0ZSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyB0aGUgY29uc29saWRhdGVVbnNwZW50cyBtZXRob2Qgd2lsbCBwcm9iYWJseSB0aHJvdyBhbiBleGNlcHRpb24gZm9yIG5vdCBoYXZpbmcgYWxsIG9mIHRoZSBjb3JyZWN0IG5vY2tzXG4gICAgICAvLyB3ZSBvbmx5IGNhcmUgYWJvdXQgL2NvbnNvbGlkYXRlVW5zcGVudHMgYW5kIHdoZXRoZXIgbWF4RmVlUmF0ZSBpcyBhbiBhbGxvd2VkIHBhcmFtZXRlclxuICAgIH1cblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXNwb25zZS5pc0RvbmUoKSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgb25seSBidWlsZCB0eCAobm90IHNpZ24vc2VuZCkgd2hpbGUgY29uc29saWRhdGluZyB1bnNwZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0b0JlVXNlZE5vY2sgPSBub2NrKGJnVXJsKTtcbiAgICB0b0JlVXNlZE5vY2sucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZVVuc3BlbnRzYCkucmVwbHkoMjAwKTtcblxuICAgIGNvbnN0IHVudXNlZE5vY2tzID0gbm9jayhiZ1VybCk7XG4gICAgdW51c2VkTm9ja3MuZ2V0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0va2V5LyR7d2FsbGV0LmtleUlkcygpWzBdfWApLnJlcGx5KDIwMCk7XG4gICAgdW51c2VkTm9ja3MucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYCkucmVwbHkoMjAwKTtcblxuICAgIGF3YWl0IHdhbGxldC5jb25zb2xpZGF0ZVVuc3BlbnRzKHsgcmVjaXBpZW50cyB9LCBNYW5hZ2VVbnNwZW50c09wdGlvbnMuQlVJTERfT05MWSk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodG9CZVVzZWROb2NrLmlzRG9uZSgpLCB0cnVlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodW51c2VkTm9ja3MucGVuZGluZ01vY2tzKCkubGVuZ3RoLCAyKTtcbiAgICBub2NrLmNsZWFuQWxsKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFzcyBtYXhGZWVSYXRlIHBhcmFtZXRlciB3aGVuIGNhbGxpbmcgc3dlZXAgd2FsbGV0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwYXRoID0gYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vc3dlZXBXYWxsZXRgO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gbm9jayhiZ1VybClcbiAgICAgIC5wb3N0KHBhdGgsIF8ubWF0Y2hlcyh7IGFkZHJlc3MsIG1heEZlZVJhdGUgfSkpIC8vIHVzZSBfLm1hdGNoZXMgdG8gZG8gYSBwYXJ0aWFsIG1hdGNoIG9uIHJlcXVlc3QgYm9keSBvYmplY3QgaW5zdGVhZCBvZiBzdHJpY3QgbWF0Y2hpbmdcbiAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhbGxldC5zd2VlcCh7IGFkZHJlc3MsIG1heEZlZVJhdGUgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gdGhlIHN3ZWVwIG1ldGhvZCB3aWxsIHByb2JhYmx5IHRocm93IGFuIGV4Y2VwdGlvbiBmb3Igbm90IGhhdmluZyBhbGwgb2YgdGhlIGNvcnJlY3Qgbm9ja3NcbiAgICAgIC8vIHdlIG9ubHkgY2FyZSBhYm91dCAvc3dlZXBXYWxsZXQgYW5kIHdoZXRoZXIgbWF4RmVlUmF0ZSBpcyBhbiBhbGxvd2VkIHBhcmFtZXRlclxuICAgIH1cblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXNwb25zZS5pc0RvbmUoKSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFzcyBtYXhGZWVSYXRlIHBhcmFtZXRlciB3aGVuIGNhbGxpbmcgZmFub3V0IHVuc3BlbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhdGggPSBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9mYW5vdXRVbnNwZW50c2A7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBub2NrKGJnVXJsKVxuICAgICAgLnBvc3QocGF0aCwgXy5tYXRjaGVzKHsgbWF4RmVlUmF0ZSB9KSkgLy8gdXNlIF8ubWF0Y2hlcyB0byBkbyBhIHBhcnRpYWwgbWF0Y2ggb24gcmVxdWVzdCBib2R5IG9iamVjdCBpbnN0ZWFkIG9mIHN0cmljdCBtYXRjaGluZ1xuICAgICAgLnJlcGx5KDIwMCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FsbGV0LmZhbm91dFVuc3BlbnRzKHsgYWRkcmVzcywgbWF4RmVlUmF0ZSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyB0aGUgZmFub3V0VW5zcGVudHMgbWV0aG9kIHdpbGwgcHJvYmFibHkgdGhyb3cgYW4gZXhjZXB0aW9uIGZvciBub3QgaGF2aW5nIGFsbCBvZiB0aGUgY29ycmVjdCBub2Nrc1xuICAgICAgLy8gd2Ugb25seSBjYXJlIGFib3V0IC9mYW5vdXRVbnNwZW50cyBhbmQgd2hldGhlciBtYXhGZWVSYXRlIGlzIGFuIGFsbG93ZWQgcGFyYW1ldGVyXG4gICAgfVxuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3BvbnNlLmlzRG9uZSgpLCB0cnVlKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2FsbG93UGFydGlhbFN3ZWVwIHZlcmlmaWNhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYWRkcmVzcyA9ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEnO1xuICBjb25zdCBhbGxvd1BhcnRpYWxTd2VlcCA9IHRydWU7XG4gIGxldCBiYXNlY29pbjtcbiAgbGV0IHdhbGxldDtcblxuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGJhc2Vjb2luID0gZ2V0VXR4b0NvaW4oJ3RidGMnKTtcbiAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEnLFxuICAgICAgY29pbjogJ3RidGMnLFxuICAgICAga2V5czogWyc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUnXSxcbiAgICB9O1xuICAgIHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIGFsbG93UGFydGlhbFN3ZWVwIHBhcmFtZXRlciB3aGVuIGNhbGxpbmcgc3dlZXAgd2FsbGV0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwYXRoID0gYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vc3dlZXBXYWxsZXRgO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gbm9jayhiZ1VybClcbiAgICAgIC5wb3N0KHBhdGgsIF8ubWF0Y2hlcyh7IGFkZHJlc3MsIGFsbG93UGFydGlhbFN3ZWVwIH0pKSAvLyB1c2UgXy5tYXRjaGVzIHRvIGRvIGEgcGFydGlhbCBtYXRjaCBvbiByZXF1ZXN0IGJvZHkgb2JqZWN0IGluc3RlYWQgb2Ygc3RyaWN0IG1hdGNoaW5nXG4gICAgICAucmVwbHkoMjAwKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWxsZXQuc3dlZXAoeyBhZGRyZXNzLCBhbGxvd1BhcnRpYWxTd2VlcCB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyB0aGUgc3dlZXAgbWV0aG9kIHdpbGwgcHJvYmFibHkgdGhyb3cgYW4gZXhjZXB0aW9uIGZvciBub3QgaGF2aW5nIGFsbCBvZiB0aGUgY29ycmVjdCBub2Nrc1xuICAgICAgLy8gd2Ugb25seSBjYXJlIGFib3V0IC9zd2VlcFdhbGxldCBhbmQgd2hldGhlciBhbGxvd1BhcnRpYWxTd2VlcCBpcyBhbiBhbGxvd2VkIHBhcmFtZXRlclxuICAgIH1cblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXNwb25zZS5pc0RvbmUoKSwgdHJ1ZSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUF3QztBQUV4Qyx5REFBMkM7QUFDM0MsNkJBQThCO0FBQzlCLDBDQUE0QjtBQUM1Qiw4Q0FBd0U7QUFFeEUsaUNBQW1IO0FBRW5ILE1BQU0sS0FBSyxHQUFHLGlCQUFNLENBQUMsWUFBWSxDQUFDLG1CQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDN0QsTUFBTSxLQUFLLEdBQUcsbUJBQVksQ0FBQztBQUUzQixRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsSUFBSSxhQUFhLENBQUM7SUFDbEIsSUFBSSxnQkFBZ0IsQ0FBQztJQUNyQixJQUFJLFFBQVEsQ0FBQztJQUNiLElBQUksTUFBTSxDQUFDO0lBQ1gsSUFBSSxPQUFPLENBQUM7SUFFWixNQUFNLENBQUMsS0FBSztRQUNWLGFBQWEsR0FBRyxJQUFBLDJCQUFvQixHQUFFLENBQUM7UUFDdkMsZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUM7UUFDNUMsT0FBTyxHQUFHLElBQUEsd0JBQWlCLEVBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDN0QsUUFBUSxHQUFHLElBQUEsa0JBQVcsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixNQUFNLFVBQVUsR0FBRztZQUNqQixFQUFFLEVBQUUsMEJBQTBCO1lBQzlCLElBQUksRUFBRSxNQUFNO1lBQ1osSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDL0IsQ0FBQztRQUNGLE1BQU0sR0FBRyxJQUFJLGlCQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNu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QUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydC9zdHJpY3QnO1xuXG5pbXBvcnQgKiBhcyB1dHhvTGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFdhbGxldCwgTWFuYWdlVW5zcGVudHNPcHRpb25zLCBjb21tb24gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBkZWZhdWx0Qml0R28sIGdldERlZmF1bHRXYWxsZXRLZXlzLCBnZXROZXR3b3JrRm9yQ29pbk5hbWUsIHRvS2V5Y2hhaW5PYmplY3RzLCBnZXRVdHhvQ29pbiB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tkZWZhdWx0Qml0R28uZ2V0RW52KCldLnVyaTtcbmNvbnN0IGJpdGdvID0gZGVmYXVsdEJpdEdvO1xuXG5kZXNjcmliZSgnbWFuYWdlIHVuc3BlbnRzJywgZnVuY3Rpb24gKCkge1xuICBsZXQgcm9vdFdhbGxldEtleTtcbiAgbGV0IHdhbGxldFBhc3NwaHJhc2U7XG4gIGxldCBiYXNlY29pbjtcbiAgbGV0IHdhbGxldDtcbiAgbGV0IGtleXNPYmo7XG5cbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICByb290V2FsbGV0S2V5ID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbiAgICB3YWxsZXRQYXNzcGhyYXNlID0gJ2ZpeHRoZW1vbmV5Zml4dGhld29ybGQnO1xuICAgIGtleXNPYmogPSB0b0tleWNoYWluT2JqZWN0cyhyb290V2FsbGV0S2V5LCB3YWxsZXRQYXNzcGhyYXNlKTtcbiAgICBiYXNlY29pbiA9IGdldFV0eG9Db2luKCd0YnRjJyk7XG4gICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhJyxcbiAgICAgIGNvaW46ICd0YnRjJyxcbiAgICAgIGtleXM6IGtleXNPYmoubWFwKChrKSA9PiBrLmlkKSxcbiAgICB9O1xuICAgIHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIGZvciBidWxrIGNvbnNvbGlkYXRpbmcgdW5zcGVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcHNidHMgPSAoWydwMndzaCcsICdwMnNoUDJ3c2gnXSBhcyBjb25zdCkubWFwKChzY3JpcHRUeXBlKSA9PlxuICAgICAgdXR4b0xpYi50ZXN0dXRpbC5jb25zdHJ1Y3RQc2J0KFxuICAgICAgICBbeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDEwMDApIH1dLFxuICAgICAgICBbeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDkwMCkgfV0sXG4gICAgICAgIGdldE5ldHdvcmtGb3JDb2luTmFtZShiYXNlY29pbi5uYW1lKSxcbiAgICAgICAgcm9vdFdhbGxldEtleSxcbiAgICAgICAgJ3Vuc2lnbmVkJ1xuICAgICAgKVxuICAgICk7XG4gICAgcHNidHMuZm9yRWFjaCgocHNidCkgPT4gdXR4b0xpYi5iaXRnby5hZGRYcHVic1RvUHNidChwc2J0LCByb290V2FsbGV0S2V5KSk7XG4gICAgY29uc3QgdHhIZXhlcyA9IHBzYnRzLm1hcCgocHNidCkgPT4gKHsgdHhIZXg6IHBzYnQudG9IZXgoKSB9KSk7XG5cbiAgICBjb25zdCBub2Nrczogbm9jay5TY29wZVtdID0gW107XG4gICAgbm9ja3MucHVzaChcbiAgICAgIG5vY2soYmdVcmwpLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVVbnNwZW50c2ApLnJlcGx5KDIwMCwgdHhIZXhlcylcbiAgICApO1xuXG4gICAgbm9ja3MucHVzaChcbiAgICAgIC4uLmtleXNPYmoubWFwKChrLCBpKSA9PiBub2NrKGJnVXJsKS5nZXQoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS9rZXkvJHt3YWxsZXQua2V5SWRzKClbaV19YCkucmVwbHkoMjAwLCBrKSlcbiAgICApO1xuXG4gICAgbm9ja3MucHVzaChcbiAgICAgIC4uLnBzYnRzLm1hcCgoKSA9PlxuICAgICAgICBub2NrKGJnVXJsKVxuICAgICAgICAgIC5wb3N0KFxuICAgICAgICAgICAgYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGAsXG4gICAgICAgICAgICBfLm1hdGNoZXMoeyB0eXBlOiAnY29uc29saWRhdGUnLCBidWxrOiB0cnVlIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZXBseSgyMDApXG4gICAgICApXG4gICAgKTtcblxuICAgIGF3YWl0IHdhbGxldC5jb25zb2xpZGF0ZVVuc3BlbnRzKHsgYnVsazogdHJ1ZSwgd2FsbGV0UGFzc3BocmFzZSB9KTtcblxuICAgIG5vY2tzLmZvckVhY2goKG4pID0+IHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChuLmlzRG9uZSgpLCB0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIGZvciBzaW5nbGUgY29uc29saWRhdGluZyB1bnNwZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwc2J0ID0gdXR4b0xpYi50ZXN0dXRpbC5jb25zdHJ1Y3RQc2J0KFxuICAgICAgW3sgc2NyaXB0VHlwZTogJ3Ayd3NoJywgdmFsdWU6IEJpZ0ludCgxMDAwKSB9XSxcbiAgICAgIFt7IHNjcmlwdFR5cGU6ICdwMnNoUDJ3c2gnLCB2YWx1ZTogQmlnSW50KDkwMCkgfV0sXG4gICAgICBnZXROZXR3b3JrRm9yQ29pbk5hbWUoYmFzZWNvaW4ubmFtZSksXG4gICAgICByb290V2FsbGV0S2V5LFxuICAgICAgJ3Vuc2lnbmVkJ1xuICAgICk7XG4gICAgdXR4b0xpYi5iaXRnby5hZGRYcHVic1RvUHNidChwc2J0LCByb290V2FsbGV0S2V5KTtcblxuICAgIGNvbnN0IG5vY2tzOiBub2NrLlNjb3BlW10gPSBbXTtcbiAgICBub2Nrcy5wdXNoKFxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVVbnNwZW50c2ApXG4gICAgICAgIC5yZXBseSgyMDAsIHsgdHhIZXg6IHBzYnQudG9IZXgoKSB9KVxuICAgICk7XG5cbiAgICBub2Nrcy5wdXNoKFxuICAgICAgLi4ua2V5c09iai5tYXAoKGssIGkpID0+IG5vY2soYmdVcmwpLmdldChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L2tleS8ke3dhbGxldC5rZXlJZHMoKVtpXX1gKS5yZXBseSgyMDAsIGspKVxuICAgICk7XG5cbiAgICBub2Nrcy5wdXNoKFxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGAsIF8ubWF0Y2hlcyh7IHR5cGU6ICdjb25zb2xpZGF0ZScgfSkpXG4gICAgICAgIC5yZXBseSgyMDApXG4gICAgKTtcblxuICAgIGF3YWl0IHdhbGxldC5jb25zb2xpZGF0ZVVuc3BlbnRzKHsgd2FsbGV0UGFzc3BocmFzZSB9KTtcblxuICAgIG5vY2tzLmZvckVhY2goKG4pID0+IHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChuLmlzRG9uZSgpLCB0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbmRlc2NyaWJlKCdtYXggcmVjaXBpZW50JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBhZGRyZXNzID0gJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYSc7XG4gIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAge1xuICAgICAgYWRkcmVzcyxcbiAgICAgIGFtb3VudDogJ21heCcsXG4gICAgfSxcbiAgXTtcbiAgbGV0IGJhc2Vjb2luO1xuICBsZXQgd2FsbGV0O1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZWNvaW4gPSBnZXRVdHhvQ29pbigndGJ0YycpO1xuICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYScsXG4gICAgICBjb2luOiAndGJ0YycsXG4gICAgICBrZXlzOiBbJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NSddLFxuICAgIH07XG4gICAgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhc3MgbWF4RmVlUmF0ZSBwYXJhbWV0ZXIgd2hlbiBidWlsZGluZyB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0aCA9IGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L3R4L2J1aWxkYDtcbiAgICBjb25zdCByZXNwb25zZSA9IG5vY2soYmdVcmwpXG4gICAgICAucG9zdChcbiAgICAgICAgcGF0aCxcbiAgICAgICAgXy5tYXRjaGVzKHtcbiAgICAgICAgICByZWNpcGllbnRzLFxuICAgICAgICB9KVxuICAgICAgKSAvLyB1c2UgXy5tYXRjaGVzIHRvIGRvIGEgcGFydGlhbCBtYXRjaCBvbiByZXF1ZXN0IGJvZHkgb2JqZWN0IGluc3RlYWQgb2Ygc3RyaWN0IG1hdGNoaW5nXG4gICAgICAucmVwbHkoMjAwKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWxsZXQucHJlYnVpbGRUcmFuc2FjdGlvbih7IHJlY2lwaWVudHMgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gdGhlIHByZWJ1aWxkVHJhbnNhY3Rpb24gbWV0aG9kIHdpbGwgcHJvYmFibHkgdGhyb3cgYW4gZXhjZXB0aW9uIGZvciBub3QgaGF2aW5nIGFsbCBvZiB0aGUgY29ycmVjdCBub2Nrc1xuICAgICAgLy8gd2Ugb25seSBjYXJlIGFib3V0IC90eC9idWlsZCBhbmQgd2hldGhlciBtYXhGZWVSYXRlIGlzIGFuIGFsbG93ZWQgcGFyYW1ldGVyXG4gICAgfVxuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3BvbnNlLmlzRG9uZSgpLCB0cnVlKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ21heEZlZVJhdGUgdmVyaWZpY2F0aW9uJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBhZGRyZXNzID0gJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYSc7XG4gIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAge1xuICAgICAgYWRkcmVzcyxcbiAgICAgIGFtb3VudDogMCxcbiAgICB9LFxuICBdO1xuICBjb25zdCBtYXhGZWVSYXRlID0gMTAwMDA7XG4gIGxldCBiYXNlY29pbjtcbiAgbGV0IHdhbGxldDtcblxuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGJhc2Vjb2luID0gZ2V0VXR4b0NvaW4oJ3RidGMnKTtcbiAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEnLFxuICAgICAgY29pbjogJ3RidGMnLFxuICAgICAga2V5czogWyc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUnXSxcbiAgICB9O1xuICAgIHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIG1heEZlZVJhdGUgcGFyYW1ldGVyIHdoZW4gYnVpbGRpbmcgdHJhbnNhY3Rpb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhdGggPSBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9idWlsZGA7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBub2NrKGJnVXJsKVxuICAgICAgLnBvc3QocGF0aCwgXy5tYXRjaGVzKHsgcmVjaXBpZW50cywgbWF4RmVlUmF0ZSB9KSkgLy8gdXNlIF8ubWF0Y2hlcyB0byBkbyBhIHBhcnRpYWwgbWF0Y2ggb24gcmVxdWVzdCBib2R5IG9iamVjdCBpbnN0ZWFkIG9mIHN0cmljdCBtYXRjaGluZ1xuICAgICAgLnJlcGx5KDIwMCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FsbGV0LnByZWJ1aWxkVHJhbnNhY3Rpb24oeyByZWNpcGllbnRzLCBtYXhGZWVSYXRlIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHRoZSBwcmVidWlsZFRyYW5zYWN0aW9uIG1ldGhvZCB3aWxsIHByb2JhYmx5IHRocm93IGFuIGV4Y2VwdGlvbiBmb3Igbm90IGhhdmluZyBhbGwgb2YgdGhlIGNvcnJlY3Qgbm9ja3NcbiAgICAgIC8vIHdlIG9ubHkgY2FyZSBhYm91dCAvdHgvYnVpbGQgYW5kIHdoZXRoZXIgbWF4RmVlUmF0ZSBpcyBhbiBhbGxvd2VkIHBhcmFtZXRlclxuICAgIH1cblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXNwb25zZS5pc0RvbmUoKSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFzcyBtYXhGZWVSYXRlIHBhcmFtZXRlciB3aGVuIGNvbnNvbGlkYXRpbmcgdW5zcGVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0aCA9IGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlVW5zcGVudHNgO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gbm9jayhiZ1VybClcbiAgICAgIC5wb3N0KHBhdGgsIF8ubWF0Y2hlcyh7IG1heEZlZVJhdGUgfSkpIC8vIHVzZSBfLm1hdGNoZXMgdG8gZG8gYSBwYXJ0aWFsIG1hdGNoIG9uIHJlcXVlc3QgYm9keSBvYmplY3QgaW5zdGVhZCBvZiBzdHJpY3QgbWF0Y2hpbmdcbiAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgbm9jayhiZ1VybCkuZ2V0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0va2V5LyR7d2FsbGV0LmtleUlkcygpWzBdfWApLnJlcGx5KDIwMCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FsbGV0LmNvbnNvbGlkYXRlVW5zcGVudHMoeyByZWNpcGllbnRzLCBtYXhGZWVSYXRlIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHRoZSBjb25zb2xpZGF0ZVVuc3BlbnRzIG1ldGhvZCB3aWxsIHByb2JhYmx5IHRocm93IGFuIGV4Y2VwdGlvbiBmb3Igbm90IGhhdmluZyBhbGwgb2YgdGhlIGNvcnJlY3Qgbm9ja3NcbiAgICAgIC8vIHdlIG9ubHkgY2FyZSBhYm91dCAvY29uc29saWRhdGVVbnNwZW50cyBhbmQgd2hldGhlciBtYXhGZWVSYXRlIGlzIGFuIGFsbG93ZWQgcGFyYW1ldGVyXG4gICAgfVxuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3BvbnNlLmlzRG9uZSgpLCB0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBvbmx5IGJ1aWxkIHR4IChub3Qgc2lnbi9zZW5kKSB3aGlsZSBjb25zb2xpZGF0aW5nIHVuc3BlbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHRvQmVVc2VkTm9jayA9IG5vY2soYmdVcmwpO1xuICAgIHRvQmVVc2VkTm9jay5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlVW5zcGVudHNgKS5yZXBseSgyMDApO1xuXG4gICAgY29uc3QgdW51c2VkTm9ja3MgPSBub2NrKGJnVXJsKTtcbiAgICB1bnVzZWROb2Nrcy5nZXQoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS9rZXkvJHt3YWxsZXQua2V5SWRzKClbMF19YCkucmVwbHkoMjAwKTtcbiAgICB1bnVzZWROb2Nrcy5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L3R4L3NlbmRgKS5yZXBseSgyMDApO1xuXG4gICAgYXdhaXQgd2FsbGV0LmNvbnNvbGlkYXRlVW5zcGVudHMoeyByZWNpcGllbnRzIH0sIE1hbmFnZVVuc3BlbnRzT3B0aW9ucy5CVUlMRF9PTkxZKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0b0JlVXNlZE5vY2suaXNEb25lKCksIHRydWUpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1bnVzZWROb2Nrcy5wZW5kaW5nTW9ja3MoKS5sZW5ndGgsIDIpO1xuICAgIG5vY2suY2xlYW5BbGwoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIG1heEZlZVJhdGUgcGFyYW1ldGVyIHdoZW4gY2FsbGluZyBzd2VlcCB3YWxsZXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhdGggPSBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9zd2VlcFdhbGxldGA7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBub2NrKGJnVXJsKVxuICAgICAgLnBvc3QocGF0aCwgXy5tYXRjaGVzKHsgYWRkcmVzcywgbWF4RmVlUmF0ZSB9KSkgLy8gdXNlIF8ubWF0Y2hlcyB0byBkbyBhIHBhcnRpYWwgbWF0Y2ggb24gcmVxdWVzdCBib2R5IG9iamVjdCBpbnN0ZWFkIG9mIHN0cmljdCBtYXRjaGluZ1xuICAgICAgLnJlcGx5KDIwMCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FsbGV0LnN3ZWVwKHsgYWRkcmVzcywgbWF4RmVlUmF0ZSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyB0aGUgc3dlZXAgbWV0aG9kIHdpbGwgcHJvYmFibHkgdGhyb3cgYW4gZXhjZXB0aW9uIGZvciBub3QgaGF2aW5nIGFsbCBvZiB0aGUgY29ycmVjdCBub2Nrc1xuICAgICAgLy8gd2Ugb25seSBjYXJlIGFib3V0IC9zd2VlcFdhbGxldCBhbmQgd2hldGhlciBtYXhGZWVSYXRlIGlzIGFuIGFsbG93ZWQgcGFyYW1ldGVyXG4gICAgfVxuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3BvbnNlLmlzRG9uZSgpLCB0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIG1heEZlZVJhdGUgcGFyYW1ldGVyIHdoZW4gY2FsbGluZyBmYW5vdXQgdW5zcGVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0aCA9IGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2Zhbm91dFVuc3BlbnRzYDtcbiAgICBjb25zdCByZXNwb25zZSA9IG5vY2soYmdVcmwpXG4gICAgICAucG9zdChwYXRoLCBfLm1hdGNoZXMoeyBtYXhGZWVSYXRlIH0pKSAvLyB1c2UgXy5tYXRjaGVzIHRvIGRvIGEgcGFydGlhbCBtYXRjaCBvbiByZXF1ZXN0IGJvZHkgb2JqZWN0IGluc3RlYWQgb2Ygc3RyaWN0IG1hdGNoaW5nXG4gICAgICAucmVwbHkoMjAwKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWxsZXQuZmFub3V0VW5zcGVudHMoeyBhZGRyZXNzLCBtYXhGZWVSYXRlIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHRoZSBmYW5vdXRVbnNwZW50cyBtZXRob2Qgd2lsbCBwcm9iYWJseSB0aHJvdyBhbiBleGNlcHRpb24gZm9yIG5vdCBoYXZpbmcgYWxsIG9mIHRoZSBjb3JyZWN0IG5vY2tzXG4gICAgICAvLyB3ZSBvbmx5IGNhcmUgYWJvdXQgL2Zhbm91dFVuc3BlbnRzIGFuZCB3aGV0aGVyIG1heEZlZVJhdGUgaXMgYW4gYWxsb3dlZCBwYXJhbWV0ZXJcbiAgICB9XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzcG9uc2UuaXNEb25lKCksIHRydWUpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnYWxsb3dQYXJ0aWFsU3dlZXAgdmVyaWZpY2F0aW9uJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBhZGRyZXNzID0gJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYSc7XG4gIGNvbnN0IGFsbG93UGFydGlhbFN3ZWVwID0gdHJ1ZTtcbiAgbGV0IGJhc2Vjb2luO1xuICBsZXQgd2FsbGV0O1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZWNvaW4gPSBnZXRVdHhvQ29pbigndGJ0YycpO1xuICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYScsXG4gICAgICBjb2luOiAndGJ0YycsXG4gICAgICBrZXlzOiBbJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NSddLFxuICAgIH07XG4gICAgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhc3MgYWxsb3dQYXJ0aWFsU3dlZXAgcGFyYW1ldGVyIHdoZW4gY2FsbGluZyBzd2VlcCB3YWxsZXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhdGggPSBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9zd2VlcFdhbGxldGA7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBub2NrKGJnVXJsKVxuICAgICAgLnBvc3QocGF0aCwgXy5tYXRjaGVzKHsgYWRkcmVzcywgYWxsb3dQYXJ0aWFsU3dlZXAgfSkpIC8vIHVzZSBfLm1hdGNoZXMgdG8gZG8gYSBwYXJ0aWFsIG1hdGNoIG9uIHJlcXVlc3QgYm9keSBvYmplY3QgaW5zdGVhZCBvZiBzdHJpY3QgbWF0Y2hpbmdcbiAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhbGxldC5zd2VlcCh7IGFkZHJlc3MsIGFsbG93UGFydGlhbFN3ZWVwIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHRoZSBzd2VlcCBtZXRob2Qgd2lsbCBwcm9iYWJseSB0aHJvdyBhbiBleGNlcHRpb24gZm9yIG5vdCBoYXZpbmcgYWxsIG9mIHRoZSBjb3JyZWN0IG5vY2tzXG4gICAgICAvLyB3ZSBvbmx5IGNhcmUgYWJvdXQgL3N3ZWVwV2FsbGV0IGFuZCB3aGV0aGVyIGFsbG93UGFydGlhbFN3ZWVwIGlzIGFuIGFsbG93ZWQgcGFyYW1ldGVyXG4gICAgfVxuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3BvbnNlLmlzRG9uZSgpLCB0cnVlKTtcbiAgfSk7XG59KTtcbiJdfQ==
|