@bitgo/sdk-coin-sui 6.3.0 → 6.4.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/src/sui.d.ts +3 -1
- package/dist/src/sui.d.ts.map +1 -1
- package/dist/src/sui.js +17 -10
- package/dist/test/unit/sui.js +151 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
package/dist/test/unit/sui.js
CHANGED
|
@@ -1621,6 +1621,140 @@ describe('SUI:', function () {
|
|
|
1621
1621
|
sandBox.assert.callCount(basecoin.getFeeEstimate, 2);
|
|
1622
1622
|
});
|
|
1623
1623
|
});
|
|
1624
|
+
describe('Build Consolidation Recoveries (MPCv2):', () => {
|
|
1625
|
+
const sandBox = sinon_1.default.createSandbox();
|
|
1626
|
+
const walletPassphrase = 'p$Sw<RjvAgf{nYAYI2xM';
|
|
1627
|
+
let mpcV2UserKey;
|
|
1628
|
+
let mpcV2BackupKey;
|
|
1629
|
+
let mpcV2CommonKeyChain;
|
|
1630
|
+
let baseAddr;
|
|
1631
|
+
let mpcV2Address1;
|
|
1632
|
+
let mpcV2Address2;
|
|
1633
|
+
before(async function () {
|
|
1634
|
+
const [userDkg, backupDkg] = await sdk_lib_mpc_1.MPSUtil.generateEdDsaDKGKeyShares();
|
|
1635
|
+
mpcV2UserKey = await (0, sdk_api_1.encrypt)(walletPassphrase, userDkg.getReducedKeyShare().toString('base64'));
|
|
1636
|
+
mpcV2BackupKey = await (0, sdk_api_1.encrypt)(walletPassphrase, backupDkg.getReducedKeyShare().toString('base64'));
|
|
1637
|
+
mpcV2CommonKeyChain = userDkg.getCommonKeychain();
|
|
1638
|
+
const MPC = await sdk_core_1.EDDSAMethods.getInitializedMpcInstance();
|
|
1639
|
+
baseAddr = utils_1.default.getAddressFromPublicKey(MPC.deriveUnhardened(mpcV2CommonKeyChain, 'm/0').slice(0, 64));
|
|
1640
|
+
mpcV2Address1 = utils_1.default.getAddressFromPublicKey(MPC.deriveUnhardened(mpcV2CommonKeyChain, 'm/1').slice(0, 64));
|
|
1641
|
+
mpcV2Address2 = utils_1.default.getAddressFromPublicKey(MPC.deriveUnhardened(mpcV2CommonKeyChain, 'm/2').slice(0, 64));
|
|
1642
|
+
});
|
|
1643
|
+
beforeEach(function () {
|
|
1644
|
+
const getBalanceStub = sandBox.stub(src_1.Sui.prototype, 'getBalance');
|
|
1645
|
+
getBalanceStub
|
|
1646
|
+
.withArgs(mpcV2Address1)
|
|
1647
|
+
.resolves({ totalBalance: '0', coinObjectBalance: '0', fundsInAddressBalance: '0' });
|
|
1648
|
+
getBalanceStub
|
|
1649
|
+
.withArgs(mpcV2Address2)
|
|
1650
|
+
.resolves({ totalBalance: '200000000', coinObjectBalance: '200000000', fundsInAddressBalance: '0' });
|
|
1651
|
+
const getInputCoinsStub = sandBox.stub(src_1.Sui.prototype, 'getInputCoins');
|
|
1652
|
+
getInputCoinsStub.withArgs(mpcV2Address2).resolves([
|
|
1653
|
+
{
|
|
1654
|
+
coinType: '0x2::sui::SUI',
|
|
1655
|
+
objectId: '0xfa04105eedebdabf729dccecf01d0cf5f1b770892fac2ed8f1e69d71a32a2d24',
|
|
1656
|
+
version: '202',
|
|
1657
|
+
digest: 'DeApRVSrTa9ttXvNyLexT4PJcAkyyxSpi3JQeUg4ua8Q',
|
|
1658
|
+
balance: new bignumber_js_1.default('200000000'),
|
|
1659
|
+
},
|
|
1660
|
+
]);
|
|
1661
|
+
const getFeeEstimateStub = sandBox.stub(src_1.Sui.prototype, 'getFeeEstimate');
|
|
1662
|
+
getFeeEstimateStub.resolves(new bignumber_js_1.default('1997880'));
|
|
1663
|
+
});
|
|
1664
|
+
afterEach(function () {
|
|
1665
|
+
sandBox.restore();
|
|
1666
|
+
});
|
|
1667
|
+
it('should build MPCv2 signed consolidation recoveries, sweeping to the MPCv2 base address', async function () {
|
|
1668
|
+
const res = await basecoin.recoverConsolidations({
|
|
1669
|
+
userKey: mpcV2UserKey,
|
|
1670
|
+
backupKey: mpcV2BackupKey,
|
|
1671
|
+
bitgoKey: mpcV2CommonKeyChain,
|
|
1672
|
+
walletPassphrase,
|
|
1673
|
+
startingScanIndex: 1,
|
|
1674
|
+
endingScanIndex: 3,
|
|
1675
|
+
});
|
|
1676
|
+
res.should.not.be.empty();
|
|
1677
|
+
res.transactions.length.should.equal(1);
|
|
1678
|
+
res.lastScanIndex.should.equal(2);
|
|
1679
|
+
const rebuilt = new src_1.TransferTransaction(basecoin);
|
|
1680
|
+
rebuilt.fromRawTransaction(res.transactions[0].serializedTx);
|
|
1681
|
+
should_1.default.equal(rebuilt.toJson().gasData.owner, mpcV2Address2);
|
|
1682
|
+
const outputs = rebuilt.explainTransaction().outputs;
|
|
1683
|
+
outputs[0].address.should.equal(baseAddr);
|
|
1684
|
+
});
|
|
1685
|
+
it('should detect signing material exactly once at the top of the scan loop, not per iteration', async function () {
|
|
1686
|
+
const getEddsaMaterialSpy = sandBox.spy(basecoin, 'getEddsaSigningMaterial');
|
|
1687
|
+
await basecoin.recoverConsolidations({
|
|
1688
|
+
userKey: mpcV2UserKey,
|
|
1689
|
+
backupKey: mpcV2BackupKey,
|
|
1690
|
+
bitgoKey: mpcV2CommonKeyChain,
|
|
1691
|
+
walletPassphrase,
|
|
1692
|
+
startingScanIndex: 1,
|
|
1693
|
+
endingScanIndex: 3,
|
|
1694
|
+
});
|
|
1695
|
+
sandBox.assert.calledOnce(getEddsaMaterialSpy);
|
|
1696
|
+
});
|
|
1697
|
+
it('should leave MPCv1 base address derivation and signing unchanged (regression)', async function () {
|
|
1698
|
+
const receiveAddress1 = '0x32d8e57ee6d91e5558da0677154c2f085795348e317f95acc9efade1b4112fcc';
|
|
1699
|
+
const receiveAddress2 = '0xdf407e3e25e9400f9779ac7571537c2361684194f1aa5db126a8f574b5ed851c';
|
|
1700
|
+
src_1.Sui.prototype.getBalance
|
|
1701
|
+
.withArgs(receiveAddress1)
|
|
1702
|
+
.resolves({ totalBalance: '200101976', coinObjectBalance: '200101976', fundsInAddressBalance: '0' });
|
|
1703
|
+
src_1.Sui.prototype.getBalance
|
|
1704
|
+
.withArgs(receiveAddress2)
|
|
1705
|
+
.resolves({ totalBalance: '200000000', coinObjectBalance: '200000000', fundsInAddressBalance: '0' });
|
|
1706
|
+
src_1.Sui.prototype.getInputCoins
|
|
1707
|
+
.withArgs(receiveAddress1)
|
|
1708
|
+
.resolves([
|
|
1709
|
+
{
|
|
1710
|
+
coinType: '0x2::sui::SUI',
|
|
1711
|
+
objectId: '0x996aab365d4551b6d1274f520bbfa7b0a566d548b2d590b5565c623812e7e76d',
|
|
1712
|
+
version: '201',
|
|
1713
|
+
digest: 'HXpNTfx9TBdxFcXHi4RziZsQuDAHavRasK6Ri15rVwuA',
|
|
1714
|
+
balance: new bignumber_js_1.default('200000000'),
|
|
1715
|
+
},
|
|
1716
|
+
{
|
|
1717
|
+
coinType: '0x2::sui::SUI',
|
|
1718
|
+
objectId: '0xb39c5f380208cce7fe1ba1258c8d19befb02a80f14952617ed37098dbd4d2df0',
|
|
1719
|
+
version: '199',
|
|
1720
|
+
digest: 'mqk37hXLkiUYgkYxk2MyqNykCkCXwe97uMus7bDPhe2',
|
|
1721
|
+
balance: new bignumber_js_1.default('101976'),
|
|
1722
|
+
},
|
|
1723
|
+
]);
|
|
1724
|
+
src_1.Sui.prototype.getInputCoins
|
|
1725
|
+
.withArgs(receiveAddress2)
|
|
1726
|
+
.resolves([
|
|
1727
|
+
{
|
|
1728
|
+
coinType: '0x2::sui::SUI',
|
|
1729
|
+
objectId: '0xfa04105eedebdabf729dccecf01d0cf5f1b770892fac2ed8f1e69d71a32a2d24',
|
|
1730
|
+
version: '202',
|
|
1731
|
+
digest: 'DeApRVSrTa9ttXvNyLexT4PJcAkyyxSpi3JQeUg4ua8Q',
|
|
1732
|
+
balance: new bignumber_js_1.default('200000000'),
|
|
1733
|
+
},
|
|
1734
|
+
]);
|
|
1735
|
+
src_1.Sui.prototype.getFeeEstimate.resolves(new bignumber_js_1.default('1997880'));
|
|
1736
|
+
const getTSSSignatureSpy = sandBox.spy(sdk_core_1.EDDSAMethods, 'getTSSSignature');
|
|
1737
|
+
const res = await basecoin.recoverConsolidations({
|
|
1738
|
+
userKey: sui_1.keys.userKey,
|
|
1739
|
+
backupKey: sui_1.keys.backupKey,
|
|
1740
|
+
bitgoKey: sui_1.keys.bitgoKey,
|
|
1741
|
+
walletPassphrase,
|
|
1742
|
+
startingScanIndex: 1,
|
|
1743
|
+
endingScanIndex: 3,
|
|
1744
|
+
});
|
|
1745
|
+
res.should.not.be.empty();
|
|
1746
|
+
sandBox.assert.calledTwice(getTSSSignatureSpy);
|
|
1747
|
+
});
|
|
1748
|
+
it('should leave the unsigned (no passphrase) cold path unchanged when keycard is MPCv2', async function () {
|
|
1749
|
+
const res = await basecoin.recoverConsolidations({
|
|
1750
|
+
bitgoKey: mpcV2CommonKeyChain,
|
|
1751
|
+
startingScanIndex: 1,
|
|
1752
|
+
endingScanIndex: 3,
|
|
1753
|
+
});
|
|
1754
|
+
res.should.not.be.empty();
|
|
1755
|
+
res.txRequests.length.should.equal(1);
|
|
1756
|
+
});
|
|
1757
|
+
});
|
|
1624
1758
|
describe('Recover Token Consolidation Transactions', () => {
|
|
1625
1759
|
const sandBox = sinon_1.default.createSandbox();
|
|
1626
1760
|
const walletPassphrase = 'p$Sw<RjvAgf{nYAYI2xM';
|
|
@@ -2570,6 +2704,22 @@ describe('SUI:', function () {
|
|
|
2570
2704
|
.should.rejectedWith('Did not find an address with sufficient funds to recover. Please start the next scan at address index 10. If it is token transaction, please keep sufficient Sui balance in the address for the transaction fee.');
|
|
2571
2705
|
sandBox.assert.callCount(basecoin.getBalance, 10);
|
|
2572
2706
|
});
|
|
2707
|
+
it('should surface RPC errors from getBalance instead of reporting no funds', async function () {
|
|
2708
|
+
const callBack = sandBox.stub(src_1.Sui.prototype, 'getBalance');
|
|
2709
|
+
callBack.rejects(new Error('Method not found'));
|
|
2710
|
+
await basecoin
|
|
2711
|
+
.recover({
|
|
2712
|
+
userKey: sui_1.keys.userKey,
|
|
2713
|
+
backupKey: sui_1.keys.backupKey,
|
|
2714
|
+
bitgoKey: sui_1.keys.bitgoKey,
|
|
2715
|
+
recoveryDestination,
|
|
2716
|
+
walletPassphrase,
|
|
2717
|
+
startingScanIndex: '0',
|
|
2718
|
+
scan: 1,
|
|
2719
|
+
})
|
|
2720
|
+
.should.be.rejectedWith(/Failed to query Sui balance.*Method not found/);
|
|
2721
|
+
sandBox.assert.callCount(basecoin.getBalance, 1);
|
|
2722
|
+
});
|
|
2573
2723
|
});
|
|
2574
2724
|
describe('Consolidation Transaction Failures:', () => {
|
|
2575
2725
|
it('should fail due to insufficient funds in receive address', async function () {
|
|
@@ -2594,4 +2744,4 @@ describe('SUI:', function () {
|
|
|
2594
2744
|
});
|
|
2595
2745
|
});
|
|
2596
2746
|
});
|
|
2597
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3N1aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwwREFBNkI7QUFFN0IsOENBQTBEO0FBQzFELDRDQUFtRDtBQUNuRCxtQ0FBcUY7QUFDckYsMkRBQTZDO0FBQzdDLG9EQUF1QjtBQUN2QixrREFBMEI7QUFDMUIsZ0VBQXFDO0FBQ3JDLG9EQUE0QjtBQUM1QiwrQ0FBeUQ7QUFDekQsMkRBQXdEO0FBQ3hELDBDQUF3QztBQUN4QyxtQ0FBZ0M7QUFDaEMsOENBQWdIO0FBQ2hILGdEQUF3QjtBQUN4QixnRUFBd0M7QUFDeEMsb0RBQTZDO0FBRTdDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLGFBQWEsQ0FBQztJQUNsQixJQUFJLFdBQVcsQ0FBQztJQUVoQixNQUFNLFVBQVUsR0FBRztRQUNqQixLQUFLLEVBQUUsZUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDL0QsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUc7UUFDZixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7S0FDaEMsQ0FBQztJQUVGLE1BQU0sQ0FBQztRQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQUksQ0FBQyxjQUFj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QUFRO2lCQUNYLHFCQUFxQixDQUFDO2dCQUNyQixPQUFPLEVBQUUsVUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFNBQVMsRUFBRSxVQUFJLENBQUMsU0FBUztnQkFDekIsUUFBUSxFQUFFLFVBQUksQ0FBQyxRQUFRO2dCQUN2QixnQkFBZ0I7Z0JBQ2hCLGlCQUFpQixFQUFFLEdBQUc7Z0JBQ3RCLGVBQWUsRUFBRSxHQUFHO2FBQ3JCLENBQUM7aUJBQ0QsTUFBTSxDQUFDLFlBQVksQ0FDbEIsMEdBQTBHLENBQzNHLENBQUM7WUFFSixPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5cbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJLCBlbmNyeXB0IH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0IHsgU3VpLCBUb2tlblRyYW5zZmVyVHJhbnNhY3Rpb24sIFRyYW5zZmVyVHJhbnNhY3Rpb24sIFRzdWkgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3N1aSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IFN1aVRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHsgZ2V0QnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2dldEJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB7IGtleXMgfSBmcm9tICcuLi9yZXNvdXJjZXMvc3VpJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBjb21tb24sIEVERFNBTWV0aG9kcywgTVBDUmVjb3ZlcnlPcHRpb25zLCBNUENUeHMsIFRyYW5zYWN0aW9uUHJlYnVpbGQsIFdhbGxldCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IE1QU1V0aWwgfSBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuXG5kZXNjcmliZSgnU1VJOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlY29pbjtcbiAgbGV0IG5ld1R4UHJlYnVpbGQ7XG4gIGxldCBuZXdUeFBhcmFtcztcblxuICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5UUkFOU0ZFUiwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB0eEluZm86IHt9LFxuICB9O1xuXG4gIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgIHJlY2lwaWVudHM6IHRlc3REYXRhLnJlY2lwaWVudHMsXG4gIH07XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3N1aScsIFN1aS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0c3VpJywgVHN1aS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0c3VpJyk7XG4gICAgbmV3VHhQcmVidWlsZCA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFByZWJ1aWxkKTtcbiAgICB9O1xuICAgIG5ld1R4UGFyYW1zID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHR4UGFyYW1zKTtcbiAgICB9O1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzdWkgPSBiaXRnby5jb2luKCdzdWknKTtcbiAgICBjb25zdCB0c3VpID0gYml0Z28uY29pbigndHN1aScpO1xuXG4gICAgc3VpLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCdzdWknKTtcbiAgICBzdWkuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCdzdWknKTtcbiAgICBzdWkuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1N1aScpO1xuICAgIHN1aS5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlOSk7XG5cbiAgICB0c3VpLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0c3VpJyk7XG4gICAgdHN1aS5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3N1aScpO1xuICAgIHRzdWkuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgU3VpJyk7XG4gICAgdHN1aS5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlOSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdWZXJpZnkgdHJhbnNhY3Rpb246ICcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgdmVyaWZpY2F0aW9uIH0pO1xuICAgICAgaXNUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2hlbiByZWNpcGllbnRzIGFtb3VudCBhcmUgbnVtYmVycycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMucmVjaXBpZW50cyA9IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMucmVjaXBpZW50cy5tYXAoKHsgYWRkcmVzcywgYW1vdW50IH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHsgYWRkcmVzcywgYW1vdW50OiBOdW1iZXIoYW1vdW50KSB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgIH0pO1xuICAgICAgaXNUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2l0aCBpbnZhbGlkIHBhcmFtJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHt9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IHVuZGVmaW5lZDtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgc3BsaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gZ2V0QnVpbGRlckZhY3RvcnkoJ3RzdWknKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShTdWlUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXIpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgICBjb25zdCBhbW91bnQgPSAxMDAwMDAwMDAwO1xuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IG5ldyBBcnJheSgxMDApLmZpbGwoeyBhZGRyZXNzOiB0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcywgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSB9KTtcbiAgICAgIHR4QnVpbGRlci5zZW5kKHJlY2lwaWVudHMpO1xuICAgICAgdHhCdWlsZGVyLmdhc0RhdGEodGVzdERhdGEuZ2FzRGF0YSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogQnVmZmVyLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50cyxcbiAgICAgIH07XG4gICAgICBjb25zdCB2ZXJpZnkgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgfSk7XG4gICAgICB2ZXJpZnkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSBhIHNwb29mZWQgY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFNldCB1cCB3YWxsZXQgZGF0YVxuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc2MmUxNTZkYmQ2NDFjMDAwMDc2YmJhYmUwNDA0MWE5MCcsXG4gICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogJzB4NmYwZjRlMGVlZjE5MTc2NjI4ZWUwZWJjODBlZWY4OTE5NGFmZDllMTllNTk0NDRlNjRiOTk3ZjEyNTRmNmNkOCcsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb25zb2xpZGF0aW9uVHggPSB7XG4gICAgICAgIHR4UmVxdWVzdElkOiAnMTM4NTdjMWEtOWI2MS00Yjg1LTk2ZjEtMTBhZjEyNWY2OGEwJyxcbiAgICAgICAgd2FsbGV0SWQ6ICc2NDRjM2Q2YzUyMzJmMDAwMDc2ODAwNDAnLFxuICAgICAgICB0eEhleDpcbiAgICAgICAgICAnMDAwMDAyMDAwOGU2ZTY3NTNiMDAwMDAwMDAwMDIwNmYwZjRlMGVlZjE5MTc2NjI4ZWUwZWJjODBlZWY4OTE5NGFmZDllMTllNTk0NDRlNjRiOTk3ZjEyNTRmNmNkODAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMDE2NzA0NzJjNDRiNTkwNTgwMzI4NDBiOTRhN2ZkNzQwNWI0Yjg3Y2JmNjdmNGViNjBlMWI3NzgxY2UwM2RkYWQwMTIyMmI4MThiNDUwZGNkMjE2NGIyNWJhNWE1N2IwNTA3ZTU5YTRjOGViNmQ3Y2FkZDA4ZWE2MDlkYjE3YzYxMWQ0ZTEyZDAxNDAwMDAwMDAwMjAyM2ZjMjc1NzY2MjY3NjI5MDQzMzliMGFiZTFmZjk5Yzk5Nzk5YzkzYmVhNDZlOGJmNDUyZjIzYzY4OTkyZGIxMTY3MDQ3MmM0NGI1OTA1ODAzMjg0MGI5NGE3ZmQ3NDA1YjRiODdjYmY2N2Y0ZWI2MGUxYjc3ODFjZTAzZGRhZGU4MDMwMDAwMDAwMDAwMDAxYWUzMjQwMDAwMDAwMDAwMDAnLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAyNDE3NDM0LFxuICAgICAgICAgIGZlZVN0cmluZzogJzI0MTc0MzQnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBtaW5lckZlZTogJzI0MTc0MzQnLFxuICAgICAgICAgIHNwZW5kQW1vdW50OiAnOTk3NTgyNTY2JyxcbiAgICAgICAgICBzcGVuZEFtb3VudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpJyxcbiAgICAgICAgICAgICAgYW1vdW50U3RyaW5nOiAnOTk3NTgyNTY2JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXlHb0ZlZTogJzAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzB4NmYwZjRlMGVlZjE5MTc2NjI4ZWUwZWJjODBlZWY4OTE5NGFmZDllMTllNTk0NDRlNjRiOTk3ZjEyNTRmNmNkOCcsXG4gICAgICAgICAgICAgIHZhbHVlOiA5OTc1ODI1NjYsXG4gICAgICAgICAgICAgIHdhbGxldDogJzY0NGMzZDZjNTIzMmYwMDAwNzY4MDA0MCcsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFsnNjQ0YzNkNmM1MjMyZjAwMDA3NjgwMDQwJ10sXG4gICAgICAgICAgICAgIGVudGVycHJpc2U6ICc2MmNjNTliNzI3NDQzYTAwMDcwODkwMzMnLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogWyc2MmNjNTliNzI3NDQzYTAwMDcwODkwMzMnXSxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc5OTc1ODI1NjYnLFxuICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZXM6IFsnaG90J10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZhbHVlOiA5OTc1ODI1NjYsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICcweDE2NzA0NzJjNDRiNTkwNTgwMzI4NDBiOTRhN2ZkNzQwNWI0Yjg3Y2JmNjdmNGViNjBlMWI3NzgxY2UwM2RkYWQnLFxuICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzk5NzU4MjU2NicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdHlwZTogJ1RyYW5zZmVyJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29uc29saWRhdGVJZDogJzY4YjY0ODg5MmVlOTM1NWM5N2U0Yjk2ZDA5NDViMmNhJyxcbiAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1snbW9jayddLnVyaTtcbiAgICAgIGNvbnN0IHdhbGxldE9iaiA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcblxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoJy9hcGkvdjIvdHN1aS93YWxsZXQvNjJlMTU2ZGJkNjQxYzAwMDA3NmJiYWJlMDQwNDFhOTAvY29uc29saWRhdGVBY2NvdW50L2J1aWxkJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmNvbnNvbGlkYXRpb25UeCxcbiAgICAgICAgICAgIHR4SGV4OlxuICAgICAgICAgICAgICAnMDAwMDAyMDAwODAwZTFmNTA1MDAwMDAwMDAwMDIwODc3MTI3Mzk2OWFjZjAzNTZlZDBmMzNjMWM1MmIxMDliYmZlMGRlMzM2OWU5ZmI5ODM3ZDUyYTVhNDM4YzY1MDAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMDZmMGY0ZTBlZWYxOTE3NjYyOGVlMGViYzgwZWVmODkxOTRhZmQ5ZTE5ZTU5NDQ0ZTY0Yjk5N2YxMjU0ZjZjZDgwMTIyZGU5NWIzMTM0N2EyZjBkOTcxNWM1NjBkZmRmYzhmZDM1MTc4MmNhNWUyNzVkNGJjM2E5OGVhNzg3NjliY2U0ZjEyZDAxNDAwMDAwMDAwMjBlYTYzOTA4MTkyOTYwM2ZlMjU4MDg3M2Y0YWE2NDcwMTc0NmQwODlmOTczYjA4MjdhMjIyZDc4NGU5OTJlZTI2NmYwZjRlMGVlZjE5MTc2NjI4ZWUwZWJjODBlZWY4OTE5NGFmZDllMTllNTk0NDRlNjRiOTk3ZjEyNTRmNmNkOGU4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAuZ2V0KCcvYXBpL3YyL3RzdWkva2V5LzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjogJ2Zha2VQcnYnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuXG4gICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB0byB0ZXN0XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHdhbGxldE9iai5zZW5kQWNjb3VudENvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb246IHtcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvblRvQmFzZUFkZHJlc3M6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ0NvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24gb3V0cHV0IGFkZHJlc3MgZG9lcyBub3QgbWF0Y2ggd2FsbGV0IGJhc2UgYWRkcmVzcycsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB2YWxpZCBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBTZXQgdXAgd2FsbGV0IGRhdGFcbiAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNjJlMTU2ZGJkNjQxYzAwMDA3NmJiYWJlMDQwNDFhOTAnLFxuICAgICAgICBjb2luOiAndHN1aScsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICcweDZmMGY0ZTBlZWYxOTE3NjYyOGVlMGViYzgwZWVmODkxOTRhZmQ5ZTE5ZTU5NDQ0ZTY0Yjk5N2YxMjU0ZjZjZDgnLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29uc29saWRhdGlvblR4ID0ge1xuICAgICAgICB0eFJlcXVlc3RJZDogJzEzODU3YzFhLTliNjEtNGI4NS05NmYxLTEwYWYxMjVmNjhhMCcsXG4gICAgICAgIHdhbGxldElkOiAnNjQ0YzNkNmM1MjMyZjAwMDA3NjgwMDQwJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzAwMDAwMjAwMDhlNmU2NzUzYjAwMDAwMDAwMDAyMDZmMGY0ZTBlZWYxOTE3NjYyOGVlMGViYzgwZWVmODkxOTRhZmQ5ZTE5ZTU5NDQ0ZTY0Yjk5N2YxMjU0ZjZjZDgwMjAyMDAwMTAxMDAwMDAxMDEwMjAwMDAwMTAxMDAxNjcwNDcyYzQ0YjU5MDU4MDMyODQwYjk0YTdmZDc0MDViNGI4N2NiZjY3ZjRlYjYwZTFiNzc4MWNlMDNkZGFkMDEyMjJiODE4YjQ1MGRjZDIxNjRiMjViYTVhNTdiMDUwN2U1OWE0YzhlYjZkN2NhZGQwOGVhNjA5ZGIxN2M2MTFkNGUxMmQwMTQwMDAwMDAwMDIwMjNmYzI3NTc2NjI2NzYyOTA0MzM5YjBhYmUxZmY5OWM5OTc5OWM5M2JlYTQ2ZThiZjQ1MmYyM2M2ODk5MmRiMTE2NzA0NzJjNDRiNTkwNTgwMzI4NDBiOTRhN2ZkNzQwNWI0Yjg3Y2JmNjdmNGViNjBlMWI3NzgxY2UwM2RkYWRlODAzMDAwMDAwMDAwMDAwMWFlMzI0MDAwMDAwMDAwMDAwJyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMjQxNzQzNCxcbiAgICAgICAgICBmZWVTdHJpbmc6ICcyNDE3NDM0JyxcbiAgICAgICAgfSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgbWluZXJGZWU6ICcyNDE3NDM0JyxcbiAgICAgICAgICBzcGVuZEFtb3VudDogJzk5NzU4MjU2NicsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aScsXG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzk5NzU4MjU2NicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGF5R29GZWU6ICcwJyxcbiAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6ICcweDZmMGY0ZTBlZWYxOTE3NjYyOGVlMGViYzgwZWVmODkxOTRhZmQ5ZTE5ZTU5NDQ0ZTY0Yjk5N2YxMjU0ZjZjZDgnLFxuICAgICAgICAgICAgICB2YWx1ZTogOTk3NTgyNTY2LFxuICAgICAgICAgICAgICB3YWxsZXQ6ICc2NDRjM2Q2YzUyMzJmMDAwMDc2ODAwNDAnLFxuICAgICAgICAgICAgICB3YWxsZXRzOiBbJzY0NGMzZDZjNTIzMmYwMDAwNzY4MDA0MCddLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjJjYzU5YjcyNzQ0M2EwMDA3MDg5MDMzJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZXM6IFsnNjJjYzU5YjcyNzQ0M2EwMDA3MDg5MDMzJ10sXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnOTk3NTgyNTY2JyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpJyxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgICAgICAgIHdhbGxldFR5cGVzOiBbJ2hvdCddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogOTk3NTgyNTY2LFxuICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgxNjcwNDcyYzQ0YjU5MDU4MDMyODQwYjk0YTdmZDc0MDViNGI4N2NiZjY3ZjRlYjYwZTFiNzc4MWNlMDNkZGFkJyxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc5OTc1ODI1NjYnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICdUcmFuc2ZlcicsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2OGI2NDg4OTJlZTkzNTVjOTdlNGI5NmQwOTQ1YjJjYScsXG4gICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhKGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIGJsb2NraGFzaDogJycsXG4gICAgICAgICAgICBmZWVQYXllcjogJycsXG4gICAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgICB0eFByZWJ1aWxkOiBjb25zb2xpZGF0aW9uVHggYXMgdW5rbm93biBhcyBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgICAgICB3YWxsZXQ6IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKSxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjoge1xuICAgICAgICAgICAgICBjb25zb2xpZGF0aW9uVG9CYXNlQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhc3NlcnQuZmFpbCgnVHJhbnNhY3Rpb24gc2hvdWxkIHBhc3MgdmVyaWZpY2F0aW9uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFeHBsYWluIFRyYW5zYWN0aW9uOiAnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5UUkFOU0ZFUiwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAndHlwZSddLFxuICAgICAgICBpZDogJ0J4b2VHWGJCQ3V3NlZGRWNnd0hIVUFLckNvQXNHYW5QQjM5a2RWVktaWmNSJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogdGVzdERhdGEucmVjaXBpZW50c1swXS5hbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzFdLmFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IHRlc3REYXRhLnJlY2lwaWVudHNbMV0uYW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogYCR7dGVzdERhdGEuQU1PVU5UICogMn1gLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIGZlZTogeyBmZWU6IHRlc3REYXRhLmdhc0RhdGEuYnVkZ2V0LnRvU3RyaW5nKCkgfSxcbiAgICAgICAgdHlwZTogMCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc3BsaXQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OlxuICAgICAgICAgICcwMDAwNjUwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMjA1NzQ4OTVmZTgzYjQwOWIwMDllMmUwNDMzYWQxODIzZWMwZDUzOGFmN2ZlYTUyMzkwYTE5OGJkZmU3Njc2ZjEzMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwYzgwMTAyMDAwMTAxMDAwMDAxMDEwMjAwMDAwMTAxMDAwMjAwMDEwMTAyMDAwMTAxMDIwMjAwMDEwMTAwMDIwMDAxMDEwMzAwMDEwMTAyMDQwMDAxMDEwMDAyMDAwMTAxMDQwMDAxMDEwMjA2MDAwMTAxMDAwMjAwMDEwMTA1MDAwMTAxMDIwODAwMDEwMTAwMDIwMDAxMDEwNjAwMDEwMTAyMGEwMDAxMDEwMDAyMDAwMTAxMDcwMDAxMDEwMjBjMDAwMTAxMDAwMjAwMDEwMTA4MDAwMTAxMDIwZTAwMDEwMTAwMDIwMDAxMDEwOTAwMDEwMTAyMTAwMDAxMDEwMDAyMDAwMTAxMGEwMDAxMDEwMjEyMDAwMTAxMDAwMjAwMDEwMTBiMDAwMTAxMDIxNDAwMDEwMTAwMDIwMDAxMDEwYzAwMDEwMTAyMTYwMDAxMDEwMDAyMDAwMTAxMGQwMDAxMDEwMjE4MDAwMTAxMDAwMjAwMDEwMTBlMDAwMTAxMDIxYTAwMDEwMTAwMDIwMDAxMDEwZjAwMDEwMTAyMWMwMDAxMDEwMDAyMDAwMTAxMTAwMDAxMDEwMjFlMDAwMTAxMDAwMjAwMDEwMTExMDAwMTAxMDIyMDAwMDEwMTAwMDIwMDAxMDExMjAwMDEwMTAyMjIwMDAxMDEwMDAyMDAwMTAxMTMwMDAxMDEwMjI0MDAwMTAxMDAwMjAwMDEwMTE0MDAwMTAxMDIyNjAwMDEwMTAwMDIwMDAxMDExNTAwMDEwMTAyMjgwMDAxMDEwMDAyMDAwMTAxMTYwMDAxMDEwMjJhMDAwMTAxMDAwMjAwMDEwMTE3MDAwMTAxMDIyYzAwMDEwMTAwMDIwMDAxMDExODAwMDEwMTAyMmUwMDAxMDEwMDAyMDAwMTAxMTkwMDAxMDEwMjMwMDAwMTAxMDAwMjAwMDEwMTFhMDAwMTAxMDIzMjAwMDEwMTAwMDIwMDAxMDExYjAwMDEwMTAyMzQwMDAxMDEwMDAyMDAwMTAxMWMwMDAxMDEwMjM2MDAwMTAxMDAwMjAwMDEwMTFkMDAwMTAxMDIzODAwMDEwMTAwMDIwMDAxMDExZTAwMDEwMTAyM2EwMDAxMDEwMDAyMDAwMTAxMWYwMDAxMDEwMjNjMDAwMTAxMDAwMjAwMDEwMTIwMDAwMTAxMDIzZTAwMDEwMTAwMDIwMDAxMDEyMTAwMDEwMTAyNDAwMDAxMDEwMDAyMDAwMTAxMjIwMDAxMDEwMjQyMDAwMTAxMDAwMjAwMDEwMTIzMDAwMTAxMDI0NDAwMDEwMTAwMDIwMDAxMDEyNDAwMDEwMTAyNDYwMDAxMDEwMDAyMDAwMTAxMjUwMDAxMDEwMjQ4MDAwMTAxMDAwMjAwMDEwMTI2MDAwMTAxMDI0YTAwMDEwMTAwMDIwMDAxMDEyNzAwMDEwMTAyNGMwMDAxMDEwMDAyMDAwMTAxMjgwMDAxMDEwMjRlMDAwMTAxMDAwMjAwMDEwMTI5MDAwMTAxMDI1MDAwMDEwMTAwMDIwMDAxMDEyYTAwMDEwMTAyNTIwMDAxMDEwMDAyMDAwMTAxMmIwMDAxMDEwMjU0MDAwMTAxMDAwMjAwMDEwMTJjMDAwMTAxMDI1NjAwMDEwMTAwMDIwMDAxMDEyZDAwMDEwMTAyNTgwMDAxMDEwMDAyMDAwMTAxMmUwMDAxMDEwMjVhMDAwMTAxMDAwMjAwMDEwMTJmMDAwMTAxMDI1YzAwMDEwMTAwMDIwMDAxMDEzMDAwMDEwMTAyNWUwMDAxMDEwMDAyMDAwMTAxMzEwMDAxMDEwMjYwMDAwMTAxMDAwMjAwMDEwMTMyMDAwMTAxMDI2MjAwMDEwMTAwMDIwMDAxMDEzMzAwMDEwMTAyNjQwMDAxMDEwMDAyMDAwMTAxMzQwMDAxMDEwMjY2MDAwMTAxMDAwMjAwMDEwMTM1MDAwMTAxMDI2ODAwMDEwMTAwMDIwMDAxMDEzNjAwMDEwMTAyNmEwMDAxMDEwMDAyMDAwMTAxMzcwMDAxMDEwMjZjMDAwMTAxMDAwMjAwMDEwMTM4MDAwMTAxMDI2ZTAwMDEwMTAwMDIwMDAxMDEzOTAwMDEwMTAyNzAwMDAxMDEwMDAyMDAwMTAxM2EwMDAxMDEwMjcyMDAwMTAxMDAwMjAwMDEwMTNiMDAwMTAxMDI3NDAwMDEwMTAwMDIwMDAxMDEzYzAwMDEwMTAyNzYwMDAxMDEwMDAyMDAwMTAxM2QwMDAxMDEwMjc4MDAwMTAxMDAwMjAwMDEwMTNlMDAwMTAxMDI3YTAwMDEwMTAwMDIwMDAxMDEzZjAwMDEwMTAyN2MwMDAxMDEwMDAyMDAwMTAxNDAwMDAxMDEwMjdlMDAwMTAxMDAwMjAwMDEwMTQxMDAwMTAxMDI4MDAwMDEwMTAwMDIwMDAxMDE0MjAwMDEwMTAyODIwMDAxMDEwMDAyMDAwMTAxNDMwMDAxMDEwMjg0MDAwMTAxMDAwMjAwMDEwMTQ0MDAwMTAxMDI4NjAwMDEwMTAwMDIwMDAxMDE0NTAwMDEwMTAyODgwMDAxMDEwMDAyMDAwMTAxNDYwMDAxMDEwMjhhMDAwMTAxMDAwMjAwMDEwMTQ3MDAwMTAxMDI4YzAwMDEwMTAwMDIwMDAxMDE0ODAwMDEwMTAyOGUwMDAxMDEwMDAyMDAwMTAxNDkwMDAxMDEwMjkwMDAwMTAxMDAwMjAwMDEwMTRhMDAwMTAxMDI5MjAwMDEwMTAwMDIwMDAxMDE0YjAwMDEwMTAyOTQwMDAxMDEwMDAyMDAwMTAxNGMwMDAxMDEwMjk2MDAwMTAxMDAwMjAwMDEwMTRkMDAwMTAxMDI5ODAwMDEwMTAwMDIwMDAxMDE0ZTAwMDEwMTAyOWEwMDAxMDEwMDAyMDAwMTAxNGYwMDAxMDEwMjljMDAwMTAxMDAwMjAwMDEwMTUwMDAwMTAxMDI5ZTAwMDEwMTAwMDIwMDAxMDE1MTAwMDEwMTAyYTAwMDAxMDEwMDAyMDAwMTAxNTIwMDAxMDEwMmEyMDAwMTAxMDAwMjAwMDEwMTUzMDAwMTAxMDJhNDAwMDEwMTAwMDIwMDAxMDE1NDAwMDEwMTAyYTYwMDAxMDEwMDAyMDAwMTAxNTUwMDAxMDEwMmE4MDAwMTAxMDAwMjAwMDEwMTU2MDAwMTAxMDJhYTAwMDEwMTAwMDIwMDAxMDE1NzAwMDEwMTAyYWMwMDAxMDEwMDAyMDAwMTAxNTgwMDAxMDEwMmFlMDAwMTAxMDAwMjAwMDEwMTU5MDAwMTAxMDJiMDAwMDEwMTAwMDIwMDAxMDE1YTAwMDEwMTAyYjIwMDAxMDEwMDAyMDAwMTAxNWIwMDAxMDEwMmI0MDAwMTAxMDAwMjAwMDEwMTVjMDAwMTAxMDJiNjAwMDEwMTAwMDIwMDAxMDE1ZDAwMDEwMTAyYjgwMDAxMDEwMDAyMDAwMTAxNWUwMDAxMDEwMmJhMDAwMTAxMDAwMjAwMDEwMTVmMDAwMTAxMDJiYzAwMDEwMTAwMDIwMDAxMDE2MDAwMDEwMTAyYmUwMDAxMDEwMDAyMDAwMTAxNjEwMDAxMDEwMmMwMDAwMTAxMDAwMjAwMDEwMTYyMDAwMTAxMDJjMjAwMDEwMTAwMDIwMDAxMDE2MzAwMDEwMTAyYzQwMDAxMDEwMDAyMDAwMTAxNjQwMDAxMDEwMmM2MDAwMTAxMDA1NzQ4OTVmZTgzYjQwOWIwMDllMmUwNDMzYWQxODIzZWMwZDUzOGFmN2ZlYTUyMzkwYTE5OGJkZmU3Njc2ZjEzMDMwMzRmNDAzZmY5YjczYjU3OTRiNzlhODllYmJjZDgxMDMzMWZlYTUyODc4ZGIwYjRkYzFhMWM4OGY0YzBkYzU2MTYwMDAwMDAwMDAwMDAwMDIwMDNjYWY3ZTY3N2M3MmIyNDFkNjFkMDBlNjAwYjZkZjI1NjM5YzU4Mjk4N2QwYWE3OGNlZWEwYjk5NTNlYWM1MmE2MGIwZTUxZjlmZmEzOThmNmVlMWQzMTAxZDZjOWVmYTEzZDE4MDBlNDEyZDdlMDgzMmUyNjE2ZjE3OTNmZDc5Y2U5MTcwMDAwMDAwMDAwMjA1MDQzNWE0OWYwNjM1YmMyZjJjM2JiZGNlMDVhMTZiMjRmYWYwMzY4ZWRhYTI1YzhmYmNlMTZlZjYyNjAyZGE1Y2RhNDRhZTQ3ZjM4MGY0NWQzY2Q0OTExODgwZjRlOWEyNGI1MmZlNDI0NjgzYzY2Y2YzYzc3NjlkZDNjYTIyYzEwMDAwMDAwMDAwMDAwMDAyMDBjNzhmYTIwMjM2YmI4Njg3MWVhY2ZlMmI0ZjIxNThlYWE2OGY0ZjQ1NjVkOGNmOTg2NWVlOWYyNzllNGJkNDA1NzQ4OTVmZTgzYjQwOWIwMDllMmUwNDMzYWQxODIzZWMwZDUzOGFmN2ZlYTUyMzkwYTE5OGJkZmU3Njc2ZjEzZTgwMzAwMDAwMDAwMDAwMDAwZTFmNTA1MDAwMDAwMDAwMCcsXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxMDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLkFERF9TVEFLRSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ21vZHVsZScsXG4gICAgICAgICAgJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAndmFsaWRhdG9yQWRkcmVzcycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnYlA3OGJvWjQ4c0RkSnNnMlYxdEphaHBHeUJ3YUM5R1NUTDJydnlBRG5zaCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5yZXF1ZXN0QWRkU3Rha2UudmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogdGVzdERhdGEucmVxdWVzdEFkZFN0YWtlLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogdGVzdERhdGEuU1RBS0lOR19BTU9VTlQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBmZWU6IHsgZmVlOiB0ZXN0RGF0YS5nYXNEYXRhLmJ1ZGdldC50b1N0cmluZygpIH0sXG4gICAgICAgIHR5cGU6IDI1LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gZXhwbGFpbiB0cmFuc2FjdGlvbiB3aXRoIG1pc3NpbmcgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHt9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChlcnJvci5tZXNzYWdlLCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGV4cGxhaW4gdHJhbnNhY3Rpb24gd2l0aCBpbnZhbGlkIHBhcmFtcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7IHR4SGV4OiAncmFuZG9tU3RyaW5nJyB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChlcnJvci5tZXNzYWdlLCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUGFyc2UgVHJhbnNhY3Rpb25zOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgdHJhbnNmZXJJbnB1dHNSZXNwb25zZSA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGVzdERhdGEucmVjaXBpZW50c1swXS5hZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IG5ldyBCaWdOdW1iZXIodGVzdERhdGEuQU1PVU5UKS5wbHVzKHRlc3REYXRhLkFNT1VOVCkucGx1cyh0ZXN0RGF0YS5nYXNEYXRhLmJ1ZGdldCkudG9GaXhlZCgpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgdHJhbnNmZXJPdXRwdXRzUmVzcG9uc2UgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMV0uYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5yZWNpcGllbnRzWzFdLmFtb3VudCxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYSB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5UUkFOU0ZFUiwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiB0cmFuc2ZlcklucHV0c1Jlc3BvbnNlLFxuICAgICAgICBvdXRwdXRzOiB0cmFuc2Zlck91dHB1dHNSZXNwb25zZSxcbiAgICAgICAgZmVlOiBuZXcgQmlnTnVtYmVyKDIwMDAwMDAwKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHBhcnNlIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24gd2hlbiBleHBsYWluVHJhbnNhY3Rpb24gcmVzcG9uc2UgaXMgdW5kZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoU3VpLnByb3RvdHlwZSwgJ2V4cGxhaW5UcmFuc2FjdGlvbicpO1xuICAgICAgc3R1Yi5yZXNvbHZlcyh1bmRlZmluZWQpO1xuICAgICAgYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7IHR4SGV4OiB0ZXN0RGF0YS5UUkFOU0ZFUiB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICBzdHViLnJlc3RvcmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBsZXQga2V5Y2hhaW5zO1xuICAgIGxldCBjb21tb25LZXljaGFpbjtcblxuICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICBjb21tb25LZXljaGFpbiA9XG4gICAgICAgICcxOWJkZmUyYTRiNDk4YTA1NTExMzgxMjM1YTg4OTJkNTQyNjc4MDdjNGEzZjY1NGUzMTBiOTM4YjhiNDI0ZmY0YWRlZGJlOTJmNGMxNDZkZTY0MWM2NzUwOGE5NjEzMjRjODUwNGNkZjhlMGMwYWNiYjY4ZDYxMDRjY2NjZDc4MSc7XG4gICAgICBrZXljaGFpbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzY0MjRjMzUzZWFmNzhkMDAwNzY2ZTk1OTQ5ODY4NDY4JyxcbiAgICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAgICB0eXBlOiAndHNzJyxcbiAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICcxOWJkZmUyYTRiNDk4YTA1NTExMzgxMjM1YTg4OTJkNTQyNjc4MDdjNGEzZjY1NGUzMTBiOTM4YjhiNDI0ZmY0YWRlZGJlOTJmNGMxNDZkZTY0MWM2NzUwOGE5NjEzMjRjODUwNGNkZjhlMGMwYWNiYjY4ZDYxMDRjY2NjZDc4MScsXG4gICAgICAgICAgZW5jcnlwdGVkUHJ2OlxuICAgICAgICAgICAgJ3tcIml2XCI6XCJjWmQ1aTdMNFJ4dHdyQUxXMnJLN1VBPT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiNXpnb0gxQmQzRnc9XCIsXCJjdFwiOlwiOXZWbG5YRlJ0ck05RlZFbytkMmNoYkdIbE05bEZaZW11ZUJ1QXMzQklrUG8zM0ZvN2p6d3dOSy9rSVdrRXlnK05tRUJkNUlhcUFTMTU3bnZ2dnd6enNtTVdsUWRVejlxYm1YTnYzcGc5ODdjWEZSMDhleFMrNHVod1AxWU5PakpUUnZSTmNPOVpxSGI0NmQ0Zm15Si95Qzkvc3VzQ2dlN3IvRXNiYU41QzNhZnYxZHp5YnVxOTEyRndhUUVsWkxZWXA1QklDdWRGT01aOWswVURNZktNL1BNRGtIN1dleG9HSHI5R0txL2JnQ0gyQjM5VFpaeUhLVTZVeTQ3bFhlcDJzNmgwRHJNd0hPcm5taUwzRFpqT2o4OFludnBobHp4dW80ZU9sRDJVSGlhMitudklhSVNZczI5UHIwREF2UkV1dGNodmNCcEV4ajFrV1dQdjdoUVlydjhGME5BZGF0c2JXbDN3K3hLeWZpTUtvMVVTbHJ3eUp2aXlwR3RRdFhPSnl3MFhQTjBydjIrTDVsVzhCYmpwekhmWVlOMTNmSlRlZGxHVEZoaGt6VnRiYlBBS0UwMmt4N3pDSmNqWWFpZXhkU1RzckRMU2NZTlQ5L0poZHQyN0twc29vZWh3Vm9oTGZTS3o0dmJGZlJ1Mk1QWnczLytjL2hmaUpOZ3R6NmVzV2JueEdyY0U4VTJJd1BZQ2FLK0doazREY3FXTkluaTU5Ukk1QjVrQXNRT1RvSUk0MHFQTjUxMHVUZ3hCU1BPN3E3TUhna3hkZDRDcUJxK29qcjlqMFA3b2FvOEU1WStDQkRKcm9qRG9DaDFvQ0NEVzl2bzJkWGxWY0Q4U0lidzdVLzlBZnZFYkE0eHlFLzVtZDFNN0NJd0xuV3MyWW52MFl0YUtvcWhkUzl4NkZtSGxNRGhOL0RLSGlucndtb3d0clRUODJmT2twTzVnOXNhU21nVTdReTNnTHQ4dCtWd2RFeWVGZVFVS1JTeWNpOHFncVhRYVpJZzQrYVhnYVNPbmxDRk10bUI4ZWtZeEVoVFk1dXpSZnJOZ1M0czFRZXFGQnBOdFVGK1lkaTI5N3BiVlhuSm9YQU4rU1ZXZDgwR0N4K3lJMmRwVkM4OWszck9XSzlXZXlxbG56dUxKV3AyUklPQjljZFc4R0Z2L2ZOK1FBSnBZZVZ4T0U0K25aRHNLbnNqOG5LY2c5dDREbHgxRzZnTE0xL1ZxOVl4TkxidXp1UkMwYXNVWXZkTW5vTXZzem1wbSsrVHhuZFlpc2dOWXNjcFpTb3o3d3ZjYXpKTkVQZmhQVmpFa2Q2dFVVdU40R00zNUgwRG1LQ1VRTlQrYTZCNmhtSGxUWnZqeGl5R0FnNWJZNTloZGp2SisyMlFkdWF6bEVFQzZMSTNIckE3dUswVHBwbFd6UzF0Q0lGdlRNVWhqNjVERVptTkoyK1pZOWJRNHZzTWYrRFJSM09PRzR0K0RNbE5mak9kM3pOdjNRb1k5NUJqZldwcnlGd1B6RHE3YkNQNjdKRHNvajdqMlRZNUZSU3JSa0Q3N0gwRXdsdXgyY1dmalJUd2NNSGNkUXh4dVYwT1AwYU5qR0RqeWJGTlwifScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzY0MjRjMzUzZWFmNzhkMDAwNzY2ZTk2MTM3ZDQ0MDRiJyxcbiAgICAgICAgICBzb3VyY2U6ICdiYWNrdXAnLFxuICAgICAgICAgIHR5cGU6ICd0c3MnLFxuICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJyxcbiAgICAgICAgICBlbmNyeXB0ZWRQcnY6XG4gICAgICAgICAgICAne1wiaXZcIjpcInZpMGRQZWYvUng3a0cvcFJ5U1FpNlE9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCI6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCI5ZWZoUXNpRXZWcz1cIixcImN0XCI6XCJHdzZhdHZmNmd4S3pzanRsM3hzZWlwTzNyQXhwMW1BejdZdTFpaEZzaTUvbGYydk1aZWdBcGdaeCtweUlMRlM5S0tMSGJORjNVNldnU1lkcnIydDR2emRMc1hrSDFXSXhmSFMrY2QyQzVONTl5QURaRG5QSkJUNnB2L0lSdmFZZWxQMENrM25JWVEyaFNNbThvcCtWT1dDL1N6SGVoN3NsWURxd0VIVEdhbjBXaWdmdmsxeVJkN0NDSlRhRUFvbW5jLzRlRmkyTlkzWDNndC8zb3B5OUlBZ2tubndVRm9objk2RVdwRVEwRjZwYnpIL1o4VkY2Z0YrRFVjcnJCeUF4RXhVUG5IUVppRmszWUhVL3ZWVjRGeEJVL21WQUU4eEJzQm41dWw1ZTVTVU1QZmM3VEJ1Sld2NEJCeVROZzl4RFNoRi85MVl4Mm5iZlVtNWQ5UW1NOGxwS2d6elF2Y0s4UE9BUGs4N2dSQ3VLbnNHaDV2TlMwVXBwa0hjK29jZnpSUWxHQTZqemU3UXl5UU8wck1qNUx5OGtXandrMnZJU3ZLWUhZUzFOUjdWVTU0OVVJWG83TlhqYXR1bktTYzMrSXJlb1JVSElzaGlhTGc2aGwrcHhDQ3VjMHFRNDNWMG1kSWZDalROOGdrR1dMTms4Ujd0QUdQejlqeWFwUVBjUEVHSGdFejBBVElpNnlNTldDc2liUzJlTGlFMXVWRUpPTm9NNGxrNkZQbDNRMkNIYlcyTWVFYnFqWThoYmF3MThtTmIyeFNCSC9Gd3BpaWFsK1R2aTJpbXFnbkNPNFpwTzlibGxLZnRaUGNReTBzdE4rZUdCbGI1dWZ5ZmxLa0RTaUNoSFlyb0dqRXBtaUZpY2RkZTQ4Y0pzekY1MnVLTm5mMXE2N2ZBOS9TMkZBSFFhYjNFWG9qeEgyR2JrK2trVjJoL1RZS0ZGWlNXQzN2aTRlOG1PK3ZqTVVjUjBBZHNnUEZ5RUl6MFNDR3ViYTNDblRMTmRFdVp3c2F1QWVIa3gydlVUblJnSlBWZ05lZXVYbXNWRzc2U3kyZ2dKSHVhbHMwSGo4VTJYZGEwcU8xUnVGZm9DV2Zzczl3bjZIR1J3UFBraFNCLzhvTmd1QXFtUlZHS2tkOFp3dDNJdnJUZDlmazAvckZGREpLR3o3V3lOSGtZZ1VtTmlHY0l0RDEydjBqeDdGWjUyRUp6bDNBdjFSeUpVUUsxOCs4RVlQaDNTR2lVOWR0N1ZYMGFGMHVvNkpvdUtoT2VsZFV2TVArQXVnUXo4ZlVjbHdUUXNiYm9WZzI3WXhvMER5QVRWd1RoVzVhNTZSNlFmNVppUUpsdUZ1enM1eTk4cnEwUzVxMDQ2bEU2bzN2Vm1KcEVkd2plU0NKb0VUNUNMNG5UZ2tYeVd2aG00ZUI4dS9lNjZsM28wcWJhU3g4cTlZWW1UOUVwUmNsNVRQNFRoTEJLRVRZZHpWdmc0ZXhqUWZla3RNYXRrNUV5VXBFSWhaUFhoNXZYcEpaZXNkZk85TEo4elRhSEJzQmpEUFU3Y2ROZ1FNYmVicGF0YVJpOEEwZWwyL0lKWGwrRStvbGdBejV6QzRpMk8xUT09XCJ9JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnNjQyNGMzNTNlYWY3OGQwMDA3NjZlOTUxMGIxMjVmYmEnLFxuICAgICAgICAgIHNvdXJjZTogJ2JpdGdvJyxcbiAgICAgICAgICB0eXBlOiAndHNzJyxcbiAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICcxOWJkZmUyYTRiNDk4YTA1NTExMzgxMjM1YTg4OTJkNTQyNjc4MDdjNGEzZjY1NGUzMTBiOTM4YjhiNDI0ZmY0YWRlZGJlOTJmNGMxNDZkZTY0MWM2NzUwOGE5NjEzMjRjODUwNGNkZjhlMGMwYWNiYjY4ZDYxMDRjY2NjZDc4MScsXG4gICAgICAgICAgdmVyaWZpZWRWc3NQcm9vZjogdHJ1ZSxcbiAgICAgICAgICBpc0JpdEdvOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB2YWxpZGF0aW5nIGEgd2VsbCBmb3JtYXR0ZWQgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnZjk0MWFlM2NiZTU2NDVkY2NjMTVkYTgzNDZiNTMzZjdmOTFmMjAyMDg5YTU1MjE2NTNjMDYyYjJmZjEwYjMwNCc7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsaWRhdGluZyBhIHdlbGwgZm9ybWF0dGVkIGFkZHJlc3MgcHJlZml4ZWQgd2l0aCAweCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnMHhmOTQxYWUzY2JlNTY0NWRjY2MxNWRhODM0NmI1MzNmN2Y5MWYyMDIwODlhNTUyMTY1M2MwNjJiMmZmMTBiMzA0JztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsaWRhdGluZyBhbiBvbGQgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnMHgyOTU5YmZjM2ZkYjdkYzIzZmVkOGRlYmEyZmFmYjcwZjNlNjA2YTU5JztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbGlkYXRpbmcgYW4gaW5jb3JyZWN0bHkgZm9ybWF0dGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICd3cm9uZ2FkZHJlc3MnO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIGlzV2FsbGV0QWRkcmVzcyB3aXRoIHZhbGlkIGFkZHJlc3MgZm9yIGluZGV4IDQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBuZXdBZGRyZXNzID0gJzB4OGIzYzc4MDc3MzBkNzU3OTJkZDZjNDk3MzJjZjlmMDE0ZDY5ODRhOWM3N2QzODZiZGIxMDcyYTllNTM3ZDhkOCc7XG4gICAgICBjb25zdCBpbmRleCA9IDQ7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY29tbW9uS2V5Y2hhaW4sIGFkZHJlc3M6IG5ld0FkZHJlc3MsIGluZGV4LCBrZXljaGFpbnMgfTtcbiAgICAgIChhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaXNXYWxsZXRBZGRyZXNzIHdoZW4ga2V5Y2hhaW5zIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJzB4Mjk1OWJmYzNmZGI3ZGMyM2ZlZDhkZWJhMmZhZmI3MGYzZTYwNmE1OSc7XG4gICAgICBjb25zdCBpbmRleCA9IDA7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY29tbW9uS2V5Y2hhaW4sIGFkZHJlc3MsIGluZGV4IH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpc1dhbGxldEFkZHJlc3Mgd2hlbiBuZXcgYWRkcmVzcyBpcyBpbnZhbGlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd3JvbmdBZGRyZXNzID0gJ2JhZEFkZHJlc3MnO1xuICAgICAgY29uc3QgaW5kZXggPSAwO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzOiB3cm9uZ0FkZHJlc3MsIGluZGV4IH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSwge1xuICAgICAgICBtZXNzYWdlOiBgaW52YWxpZCBhZGRyZXNzOiAke3dyb25nQWRkcmVzc31gLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRyYW5zYWN0aW9uczonLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCBzZW5kZXJBZGRyZXNzMCA9ICcweDkxZjI1ZTIzN2I4M2EwMGE2MjcyNGZkYzRhODFlNDNmNDk0ZGM2YjQxYTEyNDE0OTI4MjZkMzZlNGQxMzFkYTMnO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JztcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3AkU3c8Ump2QWdme25ZQVlJMnhNJztcbiAgICBsZXQgZ2V0QmFsYW5jZVN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0SW5wdXRDb2luc1N0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0RmVlRXN0aW1hdGVTdHViOiBzaW5vbi5TaW5vblN0dWI7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGdldEJhbGFuY2VTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRCYWxhbmNlJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKHNlbmRlckFkZHJlc3MwKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxOTAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxOTAwMDAwMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG5cbiAgICAgIGdldElucHV0Q29pbnNTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRJbnB1dENvaW5zJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczApLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweGMwNWM3NjVlMjZlNmFlODRjNzhmYTI0NWYzOGEyM2ZiMjA0MDZhNWNmM2Y2MWI1N2JkMzIzYTBkZjlkOTgwMDMnLFxuICAgICAgICAgIHZlcnNpb246ICcxOTUnLFxuICAgICAgICAgIGRpZ2VzdDogJzdCSkxiMzJMS043d3Q1dXY0eGdYVzRBYkZLb01OY1BFNzZvNDFUUUV2VVpiJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxOTAwMDAwMDAwJyksXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgZ2V0RmVlRXN0aW1hdGVTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRGZWVFc3RpbWF0ZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGdldEZlZUVzdGltYXRlU3R1YlxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQUNBQWdBMGtsckFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0NBZ0FCQVFBQUFRRUNBQUFCQVFDUjhsNGplNE9nQ21KeVQ5eEtnZVEvU1UzR3RCb1NRVWtvSnROdVRSTWRvd0hBWEhaZUp1YXVoTWVQb2tYemlpUDdJRUJxWFBQMkcxZTlNam9OK2RtQUE4TUFBQUFBQUFBQUlGdkppSkJkRUFoaTE0Y3hjU3IvSFVJaEJaTWJMTWQ0cmN6VVRDTUliM1Vta2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhUG9Bd0FBQUFBQUFBRGg5UVVBQUFBQUFBPT0nXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoMTk5Nzg4MCkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIH0pO1xuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3RyYW5zYWN0aW9ucycpO1xuICAgICAgY29uc3QgdHggPSByZXMudHJhbnNhY3Rpb25zWzBdO1xuICAgICAgdHguc2NhbkluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHR4LnJlY292ZXJ5QW1vdW50LnNob3VsZC5lcXVhbCgnMTg5NzgwMjMzMicpO1xuICAgICAgdHguc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0FBQUNBQWhjS2g1eEFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0NBZ0FCQVFBQUFRRUNBQUFCQVFDUjhsNGplNE9nQ21KeVQ5eEtnZVEvU1UzR3RCb1NRVWtvSnROdVRSTWRvd0hBWEhaZUp1YXVoTWVQb2tYemlpUDdJRUJxWFBQMkcxZTlNam9OK2RtQUE4TUFBQUFBQUFBQUlGdkppSkJkRUFoaTE0Y3hjU3IvSFVJaEJaTWJMTWQ0cmN6VVRDTUliM1Vta2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhUG9Bd0FBQUFBQUFLU0lJUUFBQUFBQUFBPT0nXG4gICAgICApO1xuXG4gICAgICBjb25zdCBOb25CaXRHb1R4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24oYmFzZWNvaW4pO1xuICAgICAgTm9uQml0R29UeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24odHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IE5vbkJpdEdvVHhuSnNvbiA9IE5vbkJpdEdvVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24uaWQsICdGRENCVU5xTFVBVzRxQlRuRmpUQ1BaYXpMOFZuUkJQMmdTM0dtRW53dEVjZycpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5zZW5kZXIsIHNlbmRlckFkZHJlc3MwKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRCYWxhbmNlLCAxKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRJbnB1dENvaW5zLCAxKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRGZWVFc3RpbWF0ZSwgMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIHVuc2lnbmVkIHN3ZWVwIHJlY292ZXJ5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgfSk7XG5cbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHhSZXF1ZXN0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAyMDAwODVjMmExZTcxMDAwMDAwMDAwMDIwMDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OTAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMDkxZjI1ZTIzN2I4M2EwMGE2MjcyNGZkYzRhODFlNDNmNDk0ZGM2YjQxYTEyNDE0OTI4MjZkMzZlNGQxMzFkYTMwMWMwNWM3NjVlMjZlNmFlODRjNzhmYTI0NWYzOGEyM2ZiMjA0MDZhNWNmM2Y2MWI1N2JkMzIzYTBkZjlkOTgwMDNjMzAwMDAwMDAwMDAwMDAwMjA1YmM5ODg5MDVkMTAwODYyZDc4NzMxNzEyYWZmMWQ0MjIxMDU5MzFiMmNjNzc4YWRjY2Q0NGMyMzA4NmY3NTI2OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhM2U4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICc4NzM3NDhhMzFlNzY2ZjVmOGYwMDc3ZDhkMDAwMzU0OGZhZTRmNGMxMzQ0MDY3YTdjMzc5OWNmYTczODA4ZmI3JyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDkxZjI1ZTIzN2I4M2EwMGE2MjcyNGZkYzRhODFlNDNmNDk0ZGM2YjQxYTEyNDE0OTI4MjZkMzZlNGQxMzFkYTMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxODk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKDE4OTc4MDIzMzIpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTg5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTg5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdUcmFuc2ZlcicsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZmVlSW5mbzogeyBmZWU6IDIxOTc2NjgsIGZlZVN0cmluZzogJzIxOTc2NjgnIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJzNiODllZWM5ZDJkMmYzYjA0OWVjZGEyZTdiNWY0NzgyN2Y3OTI3ZmU2NjE4ZDZlOGIxM2Y2NGU3Yzk1ZjRiMDBiOTU3N2FiMDEzOTVlY2Y4ZWViODA0YjU5MGNlZGFlMTRmZjVmZDM5NDdiZjNiN2E5NWI5MzI3YzQ5ZTI3YzU0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGJhc2Vjb2luKTtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRUeEhleCA9IHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNlcmlhbGl6ZWRUeDtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRUeEJhc2U2NCA9IEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWRUeEhleCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oc2VyaWFsaXplZFR4QmFzZTY0KTtcbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5Kc29uID0gdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLmlkLCAnRkRDQlVOcUxVQVc0cUJUbkZqVENQWmF6TDhWblJCUDJnUzNHbUVud3RFY2cnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuSnNvbi5zZW5kZXIsIHNlbmRlckFkZHJlc3MwKTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4biBmb3IgdW5zaWduZWQgc3dlZXAgcmVjb3Zlcnkgd2l0aCBtdWx0aXBsZSBpbnB1dCBjb2lucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JztcbiAgICAgIGdldEJhbGFuY2VTdHViXG4gICAgICAgIC53aXRoQXJncyhzZW5kZXJBZGRyZXNzKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxNzk4MDAyMTIwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxNzk4MDAyMTIwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhzZW5kZXJBZGRyZXNzKS5yZXNvbHZlcyhbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg2MGFlZmFmZmEzNWRhYTMyYTFlNTYxZjJiYTljMTg3NTMwNTdkMmZlYjUwMmYzMjgwNGU1NzNlYTI4NzVhMzljJyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMTk1JyxcbiAgICAgICAgICBkaWdlc3Q6ICdqS2pkdXk4Z0hERTI0NFpKV2NQM0pYZlhQS2pxWTY3YXZNcWh6SHc5OENMJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCc5ODAwMjEyMCcpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4OWEzNjNjOTFkMjliNTA4MzJhYjk4MDk0YjZjMTkzMzk0MTI4MGZjMjk4YTJlYzIzMjczOWYxNGNlMzFlMjU4MicsXG4gICAgICAgICAgdmVyc2lvbjogJzE5NycsXG4gICAgICAgICAgZGlnZXN0OiAnRUxuYmdtVzdjclBZcjNCOXBXVnFmZzl1TGVKdDQzS1BvZmtmZFI2TFdmdHUnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzE3MDAwMDAwMDAnKSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgICAgZ2V0RmVlRXN0aW1hdGVTdHViXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBQ0FBaklkRFZsQUFBQUFBQWdNdGpsZnViWkhsVlkyZ1ozRlV3dkNGZVZOSTR4ZjVXc3llK3Q0YlFSTDh3Q0FnQUJBUUFBQVFFQ0FBQUJBUUFBNU9xbW9wSCtBcEdFVXVaRnRXVTgwbUNsL0ErelgyR1QxWUNSYXFuamlRS2FOanlSMHB0UWd5cTVnSlMyd1pNNVFTZ1B3cGlpN0NNbk9mRk00eDRsZ3NVQUFBQUFBQUFBSU1ZNWhmVUZ6dU1WYVkzK0x3bVpUdnlwUlNBSlJMTlhvY1JZUjl5S2FsWHlZSzc2LzZOZHFqS2g1V0h5dXB3WWRUQlgwdjYxQXZNb0JPVno2aWgxbzV6REFBQUFBQUFBQUNBSzE1UHRPNmd3U054MGJIa3NWSk9jTjk2QVl5YyszWVZwSnphWU1NaEhiUURrNnFhaWtmNENrWVJTNWtXMVpUelNZS1g4RDdOZllaUFZnSkZxcWVPSjZBTUFBQUFBQUFBQTRmVUZBQUFBQUFBPSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcigxOTk3ODgwKSk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6XG4gICAgICAgICAgJzdkOTFmNjljMjg1YzBiM2IwYTBkNjM3MTAyMGYxOTRkNDU5NTZlZTU1NjI4OWU3ODU0ZjZkMTE0ZTA3ODA1NzIwZWVjNjczYzZhMlxcbjcyYjdkYTQxMzdkYjdiMTI4OWYzOGFmNGY0YjgyNGVmMGRlNjVjNWY1M2UzZTY2NjE3NjE3JyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJzB4MzJkOGU1N2VlNmQ5MWU1NTU4ZGEwNjc3MTU0YzJmMDg1Nzk1MzQ4ZTMxN2Y5NWFjYzllZmFkZTFiNDExMmZjYycsXG4gICAgICB9KTtcblxuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0eFJlcXVlc3RzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICcwMDAwMDIwMDA4MjRjZDA5NmIwMDAwMDAwMDAwMjAzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjMDIwMjAwMDEwMTAwMDAwMTAxMDIwMDAwMDEwMTAwMDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OTAyOWEzNjNjOTFkMjliNTA4MzJhYjk4MDk0YjZjMTkzMzk0MTI4MGZjMjk4YTJlYzIzMjczOWYxNGNlMzFlMjU4MmM1MDAwMDAwMDAwMDAwMDAyMGM2Mzk4NWY1MDVjZWUzMTU2OThkZmUyZjA5OTk0ZWZjYTk0NTIwMDk0NGIzNTdhMWM0NTg0N2RjOGE2YTU1ZjI2MGFlZmFmZmEzNWRhYTMyYTFlNTYxZjJiYTljMTg3NTMwNTdkMmZlYjUwMmYzMjgwNGU1NzNlYTI4NzVhMzljYzMwMDAwMDAwMDAwMDAwMDIwMGFkNzkzZWQzYmE4MzA0OGRjNzQ2Yzc5MmM1NDkzOWMzN2RlODA2MzI3M2VkZDg1NjkyNzM2OTgzMGM4NDc2ZDAwZTRlYWE2YTI5MWZlMDI5MTg0NTJlNjQ1YjU2NTNjZDI2MGE1ZmMwZmIzNWY2MTkzZDU4MDkxNmFhOWUzODllODAzMDAwMDAwMDAwMDAwYTQ4ODIxMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMCxcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnM2VlYzM5NWNjYWVlN2Q2YTBiOWZhNTQ4OGRkMDBiZmViODlkYzRiZDM3ZTMxMzllYmViYjYyYzJlNjBiYzAwZCcsXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMCcsXG4gICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTc5NTgwNDQ1MicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcigxNzk1ODA0NDUyKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MzJkOGU1N2VlNmQ5MWU1NTU4ZGEwNjc3MTU0YzJmMDg1Nzk1MzQ4ZTMxN2Y5NWFjYzllZmFkZTFiNDExMmZjYycsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE3OTU4MDQ0NTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzE3OTU4MDQ0NTInLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHsgZmVlOiAyMTk3NjY4LCBmZWVTdHJpbmc6ICcyMTk3NjY4JyB9LFxuICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgICAgICAgICAgICc3ZDkxZjY5YzI4NWMwYjNiMGEwZDYzNzEwMjBmMTk0ZDQ1OTU2ZWU1NTYyODllNzg1NGY2ZDExNGUwNzgwNTcyMGVlYzY3M2M2YTI3MmI3ZGE0MTM3ZGI3YjEyODlmMzhhZjRmNGI4MjRlZjBkZTY1YzVmNTNlM2U2NjYxNzYxNycsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB1bnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbihiYXNlY29pbik7XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHhIZXggPSByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHg7XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHhCYXNlNjQgPSBCdWZmZXIuZnJvbShzZXJpYWxpemVkVHhIZXgsICdoZXgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICB1bnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHNlcmlhbGl6ZWRUeEJhc2U2NCk7XG4gICAgICBjb25zdCB1bnNpZ25lZFN3ZWVwVHhuSnNvbiA9IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuSnNvbi5pZCwgJzdKeXgzS1VWWHhzMVEyaTFScVh0ajRoRmdVZ0JvbjZQVVFBb3ZMODRZM2VQJyk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24uc2VuZGVyLCBzZW5kZXJBZGRyZXNzKTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdNUEN2MiBzaWduZWQgcmVjb3ZlcnknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3Rlc3QtcGFzc3BocmFzZS1tcGN2Mic7XG5cbiAgICAgIGxldCBtcGNWMlVzZXJLZXk6IHN0cmluZztcbiAgICAgIGxldCBtcGNWMkJhY2t1cEtleTogc3RyaW5nO1xuICAgICAgbGV0IG1wY1YyQ29tbW9uS2V5Q2hhaW46IHN0cmluZztcbiAgICAgIGxldCBtcGNWMldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICAgIGxldCBtcGNWMlJlY292ZXJQYXJhbXM6IE1QQ1JlY292ZXJ5T3B0aW9ucztcblxuICAgICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgICAgbXBjVjJDb21tb25LZXlDaGFpbiA9IHVzZXJEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgICAgbXBjVjJVc2VyS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCB1c2VyRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICAgIG1wY1YyQmFja3VwS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcblxuICAgICAgICBjb25zdCBtcGMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgICBjb25zdCBhY2NvdW50SWQgPSBtcGMuZGVyaXZlVW5oYXJkZW5lZChtcGNWMkNvbW1vbktleUNoYWluLCAnbS8wJykuc2xpY2UoMCwgNjQpO1xuICAgICAgICBtcGNWMldhbGxldEFkZHJlc3MgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShhY2NvdW50SWQpO1xuXG4gICAgICAgIG1wY1YyUmVjb3ZlclBhcmFtcyA9IHtcbiAgICAgICAgICB1c2VyS2V5OiBtcGNWMlVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBhIGRlZmF1bHQgYmFsYW5jZSBmb3IgYW55IGRlcml2ZWQgYWRkcmVzcyAoZS5nLiB3aGVuIHRoZSB0ZXN0XG4gICAgICAgIC8vIGNvcnJ1cHRzIGJpdGdvS2V5LCB0aGUgZGVyaXZlZCBzZW5kZXIgYWRkcmVzcyB3b24ndCBtYXRjaCBtcGNWMldhbGxldEFkZHJlc3MpLlxuICAgICAgICBnZXRCYWxhbmNlU3R1Yi5yZXNvbHZlcyh7XG4gICAgICAgICAgdG90YWxCYWxhbmNlOiAnMTkwMDAwMDAwMCcsXG4gICAgICAgICAgY29pbk9iamVjdEJhbGFuY2U6ICcxOTAwMDAwMDAwJyxcbiAgICAgICAgICBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGdldElucHV0Q29pbnNTdHViLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweGMwNWM3NjVlMjZlNmFlODRjNzhmYTI0NWYzOGEyM2ZiMjA0MDZhNWNmM2Y2MWI1N2JkMzIzYTBkZjlkOTgwMDMnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzE5NScsXG4gICAgICAgICAgICBkaWdlc3Q6ICc3QkpMYjMyTEtON3d0NXV2NHhnWFc0QWJGS29NTmNQRTc2bzQxVFFFdlVaYicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxOTAwMDAwMDAwJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGdldEZlZUVzdGltYXRlU3R1Yi5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKDE5OTc4ODApKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gdXNpbmcgTVBDdjIgc2lnbmluZyBtYXRlcmlhbCB3aXRob3V0IGNhbGxpbmcgZ2V0VFNTU2lnbmF0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlcihtcGNWMlJlY292ZXJQYXJhbXMpKSBhcyBNUENUeHM7XG5cbiAgICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnNjYW5JbmRleCwgMCk7XG4gICAgICAgICh0eC5zZXJpYWxpemVkVHggYXMgc3RyaW5nKS5zaG91bGQuYmUuYS5TdHJpbmcoKS5hbmQubm90LmJlLmVtcHR5KCk7XG4gICAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZFdpdGgoZ2V0QmFsYW5jZVN0dWIsIG1wY1YyV2FsbGV0QWRkcmVzcyk7XG4gICAgICAgIHNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuXG4gICAgICAgIC8vIFRoZSBTVUkgc2lnbmF0dXJlIGVudmVsb3BlIGlzIDEgKGZsYWcpICsgNjQgKHNpZ25hdHVyZSkgKyAzMiAocHVia2V5KSBieXRlcy5cbiAgICAgICAgY29uc3Qgc2lnbmVkVHggPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbihiYXNlY29pbik7XG4gICAgICAgIHNpZ25lZFR4LmZyb21SYXdUcmFuc2FjdGlvbih0eC5zZXJpYWxpemVkVHggYXMgc3RyaW5nKTtcbiAgICAgICAgQnVmZmVyLmZyb20odHguc2lnbmF0dXJlIGFzIHN0cmluZywgJ2Jhc2U2NCcpLmxlbmd0aC5zaG91bGQuZXF1YWwoOTcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdXNlIHRoZSBNUEN2MSBwYXRoIHdoZW4gc2lnbmluZyBtYXRlcmlhbCBpcyBNUEN2MSBmb3JtYXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldEVkZHNhU2lnbmluZ01hdGVyaWFsU3R1YiA9IHNhbmRCb3guc3R1YihcbiAgICAgICAgICBTdWkucHJvdG90eXBlIGFzIHVua25vd24gYXMgeyBnZXRFZGRzYVNpZ25pbmdNYXRlcmlhbDogdW5rbm93biB9LFxuICAgICAgICAgICdnZXRFZGRzYVNpZ25pbmdNYXRlcmlhbCdcbiAgICAgICAgKTtcbiAgICAgICAgZ2V0RWRkc2FTaWduaW5nTWF0ZXJpYWxTdHViLnJlc29sdmVzKHtcbiAgICAgICAgICB2ZXJzaW9uOiAndjEnLFxuICAgICAgICAgIHVzZXJQcnY6IEpTT04uc3RyaW5naWZ5KHsgZHVtbXk6ICd1c2VyU2lnbmluZ01hdGVyaWFsJyB9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIHNhbmRCb3guc3R1YihiaXRnbywgJ2RlY3J5cHQnKS5yZXNvbHZlcyhKU09OLnN0cmluZ2lmeSh7IGR1bW15OiAnYmFja3VwU2lnbmluZ01hdGVyaWFsJyB9KSk7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVN0dWIgPSBzYW5kQm94XG4gICAgICAgICAgLnN0dWIoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJylcbiAgICAgICAgICAucmVzb2x2ZXMoXG4gICAgICAgICAgICBCdWZmZXIuZnJvbShcbiAgICAgICAgICAgICAgJzFiYWFmYTBkNjIxNzRiZjBjNzhmMzI1NjMxODYxM2ZmYzQ0YjZkZDU0YWIxYTYzYzIxODUyMzJmOTJlZGU5ZGEnICtcbiAgICAgICAgICAgICAgICAnZTFiMjgxOGRiZWI1MmE4MjE1ZmQ1NmY1YTVmMmE5Zjk0YzA3OWNlODllNGRjM2IxY2U2ZWQ2ZTg0Y2U3MTg1NycsXG4gICAgICAgICAgICAgICdoZXgnXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlcihtcGNWMlJlY292ZXJQYXJhbXMpKSBhcyBNUENUeHM7XG5cbiAgICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgY29uc3QgdHggPSByZXMudHJhbnNhY3Rpb25zWzBdO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguc2NhbkluZGV4LCAwKTtcbiAgICAgICAgKHR4LnNlcmlhbGl6ZWRUeCBhcyBzdHJpbmcpLnNob3VsZC5iZS5hLlN0cmluZygpLmFuZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTdHViKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gY29tbW9uS2V5Q2hhaW4gZnJvbSBNUEN2MiBrZXljYXJkIGRvZXMgbm90IG1hdGNoIGJpdGdvS2V5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBtaXNtYXRjaGVkQml0Z29LZXkgPSBtcGNWMkNvbW1vbktleUNoYWluLnNsaWNlKDAsIC04KSArICcwMDAwMDAwMCc7XG4gICAgICAgIGNvbnN0IG1pc21hdGNoZWRQYXJhbXMgPSB7XG4gICAgICAgICAgLi4ubXBjVjJSZWNvdmVyUGFyYW1zLFxuICAgICAgICAgIGJpdGdvS2V5OiBtaXNtYXRjaGVkQml0Z29LZXksXG4gICAgICAgIH07XG5cbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAucmVjb3ZlcihtaXNtYXRjaGVkUGFyYW1zKVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdFZERTQSBNUEN2MiByZWNvdmVyeTogY29tbW9uS2V5Q2hhaW4gZnJvbSBrZXljYXJkIGRvZXMgbm90IG1hdGNoIGJpdGdvS2V5Jyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBwcm9kdWNlIGEgY3J5cHRvZ3JhcGhpY2FsbHkgdmFsaWQgRWQyNTUxOSBzaWduYXR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNpZ25SZWNvdmVyeVNweSA9IHNhbmRCb3guc3B5KFxuICAgICAgICAgIGJhc2Vjb2luIGFzIHVua25vd24gYXMgeyBzaWduU3VpTXBjVjJSZWNvdmVyeTogdW5rbm93biB9LFxuICAgICAgICAgICdzaWduU3VpTXBjVjJSZWNvdmVyeSdcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlcihtcGNWMlJlY292ZXJQYXJhbXMpKSBhcyBNUENUeHM7XG4gICAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcblxuICAgICAgICAvLyBTVUkgZW52ZWxvcGU6IDB4MDAgZmxhZyAoMSkgKyByYXcgRWQyNTUxOSBzaWcgKDY0KSArIHB1YmtleSAoMzIpID0gOTcgYnl0ZXMuXG4gICAgICAgIGNvbnN0IGVudmVsb3BlID0gQnVmZmVyLmZyb20odHguc2lnbmF0dXJlIGFzIHN0cmluZywgJ2Jhc2U2NCcpO1xuICAgICAgICBlbnZlbG9wZS5sZW5ndGguc2hvdWxkLmVxdWFsKDk3KTtcbiAgICAgICAgY29uc3QgcmF3U2lnID0gZW52ZWxvcGUuc2xpY2UoMSwgNjUpO1xuXG4gICAgICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZDogQnVmZmVyID0gKHNpZ25SZWNvdmVyeVNweS5maXJzdENhbGwuYXJnc1swXSBhcyB7IG1lc3NhZ2U6IEJ1ZmZlciB9KS5tZXNzYWdlO1xuXG4gICAgICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCk7XG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IG5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkoXG4gICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoc2lnbmFibGVQYXlsb2FkKSxcbiAgICAgICAgICBuZXcgVWludDhBcnJheShyYXdTaWcpLFxuICAgICAgICAgIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKGFjY291bnRJZCwgJ2hleCcpKVxuICAgICAgICApO1xuICAgICAgICBpc1ZhbGlkLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBtaXNzaW5nIHVzZXJLZXkgd2hlbiBiYWNrdXBLZXkgYW5kIHdhbGxldFBhc3NwaHJhc2UgYXJlIHByZXNlbnQgYnV0IHVzZXJLZXkgaXMgbm90JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHsgLi4ubXBjVjJSZWNvdmVyUGFyYW1zLCB1c2VyS2V5OiB1bmRlZmluZWQgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyB1c2VyS2V5Jyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBtaXNzaW5nIGJhY2t1cEtleSB3aGVuIHVzZXJLZXkgYW5kIHdhbGxldFBhc3NwaHJhc2UgYXJlIHByZXNlbnQgYnV0IGJhY2t1cEtleSBpcyBub3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnJlY292ZXIoeyAuLi5tcGNWMlJlY292ZXJQYXJhbXMsIGJhY2t1cEtleTogdW5kZWZpbmVkIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5zaWduZWQgc3dlZXAgd2hlbiB3YWxsZXRQYXNzcGhyYXNlIGlzIGFic2VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7IC4uLm1wY1YyUmVjb3ZlclBhcmFtcywgd2FsbGV0UGFzc3BocmFzZTogdW5kZWZpbmVkIH0pO1xuICAgICAgICAocmVzIGFzIGFueSkudHhSZXF1ZXN0cy5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRva2VuIFRyYW5zYWN0aW9uczonLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCBjb2luVHlwZSA9ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnO1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MwID0gJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMyc7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQgPSAnMHgwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxJztcbiAgICBjb25zdCByZWNvdmVyeURlc3RpbmF0aW9uID0gJzB4MDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OSc7XG4gICAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdwJFN3PFJqdkFnZntuWUFZSTJ4TSc7XG4gICAgY29uc3QgdG9rZW5Db250cmFjdEFkZHJlc3MgPSAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4JztcbiAgICBsZXQgZ2V0QmFsYW5jZVN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0SW5wdXRDb2luc1N0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0RmVlRXN0aW1hdGVTdHViOiBzaW5vbi5TaW5vblN0dWI7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGdldEJhbGFuY2VTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRCYWxhbmNlJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldElucHV0Q29pbnMnIGFzIGtleW9mIFN1aSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWIgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEZlZUVzdGltYXRlJyBhcyBrZXlvZiBTdWkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdG9rZW4gdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczApXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzE5MDAwMDAwMDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzE5MDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczAsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhzZW5kZXJBZGRyZXNzMCwgY29pblR5cGUpLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4OjpkZWVwOjpERUVQJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4OTI0YWI2OWViYmEzMDRmMjk3NWE1ODgzNzJiNDFlNGUxZjVkYjdmYTgyNDg2OGY4NDE5OWVlYjFlMGExNWEyZCcsXG4gICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODA3JyxcbiAgICAgICAgICBkaWdlc3Q6ICc3WFJiV1FUaXdBVUNqTExzWlZwSk1yQUJDaGVKQmt6S1ZmQ3I3YVRaWlZrZCcsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcigxMDAwKSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczApLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweDkxNDY5MjhmNTU3Y2I4YWIxOTE1YTU4ODZjMTM2MjQzNWEwNWI0NzA5YjU4NmJiMDFkNGM3MGU4NWJiNTMxNjEnLFxuICAgICAgICAgIHZlcnNpb246ICcyMzknLFxuICAgICAgICAgIGRpZ2VzdDogJ0dMU3pSNkhKMzE5blBLQUZtNXgzVFdIY2FIWnpDRlNCQ3FodloxcXdUNXdyJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMjMwMjYxMDc2JyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg5M2Y3MDBkYzgyZTIyOWY2OTlmNDdiMTY3ODU5YzUxMDgyODhiNzhmNTQwNjg4MDBjYzI5MDkwMGQwZGU4NDI5JyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMTQ5JyxcbiAgICAgICAgICBkaWdlc3Q6ICcyd1hEeHQyWnhla0J4TjZvVzNCcVZEWFpjWDQ5Qzg3bjFBTjI2Tnl1N2tQUicsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTY5NjExMDI0JyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHhiODY5YjQ1NzQ0Y2EyYzRhNjYzYzZlODY3OWRiNWE2MzJiZWFkMDM2NDI3Mzg0MmQzOTkwZDdmZjY1ZDU3YjFlJyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMjM3JyxcbiAgICAgICAgICBkaWdlc3Q6ICdGMXhXS1BWSFY1V0w3MkVyamdReHJqbjNSTkgyR0hqeU45alRnd1c3UXBoaycsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTAxOTc2JyksXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICAgIGdldEZlZUVzdGltYXRlU3R1YlxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQURBUUNTU3JhZXU2TUU4cGRhV0lOeXRCNU9IMTIzK29KSWFQaEJtZTZ4NEtGYUxXZHVFUUlBQUFBQUlHRHhXdjA3dXF2MGhFWmlPRzBGQy94RzgzMFdCbVJEWkxPTG1NcDYxZ2RTQUFqb0F3QUFBQUFBQUFBZ0FPVHFwcUtSL2dLUmhGTG1SYlZsUE5KZ3Bmd1BzMTloazlXQWtXcXA0NGtDQWdFQUFBRUJBUUFCQVFJQUFBRUNBSkh5WGlON2c2QUtZbkpQM0VxQjVEOUpUY2EwR2hKQlNTZ20wMjVORXgyakFaRkdrbzlWZkxpckdSV2xpR3dUWWtOYUJiUndtMWhyc0IxTWNPaGJ0VEZoN3dBQUFBQUFBQUFnNDlxNTVlSkdHTTV4dG9KelkyMzNVbkwyZGoxS2I1TjkwWXhaNzBRb3BXMlI4bDRqZTRPZ0NtSnlUOXhLZ2VRL1NVM0d0Qm9TUVVrb0p0TnVUUk1kbytnREFBQUFBQUFBQU9IMUJRQUFBQUFBJ1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKDIzNDU1MDQpKTtcblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgfSk7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgICBjb25zdCB0eCA9IHJlcy50cmFuc2FjdGlvbnNbMF07XG4gICAgICB0eC5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDApO1xuICAgICAgdHgucmVjb3ZlcnlBbW91bnQuc2hvdWxkLmVxdWFsKCcxMDAwJyk7XG4gICAgICB0eC5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQUFBREFRQ1NTcmFldTZNRThwZGFXSU55dEI1T0gxMjMrb0pJYVBoQm1lNng0S0ZhTFdkdUVRSUFBQUFBSUdEeFd2MDd1cXYwaEVaaU9HMEZDL3hHODMwV0JtUkRaTE9MbU1wNjFnZFNBQWpvQXdBQUFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0NBZ0VBQUFFQkFRQUJBUUlBQUFFQ0FKSHlYaU43ZzZBS1luSlAzRXFCNUQ5SlRjYTBHaEpCU1NnbTAyNU5FeDJqQVpGR2tvOVZmTGlyR1JXbGlHd1RZa05hQmJSd20xaHJzQjFNY09oYnRURmg3d0FBQUFBQUFBQWc0OXE1NWVKR0dNNXh0b0p6WTIzM1VuTDJkajFLYjVOOTBZeFo3MFFvcFcyUjhsNGplNE9nQ21KeVQ5eEtnZVEvU1UzR3RCb1NRVWtvSnROdVRSTWRvK2dEQUFBQUFBQUFWbDRuQUFBQUFBQUEnXG4gICAgICApO1xuXG4gICAgICBjb25zdCBOb25CaXRHb1R4bkRlc2VyaWFsaXplID0gbmV3IFRva2VuVHJhbnNmZXJUcmFuc2FjdGlvbihiYXNlY29pbik7XG4gICAgICBOb25CaXRHb1R4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbih0eC5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgTm9uQml0R29UeG5Kc29uID0gTm9uQml0R29UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5pZCwgJ0RZVzltQThBWkdRbnRrN0hHUVVFb0VkeThCYUg4SGg5VHMyOTRFbnFHVEVyJyk7XG4gICAgICBzaG91bGQuZXF1YWwoTm9uQml0R29UeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzczApO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDMpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDIpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHRva2VuIHR4biBmb3IgdW5zaWduZWQgc3dlZXAgcmVjb3ZlcnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzI5ODk4MDI0MCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMjk4OTgwMjQwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG5cbiAgICAgIGdldElucHV0Q29pbnNTdHViLndpdGhBcmdzKHNlbmRlckFkZHJlc3NDb2xkV2FsbGV0LCBjb2luVHlwZSkucmVzb2x2ZXMoW1xuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg0YzFjY2NjNmQwMzUxMGJkNzRhOTVmODFiMmI3ZGEwODExOWNiMThlMmM1NjU0MzVlN2FkNzE1ZTZhYWRjNWE3JyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4MDknLFxuICAgICAgICAgIGRpZ2VzdDogJ0FmeTRMVzQ2dHVjemozNDFUYkNMZWV5bnhydXBqOUx3MnFCUVVwbmRIYzFjJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKDEwMDApLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhzZW5kZXJBZGRyZXNzQ29sZFdhbGxldCkucmVzb2x2ZXMoW1xuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4OTgxMTRmMmRkZWZlM2YxNmQ5ZDJlMDE2MTk0YjUyYzRjM2FmNDMwYzE2MDFiZGIzNTM5Y2JkMjM3Y2JjYTA2OCcsXG4gICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODA5JyxcbiAgICAgICAgICBkaWdlc3Q6ICdEQnRvcXZXdHJjWUhFMUhqUVVvNGlnVGtIWXhZN0Q4M2lIU29LWGk5QTg1VycsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcigyMDAwMDAwMDApLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4OWVjMTM0NDA2NDdiMGJlZTc0ZjQ1NDA5NTg5YWQyZmY1YTE4Yzk2MTVmOTlkNWQ5MTRmOTg4YjgzNGRhNDkzZScsXG4gICAgICAgICAgdmVyc2lvbjogJzIzOScsXG4gICAgICAgICAgZGlnZXN0OiAnOWQzdVZzUTRwMzdUR256VHBuWFh3MnBGb2dnYlZmVnA5Q2RDNGpwWnE2NjQnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoOTg5ODAyNDApLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFEQVFCTUhNekcwRFVRdlhTcFg0R3l0OW9JRVp5eGppeFdWRFhuclhGZWFxM0ZwMmx1RVFJQUFBQUFJSSswb3pTNEthemV5L29xTW9aQ3I2Sk5iNVUzUVBkb01JRHVEa3M5T3BZdkFBam9Bd0FBQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQUFGa2xkM2FkSXdSYWlHQ1FvTmROa2NKMXNYdVhJb2Uxb1RFNzBNOU1VUWhBWmdSVHkzZS9qOFcyZExnRmhsTFVzVERyME1NRmdHOXMxT2N2U044dktCb2FXNFJBZ0FBQUFBZ3RSYWhXMUEwdk5Ra0pVUU1Wa3p6YjBPVlF2aUdjZTk1bmQ0R1llZUpvQWtCWkpYZDJuU01FV29oZ2tLRFhUWkhDZGJGN2x5S0h0YUV4TzlEUFRGRUllZ0RBQUFBQUFBQUFPSDFCUUFBQUFBQSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcigyMzQ1NTA0KSk7XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleUNvbGRXYWxsZXQsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgfSk7XG5cbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHhSZXF1ZXN0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAzMDEwMDRjMWNjY2M2ZDAzNTEwYmQ3NGE5NWY4MWIyYjdkYTA4MTE5Y2IxOGUyYzU2NTQzNWU3YWQ3MTVlNmFhZGM1YTc2OTZlMTEwMjAwMDAwMDAwMjA4ZmI0YTMzNGI4MjlhY2RlY2JmYTJhMzI4NjQyYWZhMjRkNmY5NTM3NDBmNzY4MzA4MGVlMGU0YjNkM2E5NjJmMDAwOGU4MDMwMDAwMDAwMDAwMDAwMDIwMDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OTAyMDIwMTAwMDAwMTAxMDEwMDAxMDEwMjAwMDAwMTAyMDAwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxMDE5ODExNGYyZGRlZmUzZjE2ZDlkMmUwMTYxOTRiNTJjNGMzYWY0MzBjMTYwMWJkYjM1MzljYmQyMzdjYmNhMDY4Njk2ZTExMDIwMDAwMDAwMDIwYjUxNmExNWI1MDM0YmNkNDI0MjU0NDBjNTY0Y2YzNmY0Mzk1NDJmODg2NzFlZjc5OWRkZTA2NjFlNzg5YTAwOTAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjFlODAzMDAwMDAwMDAwMDAwNTY1ZTI3MDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMCxcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICdlMzU0N2E1OGI5YzQ4ODQwYTI3NzRhZWI3MWI4NjUyYTcwYjY3ZWU1OWMzZmE1YjFmNzQzNzM4ZDhiMjk1MTk5JyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKDEwMDApLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICcxMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAyNTgwMDU0LFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyNTgwMDU0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJzc5ZDRiOWI1OTRkZjAyOGZlZTM3MjVhNmFmNTFhZTNhYjZhMzUxOWU5ZDJjMzIyZjJjOGZkODE1Yjk2NDk2MzIzYzVhYmE3ZWE4NzRjMTAyZjk2NmYxYTYxZDNjOWE0MmI1ZjMxNzdjNmE4NTcxMmNmMzEzNzE1YWZkZGY4M2Q4JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24oYmFzZWNvaW4pO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4SGV4ID0gcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4O1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4QmFzZTY0ID0gQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4SGV4LCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbihzZXJpYWxpemVkVHhCYXNlNjQpO1xuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkpzb24gPSB1bnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICdGOHdyVWpaWWY2eHZEVzJMelc5RG9oQUt5SkZjV2dHRXZqTW9LTHhDYWptVicpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQpO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdG9rZW4gdHhuIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyeSB3aXRoIG11bHRpcGxlIGlucHV0IGNvaW5zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKHNlbmRlckFkZHJlc3NDb2xkV2FsbGV0KVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcyOTg5ODAyNDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzI5ODk4MDI0MCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pO1xuICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKHNlbmRlckFkZHJlc3NDb2xkV2FsbGV0LCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTEwMDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzExMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhzZW5kZXJBZGRyZXNzQ29sZFdhbGxldCwgY29pblR5cGUpLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4OjpkZWVwOjpERUVQJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4NGMxY2NjYzZkMDM1MTBiZDc0YTk1ZjgxYjJiN2RhMDgxMTljYjE4ZTJjNTY1NDM1ZTdhZDcxNWU2YWFkYzVhNycsXG4gICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODA5JyxcbiAgICAgICAgICBkaWdlc3Q6ICdBZnk0TFc0NnR1Y3pqMzQxVGJDTGVleW54cnVwajlMdzJxQlFVcG5kSGMxYycsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTAwMCcpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg3MmFkOTkxMzBhYmQzNzkwZGI3YmFjODkwOGQ1MGQzNDEyYTgwMGE4ZmNkMTBjMWNmYmQ2NGI4MjE1NTM3NTU4JyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4NjUnLFxuICAgICAgICAgIGRpZ2VzdDogJ1g4dWFORGtTZllLYTZQQnpKSlVlOVN0UDRuUldSOVJab2EybkpIcXY1bW4nLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEwMDAwJyksXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICAgIGdldElucHV0Q29pbnNTdHViLndpdGhBcmdzKHNlbmRlckFkZHJlc3NDb2xkV2FsbGV0KS5yZXNvbHZlcyhbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg5ODExNGYyZGRlZmUzZjE2ZDlkMmUwMTYxOTRiNTJjNGMzYWY0MzBjMTYwMWJkYjM1MzljYmQyMzdjYmNhMDY4JyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4MDknLFxuICAgICAgICAgIGRpZ2VzdDogJ0RCdG9xdld0cmNZSEUxSGpRVW80aWdUa0hZeFk3RDgzaUhTb0tYaTlBODVXJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcyMDAwMDAwMDAnKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweDllYzEzNDQwNjQ3YjBiZWU3NGY0NTQwOTU4OWFkMmZmNWExOGM5NjE1Zjk5ZDVkOTE0Zjk4OGI4MzRkYTQ5M2UnLFxuICAgICAgICAgIHZlcnNpb246ICcyMzknLFxuICAgICAgICAgIGRpZ2VzdDogJzlkM3VWc1E0cDM3VEduelRwblhYdzJwRm9nZ2JWZlZwOUNkQzRqcFpxNjY0JyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCc5ODk4MDI0MCcpLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFFQVFCeXJaa1RDcjAza050N3JJa0kxUTAwRXFnQXFQelJEQno3MWt1Q0ZWTjFXS0Z1RVFJQUFBQUFJQWU0WFRpMjRiU0Y4VVZaTU5KeWxoQ0FnY3FzMTJaTVNOZlY5SVZ5N2l1OUFRQk1ITXpHMERVUXZYU3BYNEd5dDlvSUVaeXhqaXhXVkRYbnJYRmVhcTNGcDJsdUVRSUFBQUFBSUkrMG96UzRLYXpleS9vcU1vWkNyNkpOYjVVM1FQZG9NSUR1RGtzOU9wWXZBQWo0S2dBQUFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0RBd0VBQUFFQkFRQUNBUUFBQVFFQ0FBRUJBZ0VBQVFNQUFXU1YzZHAwakJGcUlZSkNnMTAyUnduV3hlNWNpaDdXaE1UdlF6MHhSQ0VCbUJGUExkNytQeGJaMHVBV0dVdFN4TU92UXd3V0FiMnpVNXk5STN5OG9HaHBiaEVDQUFBQUFDQzFGcUZiVURTODFDUWxSQXhXVFBOdlE1VkMrSVp4NzNtZDNnWmg1NG1nQ1FGa2xkM2FkSXdSYWlHQ1FvTmROa2NKMXNYdVhJb2Uxb1RFNzBNOU1VUWg2QU1BQUFBQUFBQUE0ZlVGQUFBQUFBQT0nXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoMTAzNjMyOCkpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5Q29sZFdhbGxldCxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3MsXG4gICAgICB9KTtcblxuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0eFJlcXVlc3RzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICcwMDAwMDQwMTAwNzJhZDk5MTMwYWJkMzc5MGRiN2JhYzg5MDhkNTBkMzQxMmE4MDBhOGZjZDEwYzFjZmJkNjRiODIxNTUzNzU1OGExNmUxMTAyMDAwMDAwMDAyMDA3Yjg1ZDM4YjZlMWI0ODVmMTQ1NTkzMGQyNzI5NjEwODA4MWNhYWNkNzY2NGM0OGQ3ZDVmNDg1NzJlZTJiYmQwMTAwNGMxY2NjYzZkMDM1MTBiZDc0YTk1ZjgxYjJiN2RhMDgxMTljYjE4ZTJjNTY1NDM1ZTdhZDcxNWU2YWFkYzVhNzY5NmUxMTAyMDAwMDAwMDAyMDhmYjRhMzM0YjgyOWFjZGVjYmZhMmEzMjg2NDJhZmEyNGQ2Zjk1Mzc0MGY3NjgzMDgwZWUwZTRiM2QzYTk2MmYwMDA4ZjgyYTAwMDAwMDAwMDAwMDAwMjAwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5MDMwMzAxMDAwMDAxMDEwMTAwMDIwMTAwMDAwMTAxMDIwMDAxMDEwMjAxMDAwMTAzMDAwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxMDE5ODExNGYyZGRlZmUzZjE2ZDlkMmUwMTYxOTRiNTJjNGMzYWY0MzBjMTYwMWJkYjM1MzljYmQyMzdjYmNhMDY4Njk2ZTExMDIwMDAwMDAwMDIwYjUxNmExNWI1MDM0YmNkNDI0MjU0NDBjNTY0Y2YzNmY0Mzk1NDJmODg2NzFlZjc5OWRkZTA2NjFlNzg5YTAwOTAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjFlODAzMDAwMDAwMDAwMDAwZjg2NDExMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMCxcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICdjZDAyOGM0MDFmODE1ZGFiN2Y2YzVlOGEzMzk3Njg3OWM1Yzc5OWFlN2M5ZmRlMDFjYWZkMGFlZTAwNzVhMTc0JyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMTAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcignMTEwMDAnKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OScsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzExMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzExMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAxMTM5OTYwLFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcxMTM5OTYwJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJzc5ZDRiOWI1OTRkZjAyOGZlZTM3MjVhNmFmNTFhZTNhYjZhMzUxOWU5ZDJjMzIyZjJjOGZkODE1Yjk2NDk2MzIzYzVhYmE3ZWE4NzRjMTAyZjk2NmYxYTYxZDNjOWE0MmI1ZjMxNzdjNmE4NTcxMmNmMzEzNzE1YWZkZGY4M2Q4JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24oYmFzZWNvaW4pO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4SGV4ID0gcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4O1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4QmFzZTY0ID0gQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4SGV4LCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbihzZXJpYWxpemVkVHhCYXNlNjQpO1xuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkpzb24gPSB1bnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICc0cWVYSlA3cFRhNnBteUFLdUpaRzlBa0dzS001M1NEcUhWY1BqUk1GSGpjNScpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQpO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDEpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ01QQ3YyIHNpZ25lZCByZWNvdmVyeScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1wY1YyV2FsbGV0UGFzc3BocmFzZSA9ICd0ZXN0LXBhc3NwaHJhc2UtbXBjdjItdG9rZW4nO1xuXG4gICAgICBsZXQgbXBjVjJVc2VyS2V5OiBzdHJpbmc7XG4gICAgICBsZXQgbXBjVjJCYWNrdXBLZXk6IHN0cmluZztcbiAgICAgIGxldCBtcGNWMkNvbW1vbktleUNoYWluOiBzdHJpbmc7XG4gICAgICBsZXQgbXBjVjJXYWxsZXRBZGRyZXNzOiBzdHJpbmc7XG5cbiAgICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IFt1c2VyRGtnLCBiYWNrdXBEa2ddID0gYXdhaXQgTVBTVXRpbC5nZW5lcmF0ZUVkRHNhREtHS2V5U2hhcmVzKCk7XG4gICAgICAgIG1wY1YyQ29tbW9uS2V5Q2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgICAgIG1wY1YyVXNlcktleSA9IGF3YWl0IGVuY3J5cHQobXBjVjJXYWxsZXRQYXNzcGhyYXNlLCB1c2VyRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICAgIG1wY1YyQmFja3VwS2V5ID0gYXdhaXQgZW5jcnlwdChtcGNWMldhbGxldFBhc3NwaHJhc2UsIGJhY2t1cERrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKS50b1N0cmluZygnYmFzZTY0JykpO1xuXG4gICAgICAgIGNvbnN0IG1wYyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCk7XG4gICAgICAgIG1wY1YyV2FsbGV0QWRkcmVzcyA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGFjY291bnRJZCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdG9rZW4gdHhuIHVzaW5nIE1QQ3YyIHNpZ25pbmcgbWF0ZXJpYWwgd2l0aG91dCBjYWxsaW5nIGdldFRTU1NpZ25hdHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgICAud2l0aEFyZ3MobXBjVjJXYWxsZXRBZGRyZXNzKVxuICAgICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzE5MDAwMDAwMDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzE5MDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAgIC53aXRoQXJncyhtcGNWMldhbGxldEFkZHJlc3MsIGNvaW5UeXBlKVxuICAgICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzEwMDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzEwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcbiAgICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3MobXBjVjJXYWxsZXRBZGRyZXNzLCBjb2luVHlwZSkucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4OjpkZWVwOjpERUVQJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHg5MjRhYjY5ZWJiYTMwNGYyOTc1YTU4ODM3MmI0MWU0ZTFmNWRiN2ZhODI0ODY4Zjg0MTk5ZWViMWUwYTE1YTJkJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczNDY5NjgwNycsXG4gICAgICAgICAgICBkaWdlc3Q6ICc3WFJiV1FUaXdBVUNqTExzWlZwSk1yQUJDaGVKQmt6S1ZmQ3I3YVRaWlZrZCcsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKDEwMDApLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhtcGNWMldhbGxldEFkZHJlc3MpLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDkxNDY5MjhmNTU3Y2I4YWIxOTE1YTU4ODZjMTM2MjQzNWEwNWI0NzA5YjU4NmJiMDFkNGM3MGU4NWJiNTMxNjEnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzIzOScsXG4gICAgICAgICAgICBkaWdlc3Q6ICdHTFN6UjZISjMxOW5QS0FGbTV4M1RXSGNhSFp6Q0ZTQkNxaHZaMXF3VDV3cicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMjMwMjYxMDc2JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGdldEZlZUVzdGltYXRlU3R1Yi5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKDIzNDU1MDQpKTtcblxuICAgICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogbXBjVjJCYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBtcGNWMldhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3MsXG4gICAgICAgIH0pKSBhcyBNUENUeHM7XG5cbiAgICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnNjYW5JbmRleCwgMCk7XG4gICAgICAgICh0eC5zZXJpYWxpemVkVHggYXMgc3RyaW5nKS5zaG91bGQuYmUuYS5TdHJpbmcoKS5hbmQubm90LmJlLmVtcHR5KCk7XG4gICAgICAgIHNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuXG4gICAgICAgIC8vIFRoZSBTVUkgc2lnbmF0dXJlIGVudmVsb3BlIGlzIDEgKGZsYWcpICsgNjQgKHNpZ25hdHVyZSkgKyAzMiAocHVia2V5KSBieXRlcy5cbiAgICAgICAgQnVmZmVyLmZyb20odHguc2lnbmF0dXJlIGFzIHN0cmluZywgJ2Jhc2U2NCcpLmxlbmd0aC5zaG91bGQuZXF1YWwoOTcpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRyYW5zYWN0aW9ucyBmb3Igd2FsbGV0IHdpdGggbXVsdGlwbGUgYWRkcmVzc2VzOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MwID0gJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMyc7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzczEgPSAnMHgzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjJztcbiAgICBjb25zdCByZWNvdmVyeURlc3RpbmF0aW9uID0gJzB4MDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OSc7XG4gICAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdwJFN3PFJqdkFnZntuWUFZSTJ4TSc7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyhzZW5kZXJBZGRyZXNzMClcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhzZW5kZXJBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTgwMDAwMDAwMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMTgwMDAwMDAwMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pO1xuXG4gICAgICBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0SW5wdXRDb2lucycgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrLndpdGhBcmdzKHNlbmRlckFkZHJlc3MxKS5yZXNvbHZlcyhbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHhmZjkzYWRjMmY1MTZmY2FhMGM2MDQwZTAxZjUwMDI3YTIzZjliMTc2N2Y1MDQwZWIyMjgyNzkwYTY5MDBjZTdmJyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMTk2JyxcbiAgICAgICAgICBkaWdlc3Q6ICdYcmpSTTlaTTk4eGROV2lnSFlRakNwR29XdDZhWkxwcVhkU0VpeG5oYjRwJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxODAwMDAwMDAwJyksXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEZlZUVzdGltYXRlJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFDQUFnQThWTmxBQUFBQUFBZ0FPVHFwcUtSL2dLUmhGTG1SYlZsUE5KZ3Bmd1BzMTloazlXQWtXcXA0NGtDQWdBQkFRQUFBUUVDQUFBQkFRQXkyT1YrNXRrZVZWamFCbmNWVEM4SVY1VTBqakYvbGF6Sjc2M2h0QkV2ekFIL2s2M0M5UmI4cWd4Z1FPQWZVQUo2SS9teGRuOVFRT3NpZ25rS2FRRE9mOFFBQUFBQUFBQUFJQWZucDkwZ01zZEJHR3oxdFcvc0ZRbEFyaGtSbVlqZGlYVFh4K0N2eEhqVk10amxmdWJaSGxWWTJnWjNGVXd2Q0ZlVk5JNHhmNVdzeWUrdDRiUVJMOHpvQXdBQUFBQUFBQURoOVFVQUFBQUFBQT09J1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKDE5OTc4ODApKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4biBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMgYXQgYWRkcmVzcyAxIGJ1dCBzZWFyY2ggZnJvbSBhZGRyZXNzIDAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIH0pO1xuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3RyYW5zYWN0aW9ucycpO1xuICAgICAgY29uc3QgdHggPSByZXMudHJhbnNhY3Rpb25zWzBdO1xuICAgICAgdHguc2NhbkluZGV4LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LnJlY292ZXJ5QW1vdW50LnNob3VsZC5lcXVhbCgnMTc5NzgwMjMzMicpO1xuICAgICAgdHguc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0FBQUNBQWhjU1NockFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0NBZ0FCQVFBQUFRRUNBQUFCQVFBeTJPVis1dGtlVlZqYUJuY1ZUQzhJVjVVMGpqRi9sYXpKNzYzaHRCRXZ6QUgvazYzQzlSYjhxZ3hnUU9BZlVBSjZJL214ZG45UVFPc2lnbmtLYVFET2Y4UUFBQUFBQUFBQUlBZm5wOTBnTXNkQkdHejF0Vy9zRlFsQXJoa1JtWWpkaVhUWHgrQ3Z4SGpWTXRqbGZ1YlpIbFZZMmdaM0ZVd3ZDRmVWTkk0eGY1V3N5ZSt0NGJRUkw4em9Bd0FBQUFBQUFLU0lJUUFBQUFBQUFBPT0nXG4gICAgICApO1xuXG4gICAgICBjb25zdCBVbnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbihiYXNlY29pbik7XG4gICAgICBVbnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHR4LnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBVbnNpZ25lZFN3ZWVwVHhuSnNvbiA9IFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKFVuc2lnbmVkU3dlZXBUeG5Kc29uLmlkLCAnQnFIY0NSNTFtcVV5aTVHSllFRUQzY3c5QWdwSjNTcmFUcnQ1YUU5bkxrTGonKTtcbiAgICAgIHNob3VsZC5lcXVhbChVbnNpZ25lZFN3ZWVwVHhuSnNvbi5zZW5kZXIsIHNlbmRlckFkZHJlc3MxKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRCYWxhbmNlLCAyKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRJbnB1dENvaW5zLCAxKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRGZWVFc3RpbWF0ZSwgMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIGF0IGFkZHJlc3MgMSBidXQgc2VhcmNoIGZyb20gYWRkcmVzcyAxJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgfSk7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgICBjb25zdCB0eCA9IHJlcy50cmFuc2FjdGlvbnNbMF07XG4gICAgICB0eC5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgucmVjb3ZlcnlBbW91bnQuc2hvdWxkLmVxdWFsKCcxNzk3ODAyMzMyJyk7XG4gICAgICB0eC5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQUFBQ0FBaGNTU2hyQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnQUJBUUFBQVFFQ0FBQUJBUUF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpBSC9rNjNDOVJiOHFneGdRT0FmVUFKNkkvbXhkbjlRUU9zaWdua0thUURPZjhRQUFBQUFBQUFBSUFmbnA5MGdNc2RCR0d6MXRXL3NGUWxBcmhrUm1ZamRpWFRYeCtDdnhIalZNdGpsZnViWkhsVlkyZ1ozRlV3dkNGZVZOSTR4ZjVXc3llK3Q0YlFSTDh6b0F3QUFBQUFBQUtTSUlRQUFBQUFBQUE9PSdcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGJhc2Vjb2luKTtcbiAgICAgIFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24odHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5Kc29uID0gVW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoVW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICdCcUhjQ1I1MW1xVXlpNUdKWUVFRDNjdzlBZ3BKM1NyYVRydDVhRTluTGtMaicpO1xuICAgICAgc2hvdWxkLmVxdWFsKFVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzczEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVG9rZW4gVHJhbnNhY3Rpb25zIGZvciB3YWxsZXQgd2l0aCBtdWx0aXBsZSBhZGRyZXNzZXM6JywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzczAgPSAnMHg5MWYyNWUyMzdiODNhMDBhNjI3MjRmZGM0YTgxZTQzZjQ5NGRjNmI0MWExMjQxNDkyODI2ZDM2ZTRkMTMxZGEzJztcbiAgICBjb25zdCBzZW5kZXJBZGRyZXNzMSA9ICcweDMyZDhlNTdlZTZkOTFlNTU1OGRhMDY3NzE1NGMyZjA4NTc5NTM0OGUzMTdmOTVhY2M5ZWZhZGUxYjQxMTJmY2MnO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JztcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3AkU3c8Ump2QWdme25ZQVlJMnhNJztcbiAgICBjb25zdCBwYWNrYWdlSWQgPSAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4JztcbiAgICBjb25zdCBjb2luVHlwZSA9IGAke3BhY2thZ2VJZH06OmRlZXA6OkRFRVBgO1xuICAgIGxldCBnZXRCYWxhbmNlU3R1Yjogc2lub24uU2lub25TdHViO1xuICAgIGxldCBnZXRJbnB1dENvaW5zU3R1Yjogc2lub24uU2lub25TdHViO1xuICAgIGxldCBnZXRGZWVFc3RpbWF0ZVN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgZ2V0QmFsYW5jZVN0dWIgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnIGFzIGtleW9mIFN1aSk7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczApXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzcwNjg3NTY5MicsIGNvaW5PYmplY3RCYWxhbmNlOiAnNzA2ODc1NjkyJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKHNlbmRlckFkZHJlc3MwLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhzZW5kZXJBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTIwMTAxOTc2JywgY29pbk9iamVjdEJhbGFuY2U6ICcxMjAxMDE5NzYnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczEsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG5cbiAgICAgIGdldElucHV0Q29pbnNTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRJbnB1dENvaW5zJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczEsIGNvaW5UeXBlKS5yZXNvbHZlcyhbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4MzZkYmVmODY2YTFkNjJiZjczMjg5ODlhMTBmYjJmMDdkNzY5ZjRlZTU4N2MwZGU0YTBhMjU2ZTU3ZTBhNThhODo6ZGVlcDo6REVFUCcsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweGNkYmE3NmJkYzNmNDYwZWQwZDZhZjgzNGZjMTdiMDgyZWI5ZWFiZDBiODg2ZjlhZjE3Y2Q0MjkxZjJmODYyZmEnLFxuICAgICAgICAgIHZlcnNpb246ICczNDY5Njg2NicsXG4gICAgICAgICAgZGlnZXN0OiAnN3ZiU2dhR3l0QVR0blEyZkxSUW8zVnRDd1lyOUtqeHN1eExMTWoyZGZDc1UnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEwMDAnKSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczEpLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweDBlY2E3ODkwMWUzNDJiMjUxNWZiZjk5YmUyNDNiM2YwMGFkZTBhN2E1MDY3NWIzNzMwN2Y0NGNjMTk1YzkwNDYnLFxuICAgICAgICAgIHZlcnNpb246ICczNDY5Njg3NScsXG4gICAgICAgICAgZGlnZXN0OiAnQVBFM25qNHpZbTRoWTJYbjlDMm4zeW55UGlZcXhnVFJlallUN1BhcmhwVTcnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEyMDAwMDAwMCcpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4NzYxMjIyMzQwZGI4MGRkOWRhMTQ0ZDU1MDk4ODcwYmM4MWE3ODgyMDVlMGJiZGQzNGMyZjhkZjEyY2Y0NWFlYicsXG4gICAgICAgICAgdmVyc2lvbjogJzIyNycsXG4gICAgICAgICAgZGlnZXN0OiAnOWJ3eWphU0gzWDhhbnJqR1VwRDFOcU1yTEZVdEdTQ0s5TEZ1TGJoalg2OUUnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEwMTk3NicpLFxuICAgICAgICB9LFxuICAgICAgXSk7XG5cbiAgICAgIGdldEZlZUVzdGltYXRlU3R1YiA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0RmVlRXN0aW1hdGUnIGFzIGtleW9mIFN1aSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFEQVFETnVuYTl3L1JnN1ExcStEVDhGN0NDNjU2cjBMaUcrYThYelVLUjh2aGkrcUp1RVFJQUFBQUFJR2JnMlZwaHVFZXp6VFZMeUJUclFHQytHSldNUlNWNVlKV2thN2Z3bUQ5TEFBam9Bd0FBQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQURMWTVYN20yUjVWV05vR2R4Vk1Md2hYbFRTT01YK1ZyTW52cmVHMEVTL01BUTdLZUpBZU5Dc2xGZnY1bStKRHMvQUszZ3A2VUdkYk56Qi9STXdaWEpCR3EyNFJBZ0FBQUFBZ2kycTJzVWdkMGZyZ3hXWlZrZ2FqSkFiMVY1ZjFWemFUclhFWUl4a0xxREF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpPZ0RBQUFBQUFBQUFPSDFCUUFBQUFBQSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcigyMzQ1NTA0KSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0b2tlbiB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIGF0IGFkZHJlc3MgMSBidXQgc2VhcmNoIGZyb20gYWRkcmVzcyAwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBwYWNrYWdlSWQsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCd0cmFuc2FjdGlvbnMnKTtcbiAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcbiAgICAgIHR4LnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5yZWNvdmVyeUFtb3VudC5zaG91bGQuZXF1YWwoJzEwMDAnKTtcbiAgICAgIHR4LnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdBQUFEQVFETnVuYTl3L1JnN1ExcStEVDhGN0NDNjU2cjBMaUcrYThYelVLUjh2aGkrcUp1RVFJQUFBQUFJR2JnMlZwaHVFZXp6VFZMeUJUclFHQytHSldNUlNWNVlKV2thN2Z3bUQ5TEFBam9Bd0FBQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQURMWTVYN20yUjVWV05vR2R4Vk1Md2hYbFRTT01YK1ZyTW52cmVHMEVTL01BUTdLZUpBZU5Dc2xGZnY1bStKRHMvQUszZ3A2VUdkYk56Qi9STXdaWEpCR3EyNFJBZ0FBQUFBZ2kycTJzVWdkMGZyZ3hXWlZrZ2FqSkFiMVY1ZjFWemFUclhFWUl4a0xxREF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpPZ0RBQUFBQUFBQVZsNG5BQUFBQUFBQSdcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGJhc2Vjb2luKTtcbiAgICAgIFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24odHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5Kc29uID0gVW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoVW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICdHRnVrMVZLeTN3elRGZUFVdHJtVWU2c3hSaHRlenpyR0RmS2RwUVR4djlzbycpO1xuICAgICAgc2hvdWxkLmVxdWFsKFVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzczEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDUpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDIpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHRva2VuIHR4biBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMgYXQgYWRkcmVzcyAxIGJ1dCBzZWFyY2ggZnJvbSBhZGRyZXNzIDEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHBhY2thZ2VJZCxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCd0cmFuc2FjdGlvbnMnKTtcbiAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcbiAgICAgIHR4LnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5yZWNvdmVyeUFtb3VudC5zaG91bGQuZXF1YWwoJzEwMDAnKTtcbiAgICAgIHR4LnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdBQUFEQVFETnVuYTl3L1JnN1ExcStEVDhGN0NDNjU2cjBMaUcrYThYelVLUjh2aGkrcUp1RVFJQUFBQUFJR2JnMlZwaHVFZXp6VFZMeUJUclFHQytHSldNUlNWNVlKV2thN2Z3bUQ5TEFBam9Bd0FBQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQURMWTVYN20yUjVWV05vR2R4Vk1Md2hYbFRTT01YK1ZyTW52cmVHMEVTL01BUTdLZUpBZU5Dc2xGZnY1bStKRHMvQUszZ3A2VUdkYk56Qi9STXdaWEpCR3EyNFJBZ0FBQUFBZ2kycTJzVWdkMGZyZ3hXWlZrZ2FqSkFiMVY1ZjFWemFUclhFWUl4a0xxREF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpPZ0RBQUFBQUFBQVZsNG5BQUFBQUFBQSdcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGJhc2Vjb2luKTtcbiAgICAgIFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24odHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5Kc29uID0gVW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoVW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICdHRnVrMVZLeTN3elRGZUFVdHJtVWU2c3hSaHRlenpyR0RmS2RwUVR4djlzbycpO1xuICAgICAgc2hvdWxkLmVxdWFsKFVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzczEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDMpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDIpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgQ29uc29saWRhdGlvbiBUcmFuc2FjdGlvbnMnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCByZWNlaXZlQWRkcmVzczEgPSAnMHgzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjJztcbiAgICBjb25zdCByZWNlaXZlQWRkcmVzczIgPSAnMHhkZjQwN2UzZTI1ZTk0MDBmOTc3OWFjNzU3MTUzN2MyMzYxNjg0MTk0ZjFhYTVkYjEyNmE4ZjU3NGI1ZWQ4NTFjJztcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3AkU3c8Ump2QWdme25ZQVlJMnhNJztcblxuICAgIGNvbnN0IHNlZWRSZWNlaXZlQWRkcmVzczEgPSAnMHhkMjAxNTY2ZTZhMGJjMDIwZmQyZTZmNzJlOWJkZTIyMjNmNTUwZDY0ZGFhNjEzOThjZDkxN2MyZjc1MDEzMjRhJztcbiAgICBjb25zdCBzZWVkUmVjZWl2ZUFkZHJlc3MyID0gJzB4MmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOSc7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyhyZWNlaXZlQWRkcmVzczEpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzIwMDEwMTk3NicsIGNvaW5PYmplY3RCYWxhbmNlOiAnMjAwMTAxOTc2JywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKHJlY2VpdmVBZGRyZXNzMilcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMjAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcyMDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3Moc2VlZFJlY2VpdmVBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnNTAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICc1MDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3Moc2VlZFJlY2VpdmVBZGRyZXNzMilcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMjAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcyMDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcblxuICAgICAgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldElucHV0Q29pbnMnIGFzIGtleW9mIFN1aSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MocmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4OTk2YWFiMzY1ZDQ1NTFiNmQxMjc0ZjUyMGJiZmE3YjBhNTY2ZDU0OGIyZDU5MGI1NTY1YzYyMzgxMmU3ZTc2ZCcsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMjAxJyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0hYcE5UZng5VEJkeEZjWEhpNFJ6aVpzUXVEQUhhdlJhc0s2UmkxNXJWd3VBJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzIwMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHhiMzljNWYzODAyMDhjY2U3ZmUxYmExMjU4YzhkMTliZWZiMDJhODBmMTQ5NTI2MTdlZDM3MDk4ZGJkNGQyZGYwJyxcbiAgICAgICAgICAgIHZlcnNpb246ICcxOTknLFxuICAgICAgICAgICAgZGlnZXN0OiAnbXFrMzdoWExraVVZZ2tZeGsyTXlxTnlrQ2tDWHdlOTd1TXVzN2JEUGhlMicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMDE5NzYnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3MocmVjZWl2ZUFkZHJlc3MyKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ZmEwNDEwNWVlZGViZGFiZjcyOWRjY2VjZjAxZDBjZjVmMWI3NzA4OTJmYWMyZWQ4ZjFlNjlkNzFhMzJhMmQyNCcsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMjAyJyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0RlQXBSVlNyVGE5dHRYdk55TGV4VDRQSmNBa3l5eFNwaTNKUWVVZzR1YThRJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzIwMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ODZlNzI4ZmQ3MjQyYjNiZTYwZTljMTk0MWFkZDJjNDdmYjY1NTc3OTEwOGMzNTAwYTIxNjMxMDIxODc0OGUyZCcsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMTQ3JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzZQSmV5RVg0TDhSa2pzTmFGNUdTTUN3UmptRkdZclFCN2ZibUpQRk1NUEhMJyxcbiAgICAgICAgICAgIGJhbGFuY2U6ICc1MDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MyKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ZmQ2NmRiZmU3YTE0OTdmMjEwNzQ3YjA1MzJmNjJlNjkyNmNiMTQ0Yzc1ZTUxOWYyZGZmZjE3YTRmNmU1MTVmYycsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMTQ4JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ1BKM2pmUzFFUlNoU010RldaZ21hNGg2ZHVXWDhubTVCZWkxejNCc3p5QmsnLFxuICAgICAgICAgICAgYmFsYW5jZTogJzIwMDAwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgIGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRGZWVFc3RpbWF0ZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBQ0FBaFliL2NGQUFBQUFBQWdrZkplSTN1RG9BcGljay9jU29Ia1AwbE54clFhRWtGSktDYlRiazBUSGFNQ0FnQUJBUUFBQVFFQ0FBQUJBUUF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpBS1phcXMyWFVWUnR0RW5UMUlMdjZld3BXYlZTTExWa0xWV1hHSTRFdWZuYmNrQUFBQUFBQUFBSVBXZitmMUVrbFcxZ2dpM3J3bzVKdzNMZnR1OVcvVXN5clpySTBGWXNCVFpzNXhmT0FJSXpPZitHNkVsakkwWnZ2c0NxQThVbFNZWDdUY0pqYjFOTGZESEFBQUFBQUFBQUNBTGZLc1o0VDlZMnkxcnJsQnhRUTJCb3VTOVZGakJnVmZ2YmJGZjlVK2Y4ekxZNVg3bTJSNVZXTm9HZHhWTUx3aFhsVFNPTVgrVnJNbnZyZUcwRVMvTTZBTUFBQUFBQUFBQTRmVUZBQUFBQUFBPSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcignMTAxOTc2MCcpKVxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQUNBQWdBNGZVRkFBQUFBQUFna2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhTUNBZ0FCQVFBQUFRRUNBQUFCQVFEZlFINCtKZWxBRDVkNXJIVnhVM3dqWVdoQmxQR3FYYkVtcVBWMHRlMkZIQUg2QkJCZTdldmF2M0tkek96d0hRejE4YmR3aVMrc0x0ang1cDF4b3lvdEpNb0FBQUFBQUFBQUlMdlIxWGpsS0t5bFJHaDlwWDRVcEJGQnNDdjVBdDZSQm4rWFhEQWJuZlJCMzBCK1BpWHBRQStYZWF4MWNWTjhJMkZvUVpUeHFsMnhKcWoxZExYdGhSem9Bd0FBQUFBQUFBRGg5UVVBQUFBQUFBPT0nXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoJzE5OTc4ODAnKSlcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFDQUFnQWhOY1hBQUFBQUFBZ2lNbWVEYmljdWgyNWZMcmRmemV5cExLaXRBSWxsS0RBU3l2TWczNUxKQVFDQWdBQkFRQUFBUUVDQUFBQkFRRFNBVlp1YWd2QUlQMHViM0xwdmVJaVAxVU5aTnFtRTVqTmtYd3ZkUUV5U2dHRzV5ajlja0t6dm1EcHdaUWEzU3hIKzJWWGVSQ01OUUNpRmpFQ0dIU09MWk1BQUFBQUFBQUFJRkFCTExMak1KYzUxUjBQOERIeTBQYlh3c1lVRDBiNWd2Vm1pWnN1cGFmcjBnRldibW9Md0NEOUxtOXk2YjNpSWo5VkRXVGFwaE9ZelpGOEwzVUJNa3JvQXdBQUFBQUFBQURoOVFVQUFBQUFBQT09J1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKCcxOTk3ODgwJykpXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBQ0FBZ0E0ZlVGQUFBQUFBQWdpTW1lRGJpY3VoMjVmTHJkZnpleXBMS2l0QUlsbEtEQVN5dk1nMzVMSkFRQ0FnQUJBUUFBQVFFQ0FBQUJBUUF2cGRnNVM5YSt4VkpibFZDL1E3NEhXNE5DTFFFSHdGeHdDVVRqNnV3bStRSDladHYrZWhTWDhoQjBld1V5OWk1cEpzc1VUSFhsR2ZMZi94ZWs5dVVWL0pRQUFBQUFBQUFBSUFXMkRaZFZXSjlFTm52TDRaMlBPT0hmSzJaNzREZ1NnRFFjaTYwTWRRdVhMNlhZT1V2V3ZzVlNXNVZRdjBPK0IxdURRaTBCQjhCY2NBbEU0K3JzSnZub0F3QUFBQUFBQUFEaDlRVUFBQUFBQUE9PSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcignMTk5Nzg4MCcpKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2lnbmVkIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb25zIGZvciBob3Qgd2FsbGV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbnMgPSByZXMudHJhbnNhY3Rpb25zO1xuICAgICAgdHJhbnNhY3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICBjb25zdCB0eG4xID0gdHJhbnNhY3Rpb25zWzBdO1xuICAgICAgdHhuMS5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHhuMS5yZWNvdmVyeUFtb3VudC5zaG91bGQuZXF1YWwoJzE5ODk4MDI0MCcpO1xuICAgICAgdHhuMS5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQUFBQ0FBaVFNdHdMQUFBQUFBQWdrZkplSTN1RG9BcGljay9jU29Ia1AwbE54clFhRWtGSktDYlRiazBUSGFNQ0FnQUJBUUFBQVFFQ0FBQUJBUUF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpBS1phcXMyWFVWUnR0RW5UMUlMdjZld3BXYlZTTExWa0xWV1hHSTRFdWZuYmNrQUFBQUFBQUFBSVBXZitmMUVrbFcxZ2dpM3J3bzVKdzNMZnR1OVcvVXN5clpySTBGWXNCVFpzNXhmT0FJSXpPZitHNkVsakkwWnZ2c0NxQThVbFNZWDdUY0pqYjFOTGZESEFBQUFBQUFBQUNBTGZLc1o0VDlZMnkxcnJsQnhRUTJCb3VTOVZGakJnVmZ2YmJGZjlVK2Y4ekxZNVg3bTJSNVZXTm9HZHhWTUx3aFhsVFNPTVgrVnJNbnZyZUcwRVMvTTZBTUFBQUFBQUFESUhSRUFBQUFBQUFBPSdcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4bjIgPSB0cmFuc2FjdGlvbnNbMV07XG4gICAgICB0eG4yLnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMik7XG4gICAgICB0eG4yLnJlY292ZXJ5QW1vdW50LnNob3VsZC5lcXVhbCgnMTk3ODAyMzMyJyk7XG4gICAgICB0eG4yLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdBQUFDQUFoY09jb0xBQUFBQUFBZ2tmSmVJM3VEb0FwaWNrL2NTb0hrUDBsTnhyUWFFa0ZKS0NiVGJrMFRIYU1DQWdBQkFRQUFBUUVDQUFBQkFRRGZRSDQrSmVsQUQ1ZDVySFZ4VTN3allXaEJsUEdxWGJFbXFQVjB0ZTJGSEFINkJCQmU3ZXZhdjNLZHpPendIUXoxOGJkd2lTK3NMdGp4NXAxeG95b3RKTW9BQUFBQUFBQUFJTHZSMVhqbEtLeWxSR2g5cFg0VXBCRkJzQ3Y1QXQ2UkJuK1hYREFibmZSQjMwQitQaVhwUUErWGVheDFjVk44STJGb1FaVHhxbDJ4SnFqMWRMWHRoUnpvQXdBQUFBQUFBS1NJSVFBQUFBQUFBQT09J1xuICAgICAgKTtcblxuICAgICAgcmVzLmxhc3RTY2FuSW5kZXguc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB1bnNpZ25lZCBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9ucyBmb3IgY29sZCB3YWxsZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgIH0pO1xuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0eFJlcXVlc3RzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICcwMDAwMDIwMDA4OTAzMmRjMGIwMDAwMDAwMDAwMjA5MWYyNWUyMzdiODNhMDBhNjI3MjRmZGM0YTgxZTQzZjQ5NGRjNmI0MWExMjQxNDkyODI2ZDM2ZTRkMTMxZGEzMDIwMjAwMDEwMTAwMDAwMTAxMDIwMDAwMDEwMTAwMzJkOGU1N2VlNmQ5MWU1NTU4ZGEwNjc3MTU0YzJmMDg1Nzk1MzQ4ZTMxN2Y5NWFjYzllZmFkZTFiNDExMmZjYzAyOTk2YWFiMzY1ZDQ1NTFiNmQxMjc0ZjUyMGJiZmE3YjBhNTY2ZDU0OGIyZDU5MGI1NTY1YzYyMzgxMmU3ZTc2ZGM5MDAwMDAwMDAwMDAwMDAyMGY1OWZmOWZkNDQ5MjU1YjU4MjA4YjdhZjBhMzkyNzBkY2I3ZWRiYmQ1YmY1MmNjYWI2NmIyMzQxNThiMDE0ZDliMzljNWYzODAyMDhjY2U3ZmUxYmExMjU4YzhkMTliZWZiMDJhODBmMTQ5NTI2MTdlZDM3MDk4ZGJkNGQyZGYwYzcwMDAwMDAwMDAwMDAwMDIwMGI3Y2FiMTllMTNmNThkYjJkNmJhZTUwNzE0MTBkODFhMmU0YmQ1NDU4YzE4MTU3ZWY2ZGIxNWZmNTRmOWZmMzMyZDhlNTdlZTZkOTFlNTU1OGRhMDY3NzE1NGMyZjA4NTc5NTM0OGUzMTdmOTVhY2M5ZWZhZGUxYjQxMTJmY2NlODAzMDAwMDAwMDAwMDAwYzgxZDExMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMSxcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnYWI4NGM5ZDA5YzY3OGMwMzg0MzlmNjNmY2Q0MGQyNjUzNWNjMTQ4NTE1MTI1N2Y0ZjE3NWI2ZThhMGU5NDMxNicsXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMScsXG4gICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTk4OTgwMjQwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKCcxOTg5ODAyNDAnKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMycsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE5ODk4MDI0MCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTk4OTgwMjQwJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1RyYW5zZmVyJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgIGZlZTogMTEyMTczNixcbiAgICAgICAgICAgICAgICAgICAgZmVlU3RyaW5nOiAnMTEyMTczNicsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgICAgICAgICAgICczYjg5ZWVjOWQyZDJmM2IwNDllY2RhMmU3YjVmNDc4MjdmNzkyN2ZlNjYxOGQ2ZThiMTNmNjRlN2M5NWY0YjAwYjk1NzdhYjAxMzk1ZWNmOGVlYjgwNGI1OTBjZWRhZTE0ZmY1ZmQzOTQ3YmYzYjdhOTViOTMyN2M0OWUyN2M1NCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuc2lnbmVkVHg6IHtcbiAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgJzAwMDAwMjAwMDg1YzM5Y2EwYjAwMDAwMDAwMDAyMDkxZjI1ZTIzN2I4M2EwMGE2MjcyNGZkYzRhODFlNDNmNDk0ZGM2YjQxYTEyNDE0OTI4MjZkMzZlNGQxMzFkYTMwMjAyMDAwMTAxMDAwMDAxMDEwMjAwMDAwMTAxMDBkZjQwN2UzZTI1ZTk0MDBmOTc3OWFjNzU3MTUzN2MyMzYxNjg0MTk0ZjFhYTVkYjEyNmE4ZjU3NGI1ZWQ4NTFjMDFmYTA0MTA1ZWVkZWJkYWJmNzI5ZGNjZWNmMDFkMGNmNWYxYjc3MDg5MmZhYzJlZDhmMWU2OWQ3MWEzMmEyZDI0Y2EwMDAwMDAwMDAwMDAwMDIwYmJkMWQ1NzhlNTI4YWNhNTQ0Njg3ZGE1N2UxNGE0MTE0MWIwMmJmOTAyZGU5MTA2N2Y5NzVjMzAxYjlkZjQ0MWRmNDA3ZTNlMjVlOTQwMGY5Nzc5YWM3NTcxNTM3YzIzNjE2ODQxOTRmMWFhNWRiMTI2YThmNTc0YjVlZDg1MWNlODAzMDAwMDAwMDAwMDAwYTQ4ODIxMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMixcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnNjZkNjUwYjRjNGRlZGY1YWIzM2M5MzgxZWU0NjE0MGIzMGJiODk2Y2YyYzY2YjdiMjQxY2FlNzBkMTQxNGYxNicsXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMicsXG4gICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhkZjQwN2UzZTI1ZTk0MDBmOTc3OWFjNzU3MTUzN2MyMzYxNjg0MTk0ZjFhYTVkYjEyNmE4ZjU3NGI1ZWQ4NTFjJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKCcxOTc4MDIzMzInKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMycsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1RyYW5zZmVyJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgIGZlZTogMjE5NzY2OCxcbiAgICAgICAgICAgICAgICAgICAgZmVlU3RyaW5nOiAnMjE5NzY2OCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgICAgICAgICAgICczYjg5ZWVjOWQyZDJmM2IwNDllY2RhMmU3YjVmNDc4MjdmNzkyN2ZlNjYxOGQ2ZThiMTNmNjRlN2M5NWY0YjAwYjk1NzdhYjAxMzk1ZWNmOGVlYjgwNGI1OTBjZWRhZTE0ZmY1ZmQzOTQ3YmYzYjdhOTViOTMyN2M0OWUyN2M1NCcsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RTY2FuSW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB1bnNpZ25lZCBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9ucyBmb3IgY29sZCB3YWxsZXQgd2l0aCBzZWVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXlXaXRoU2VlZCxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgICAgc2VlZDogJzEyMycsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHhSZXF1ZXN0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAyMDAwODVjZGNhYjFkMDAwMDAwMDAwMDIwODhjOTllMGRiODljYmExZGI5N2NiYWRkN2YzN2IyYTRiMmEyYjQwMjI1OTRhMGMwNGIyYmNjODM3ZTRiMjQwNDAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMGQyMDE1NjZlNmEwYmMwMjBmZDJlNmY3MmU5YmRlMjIyM2Y1NTBkNjRkYWE2MTM5OGNkOTE3YzJmNzUwMTMyNGEwMTg2ZTcyOGZkNzI0MmIzYmU2MGU5YzE5NDFhZGQyYzQ3ZmI2NTU3NzkxMDhjMzUwMGEyMTYzMTAyMTg3NDhlMmQ5MzAwMDAwMDAwMDAwMDAwMjA1MDAxMmNiMmUzMzA5NzM5ZDUxZDBmZjAzMWYyZDBmNmQ3YzJjNjE0MGY0NmY5ODJmNTY2ODk5YjJlYTVhN2ViZDIwMTU2NmU2YTBiYzAyMGZkMmU2ZjcyZTliZGUyMjIzZjU1MGQ2NGRhYTYxMzk4Y2Q5MTdjMmY3NTAxMzI0YWU4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAxLFxuICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICc2ZDdhNGM0ODgyNzQ1NzA3YzJjZDQwYjBjNTc1NjY2MDFhMmE0ZDI2OWY1Y2IwYTY5MjgyODU1MTIxMmNmNDUyJyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS85OTk5OTkvOTQ4NjI2MjIvMTU3MzYzNTA5LzEnLFxuICAgICAgICAgICAgICAgICAgcGFyc2VkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4ZDIwMTU2NmU2YTBiYzAyMGZkMmU2ZjcyZTliZGUyMjIzZjU1MGQ2NGRhYTYxMzk4Y2Q5MTdjMmY3NTAxMzI0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzQ5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcig0OTc4MDIzMzIpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHg4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnNDk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aScsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICc0OTc4MDIzMzInLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAyMTk3NjY4LFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyMTk3NjY4JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJ2NhMGEwMTRiYTZmMTExMDZhMTU1ZWY4ZTJjYWIyZjc2ZDI3N2U0ZjAxY2ZmYTU5MWE5YjQwODQ4MzQzODIzYjNkOTEwNzUyYTQ5Yzk2YmY1ODEzOTg1MjA2ZTIzYzlmOWNkM2E3OGYxY2NjZjVjZjg4ZGVmNTJiNTczY2VkYzkzJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAyMDAwODVjMzljYTBiMDAwMDAwMDAwMDIwODhjOTllMGRiODljYmExZGI5N2NiYWRkN2YzN2IyYTRiMmEyYjQwMjI1OTRhMGMwNGIyYmNjODM3ZTRiMjQwNDAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMDJmYTVkODM5NGJkNmJlYzU1MjViOTU1MGJmNDNiZTA3NWI4MzQyMmQwMTA3YzA1YzcwMDk0NGUzZWFlYzI2ZjkwMWZkNjZkYmZlN2ExNDk3ZjIxMDc0N2IwNTMyZjYyZTY5MjZjYjE0NGM3NWU1MTlmMmRmZmYxN2E0ZjZlNTE1ZmM5NDAwMDAwMDAwMDAwMDAwMjAwNWI2MGQ5NzU1NTg5ZjQ0MzY3YmNiZTE5ZDhmMzhlMWRmMmI2NjdiZTAzODEyODAzNDFjOGJhZDBjNzUwYjk3MmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOWU4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICczMmEwMGE2ZDg5MjYzMDQ2N2M3ZDA2NjYzOTBkM2IyN2NhYWY0YWVmZWUzZGRhOWUwYzk3YzNmOGJjMDZiY2VhJyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS85OTk5OTkvOTQ4NjI2MjIvMTU3MzYzNTA5LzInLFxuICAgICAgICAgICAgICAgICAgcGFyc2VkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOScsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcigxOTc4MDIzMzIpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHg4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aScsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICcxOTc4MDIzMzInLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAyMTk3NjY4LFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyMTk3NjY4JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJ2NhMGEwMTRiYTZmMTExMDZhMTU1ZWY4ZTJjYWIyZjc2ZDI3N2U0ZjAxY2ZmYTU5MWE5YjQwODQ4MzQzODIzYjNkOTEwNzUyYTQ5Yzk2YmY1ODEzOTg1MjA2ZTIzYzlmOWNkM2E3OGYxY2NjZjVjZjg4ZGVmNTJiNTczY2VkYzkzJyxcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNjYW5JbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRCYWxhbmNlLCAyKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRJbnB1dENvaW5zLCAyKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRGZWVFc3RpbWF0ZSwgMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRva2VuIENvbnNvbGlkYXRpb24gVHJhbnNhY3Rpb25zJywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdwJFN3PFJqdkFnZntuWUFZSTJ4TSc7XG5cbiAgICBjb25zdCBzZWVkUmVjZWl2ZUFkZHJlc3MxID0gJzB4ZDIwMTU2NmU2YTBiYzAyMGZkMmU2ZjcyZTliZGUyMjIzZjU1MGQ2NGRhYTYxMzk4Y2Q5MTdjMmY3NTAxMzI0YSc7XG4gICAgY29uc3Qgc2VlZFJlY2VpdmVBZGRyZXNzMiA9ICcweDJmYTVkODM5NGJkNmJlYzU1MjViOTU1MGJmNDNiZTA3NWI4MzQyMmQwMTA3YzA1YzcwMDk0NGUzZWFlYzI2ZjknO1xuXG4gICAgY29uc3QgcGFja2FnZUlkID0gJzB4MzZkYmVmODY2YTFkNjJiZjczMjg5ODlhMTBmYjJmMDdkNzY5ZjRlZTU4N2MwZGU0YTBhMjU2ZTU3ZTBhNThhOCc7XG4gICAgY29uc3QgY29pblR5cGUgPSBgJHtwYWNrYWdlSWR9OjpkZWVwOjpERUVQYDtcbiAgICBjb25zdCBob3RXYWxsZXRSZWNlaXZlQWRkcmVzczEgPSAnMHgzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjJztcbiAgICBjb25zdCBob3RXYWxsZXRSZWNlaXZlQWRkcmVzczIgPSAnMHhkZjQwN2UzZTI1ZTk0MDBmOTc3OWFjNzU3MTUzN2MyMzYxNjg0MTk0ZjFhYTVkYjEyNmE4ZjU3NGI1ZWQ4NTFjJztcbiAgICBjb25zdCBjb2xkV2FsbGV0UmVjZWl2ZUFkZHJlc3MxID0gJzB4YTk5MjcwOTU5MWRlYjc0NzFmYjMwZGRhMGYzMzlkYjdhYjU0OGQzMzkxYTg5ZDNmMWZhMGM3MmQyMDkyNjc1Zic7XG4gICAgY29uc3QgY29sZFdhbGxldFJlY2VpdmVBZGRyZXNzMiA9ICcweGMzYWMyYTg2ZTM1YjYyYmZhZGE4M2Y2Mzg4ZmYyN2M3ZGRhNzA5MmNmMGI4MjlkMmQxZjRjMjgxM2UyOGFlMzknO1xuXG4gICAgbGV0IGdldEJhbGFuY2VTdHViOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IGdldElucHV0Q29pbnNTdHViOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IGdldEZlZUVzdGltYXRlU3R1Yjogc2lub24uU2lub25TdHViO1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBnZXRCYWxhbmNlU3R1YiA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGdldElucHV0Q29pbnNTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRJbnB1dENvaW5zJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0RmVlRXN0aW1hdGVTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRGZWVFc3RpbWF0ZScgYXMga2V5b2YgU3VpKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2lnbmVkIHRva2VuIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb25zIGZvciBob3Qgd2FsbGV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKGhvdFdhbGxldFJlY2VpdmVBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTE2NzIwMTQ0JywgY29pbk9iamVjdEJhbGFuY2U6ICcxMTY3MjAxNDQnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3MoaG90V2FsbGV0UmVjZWl2ZUFkZHJlc3MxLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTUwMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMTUwMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhob3RXYWxsZXRSZWNlaXZlQWRkcmVzczIpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzEyMDEwMTk3NicsIGNvaW5PYmplY3RCYWxhbmNlOiAnMTIwMTAxOTc2JywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKGhvdFdhbGxldFJlY2VpdmVBZGRyZXNzMiwgY29pblR5cGUpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzIwMDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzIwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcbiAgICAgIGdldElucHV0Q29pbnNTdHViXG4gICAgICAgIC53aXRoQXJncyhob3RXYWxsZXRSZWNlaXZlQWRkcmVzczEsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4OjpkZWVwOjpERUVQJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHg4ZDJkYTU3NzIyN2U5YjcxNjZkYmI5YjNjY2U0ODA5NjhjZjU0OWI0NDhjNjYyNzcxZDExMjRkNjQyMGJmNzkyJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczNDY5Njg3OCcsXG4gICAgICAgICAgICBkaWdlc3Q6ICdCbmlXaUczdjcxb3p6UmlyYjNoTktFUDE2cFR1M0NwTnQzdm95MXV6Z01pOScsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxNTAwJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgICAgLndpdGhBcmdzKGhvdFdhbGxldFJlY2VpdmVBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDBlY2E3ODkwMWUzNDJiMjUxNWZiZjk5YmUyNDNiM2YwMGFkZTBhN2E1MDY3NWIzNzMwN2Y0NGNjMTk1YzkwNDYnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODc3JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0Q4WHFKWHJrVkdvZXI5NTJHdkhCZEJEWHBvZjhINEY0cFJKSjF3U25FU05XJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzExNjYxODE2OCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHg3NjEyMjIzNDBkYjgwZGQ5ZGExNDRkNTUwOTg4NzBiYzgxYTc4ODIwNWUwYmJkZDM0YzJmOGRmMTJjZjQ1YWViJyxcbiAgICAgICAgICAgIHZlcnNpb246ICcyMjcnLFxuICAgICAgICAgICAgZGlnZXN0OiAnOWJ3eWphU0gzWDhhbnJqR1VwRDFOcU1yTEZVdEdTQ0s5TEZ1TGJoalg2OUUnLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTAxOTc2JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgICAgLndpdGhBcmdzKGhvdFdhbGxldFJlY2VpdmVBZGRyZXNzMiwgY29pblR5cGUpXG4gICAgICAgIC5yZXNvbHZlcyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDhlMThiZDE0YzM0ZTMzZjgxYzQ5NGY0ZDZjMThkMDdjNjg2YzdmMzYxOTY4MmQyMDY2YjNmNTVlY2ZlNzA3YTInLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODY4JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzZqWkZ1OFBSV0xKWVBld1c3SzNvNEdMVlBZblJ5Tm8za1A2NDU0ZUx1SFptJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzIwMDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3MoaG90V2FsbGV0UmVjZWl2ZUFkZHJlc3MyKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ODExYTc1MDY2MTM0OTQ1ZTNiMDMzZjRhYzU0ZWM4ODVlYzAzODRmNDJhODA5OTRkODhhNDhkN2QxOGM0MjYwYScsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMjM2JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzMyTjlaeWZlckdERVY3UFkzeWtpalZWS2hMakVGU0w2aXRxY2ZSUEN5NG9XJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEwMTk3NicpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHhmODVhNzM4YTMwNTY2ZDU1ODgwMDIyOGYyZDVjMTkzYTVjYTNkZGJiZGRjYTJhNjVhNDhhOTMzMjMwNjcxNWNjJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczNDY5Njg3NicsXG4gICAgICAgICAgICBkaWdlc3Q6ICc3Z0pnQ01ERVBkUWFNZXVYWjVDRk5vbkZLTVBReXc2azVzVDFScGFIRVhwZScsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMjAwMDAwMDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgIGdldEZlZUVzdGltYXRlU3R1YlxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQURBUUNOTGFWM0luNmJjV2JidWJQTTVJQ1dqUFZKdEVqR1luY2RFU1RXUWd2M2txNXVFUUlBQUFBQUlLQks4WmpxNHl6L1BURlpMZzZqZjZnRFRzb2dpZzYzcGR1WGVpS2d6TVZLQUFqY0JRQUFBQUFBQUFBZ2tmSmVJM3VEb0FwaWNrL2NTb0hrUDBsTnhyUWFFa0ZKS0NiVGJrMFRIYU1DQWdFQUFBRUJBUUFCQVFJQUFBRUNBRExZNVg3bTJSNVZXTm9HZHhWTUx3aFhsVFNPTVgrVnJNbnZyZUcwRVMvTUFRN0tlSkFlTkNzbEZmdjVtK0pEcy9BSzNncDZVR2RiTnpCL1JNd1pYSkJHclc0UkFnQUFBQUFndERvcjZiOUVKSE9TV2RKWkNRZExrS3BTMmNQb0JjNWIyOEtwWDFyZzdsc3kyT1YrNXRrZVZWamFCbmNWVEM4SVY1VTBqakYvbGF6Sjc2M2h0QkV2ek9nREFBQUFBQUFBQU9IMUJRQUFBQUFBJ1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKCcyMzQ1NTA0JykpXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBREFRQ09HTDBVdzA0eitCeEpUMDFzR05COGFHeC9OaGxvTFNCbXMvVmV6K2NIb3FSdUVRSUFBQUFBSUZVeFRUUXlUS002YlZqZUZISFQ4S1ZyVjJmZ1RPQ1g3VW9ldmsycjVKUGNBQWpRQndBQUFBQUFBQUFna2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhTUNBZ0VBQUFFQkFRQUJBUUlBQUFFQ0FOOUFmajRsNlVBUGwzbXNkWEZUZkNOaGFFR1U4YXBkc1NhbzlYUzE3WVVjQWZoYWM0b3dWbTFWaUFBaWp5MWNHVHBjbzkyNzNjb3FaYVNLa3pJd1p4WE1yRzRSQWdBQUFBQWdZemZDV2l5cENtbWU4SUpaaHFuNW5UOCt6b1AzUzdzZlFLZmV6Vzk5WVd2ZlFINCtKZWxBRDVkNXJIVnhVM3dqWVdoQmxQR3FYYkVtcVBWMHRlMkZIT2dEQUFBQUFBQUFBT0gxQlFBQUFBQUEnXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoJzIzNDU1MDQnKSk7XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBwYWNrYWdlSWQsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDMsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdHJhbnNhY3Rpb25zID0gcmVzLnRyYW5zYWN0aW9ucztcbiAgICAgIHRyYW5zYWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgY29uc3QgdHhuMSA9IHRyYW5zYWN0aW9uc1swXTtcbiAgICAgIHR4bjEuc2NhbkluZGV4LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4bjEucmVjb3ZlcnlBbW91bnQuc2hvdWxkLmVxdWFsKCcxNTAwJyk7XG4gICAgICB0eG4xLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdBQUFEQVFDTkxhVjNJbjZiY1diYnViUE01SUNXalBWSnRFakdZbmNkRVNUV1FndjNrcTV1RVFJQUFBQUFJS0JLOFpqcTR5ei9QVEZaTGc2amY2Z0RUc29naWc2M3BkdVhlaUtnek1WS0FBamNCUUFBQUFBQUFBQWdrZkplSTN1RG9BcGljay9jU29Ia1AwbE54clFhRWtGSktDYlRiazBUSGFNQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQURMWTVYN20yUjVWV05vR2R4Vk1Md2hYbFRTT01YK1ZyTW52cmVHMEVTL01BUTdLZUpBZU5Dc2xGZnY1bStKRHMvQUszZ3A2VUdkYk56Qi9STXdaWEpCR3JXNFJBZ0FBQUFBZ3REb3I2YjlFSkhPU1dkSlpDUWRMa0twUzJjUG9CYzViMjhLcFgxcmc3bHN5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpPZ0RBQUFBQUFBQVZsNG5BQUFBQUFBQSdcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4bjIgPSB0cmFuc2FjdGlvbnNbMV07XG4gICAgICB0eG4yLnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMik7XG4gICAgICB0eG4yLnJlY292ZXJ5QW1vdW50LnNob3VsZC5lcXVhbCgnMjAwMCcpO1xuICAgICAgdHhuMi5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQUFBREFRQ09HTDBVdzA0eitCeEpUMDFzR05COGFHeC9OaGxvTFNCbXMvVmV6K2NIb3FSdUVRSUFBQUFBSUZVeFRUUXlUS002YlZqZUZISFQ4S1ZyVjJmZ1RPQ1g3VW9ldmsycjVKUGNBQWpRQndBQUFBQUFBQUFna2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhTUNBZ0VBQUFFQkFRQUJBUUlBQUFFQ0FOOUFmajRsNlVBUGwzbXNkWEZUZkNOaGFFR1U4YXBkc1NhbzlYUzE3WVVjQWZoYWM0b3dWbTFWaUFBaWp5MWNHVHBjbzkyNzNjb3FaYVNLa3pJd1p4WE1yRzRSQWdBQUFBQWdZemZDV2l5cENtbWU4SUpaaHFuNW5UOCt6b1AzUzdzZlFLZmV6Vzk5WVd2ZlFINCtKZWxBRDVkNXJIVnhVM3dqWVdoQmxQR3FYYkVtcVBWMHRlMkZIT2dEQUFBQUFBQUFWbDRuQUFBQUFBQUEnXG4gICAgICApO1xuXG4gICAgICByZXMubGFzdFNjYW5JbmRleC5zaG91bGQuZXF1YWwoMik7XG5cbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRCYWxhbmNlLCA2KTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRJbnB1dENvaW5zLCA0KTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRGZWVFc3RpbWF0ZSwgMik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHVuc2lnbmVkIHRva2VuIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb25zIGZvciBjb2xkIHdhbGxldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGdldEJhbGFuY2VTdHViXG4gICAgICAgIC53aXRoQXJncyhjb2xkV2FsbGV0UmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMTY3MjAxNDQnLCBjb2luT2JqZWN0QmFsYW5jZTogJzExNjcyMDE0NCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhjb2xkV2FsbGV0UmVjZWl2ZUFkZHJlc3MxLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnNDAwMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnNDAwMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhjb2xkV2FsbGV0UmVjZWl2ZUFkZHJlc3MyKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMjAxMDE5NzYnLCBjb2luT2JqZWN0QmFsYW5jZTogJzEyMDEwMTk3NicsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhjb2xkV2FsbGV0UmVjZWl2ZUFkZHJlc3MyLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnNjAwMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnNjAwMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWJcbiAgICAgICAgLndpdGhBcmdzKGNvbGRXYWxsZXRSZWNlaXZlQWRkcmVzczEsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4OjpkZWVwOjpERUVQJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHg5ZTI2MTg2ODVmZmYzOGI5OTkzNTVlOTNhNDY5M2M0YmQxOGY2OGRkNmI2NTRmZjY1NTVmMWY0YWQyMjlkY2RiJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczNDY5Njg3NicsXG4gICAgICAgICAgICBkaWdlc3Q6ICdGNWlHanM5NUNuU2NDdFhIRnVUSmhkWmtmTHlhZ1dSMVFtMXpESDZTbmdNRycsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCc0MDAwJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgICAgLndpdGhBcmdzKGNvbGRXYWxsZXRSZWNlaXZlQWRkcmVzczEpXG4gICAgICAgIC5yZXNvbHZlcyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHg4ZjNmN2M4OTYxOTk3MzI3MTY2YjE1NzExMTdmZjY3MjMyY2NkMTI2N2VjNTJhN2U5NzM2NzdiYTA0MzFmZmFkJyxcbiAgICAgICAgICAgIHZlcnNpb246ICcyMjYnLFxuICAgICAgICAgICAgZGlnZXN0OiAnQVdoN3RQbVM5eG1INGEyellMQ0c3M1lEaXNrQ2Y4dWl6YkxqcENTdEhoTlYnLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignOTg5ODAyNDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4OTE2ZTM1YTBhYzZiNTI1YjdkMzhhNDRiNjY3Mzk0YWFlZTdjZGU0MWRmZmM4NzY5ODBjZmJjODg0NTU5MGNkZCcsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4NzgnLFxuICAgICAgICAgICAgZGlnZXN0OiAnMTRQZk53VXZmY1IzbU5BUzFiY05YVG9hb29WTG5YUUhEZEd4UEZSSlF0WScsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMjAwMDAwMDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3MoY29sZFdhbGxldFJlY2VpdmVBZGRyZXNzMiwgY29pblR5cGUpXG4gICAgICAgIC5yZXNvbHZlcyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweGM1NDhjMjIwNDU0ZDIwZTA3MTJiZDI4NThiMDcyNjBjODI5YTFjODQ3ZjM4MThiNDc4MDU5NjFiNTc0ODEzYWInLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODc3JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzhtQU5kb3NrRzhlTEx5N3pWVTVybUhSQVhWSFV5SlBBQmZTMW1ZSFNtQVl0JyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzYwMDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3MoY29sZFdhbGxldFJlY2VpdmVBZGRyZXNzMilcbiAgICAgICAgLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDM5NmFiMDllZTU4ZmIyYzlmYmNjYTg4N2MwMGVmMDFhMzNkNWJmZTU1YTVkNTA1MTRlMzJhNTlmOTQ4ZTlhMDUnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzIzNCcsXG4gICAgICAgICAgICBkaWdlc3Q6ICdIV0tXNTZkdDhCTnhTVHZYaVc3ZHREVm1NMmd4RWV4RnlOVnpHajhIUFZwNCcsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMDE5NzYnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ZDRiZmVmYTUzMjgyN2Q3NjE5YTU4Mjc5YTg3ZGI4MTYzMmUyNjdjYzQ4ZTZiOTRhYjgxYTQzNjdmMDJjYmVmYScsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4NzknLFxuICAgICAgICAgICAgZGlnZXN0OiAnR0pucDFvWE5qVlhMY1lZNmhxUlY4Um03RzdvYm1rM3M4TmhqMWJGc2ZrVW8nLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTIwMDAwMDAwJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFEQVFDZUpoaG9YLzg0dVprMVhwT2thVHhMMFk5bzNXdGxUL1pWWHg5SzBpbmMyNnh1RVFJQUFBQUFJTkU0bXhzMWhHTW1vdlRVNWRmbkZvb3VXT1BkVm4wblJEUGJ1WHltQUxQTEFBaWdEd0FBQUFBQUFBQWdBV1NWM2RwMGpCRnFJWUpDZzEwMlJ3bld4ZTVjaWg3V2hNVHZRejB4UkNFQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQUttU2NKV1IzcmRISDdNTjJnOHpuYmVyVkkwemthaWRQeCtneHkwZ2ttZGZBWkZ1TmFDc2ExSmJmVGlrUzJaemxLcnVmTjVCMy95SGFZRFB2SWhGV1F6ZHJtNFJBZ0FBQUFBZ0FBUFZlbGViOHBNdTdvL2NwOU13dEdzVU13S0EyOEN2aU8rNU43OWZvTkdwa25DVmtkNjNSeCt6RGRvUE01MjNxMVNOTTVHb25UOGZvTWN0SUpKblgrZ0RBQUFBQUFBQUFPSDFCUUFBQUFBQSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcignMjM0NTUwNCcpKVxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQURBUURGU01JZ1JVMGc0SEVyMG9XTEJ5WU1ncG9jaEg4NEdMUjRCWlliVjBnVHE2MXVFUUlBQUFBQUlITlI5bEY3YjdOZGhXZ3V0a2x4NXZ3TG1paGlqUk9JNlQyNGN0eng5ZzZ0QUFod0Z3QUFBQUFBQUFBZ0FXU1YzZHAwakJGcUlZSkNnMTAyUnduV3hlNWNpaDdXaE1UdlF6MHhSQ0VDQWdFQUFBRUJBUUFCQVFJQUFBRUNBTU9zS29ialcySy9yYWcvWTRqL0o4ZmRwd2tzOExncDB0SDB3b0UrS0s0NUFkUy83NlV5Z24xMkdhV0NlYWg5dUJZeTRtZk1TT2E1U3JnYVEyZndMTDc2cjI0UkFnQUFBQUFnNDIzNTBMcXFhYW51YjVUcGpKbllsS2l1cGpGMlhjK3FnRElvaVBPa1U2akRyQ3FHNDF0aXY2Mm9QMk9JL3lmSDNhY0pMUEM0S2RMUjlNS0JQaWl1T2VnREFBQUFBQUFBQU9IMUJRQUFBQUFBJ1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKCcyMzQ1NTA0JykpO1xuXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleUNvbGRXYWxsZXQsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBwYWNrYWdlSWQsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDMsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHhSZXF1ZXN0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAzMDEwMDllMjYxODY4NWZmZjM4Yjk5OTM1NWU5M2E0NjkzYzRiZDE4ZjY4ZGQ2YjY1NGZmNjU1NWYxZjRhZDIyOWRjZGJhYzZlMTEwMjAwMDAwMDAwMjBkMTM4OWIxYjM1ODQ2MzI2YTJmNGQ0ZTVkN2U3MTY4YTJlNThlM2RkNTY3ZDI3NDQzM2RiYjk3Y2E2MDBiM2NiMDAwOGEwMGYwMDAwMDAwMDAwMDAwMDIwMDE2NDk1ZGRkYTc0OGMxMTZhMjE4MjQyODM1ZDM2NDcwOWQ2YzVlZTVjOGExZWQ2ODRjNGVmNDMzZDMxNDQyMTAyMDIwMTAwMDAwMTAxMDEwMDAxMDEwMjAwMDAwMTAyMDBhOTkyNzA5NTkxZGViNzQ3MWZiMzBkZGEwZjMzOWRiN2FiNTQ4ZDMzOTFhODlkM2YxZmEwYzcyZDIwOTI2NzVmMDE5MTZlMzVhMGFjNmI1MjViN2QzOGE0NGI2NjczOTRhYWVlN2NkZTQxZGZmYzg3Njk4MGNmYmM4ODQ1NTkwY2RkYWU2ZTExMDIwMDAwMDAwMDIwMDAwM2Q1N2E1NzliZjI5MzJlZWU4ZmRjYTdkMzMwYjQ2YjE0MzMwMjgwZGJjMGFmODhlZmI5MzdiZjVmYTBkMWE5OTI3MDk1OTFkZWI3NDcxZmIzMGRkYTBmMzM5ZGI3YWI1NDhkMzM5MWE4OWQzZjFmYTBjNzJkMjA5MjY3NWZlODAzMDAwMDAwMDAwMDAwNTY1ZTI3MDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMSxcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICdjZWRhZGU2YzFjOTllMzUzMWM5MDUzNmZhMjI4ZjBmYjE0OGYzNTYwNWQxYTRlZGZiZThlYjczOWJkYzk5YTQ4JyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8xJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweGE5OTI3MDk1OTFkZWI3NDcxZmIzMGRkYTBmMzM5ZGI3YWI1NDhkMzM5MWE4OWQzZjFmYTBjNzJkMjA5MjY3NWYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc0MDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKCc0MDAwJyksXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc0MDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzQwMDAnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVG9rZW5UcmFuc2ZlcicsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgICAgICAgICBmZWU6IDI1ODAwNTQsXG4gICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzI1ODAwNTQnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAnNzlkNGI5YjU5NGRmMDI4ZmVlMzcyNWE2YWY1MWFlM2FiNmEzNTE5ZTlkMmMzMjJmMmM4ZmQ4MTViOTY0OTYzMjNjNWFiYTdlYTg3NGMxMDJmOTY2ZjFhNjFkM2M5YTQyYjVmMzE3N2M2YTg1NzEyY2YzMTM3MTVhZmRkZjgzZDgnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgd2FsbGV0Q29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuc2lnbmVkVHg6IHtcbiAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgJzAwMDAwMzAxMDBjNTQ4YzIyMDQ1NGQyMGUwNzEyYmQyODU4YjA3MjYwYzgyOWExYzg0N2YzODE4YjQ3ODA1OTYxYjU3NDgxM2FiYWQ2ZTExMDIwMDAwMDAwMDIwNzM1MWY2NTE3YjZmYjM1ZDg1NjgyZWI2NDk3MWU2ZmMwYjlhMjg2MjhkMTM4OGU5M2RiODcyZGNmMWY2MGVhZDAwMDg3MDE3MDAwMDAwMDAwMDAwMDAyMDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEwMjAyMDEwMDAwMDEwMTAxMDAwMTAxMDIwMDAwMDEwMjAwYzNhYzJhODZlMzViNjJiZmFkYTgzZjYzODhmZjI3YzdkZGE3MDkyY2YwYjgyOWQyZDFmNGMyODEzZTI4YWUzOTAxZDRiZmVmYTUzMjgyN2Q3NjE5YTU4Mjc5YTg3ZGI4MTYzMmUyNjdjYzQ4ZTZiOTRhYjgxYTQzNjdmMDJjYmVmYWFmNmUxMTAyMDAwMDAwMDAyMGUzNmRmOWQwYmFhYTY5YTllZTZmOTRlOThjOTlkODk0YThhZWE2MzE3NjVkY2ZhYTgwMzIyODg4ZjNhNDUzYThjM2FjMmE4NmUzNWI2MmJmYWRhODNmNjM4OGZmMjdjN2RkYTcwOTJjZjBiODI5ZDJkMWY0YzI4MTNlMjhhZTM5ZTgwMzAwMDAwMDAwMDAwMDU2NWUyNzAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICBzY2FuSW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICBjb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnZDA1NTE0MDlkMjQ4YWNjZGQ4OTQ3MTNhNGMwM2E2ZDhmMjQwMzQ5YTVlODViOTBhZWYwMTliNWY0MjYwNjJjOCcsXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMicsXG4gICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhjM2FjMmE4NmUzNWI2MmJmYWRhODNmNjM4OGZmMjdjN2RkYTcwOTJjZjBiODI5ZDJkMWY0YzI4MTNlMjhhZTM5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnNjAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcignNjAwMCcpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnNjAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICc2MDAwJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAyNTgwMDU0LFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyNTgwMDU0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJzc5ZDRiOWI1OTRkZjAyOGZlZTM3MjVhNmFmNTFhZTNhYjZhMzUxOWU5ZDJjMzIyZjJjOGZkODE1Yjk2NDk2MzIzYzVhYmE3ZWE4NzRjMTAyZjk2NmYxYTYxZDNjOWE0MmI1ZjMxNzdjNmE4NTcxMmNmMzEzNzE1YWZkZGY4M2Q4JyxcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNjYW5JbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDYpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDQpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgdW5zaWduZWQgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbnMgZm9yIGNvbGQgd2FsbGV0IHdpdGggc2VlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGdldEJhbGFuY2VTdHViXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMjAxOTk3ODgnLCBjb2luT2JqZWN0QmFsYW5jZTogJzEyMDE5OTc4OCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MxLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTUwMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMTUwMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MyKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMjAxOTk3ODgnLCBjb2luT2JqZWN0QmFsYW5jZTogJzEyMDE5OTc4OCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MyLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMjAwMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMjAwMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pO1xuXG4gICAgICBnZXRJbnB1dENvaW5zU3R1YlxuICAgICAgICAud2l0aEFyZ3Moc2VlZFJlY2VpdmVBZGRyZXNzMSwgY29pblR5cGUpXG4gICAgICAgIC5yZXNvbHZlcyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweGE3YThjOTEwMjgwMzVhYjQ5OTc3ZTcyYjA4NGUxNDVlYjFjMWRkY2ZlMmUwNjkyNWYwZjgzM2NlZjJkMWY2OWYnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODc4JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0NLaXVYa0ZNYVZrbjEyaUtpblpDcjlhREhmR3BDUWlQZHlaVVF6TkRKOVF4JyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzE1MDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3Moc2VlZFJlY2VpdmVBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDVlZWEwMzUzZjA3ODAxNmI3MWE4NGNiNDk0ZTZmNzkxZTk3Y2I4ZGU1MzQ0ZGVmM2JhZWRmZmM4OWMyN2E0YjUnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODc5JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzZLcXJ3aktIaEpDZTREWGZkSDJ5TUxHOGJYR2NTUW9UZUp5NHNoZ2hEYlRaJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEyMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHg4NmU3MjhmZDcyNDJiM2JlNjBlOWMxOTQxYWRkMmM0N2ZiNjU1Nzc5MTA4YzM1MDBhMjE2MzEwMjE4NzQ4ZTJkJyxcbiAgICAgICAgICAgIHZlcnNpb246ICcxNDgnLFxuICAgICAgICAgICAgZGlnZXN0OiAnQjl6SmZFWWtpWG5BdUxFNnEzWEZKZUxiUGMzSzdxbWpnRHJIVnZKblQ1d2EnLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTk5Nzg4JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgICAgLndpdGhBcmdzKHNlZWRSZWNlaXZlQWRkcmVzczIsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4OjpkZWVwOjpERUVQJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHhlMTkxZjE2NmU3MWIxZWYyMGZmZGEwYzkxYjI0ZGE5NWVjYzkzYjY1N2M0NjRkOGEwNmY1NjFkNDY5MjcyMmYwJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczNDY5Njg4MCcsXG4gICAgICAgICAgICBkaWdlc3Q6ICc0S3loemZQUWNUVXJucDRVQnZSM0dzUEUzRExjY1ZERVBnQmpEeGFXVlJjcicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcyMDAwJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgICAgLndpdGhBcmdzKHNlZWRSZWNlaXZlQWRkcmVzczIpXG4gICAgICAgIC5yZXNvbHZlcyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHhkMzJmOTQ4ODlkMGJmYzA1YzI0ZWQ2YzAyM2Q1ZDNkMzY1NDI5NGE4MzdkODUwZDM3MzhiMGUzNTJlMWY0ODY3JyxcbiAgICAgICAgICAgIHZlcnNpb246ICczNDY5Njg4MCcsXG4gICAgICAgICAgICBkaWdlc3Q6ICc1UG8xMllpdUwzTmtOVEF2eVd2Und0UjU1SnZpeVBWYmNEZlR2Q3dRclRrcicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMjAwMDAwMDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ZmQ2NmRiZmU3YTE0OTdmMjEwNzQ3YjA1MzJmNjJlNjkyNmNiMTQ0Yzc1ZTUxOWYyZGZmZjE3YTRmNmU1MTVmYycsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMTQ5JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzVlVmNiYm0zTlRGNmpxYWRUYjRHalpNem43NUtEWkJxY3NwUnozc1ZycGJSJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzE5OTc4OCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuXG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFEQVFDbnFNa1FLQU5hdEpsMzV5c0lUaFJlc2NIZHorTGdhU1h3K0RQTzh0SDJuNjV1RVFJQUFBQUFJS2c4Wk1lRjJYTExiQmRQUXlQbWZ1OGJZcUNCMnovdWFSNXNHN0ZvYmw3VkFBamNCUUFBQUFBQUFBQWdpTW1lRGJpY3VoMjVmTHJkZnpleXBMS2l0QUlsbEtEQVN5dk1nMzVMSkFRQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQU5JQlZtNXFDOEFnL1M1dmN1bTk0aUkvVlExazJxWVRtTTJSZkM5MUFUSktBVjdxQTFQd2VBRnJjYWhNdEpUbTk1SHBmTGplVTBUZTg3cnQvOGljSjZTMXIyNFJBZ0FBQUFBZ1R4NGkrUmdjTGRBNXErdnltTStXRVRwdkNucUVxUjRvWTdScVFkTmoyb3pTQVZadWFndkFJUDB1YjNMcHZlSWlQMVVOWk5xbUU1ak5rWHd2ZFFFeVN1Z0RBQUFBQUFBQUFPSDFCUUFBQUFBQSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcignMjM0NTUwNCcpKVxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQURBUURoa2ZGbTV4c2U4Zy85b01rYkpOcVY3TWs3Wlh4R1RZb0c5V0hVYVNjaThMQnVFUUlBQUFBQUlERnZva2luQnhvV3llTDY0bFBNOW1KVk9wQjBVT2paakR1K0oxc2tQY1FQQUFqUUJ3QUFBQUFBQUFBZ2lNbWVEYmljdWgyNWZMcmRmemV5cExLaXRBSWxsS0RBU3l2TWczNUxKQVFDQWdFQUFBRUJBUUFCQVFJQUFBRUNBQytsMkRsTDFyN0ZVbHVWVUw5RHZnZGJnMEl0QVFmQVhIQUpST1BxN0NiNUFkTXZsSWlkQy93RndrN1d3Q1BWMDlObFFwU29OOWhRMDNPTERqVXVIMGhuc0c0UkFnQUFBQUFnUVVXSjAvdFBadCsrcTdLbkxZbUFQV1JSb25uL1cvWEdZeHp4WTY4OXpLOHZwZGc1UzlhK3hWSmJsVkMvUTc0SFc0TkNMUUVId0Z4d0NVVGo2dXdtK2VnREFBQUFBQUFBQU9IMUJRQUFBQUFBJ1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKCcyMzQ1NTA0JykpO1xuXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleVdpdGhTZWVkLFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogcGFja2FnZUlkLFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiAzLFxuICAgICAgICBzZWVkOiAnMTIzJyxcbiAgICAgIH0pO1xuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0eFJlcXVlc3RzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICcwMDAwMDMwMTAwYTdhOGM5MTAyODAzNWFiNDk5NzdlNzJiMDg0ZTE0NWViMWMxZGRjZmUyZTA2OTI1ZjBmODMzY2VmMmQxZjY5ZmFlNmUxMTAyMDAwMDAwMDAyMGE4M2M2NGM3ODVkOTcyY2I2YzE3NGY0MzIzZTY3ZWVmMWI2MmEwODFkYjNmZWU2OTFlNmMxYmIxNjg2ZTVlZDUwMDA4ZGMwNTAwMDAwMDAwMDAwMDAwMjA4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0MDIwMjAxMDAwMDAxMDEwMTAwMDEwMTAyMDAwMDAxMDIwMGQyMDE1NjZlNmEwYmMwMjBmZDJlNmY3MmU5YmRlMjIyM2Y1NTBkNjRkYWE2MTM5OGNkOTE3YzJmNzUwMTMyNGEwMTVlZWEwMzUzZjA3ODAxNmI3MWE4NGNiNDk0ZTZmNzkxZTk3Y2I4ZGU1MzQ0ZGVmM2JhZWRmZmM4OWMyN2E0YjVhZjZlMTEwMjAwMDAwMDAwMjA0ZjFlMjJmOTE4MWMyZGQwMzlhYmViZjI5OGNmOTYxMTNhNmYwYTdhODRhOTFlMjg2M2I0NmE0MWQzNjNkYThjZDIwMTU2NmU2YTBiYzAyMGZkMmU2ZjcyZTliZGUyMjIzZjU1MGQ2NGRhYTYxMzk4Y2Q5MTdjMmY3NTAxMzI0YWU4MDMwMDAwMDAwMDAwMDA1NjVlMjcwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAxLFxuICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICBzaWduYWJsZUhleDogJzIyZGVmYTkxMDFlYTNhMzgzOWMzYzAwMjZiMjdhOTgzNzE2NWMwN2ZjZWNmZjhlOTQzNTNiY2YzZDVhMDEzMjgnLFxuICAgICAgICAgICAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzk5OTk5OS85NDg2MjYyMi8xNTczNjM1MDkvMScsXG4gICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhkMjAxNTY2ZTZhMGJjMDIwZmQyZTZmNzJlOWJkZTIyMjNmNTUwZDY0ZGFhNjEzOThjZDkxN2MyZjc1MDEzMjRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTUwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcignMTUwMCcpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHg4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTUwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICcxNTAwJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAyNTgwMDU0LFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyNTgwMDU0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJ2NhMGEwMTRiYTZmMTExMDZhMTU1ZWY4ZTJjYWIyZjc2ZDI3N2U0ZjAxY2ZmYTU5MWE5YjQwODQ4MzQzODIzYjNkOTEwNzUyYTQ5Yzk2YmY1ODEzOTg1MjA2ZTIzYzlmOWNkM2E3OGYxY2NjZjVjZjg4ZGVmNTJiNTczY2VkYzkzJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICcwMDAwMDMwMTAwZTE5MWYxNjZlNzFiMWVmMjBmZmRhMGM5MWIyNGRhOTVlY2M5M2I2NTdjNDY0ZDhhMDZmNTYxZDQ2OTI3MjJmMGIwNmUxMTAyMDAwMDAwMDAyMDMxNmZhMjQ4YTcwNzFhMTZjOWUyZmFlMjUzY2NmNjYyNTUzYTkwNzQ1MGU4ZDk4YzNiYmUyNzViMjQzZGM0MGYwMDA4ZDAwNzAwMDAwMDAwMDAwMDAwMjA4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0MDIwMjAxMDAwMDAxMDEwMTAwMDEwMTAyMDAwMDAxMDIwMDJmYTVkODM5NGJkNmJlYzU1MjViOTU1MGJmNDNiZTA3NWI4MzQyMmQwMTA3YzA1YzcwMDk0NGUzZWFlYzI2ZjkwMWQzMmY5NDg4OWQwYmZjMDVjMjRlZDZjMDIzZDVkM2QzNjU0Mjk0YTgzN2Q4NTBkMzczOGIwZTM1MmUxZjQ4NjdiMDZlMTEwMjAwMDAwMDAwMjA0MTQ1ODlkM2ZiNGY2NmRmYmVhYmIyYTcyZDg5ODAzZDY0NTFhMjc5ZmY1YmY1YzY2MzFjZjE2M2FmM2RjY2FmMmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOWU4MDMwMDAwMDAwMDAwMDA1NjVlMjcwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICBzaWduYWJsZUhleDogJzJlNmJiMTcxNjZlZTE5NzEwMjcyOWJkYTQ3YjA2YjdjMGI1OTYyYmY0MzFiYmIwNTYyYjkxZTI2N2I3NTEyOWQnLFxuICAgICAgICAgICAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzk5OTk5OS85NDg2MjYyMi8xNTczNjM1MDkvMicsXG4gICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgyZmE1ZDgzOTRiZDZiZWM1NTI1Yjk1NTBiZjQzYmUwNzViODM0MjJkMDEwN2MwNWM3MDA5NDRlM2VhZWMyNmY5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcignMjAwMCcpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHg4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICcyMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAyNTgwMDU0LFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyNTgwMDU0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJ2NhMGEwMTRiYTZmMTExMDZhMTU1ZWY4ZTJjYWIyZjc2ZDI3N2U0ZjAxY2ZmYTU5MWE5YjQwODQ4MzQzODIzYjNkOTEwNzUyYTQ5Yzk2YmY1ODEzOTg1MjA2ZTIzYzlmOWNkM2E3OGYxY2NjZjVjZjg4ZGVmNTJiNTczY2VkYzkzJyxcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNjYW5JbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDYpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDQpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0NyZWF0ZSBCcm9hZGNhc3RhYmxlIE1QQyBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnY3JlYXRlIGJyb2FkY2FzdGFibGUgTVBDIHRyYW5zYWN0aW9uIGZvciBPVkMgc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2lnbmF0dXJlU2hhcmVzID0ge1xuICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eFJlcXVlc3Q6IHtcbiAgICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICAgJzAwMDAwMjAwMDhjODhiOTAyZjAwMDAwMDAwMDAyMGRmNDA3ZTNlMjVlOTQwMGY5Nzc5YWM3NTcxNTM3YzIzNjE2ODQxOTRmMWFhNWRiMTI2YThmNTc0YjVlZDg1MWMwMjAyMDAwMTAxMDAwMDAxMDEwMjAwMDAwMTAxMDAwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxMDE0NTUzYjBmNmY3OWVkOTU5NDIxNDE4MzVkZTNhYjA4NmJmMzhkMWYxZDk2MjcyOTgxZTEzOTBiODRmYjg2YjM2YzkwMDAwMDAwMDAwMDAwMDIwMGIxZGU4ZmRmYmJiOGE2ZmEyYzY1ZWM3OWE1NTcwM2M5YTlmMGMyNjg1YTc2OGYyYjgxYTA0MjZiYzkzMmVjMzAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjFlODAzMDAwMDAwMDAwMDAwYTQ4ODIxMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICBjb2luOiAndHN1aScsXG4gICAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnYTRjZThlYjExMzYyY2Q0NWMwOTkzNmU3NDUwNDRkYzc4YjI2ODllNWQ4MTQ3YjllYTlhN2RlNDNlZTQzOTIzYScsXG4gICAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MDE2NDk1ZGRkYTc0OGMxMTZhMjE4MjQyODM1ZDM2NDcwOWQ2YzVlZTVjOGExZWQ2ODRjNGVmNDMzZDMxNDQyMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnNzk4MDAyMTIwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IDgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogWzc5ODAwMjEyMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhkZjQwN2UzZTI1ZTk0MDBmOTc3OWFjNzU3MTUzN2MyMzYxNjg0MTk0ZjFhYTVkYjEyNmE4ZjU3NGI1ZWQ4NTFjJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc3OTgwMDIxMjAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnNzk4MDAyMTIwJyxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZmVlOiAyMTk3NjY4LFxuICAgICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzIxOTc2NjgnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICc3OWQ0YjliNTk0ZGYwMjhmZWUzNzI1YTZhZjUxYWUzYWI2YTM1MTllOWQyYzMyMmYyYzhmZDgxNWI5NjQ5NjMyM2M1YWJhN2VhODc0YzEwMmY5NjZmMWE2MWQzYzlhNDJiNWYzMTc3YzZhODU3MTJjZjMxMzcxNWFmZGRmODNkOCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgICAgICAgICAgICB0bzogJ3VzZXInLFxuICAgICAgICAgICAgICAgICAgICBzaGFyZTpcbiAgICAgICAgICAgICAgICAgICAgICAnNmY0NzA5MDZkZjg4YzMzYjI3YzhkMTEzZWQ5NDRlZDBhNGZjNDk5YmE2Y2M3NmYwMGI4OTI0OTQyODEyZDc4MzU3OTJlZTQ1NWNiYzg5NDFmYWJhN2JjYzkzYjE1YTljZDE5OGEyMGRjM2YwYjYyOWY1ZmRjZWFiMzRlNjYxMDAnLFxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNTaGFyZTogJzI4NDQ5NmNhMDRjYzYwMzgyM2Y3OTkzYWVmMTNmNzJmMzMxZDk3MDg1YjIxODRkN2E2YTQ2M2E5MGFhOTI3ZDAnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHNzVmVyc2lvbjogJzAuMC4xJyxcbiAgICAgICAgICAgIG92YzogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZWRkc2FTaWduYXR1cmU6IHtcbiAgICAgICAgICAgICAgICAgIHk6ICcyODQ0OTZjYTA0Y2M2MDM4MjNmNzk5M2FlZjEzZjcyZjMzMWQ5NzA4NWIyMTg0ZDdhNmE0NjNhOTBhYTkyN2QwJyxcbiAgICAgICAgICAgICAgICAgIFI6ICc2ZjQ3MDkwNmRmODhjMzNiMjdjOGQxMTNlZDk0NGVkMGE0ZmM0OTliYTZjYzc2ZjAwYjg5MjQ5NDI4MTJkNzgzJyxcbiAgICAgICAgICAgICAgICAgIHNpZ21hOiAnNWMyM2E4YzcyY2UxOTI3MzFlNzAyZGE0NjBhZWE3OWVkNjYzMzRiNGE3ODNkY2Y2ZGQyNzU4MzQ3ZDZjOWYwZCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHNpZ25hdHVyZVNoYXJlcyk7XG5cbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAnQUFBQ0FBaklpNUF2QUFBQUFBQWczMEIrUGlYcFFBK1hlYXgxY1ZOOEkyRm9RWlR4cWwyeEpxajFkTFh0aFJ3Q0FnQUJBUUFBQVFFQ0FBQUJBUUFCWkpYZDJuU01FV29oZ2tLRFhUWkhDZGJGN2x5S0h0YUV4TzlEUFRGRUlRRkZVN0QyOTU3WldVSVVHRFhlT3JDR3Z6alI4ZGxpY3BnZUU1QzRUN2hyTnNrQUFBQUFBQUFBSUFzZDZQMzd1NHB2b3NaZXg1cFZjRHlhbnd3bWhhZG84cmdhQkNhOGt5N0RBV1NWM2RwMGpCRnFJWUpDZzEwMlJ3bld4ZTVjaWg3V2hNVHZRejB4UkNIb0F3QUFBQUFBQUtTSUlRQUFBQUFBQUE9PScsXG4gICAgICAgICAgICBzY2FuSW5kZXg6IDAsXG4gICAgICAgICAgICBzaWduYXR1cmU6XG4gICAgICAgICAgICAgICdBRzlIQ1FiZmlNTTdKOGpSRSsyVVR0Q2svRW1icHN4MjhBdUpKSlFvRXRlRFhDT294eXpoa25NZWNDMmtZSzZubnRaak5MU25nOXoyM1NkWU5IMXNudzBvUkpiS0JNeGdPQ1AzbVRydkUvY3ZNeDJYQ0ZzaGhOZW1wR09wQ3FrbjBBPT0nLFxuICAgICAgICAgICAgcmVjb3ZlcnlBbW91bnQ6ICc3OTgwMDIxMjAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGxhc3RTY2FuSW5kZXg6IDAsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdjcmVhdGUgYnJvYWRjYXN0YWJsZSBNUEMgdG9rZW4gdHJhbnNhY3Rpb24gZm9yIE9WQyBzaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVTaGFyZXMgPSB7XG4gICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdDoge1xuICAgICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgICAnMDAwMDA0MDEwMDcyYWQ5OTEzMGFiZDM3OTBkYjdiYWM4OTA4ZDUwZDM0MTJhODAwYThmY2QxMGMxY2ZiZDY0YjgyMTU1Mzc1NThhMTZlMTEwMjAwMDAwMDAwMjAwN2I4NWQzOGI2ZTFiNDg1ZjE0NTU5MzBkMjcyOTYxMDgwODFjYWFjZDc2NjRjNDhkN2Q1ZjQ4NTcyZWUyYmJkMDEwMDRjMWNjY2M2ZDAzNTEwYmQ3NGE5NWY4MWIyYjdkYTA4MTE5Y2IxOGUyYzU2NTQzNWU3YWQ3MTVlNmFhZGM1YTc2OTZlMTEwMjAwMDAwMDAwMjA4ZmI0YTMzNGI4MjlhY2RlY2JmYTJhMzI4NjQyYWZhMjRkNmY5NTM3NDBmNzY4MzA4MGVlMGU0YjNkM2E5NjJmMDAwOGY4MmEwMDAwMDAwMDAwMDAwMDIwOTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMzAzMDMwMTAwMDAwMTAxMDEwMDAyMDEwMDAwMDEwMTAyMDAwMTAxMDIwMTAwMDEwMzAwMDE2NDk1ZGRkYTc0OGMxMTZhMjE4MjQyODM1ZDM2NDcwOWQ2YzVlZTVjOGExZWQ2ODRjNGVmNDMzZDMxNDQyMTAxOTgxMTRmMmRkZWZlM2YxNmQ5ZDJlMDE2MTk0YjUyYzRjM2FmNDMwYzE2MDFiZGIzNTM5Y2JkMjM3Y2JjYTA2ODY5NmUxMTAyMDAwMDAwMDAyMGI1MTZhMTViNTAzNGJjZDQyNDI1NDQwYzU2NGNmMzZmNDM5NTQyZjg4NjcxZWY3OTlkZGUwNjYxZTc4OWEwMDkwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxZTgwMzAwMDAwMDAwMDAwMGY4NjQxMTAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnNDQ5YWRlMTk1OTA2ODViMWViMGNlZmNiMmVjNDFmNGM2OGUzN2Q4ZWFmNzU2ODdjNDU5NjVlMjg4ZTcxY2FhNCcsXG4gICAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MDE2NDk1ZGRkYTc0OGMxMTZhMjE4MjQyODM1ZDM2NDcwOWQ2YzVlZTVjOGExZWQ2ODRjNGVmNDMzZDMxNDQyMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTEwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiBbMTEwMDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTEwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICcxMTAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZmVlOiAxMTM5OTYwLFxuICAgICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzExMzk5NjAnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICc3OWQ0YjliNTk0ZGYwMjhmZWUzNzI1YTZhZjUxYWUzYWI2YTM1MTllOWQyYzMyMmYyYzhmZDgxNWI5NjQ5NjMyM2M1YWJhN2VhODc0YzEwMmY5NjZmMWE2MWQzYzlhNDJiNWYzMTc3YzZhODU3MTJjZjMxMzcxNWFmZGRmODNkOCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgICAgICAgICAgICB0bzogJ3VzZXInLFxuICAgICAgICAgICAgICAgICAgICBzaGFyZTpcbiAgICAgICAgICAgICAgICAgICAgICAnMjNjNTNlNTRmMjcxMzg2NTc4ZDk5YTY5MzJmZjcwODk2MDkwMDE4OGFiM2U1YmNlMWFlYzFmMDE5ZTUzYTg1ZDMxOTdmOGI2NGE5ZmVhZGJlZGJiZDM3YWE0MmU0NDQ0NjA5ZjAwMDc0M2FkYzBhOTRmZmNjNzIxYzcwNTdkMDQnLFxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNTaGFyZTogJzI4NDQ5NmNhMDRjYzYwMzgyM2Y3OTkzYWVmMTNmNzJmMzMxZDk3MDg1YjIxODRkN2E2YTQ2M2E5MGFhOTI3ZDAnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0c3NWZXJzaW9uOiAnMC4wLjEnLFxuICAgICAgICAgICAgb3ZjOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlZGRzYVNpZ25hdHVyZToge1xuICAgICAgICAgICAgICAgICAgeTogJzI4NDQ5NmNhMDRjYzYwMzgyM2Y3OTkzYWVmMTNmNzJmMzMxZDk3MDg1YjIxODRkN2E2YTQ2M2E5MGFhOTI3ZDAnLFxuICAgICAgICAgICAgICAgICAgUjogJzIzYzUzZTU0ZjI3MTM4NjU3OGQ5OWE2OTMyZmY3MDg5NjA5MDAxODhhYjNlNWJjZTFhZWMxZjAxOWU1M2E4NWQnLFxuICAgICAgICAgICAgICAgICAgc2lnbWE6ICc5YjUyYjQ1YzRkNTM5ZmFkOTA2ODA1ZjlmY2JhYjZmYjVlNDE1MjI0M2NhZWUyNTI4NTVjMzZjMzQwNDhjYzA5JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24oc2lnbmF0dXJlU2hhcmVzKTtcblxuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICdBQUFFQVFCeXJaa1RDcjAza050N3JJa0kxUTAwRXFnQXFQelJEQno3MWt1Q0ZWTjFXS0Z1RVFJQUFBQUFJQWU0WFRpMjRiU0Y4VVZaTU5KeWxoQ0FnY3FzMTJaTVNOZlY5SVZ5N2l1OUFRQk1ITXpHMERVUXZYU3BYNEd5dDlvSUVaeXhqaXhXVkRYbnJYRmVhcTNGcDJsdUVRSUFBQUFBSUkrMG96UzRLYXpleS9vcU1vWkNyNkpOYjVVM1FQZG9NSUR1RGtzOU9wWXZBQWo0S2dBQUFBQUFBQUFna2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhTURBd0VBQUFFQkFRQUNBUUFBQVFFQ0FBRUJBZ0VBQVFNQUFXU1YzZHAwakJGcUlZSkNnMTAyUnduV3hlNWNpaDdXaE1UdlF6MHhSQ0VCbUJGUExkNytQeGJaMHVBV0dVdFN4TU92UXd3V0FiMnpVNXk5STN5OG9HaHBiaEVDQUFBQUFDQzFGcUZiVURTODFDUWxSQXhXVFBOdlE1VkMrSVp4NzNtZDNnWmg1NG1nQ1FGa2xkM2FkSXdSYWlHQ1FvTmROa2NKMXNYdVhJb2Uxb1RFNzBNOU1VUWg2QU1BQUFBQUFBRDRaQkVBQUFBQUFBQT0nLFxuICAgICAgICAgICAgc2NhbkluZGV4OiAwLFxuICAgICAgICAgICAgc2lnbmF0dXJlOlxuICAgICAgICAgICAgICAnQUNQRlBsVHljVGhsZU5tYWFUTC9jSWxna0FHSXF6NWJ6aHJzSHdHZVU2aGRtMUswWEUxVG42MlFhQVg1L0xxMisxNUJVaVE4cnVKU2hWdzJ3MEJJekFrb1JKYktCTXhnT0NQM21UcnZFL2N2TXgyWENGc2hoTmVtcEdPcENxa24wQT09JyxcbiAgICAgICAgICAgIHJlY292ZXJ5QW1vdW50OiAnMTEwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGxhc3RTY2FuSW5kZXg6IDAsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdjcmVhdGUgYnJvYWRjYXN0YWJsZSBNUEMgdHJhbnNhY3Rpb24gZm9yIE9WQyBzaWduZWQgY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVTaGFyZXMgPSB7XG4gICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdDoge1xuICAgICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgICAnMDAwMDAyMDAwODIwYzJkNjA1MDAwMDAwMDAwMDIwMDE2NDk1ZGRkYTc0OGMxMTZhMjE4MjQyODM1ZDM2NDcwOWQ2YzVlZTVjOGExZWQ2ODRjNGVmNDMzZDMxNDQyMTAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMGE5OTI3MDk1OTFkZWI3NDcxZmIzMGRkYTBmMzM5ZGI3YWI1NDhkMzM5MWE4OWQzZjFmYTBjNzJkMjA5MjY3NWYwMTU2OGJlZmZlNzY1MTAzM2EwODFhNzM3NWEzYmI0M2Q0ZDJhOGUyOTBhMzk2ZTgyNjIzNmU3M2QwOTczYjQ5YjVkMDAwMDAwMDAwMDAwMDAwMjA4YmMwNzY0YTQ1NGRlNzUzOGI1ZWNlYTZmZDBiZDIyMWM5Yzg1MjA3YWYyOTc2MTI5NDRhOTY3ZDQzZThkZDNiYTk5MjcwOTU5MWRlYjc0NzFmYjMwZGRhMGYzMzlkYjdhYjU0OGQzMzkxYTg5ZDNmMWZhMGM3MmQyMDkyNjc1ZmU4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgICBzY2FuSW5kZXg6IDEsXG4gICAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICc4NTdhMmYyNjY4N2MwMTFhNjFhMDYwYTQxZDRjODBjMTBiMmZkMzFlOThmZTY3MDRkNmJjZGEyNmY1N2IwM2JiJyxcbiAgICAgICAgICAgICAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzEnLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhhOTkyNzA5NTkxZGViNzQ3MWZiMzBkZGEwZjMzOWRiN2FiNTQ4ZDMzOTFhODlkM2YxZmEwYzcyZDIwOTI2NzVmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc5Nzk2MDQ4MCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6IFs5Nzk2MDQ4MF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc5Nzk2MDQ4MCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aScsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICc5Nzk2MDQ4MCcsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1RyYW5zZmVyJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgICAgICAgICAgIGZlZTogMjE5NzY2OCxcbiAgICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyMTk3NjY4JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgICAnNzlkNGI5YjU5NGRmMDI4ZmVlMzcyNWE2YWY1MWFlM2FiNmEzNTE5ZTlkMmMzMjJmMmM4ZmQ4MTViOTY0OTYzMjNjNWFiYTdlYTg3NGMxMDJmOTY2ZjFhNjFkM2M5YTQyYjVmMzE3N2M2YTg1NzEyY2YzMTM3MTVhZmRkZjgzZDgnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW10sXG4gICAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZToge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgICAgICAgICAgICAgdG86ICd1c2VyJyxcbiAgICAgICAgICAgICAgICAgICAgc2hhcmU6XG4gICAgICAgICAgICAgICAgICAgICAgJ2NkZmUxNWQ3YzBmODBmOGFhZDg5ZDg3ODcwNjY3M2NlMjQyOTQ3YjEyNjg1MmMwMGVlMzA5ZWYwNWY3YTgzMDFiMmU5MDJiOTBkMzdlYTdkZmU4NmNlNzljN2E5OWIyYjI3YTE3NWMzZjcxNGMzMTBmZDllMTBlYTg3N2NjNjBmJyxcbiAgICAgICAgICAgICAgICAgICAgcHVibGljU2hhcmU6ICdlNDQ1YmQwOTJhNDY3ZGY1NzcwMDFjZmJkNjA4MWIxNDQ1Y2EwZjc1MTQ3MjMzNTYxZWQyZjUzZjZhMzBlNDVhJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgd2FsbGV0Q29pbjogJ3RzdWknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRzc1ZlcnNpb246ICcwLjAuMScsXG4gICAgICAgICAgICBvdmM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVkZHNhU2lnbmF0dXJlOiB7XG4gICAgICAgICAgICAgICAgICB5OiAnZTQ0NWJkMDkyYTQ2N2RmNTc3MDAxY2ZiZDYwODFiMTQ0NWNhMGY3NTE0NzIzMzU2MWVkMmY1M2Y2YTMwZTQ1YScsXG4gICAgICAgICAgICAgICAgICBSOiAnY2RmZTE1ZDdjMGY4MGY4YWFkODlkODc4NzA2NjczY2UyNDI5NDdiMTI2ODUyYzAwZWUzMDllZjA1ZjdhODMwMScsXG4gICAgICAgICAgICAgICAgICBzaWdtYTogJzJhMzEzMjliMmU1ZWY4YzNmMjIyZWI5MWNkOWQ3MGU3MTZmMjI5ZWUxOWQzY2E5NDE3YzhhY2MxNmIxZGExMDAnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHhSZXF1ZXN0OiB7XG4gICAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAgICcwMDAwMDIwMDA4MDBjMmViMGIwMDAwMDAwMDAwMjAwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxMDIwMjAwMDEwMTAwMDAwMTAxMDIwMDAwMDEwMTAwYzNhYzJhODZlMzViNjJiZmFkYTgzZjYzODhmZjI3YzdkZGE3MDkyY2YwYjgyOWQyZDFmNGMyODEzZTI4YWUzOTAxZDY4ZmViNDc4MDg4NmNjZmE4MWEzNzAzNjk1OGVjOWM4YmZhYmZlNzVhMGJiN2M0ZDFhNDU4Nzk5MjM0M2Y1YmNmMDAwMDAwMDAwMDAwMDAyMDVhZDRmNjMxYTM3OGY4YjA5NTQyZDRkZjY2OTQyYjZkYWJiMmY2NWNiMjBjZjhmNjI4YzkxYzY0ZjkzNTJlNGVjM2FjMmE4NmUzNWI2MmJmYWRhODNmNjM4OGZmMjdjN2RkYTcwOTJjZjBiODI5ZDJkMWY0YzI4MTNlMjhhZTM5ZTgwMzAwMDAwMDAwMDAwMGE0ODgyMTAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMixcbiAgICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICBzaWduYWJsZUhleDogJ2YyYjU2YTc0ZTc4N2IyYTk4ZGVjZjE4OWU3MWIxZTBjNWQ0Y2NlZTg4Njk3YjM5OTFhNDhkZTI5MTA2NzYwMjAnLFxuICAgICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMicsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweGMzYWMyYTg2ZTM1YjYyYmZhZGE4M2Y2Mzg4ZmYyN2M3ZGRhNzA5MmNmMGI4MjlkMmQxZjRjMjgxM2UyOGFlMzknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzIwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiA4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6IFsyMDAwMDAwMDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MDE2NDk1ZGRkYTc0OGMxMTZhMjE4MjQyODM1ZDM2NDcwOWQ2YzVlZTVjOGExZWQ2ODRjNGVmNDMzZDMxNDQyMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzIwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1RyYW5zZmVyJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgICAgICAgICAgIGZlZTogMjE5NzY2OCxcbiAgICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyMTk3NjY4JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgICAnNzlkNGI5YjU5NGRmMDI4ZmVlMzcyNWE2YWY1MWFlM2FiNmEzNTE5ZTlkMmMzMjJmMmM4ZmQ4MTViOTY0OTYzMjNjNWFiYTdlYTg3NGMxMDJmOTY2ZjFhNjFkM2M5YTQyYjVmMzE3N2M2YTg1NzEyY2YzMTM3MTVhZmRkZjgzZDgnLFxuICAgICAgICAgICAgICAgICAgICAgIGxhc3RTY2FuSW5kZXg6IDIwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW10sXG4gICAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZToge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgICAgICAgICAgICAgdG86ICd1c2VyJyxcbiAgICAgICAgICAgICAgICAgICAgc2hhcmU6XG4gICAgICAgICAgICAgICAgICAgICAgJzM1MTg2MTNlYTVjZWZhMzZjZDIyZTFiMDkyNzQyZDhkMDUyNzQ0MTg4NTE4MDQwMzk3ZjFhNjVhNzU0ZjllOTUzMjQ4ODkzMTJkNzAxNDY4MTFkYmRjMmE5NjI0NWM1MThlMTZmYzYxYmQxYTVhMmI1M2I1M2ViY2VjNWQ0YTAzJyxcbiAgICAgICAgICAgICAgICAgICAgcHVibGljU2hhcmU6ICc0YjE0M2ExMjgzNWJkZGEwNDgzMWE5ZWQ4NTFmOWVhZGQ3YmE1YjQ2ZTljMDdmZDA4N2I3NTFmNDZhM2YzNjRkJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgd2FsbGV0Q29pbjogJ3RzdWknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRzc1ZlcnNpb246ICcwLjAuMScsXG4gICAgICAgICAgICBvdmM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVkZHNhU2lnbmF0dXJlOiB7XG4gICAgICAgICAgICAgICAgICB5OiAnNGIxNDNhMTI4MzViZGRhMDQ4MzFhOWVkODUxZjllYWRkN2JhNWI0NmU5YzA3ZmQwODdiNzUxZjQ2YTNmMzY0ZCcsXG4gICAgICAgICAgICAgICAgICBSOiAnMzUxODYxM2VhNWNlZmEzNmNkMjJlMWIwOTI3NDJkOGQwNTI3NDQxODg1MTgwNDAzOTdmMWE2NWE3NTRmOWU5NScsXG4gICAgICAgICAgICAgICAgICBzaWdtYTogJzJkZjQ4ZWQ2MGZmNjJiMGU4Njg5YzVlYmU1NzMxOGYzZGFkNzYyODg2NDc1MjRiNDIwYWNmN2IxYTg0Y2MwMDAnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5jcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbihzaWduYXR1cmVTaGFyZXMpO1xuXG4gICAgICByZXMuc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgJ0FBQUNBQWdnd3RZRkFBQUFBQUFnQVdTVjNkcDBqQkZxSVlKQ2cxMDJSd25XeGU1Y2loN1doTVR2UXoweFJDRUNBZ0FCQVFBQUFRRUNBQUFCQVFDcGtuQ1ZrZDYzUngrekRkb1BNNTIzcTFTTk01R29uVDhmb01jdElKSm5Yd0ZXaSsvK2RsRURPZ2dhYzNXanUwUFUwcWppa0tPVzZDWWpiblBRbHp0SnRkQUFBQUFBQUFBQUlJdkFka3BGVGVkVGkxN09wdjBMMGlISnlGSUhyeWwyRXBSS2xuMUQ2TjA3cVpKd2xaSGV0MGNmc3czYUR6T2R0NnRValRPUnFKMC9INkRITFNDU1oxL29Bd0FBQUFBQUFLU0lJUUFBQUFBQUFBPT0nLFxuICAgICAgICAgICAgc2NhbkluZGV4OiAxLFxuICAgICAgICAgICAgc2lnbmF0dXJlOlxuICAgICAgICAgICAgICAnQU0zK0ZkZkErQStLclluWWVIQm1jODRrS1VleEpvVXNBTzR3bnZCZmVvTUJLakV5bXk1ZStNUHlJdXVSeloxdzV4YnlLZTRaMDhxVUY4aXN3V3Nkb1FEa1JiMEpLa1o5OVhjQUhQdldDQnNVUmNvUGRSUnlNMVllMHZVL2FqRGtXZz09JyxcbiAgICAgICAgICAgIHJlY292ZXJ5QW1vdW50OiAnOTc5NjA0ODAnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAnQUFBQ0FBZ0F3dXNMQUFBQUFBQWdBV1NWM2RwMGpCRnFJWUpDZzEwMlJ3bld4ZTVjaWg3V2hNVHZRejB4UkNFQ0FnQUJBUUFBQVFFQ0FBQUJBUUREckNxRzQxdGl2NjJvUDJPSS95ZkgzYWNKTFBDNEtkTFI5TUtCUGlpdU9RSFdqK3RIZ0loc3o2Z2FOd05wV095Y2kvcS81MW9MdDhUUnBGaDVralEvVzg4QUFBQUFBQUFBSUZyVTlqR2plUGl3bFVMVTMyYVVLMjJyc3ZaY3NnejQ5aWpKSEdUNU5TNU93NndxaHVOYllyK3RxRDlqaVA4bng5Mm5DU3p3dUNuUzBmVENnVDRvcmpub0F3QUFBQUFBQUtTSUlRQUFBQUFBQUE9PScsXG4gICAgICAgICAgICBzY2FuSW5kZXg6IDIsXG4gICAgICAgICAgICBzaWduYXR1cmU6XG4gICAgICAgICAgICAgICdBRFVZWVQ2bHp2bzJ6U0xoc0pKMExZMEZKMFFZaFJnRUE1ZnhwbHAxVDU2VkxmU08xZy8yS3c2R2ljWHI1WE1ZODlyWFlvaGtkU1MwSUt6M3NhaE13QUJMRkRvU2cxdmRvRWd4cWUyRkg1NnQxN3BiUnVuQWY5Q0h0MUgwYWo4MlRRPT0nLFxuICAgICAgICAgICAgcmVjb3ZlcnlBbW91bnQ6ICcyMDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGxhc3RTY2FuSW5kZXg6IDIwLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlIGJyb2FkY2FzdGFibGUgTVBDIHRyYW5zYWN0aW9uIGZvciBPVkMgc2lnbmVkIHRva2VuIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2lnbmF0dXJlU2hhcmVzID0ge1xuICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eFJlcXVlc3Q6IHtcbiAgICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICAgJzAwMDAwMzAxMDBhN2E4YzkxMDI4MDM1YWI0OTk3N2U3MmIwODRlMTQ1ZWIxYzFkZGNmZTJlMDY5MjVmMGY4MzNjZWYyZDFmNjlmYWU2ZTExMDIwMDAwMDAwMDIwYTgzYzY0Yzc4NWQ5NzJjYjZjMTc0ZjQzMjNlNjdlZWYxYjYyYTA4MWRiM2ZlZTY5MWU2YzFiYjE2ODZlNWVkNTAwMDhkYzA1MDAwMDAwMDAwMDAwMDAyMDg4Yzk5ZTBkYjg5Y2JhMWRiOTdjYmFkZDdmMzdiMmE0YjJhMmI0MDIyNTk0YTBjMDRiMmJjYzgzN2U0YjI0MDQwMjAyMDEwMDAwMDEwMTAxMDAwMTAxMDIwMDAwMDEwMjAwZDIwMTU2NmU2YTBiYzAyMGZkMmU2ZjcyZTliZGUyMjIzZjU1MGQ2NGRhYTYxMzk4Y2Q5MTdjMmY3NTAxMzI0YTAxNWVlYTAzNTNmMDc4MDE2YjcxYTg0Y2I0OTRlNmY3OTFlOTdjYjhkZTUzNDRkZWYzYmFlZGZmYzg5YzI3YTRiNWFmNmUxMTAyMDAwMDAwMDAyMDRmMWUyMmY5MTgxYzJkZDAzOWFiZWJmMjk4Y2Y5NjExM2E2ZjBhN2E4NGE5MWUyODYzYjQ2YTQxZDM2M2RhOGNkMjAxNTY2ZTZhMGJjMDIwZmQyZTZmNzJlOWJkZTIyMjNmNTUwZDY0ZGFhNjEzOThjZDkxN2MyZjc1MDEzMjRhZTgwMzAwMDAwMDAwMDAwMDU2NWUyNzAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMSxcbiAgICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnMjJkZWZhOTEwMWVhM2EzODM5YzNjMDAyNmIyN2E5ODM3MTY1YzA3ZmNlY2ZmOGU5NDM1M2JjZjNkNWEwMTMyOCcsXG4gICAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS85OTk5OTkvOTQ4NjI2MjIvMTU3MzYzNTA5LzEnLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhkMjAxNTY2ZTZhMGJjMDIwZmQyZTZmNzJlOWJkZTIyMjNmNTUwZDY0ZGFhNjEzOThjZDkxN2MyZjc1MDEzMjRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogWzE1MDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4ODhjOTllMGRiODljYmExZGI5N2NiYWRkN2YzN2IyYTRiMmEyYjQwMjI1OTRhMGMwNGIyYmNjODM3ZTRiMjQwNCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTUwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzE1MDAnLFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdUb2tlblRyYW5zZmVyJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgICAgICAgICAgIGZlZTogMjU4MDA1NCxcbiAgICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyNTgwMDU0JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgICAnY2EwYTAxNGJhNmYxMTEwNmExNTVlZjhlMmNhYjJmNzZkMjc3ZTRmMDFjZmZhNTkxYTliNDA4NDgzNDM4MjNiM2Q5MTA3NTJhNDljOTZiZjU4MTM5ODUyMDZlMjNjOWY5Y2QzYTc4ZjFjY2NmNWNmODhkZWY1MmI1NzNjZWRjOTMnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW10sXG4gICAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZToge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgICAgICAgICAgICAgdG86ICd1c2VyJyxcbiAgICAgICAgICAgICAgICAgICAgc2hhcmU6XG4gICAgICAgICAgICAgICAgICAgICAgJzE5ODk0MjBjZTgwMGUzNWUxYzU5MDkwN2YyMDE3YjU1Mjk5NDU0ODRiM2ZmODg0ZjhlODgzOTBkYTg4OTM2ZTZhNTg0NGU0ODYwZGYwZjQ4OWUyYTA5NzU1MTljMWQ2ZjVmMDI1NWRkMDkxZWRiZjg1OWM3NDA2M2E3ZjFlMjBlJyxcbiAgICAgICAgICAgICAgICAgICAgcHVibGljU2hhcmU6ICc0MDhjN2ExMTk2NzE1MmVmZWU5NTNmM2ViMTYxOTEwMDQ5NDY2ODVmZGM0ZGQ4MDg3YjkxZTNhZmNiNzdjOTE2JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgd2FsbGV0Q29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHNzVmVyc2lvbjogJzAuMC4xJyxcbiAgICAgICAgICAgIG92YzogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZWRkc2FTaWduYXR1cmU6IHtcbiAgICAgICAgICAgICAgICAgIHk6ICc0MDhjN2ExMTk2NzE1MmVmZWU5NTNmM2ViMTYxOTEwMDQ5NDY2ODVmZGM0ZGQ4MDg3YjkxZTNhZmNiNzdjOTE2JyxcbiAgICAgICAgICAgICAgICAgIFI6ICcxOTg5NDIwY2U4MDBlMzVlMWM1OTA5MDdmMjAxN2I1NTI5OTQ1NDg0YjNmZjg4NGY4ZTg4MzkwZGE4ODkzNmU2JyxcbiAgICAgICAgICAgICAgICAgIHNpZ21hOiAnYzJjZTUyOGYxZjMyM2ZlOWFmMjU2YWJiNTc0Mjg5NzNiMmU5N2U0ZmE1NGZhNmY1MGMzOTQzMDM2ODE1ODYwZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eFJlcXVlc3Q6IHtcbiAgICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICAgJzAwMDAwMzAxMDBlMTkxZjE2NmU3MWIxZWYyMGZmZGEwYzkxYjI0ZGE5NWVjYzkzYjY1N2M0NjRkOGEwNmY1NjFkNDY5MjcyMmYwYjA2ZTExMDIwMDAwMDAwMDIwMzE2ZmEyNDhhNzA3MWExNmM5ZTJmYWUyNTNjY2Y2NjI1NTNhOTA3NDUwZThkOThjM2JiZTI3NWIyNDNkYzQwZjAwMDhkMDA3MDAwMDAwMDAwMDAwMDAyMDg4Yzk5ZTBkYjg5Y2JhMWRiOTdjYmFkZDdmMzdiMmE0YjJhMmI0MDIyNTk0YTBjMDRiMmJjYzgzN2U0YjI0MDQwMjAyMDEwMDAwMDEwMTAxMDAwMTAxMDIwMDAwMDEwMjAwMmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOTAxZDMyZjk0ODg5ZDBiZmMwNWMyNGVkNmMwMjNkNWQzZDM2NTQyOTRhODM3ZDg1MGQzNzM4YjBlMzUyZTFmNDg2N2IwNmUxMTAyMDAwMDAwMDAyMDQxNDU4OWQzZmI0ZjY2ZGZiZWFiYjJhNzJkODk4MDNkNjQ1MWEyNzlmZjViZjVjNjYzMWNmMTYzYWYzZGNjYWYyZmE1ZDgzOTRiZDZiZWM1NTI1Yjk1NTBiZjQzYmUwNzViODM0MjJkMDEwN2MwNWM3MDA5NDRlM2VhZWMyNmY5ZTgwMzAwMDAwMDAwMDAwMDU2NWUyNzAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMixcbiAgICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnMmU2YmIxNzE2NmVlMTk3MTAyNzI5YmRhNDdiMDZiN2MwYjU5NjJiZjQzMWJiYjA1NjJiOTFlMjY3Yjc1MTI5ZCcsXG4gICAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS85OTk5OTkvOTQ4NjI2MjIvMTU3MzYzNTA5LzInLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgyZmE1ZDgzOTRiZDZiZWM1NTI1Yjk1NTBiZjQzYmUwNzViODM0MjJkMDEwN2MwNWM3MDA5NDRlM2VhZWMyNmY5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogWzIwMDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4ODhjOTllMGRiODljYmExZGI5N2NiYWRkN2YzN2IyYTRiMmEyYjQwMjI1OTRhMGMwNGIyYmNjODM3ZTRiMjQwNCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzIwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdUb2tlblRyYW5zZmVyJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgICAgICAgICAgIGZlZTogMjU4MDA1NCxcbiAgICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyNTgwMDU0JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgICAnY2EwYTAxNGJhNmYxMTEwNmExNTVlZjhlMmNhYjJmNzZkMjc3ZTRmMDFjZmZhNTkxYTliNDA4NDgzNDM4MjNiM2Q5MTA3NTJhNDljOTZiZjU4MTM5ODUyMDZlMjNjOWY5Y2QzYTc4ZjFjY2NmNWNmODhkZWY1MmI1NzNjZWRjOTMnLFxuICAgICAgICAgICAgICAgICAgICAgIGxhc3RTY2FuSW5kZXg6IDIwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW10sXG4gICAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZToge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgICAgICAgICAgICAgdG86ICd1c2VyJyxcbiAgICAgICAgICAgICAgICAgICAgc2hhcmU6XG4gICAgICAgICAgICAgICAgICAgICAgJzllMWQwZmQ2NjQwNzgwY2Y0ZGMyMDlmYTZlZDg5NTdkNjk1OGUwZDAyNzJkOGEyZmQ0ODQzOGMwMTFmNjdhMjIwMGRlMWE3OGUyM2JjMmE3ZDI2MWQwZDAyYTQyMjE0NTMwMWFhOWNlOTdkM2QzMDZiMzUwMWIxZjQ0ZDk1NjA2JyxcbiAgICAgICAgICAgICAgICAgICAgcHVibGljU2hhcmU6ICczNjJkNzE2YTVhMjMwZDY4M2I2MGQyOWVjZTk0MTE5N2UwOTYyN2MyMzRjNzE0NDlmYWNhYjUxNGMzYTdhYmFmJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgd2FsbGV0Q29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHNzVmVyc2lvbjogJzAuMC4xJyxcbiAgICAgICAgICAgIG92YzogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZWRkc2FTaWduYXR1cmU6IHtcbiAgICAgICAgICAgICAgICAgIHk6ICczNjJkNzE2YTVhMjMwZDY4M2I2MGQyOWVjZTk0MTE5N2UwOTYyN2MyMzRjNzE0NDlmYWNhYjUxNGMzYTdhYmFmJyxcbiAgICAgICAgICAgICAgICAgIFI6ICc5ZTFkMGZkNjY0MDc4MGNmNGRjMjA5ZmE2ZWQ4OTU3ZDY5NThlMGQwMjcyZDhhMmZkNDg0MzhjMDExZjY3YTIyJyxcbiAgICAgICAgICAgICAgICAgIHNpZ21hOiAnMTVhODJmN2M0YWVkYjllYmQ0YWI0ODFiNDI4MWQ2ZmNhZGIyYTg0MjI2MzVmMTZlNGUzMTk2NzA5NzAwMTgwNicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHNpZ25hdHVyZVNoYXJlcyk7XG5cbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAnQUFBREFRQ25xTWtRS0FOYXRKbDM1eXNJVGhSZXNjSGR6K0xnYVNYdytEUE84dEgybjY1dUVRSUFBQUFBSUtnOFpNZUYyWExMYkJkUFF5UG1mdThiWXFDQjJ6L3VhUjVzRzdGb2JsN1ZBQWpjQlFBQUFBQUFBQUFnaU1tZURiaWN1aDI1ZkxyZGZ6ZXlwTEtpdEFJbGxLREFTeXZNZzM1TEpBUUNBZ0VBQUFFQkFRQUJBUUlBQUFFQ0FOSUJWbTVxQzhBZy9TNXZjdW05NGlJL1ZRMWsycVlUbU0yUmZDOTFBVEpLQVY3cUExUHdlQUZyY2FoTXRKVG05NUhwZkxqZVUwVGU4N3J0LzhpY0o2UzFyMjRSQWdBQUFBQWdUeDRpK1JnY0xkQTVxK3Z5bU0rV0VUcHZDbnFFcVI0b1k3UnFRZE5qMm96U0FWWnVhZ3ZBSVAwdWIzTHB2ZUlpUDFVTlpOcW1FNWpOa1h3dmRRRXlTdWdEQUFBQUFBQUFWbDRuQUFBQUFBQUEnLFxuICAgICAgICAgICAgc2NhbkluZGV4OiAxLFxuICAgICAgICAgICAgc2lnbmF0dXJlOlxuICAgICAgICAgICAgICAnQUJtSlFnem9BT05lSEZrSkIvSUJlMVVwbEZTRXMvK0lUNDZJT1Eyb2lUYm13czVTang4eVArbXZKV3E3VjBLSmM3THBmaytsVDZiMUREbERBMmdWaGc1QWpIb1JsbkZTNys2VlB6NnhZWkVBU1Vab1g5eE4yQWg3a2VPdnkzZkpGZz09JyxcbiAgICAgICAgICAgIHJlY292ZXJ5QW1vdW50OiAnMTUwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICdBQUFEQVFEaGtmRm01eHNlOGcvOW9Na2JKTnFWN01rN1pYeEdUWW9HOVdIVWFTY2k4TEJ1RVFJQUFBQUFJREZ2b2tpbkJ4b1d5ZUw2NGxQTTltSlZPcEIwVU9qWmpEdStKMXNrUGNRUEFBalFCd0FBQUFBQUFBQWdpTW1lRGJpY3VoMjVmTHJkZnpleXBMS2l0QUlsbEtEQVN5dk1nMzVMSkFRQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQUMrbDJEbEwxcjdGVWx1VlVMOUR2Z2RiZzBJdEFRZkFYSEFKUk9QcTdDYjVBZE12bElpZEMvd0Z3azdXd0NQVjA5TmxRcFNvTjloUTAzT0xEalV1SDBobnNHNFJBZ0FBQUFBZ1FVV0owL3RQWnQrK3E3S25MWW1BUFdSUm9ubi9XL1hHWXh6eFk2ODl6Szh2cGRnNVM5YSt4VkpibFZDL1E3NEhXNE5DTFFFSHdGeHdDVVRqNnV3bStlZ0RBQUFBQUFBQVZsNG5BQUFBQUFBQScsXG4gICAgICAgICAgICBzY2FuSW5kZXg6IDIsXG4gICAgICAgICAgICBzaWduYXR1cmU6XG4gICAgICAgICAgICAgICdBSjRkRDlaa0I0RFBUY0lKK203WWxYMXBXT0RRSnkyS0w5U0VPTUFSOW5vaUZhZ3ZmRXJ0dWV2VXEwZ2JRb0hXL0syeXFFSW1OZkZ1VGpHV2NKY0FHQVkyTFhGcVdpTU5hRHRnMHA3T2xCR1g0Sllud2pUSEZFbjZ5clVVdzZlcnJ3PT0nLFxuICAgICAgICAgICAgcmVjb3ZlcnlBbW91bnQ6ICcyMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBsYXN0U2NhbkluZGV4OiAyMCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmVjb3ZlciBUcmFuc2FjdGlvbiBGYWlsdXJlczonLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCBzZW5kZXJBZGRyZXNzMCA9ICcweDkxZjI1ZTIzN2I4M2EwMGE2MjcyNGZkYzRhODFlNDNmNDk0ZGM2YjQxYTEyNDE0OTI4MjZkMzZlNGQxMzFkYTMnO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JztcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3AkU3c8Ump2QWdme25ZQVlJMnhNJztcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIGR1ZSB0byBub24temVybyBmdW5kIGJ1dCBpbnN1ZmZpY2llbnQgZnVuZHMgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRCYWxhbmNlJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHNlbmRlckFkZHJlc3MwKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICc5ODAwMjEyJywgY29pbk9iamVjdEJhbGFuY2U6ICc5ODAwMjEyJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICB1c2VyS2V5OiBrZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6ICcwJyxcbiAgICAgICAgICBzY2FuOiAxLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnRGlkIG5vdCBmaW5kIGFuIGFkZHJlc3Mgd2l0aCBzdWZmaWNpZW50IGZ1bmRzIHRvIHJlY292ZXIuIFBsZWFzZSBzdGFydCB0aGUgbmV4dCBzY2FuIGF0IGFkZHJlc3MgaW5kZXggMS4gSWYgaXQgaXMgdG9rZW4gdHJhbnNhY3Rpb24sIHBsZWFzZSBrZWVwIHN1ZmZpY2llbnQgU3VpIGJhbGFuY2UgaW4gdGhlIGFkZHJlc3MgZm9yIHRoZSB0cmFuc2FjdGlvbiBmZWUuJ1xuICAgICAgICApO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciBkdWUgdG8gbm90IGZpbmRpbmcgYW4gYWRkcmVzcyB3aXRoIGZ1bmRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnIGFzIGtleW9mIFN1aSk7XG4gICAgICBjYWxsQmFjay5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICBzY2FuOiAnMTAnLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnRGlkIG5vdCBmaW5kIGFuIGFkZHJlc3Mgd2l0aCBzdWZmaWNpZW50IGZ1bmRzIHRvIHJlY292ZXIuIFBsZWFzZSBzdGFydCB0aGUgbmV4dCBzY2FuIGF0IGFkZHJlc3MgaW5kZXggMTAuIElmIGl0IGlzIHRva2VuIHRyYW5zYWN0aW9uLCBwbGVhc2Uga2VlcCBzdWZmaWNpZW50IFN1aSBiYWxhbmNlIGluIHRoZSBhZGRyZXNzIGZvciB0aGUgdHJhbnNhY3Rpb24gZmVlLidcbiAgICAgICAgKTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDEwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0NvbnNvbGlkYXRpb24gVHJhbnNhY3Rpb24gRmFpbHVyZXM6JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZmFpbCBkdWUgdG8gaW5zdWZmaWNpZW50IGZ1bmRzIGluIHJlY2VpdmUgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgICBjb25zdCByZWNlaXZlQWRkcmVzczEgPSAnMHgzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjJztcbiAgICAgIGNvbnN0IHdhbGxldFBhc3NwaHJhc2UgPSAncCRTdzxSanZBZ2Z7bllBWUkyeE0nO1xuXG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyhyZWNlaXZlQWRkcmVzczEpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzEnLCBjb2luT2JqZWN0QmFsYW5jZTogJzEnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleToga2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogJzEnLFxuICAgICAgICAgIGVuZGluZ1NjYW5JbmRleDogJzInLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnRGlkIG5vdCBmaW5kIGFuIGFkZHJlc3Mgd2l0aCBzdWZmaWNpZW50IGZ1bmRzIHRvIHJlY292ZXIuIFBsZWFzZSBzdGFydCB0aGUgbmV4dCBzY2FuIGF0IGFkZHJlc3MgaW5kZXggMi4nXG4gICAgICAgICk7XG5cbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRCYWxhbmNlLCAxKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
2747
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3N1aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwwREFBNkI7QUFFN0IsOENBQTBEO0FBQzFELDRDQUFtRDtBQUNuRCxtQ0FBcUY7QUFDckYsMkRBQTZDO0FBQzdDLG9EQUF1QjtBQUN2QixrREFBMEI7QUFDMUIsZ0VBQXFDO0FBQ3JDLG9EQUE0QjtBQUM1QiwrQ0FBeUQ7QUFDekQsMkRBQXdEO0FBQ3hELDBDQUF3QztBQUN4QyxtQ0FBZ0M7QUFDaEMsOENBQWdIO0FBQ2hILGdEQUF3QjtBQUN4QixnRUFBd0M7QUFDeEMsb0RBQTZDO0FBRTdDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLGFBQWEsQ0FBQztJQUNsQixJQUFJLFdBQVcsQ0FBQztJQUVoQixNQUFNLFVBQVUsR0FBRztRQUNqQixLQUFLLEVBQUUsZUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDL0QsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUc7UUFDZixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7S0FDaEMsQ0FBQztJQUVGLE1BQU0sQ0FBQztRQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQUksQ0FBQyxjQUFj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QVksRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFdkYsTUFBTSxRQUFRO2lCQUNYLHFCQUFxQixDQUFDO2dCQUNyQixPQUFPLEVBQUUsVUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFNBQVMsRUFBRSxVQUFJLENBQUMsU0FBUztnQkFDekIsUUFBUSxFQUFFLFVBQUksQ0FBQyxRQUFRO2dCQUN2QixnQkFBZ0I7Z0JBQ2hCLGlCQUFpQixFQUFFLEdBQUc7Z0JBQ3RCLGVBQWUsRUFBRSxHQUFHO2FBQ3JCLENBQUM7aUJBQ0QsTUFBTSxDQUFDLFlBQVksQ0FDbEIsMEdBQTBHLENBQzNHLENBQUM7WUFFSixPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5cbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJLCBlbmNyeXB0IH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0IHsgU3VpLCBUb2tlblRyYW5zZmVyVHJhbnNhY3Rpb24sIFRyYW5zZmVyVHJhbnNhY3Rpb24sIFRzdWkgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3N1aSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IFN1aVRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHsgZ2V0QnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2dldEJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB7IGtleXMgfSBmcm9tICcuLi9yZXNvdXJjZXMvc3VpJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBjb21tb24sIEVERFNBTWV0aG9kcywgTVBDUmVjb3ZlcnlPcHRpb25zLCBNUENUeHMsIFRyYW5zYWN0aW9uUHJlYnVpbGQsIFdhbGxldCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IE1QU1V0aWwgfSBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuXG5kZXNjcmliZSgnU1VJOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlY29pbjtcbiAgbGV0IG5ld1R4UHJlYnVpbGQ7XG4gIGxldCBuZXdUeFBhcmFtcztcblxuICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5UUkFOU0ZFUiwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB0eEluZm86IHt9LFxuICB9O1xuXG4gIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgIHJlY2lwaWVudHM6IHRlc3REYXRhLnJlY2lwaWVudHMsXG4gIH07XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3N1aScsIFN1aS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0c3VpJywgVHN1aS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0c3VpJyk7XG4gICAgbmV3VHhQcmVidWlsZCA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFByZWJ1aWxkKTtcbiAgICB9O1xuICAgIG5ld1R4UGFyYW1zID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHR4UGFyYW1zKTtcbiAgICB9O1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzdWkgPSBiaXRnby5jb2luKCdzdWknKTtcbiAgICBjb25zdCB0c3VpID0gYml0Z28uY29pbigndHN1aScpO1xuXG4gICAgc3VpLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCdzdWknKTtcbiAgICBzdWkuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCdzdWknKTtcbiAgICBzdWkuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1N1aScpO1xuICAgIHN1aS5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlOSk7XG5cbiAgICB0c3VpLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0c3VpJyk7XG4gICAgdHN1aS5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3N1aScpO1xuICAgIHRzdWkuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgU3VpJyk7XG4gICAgdHN1aS5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlOSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdWZXJpZnkgdHJhbnNhY3Rpb246ICcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgdmVyaWZpY2F0aW9uIH0pO1xuICAgICAgaXNUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2hlbiByZWNpcGllbnRzIGFtb3VudCBhcmUgbnVtYmVycycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMucmVjaXBpZW50cyA9IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMucmVjaXBpZW50cy5tYXAoKHsgYWRkcmVzcywgYW1vdW50IH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHsgYWRkcmVzcywgYW1vdW50OiBOdW1iZXIoYW1vdW50KSB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgIH0pO1xuICAgICAgaXNUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2l0aCBpbnZhbGlkIHBhcmFtJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHt9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IHVuZGVmaW5lZDtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgc3BsaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gZ2V0QnVpbGRlckZhY3RvcnkoJ3RzdWknKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShTdWlUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXIpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgICBjb25zdCBhbW91bnQgPSAxMDAwMDAwMDAwO1xuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IG5ldyBBcnJheSgxMDApLmZpbGwoeyBhZGRyZXNzOiB0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcywgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSB9KTtcbiAgICAgIHR4QnVpbGRlci5zZW5kKHJlY2lwaWVudHMpO1xuICAgICAgdHhCdWlsZGVyLmdhc0RhdGEodGVzdERhdGEuZ2FzRGF0YSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogQnVmZmVyLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50cyxcbiAgICAgIH07XG4gICAgICBjb25zdCB2ZXJpZnkgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgfSk7XG4gICAgICB2ZXJpZnkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSBhIHNwb29mZWQgY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFNldCB1cCB3YWxsZXQgZGF0YVxuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc2MmUxNTZkYmQ2NDFjMDAwMDc2YmJhYmUwNDA0MWE5MCcsXG4gICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogJzB4NmYwZjRlMGVlZjE5MTc2NjI4ZWUwZWJjODBlZWY4OTE5NGFmZDllMTllNTk0NDRlNjRiOTk3ZjEyNTRmNmNkOCcsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb25zb2xpZGF0aW9uVHggPSB7XG4gICAgICAgIHR4UmVxdWVzdElkOiAnMTM4NTdjMWEtOWI2MS00Yjg1LTk2ZjEtMTBhZjEyNWY2OGEwJyxcbiAgICAgICAgd2FsbGV0SWQ6ICc2NDRjM2Q2YzUyMzJmMDAwMDc2ODAwNDAnLFxuICAgICAgICB0eEhleDpcbiAgICAgICAgICAnMDAwMDAyMDAwOGU2ZTY3NTNiMDAwMDAwMDAwMDIwNmYwZjRlMGVlZjE5MTc2NjI4ZWUwZWJjODBlZWY4OTE5NGFmZDllMTllNTk0NDRlNjRiOTk3ZjEyNTRmNmNkODAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMDE2NzA0NzJjNDRiNTkwNTgwMzI4NDBiOTRhN2ZkNzQwNWI0Yjg3Y2JmNjdmNGViNjBlMWI3NzgxY2UwM2RkYWQwMTIyMmI4MThiNDUwZGNkMjE2NGIyNWJhNWE1N2IwNTA3ZTU5YTRjOGViNmQ3Y2FkZDA4ZWE2MDlkYjE3YzYxMWQ0ZTEyZDAxNDAwMDAwMDAwMjAyM2ZjMjc1NzY2MjY3NjI5MDQzMzliMGFiZTFmZjk5Yzk5Nzk5YzkzYmVhNDZlOGJmNDUyZjIzYzY4OTkyZGIxMTY3MDQ3MmM0NGI1OTA1ODAzMjg0MGI5NGE3ZmQ3NDA1YjRiODdjYmY2N2Y0ZWI2MGUxYjc3ODFjZTAzZGRhZGU4MDMwMDAwMDAwMDAwMDAxYWUzMjQwMDAwMDAwMDAwMDAnLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAyNDE3NDM0LFxuICAgICAgICAgIGZlZVN0cmluZzogJzI0MTc0MzQnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBtaW5lckZlZTogJzI0MTc0MzQnLFxuICAgICAgICAgIHNwZW5kQW1vdW50OiAnOTk3NTgyNTY2JyxcbiAgICAgICAgICBzcGVuZEFtb3VudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpJyxcbiAgICAgICAgICAgICAgYW1vdW50U3RyaW5nOiAnOTk3NTgyNTY2JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXlHb0ZlZTogJzAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzB4NmYwZjRlMGVlZjE5MTc2NjI4ZWUwZWJjODBlZWY4OTE5NGFmZDllMTllNTk0NDRlNjRiOTk3ZjEyNTRmNmNkOCcsXG4gICAgICAgICAgICAgIHZhbHVlOiA5OTc1ODI1NjYsXG4gICAgICAgICAgICAgIHdhbGxldDogJzY0NGMzZDZjNTIzMmYwMDAwNzY4MDA0MCcsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFsnNjQ0YzNkNmM1MjMyZjAwMDA3NjgwMDQwJ10sXG4gICAgICAgICAgICAgIGVudGVycHJpc2U6ICc2MmNjNTliNzI3NDQzYTAwMDcwODkwMzMnLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogWyc2MmNjNTliNzI3NDQzYTAwMDcwODkwMzMnXSxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc5OTc1ODI1NjYnLFxuICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZXM6IFsnaG90J10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZhbHVlOiA5OTc1ODI1NjYsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICcweDE2NzA0NzJjNDRiNTkwNTgwMzI4NDBiOTRhN2ZkNzQwNWI0Yjg3Y2JmNjdmNGViNjBlMWI3NzgxY2UwM2RkYWQnLFxuICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzk5NzU4MjU2NicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdHlwZTogJ1RyYW5zZmVyJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29uc29saWRhdGVJZDogJzY4YjY0ODg5MmVlOTM1NWM5N2U0Yjk2ZDA5NDViMmNhJyxcbiAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1snbW9jayddLnVyaTtcbiAgICAgIGNvbnN0IHdhbGxldE9iaiA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcblxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoJy9hcGkvdjIvdHN1aS93YWxsZXQvNjJlMTU2ZGJkNjQxYzAwMDA3NmJiYWJlMDQwNDFhOTAvY29uc29saWRhdGVBY2NvdW50L2J1aWxkJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmNvbnNvbGlkYXRpb25UeCxcbiAgICAgICAgICAgIHR4SGV4OlxuICAgICAgICAgICAgICAnMDAwMDAyMDAwODAwZTFmNTA1MDAwMDAwMDAwMDIwODc3MTI3Mzk2OWFjZjAzNTZlZDBmMzNjMWM1MmIxMDliYmZlMGRlMzM2OWU5ZmI5ODM3ZDUyYTVhNDM4YzY1MDAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMDZmMGY0ZTBlZWYxOTE3NjYyOGVlMGViYzgwZWVmODkxOTRhZmQ5ZTE5ZTU5NDQ0ZTY0Yjk5N2YxMjU0ZjZjZDgwMTIyZGU5NWIzMTM0N2EyZjBkOTcxNWM1NjBkZmRmYzhmZDM1MTc4MmNhNWUyNzVkNGJjM2E5OGVhNzg3NjliY2U0ZjEyZDAxNDAwMDAwMDAwMjBlYTYzOTA4MTkyOTYwM2ZlMjU4MDg3M2Y0YWE2NDcwMTc0NmQwODlmOTczYjA4MjdhMjIyZDc4NGU5OTJlZTI2NmYwZjRlMGVlZjE5MTc2NjI4ZWUwZWJjODBlZWY4OTE5NGFmZDllMTllNTk0NDRlNjRiOTk3ZjEyNTRmNmNkOGU4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAuZ2V0KCcvYXBpL3YyL3RzdWkva2V5LzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjogJ2Zha2VQcnYnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuXG4gICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB0byB0ZXN0XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHdhbGxldE9iai5zZW5kQWNjb3VudENvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb246IHtcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvblRvQmFzZUFkZHJlc3M6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ0NvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24gb3V0cHV0IGFkZHJlc3MgZG9lcyBub3QgbWF0Y2ggd2FsbGV0IGJhc2UgYWRkcmVzcycsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB2YWxpZCBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBTZXQgdXAgd2FsbGV0IGRhdGFcbiAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNjJlMTU2ZGJkNjQxYzAwMDA3NmJiYWJlMDQwNDFhOTAnLFxuICAgICAgICBjb2luOiAndHN1aScsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICcweDZmMGY0ZTBlZWYxOTE3NjYyOGVlMGViYzgwZWVmODkxOTRhZmQ5ZTE5ZTU5NDQ0ZTY0Yjk5N2YxMjU0ZjZjZDgnLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29uc29saWRhdGlvblR4ID0ge1xuICAgICAgICB0eFJlcXVlc3RJZDogJzEzODU3YzFhLTliNjEtNGI4NS05NmYxLTEwYWYxMjVmNjhhMCcsXG4gICAgICAgIHdhbGxldElkOiAnNjQ0YzNkNmM1MjMyZjAwMDA3NjgwMDQwJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzAwMDAwMjAwMDhlNmU2NzUzYjAwMDAwMDAwMDAyMDZmMGY0ZTBlZWYxOTE3NjYyOGVlMGViYzgwZWVmODkxOTRhZmQ5ZTE5ZTU5NDQ0ZTY0Yjk5N2YxMjU0ZjZjZDgwMjAyMDAwMTAxMDAwMDAxMDEwMjAwMDAwMTAxMDAxNjcwNDcyYzQ0YjU5MDU4MDMyODQwYjk0YTdmZDc0MDViNGI4N2NiZjY3ZjRlYjYwZTFiNzc4MWNlMDNkZGFkMDEyMjJiODE4YjQ1MGRjZDIxNjRiMjViYTVhNTdiMDUwN2U1OWE0YzhlYjZkN2NhZGQwOGVhNjA5ZGIxN2M2MTFkNGUxMmQwMTQwMDAwMDAwMDIwMjNmYzI3NTc2NjI2NzYyOTA0MzM5YjBhYmUxZmY5OWM5OTc5OWM5M2JlYTQ2ZThiZjQ1MmYyM2M2ODk5MmRiMTE2NzA0NzJjNDRiNTkwNTgwMzI4NDBiOTRhN2ZkNzQwNWI0Yjg3Y2JmNjdmNGViNjBlMWI3NzgxY2UwM2RkYWRlODAzMDAwMDAwMDAwMDAwMWFlMzI0MDAwMDAwMDAwMDAwJyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMjQxNzQzNCxcbiAgICAgICAgICBmZWVTdHJpbmc6ICcyNDE3NDM0JyxcbiAgICAgICAgfSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgbWluZXJGZWU6ICcyNDE3NDM0JyxcbiAgICAgICAgICBzcGVuZEFtb3VudDogJzk5NzU4MjU2NicsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aScsXG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzk5NzU4MjU2NicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGF5R29GZWU6ICcwJyxcbiAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6ICcweDZmMGY0ZTBlZWYxOTE3NjYyOGVlMGViYzgwZWVmODkxOTRhZmQ5ZTE5ZTU5NDQ0ZTY0Yjk5N2YxMjU0ZjZjZDgnLFxuICAgICAgICAgICAgICB2YWx1ZTogOTk3NTgyNTY2LFxuICAgICAgICAgICAgICB3YWxsZXQ6ICc2NDRjM2Q2YzUyMzJmMDAwMDc2ODAwNDAnLFxuICAgICAgICAgICAgICB3YWxsZXRzOiBbJzY0NGMzZDZjNTIzMmYwMDAwNzY4MDA0MCddLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjJjYzU5YjcyNzQ0M2EwMDA3MDg5MDMzJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZXM6IFsnNjJjYzU5YjcyNzQ0M2EwMDA3MDg5MDMzJ10sXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnOTk3NTgyNTY2JyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpJyxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgICAgICAgIHdhbGxldFR5cGVzOiBbJ2hvdCddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogOTk3NTgyNTY2LFxuICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgxNjcwNDcyYzQ0YjU5MDU4MDMyODQwYjk0YTdmZDc0MDViNGI4N2NiZjY3ZjRlYjYwZTFiNzc4MWNlMDNkZGFkJyxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc5OTc1ODI1NjYnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICdUcmFuc2ZlcicsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2OGI2NDg4OTJlZTkzNTVjOTdlNGI5NmQwOTQ1YjJjYScsXG4gICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhKGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIGJsb2NraGFzaDogJycsXG4gICAgICAgICAgICBmZWVQYXllcjogJycsXG4gICAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgICB0eFByZWJ1aWxkOiBjb25zb2xpZGF0aW9uVHggYXMgdW5rbm93biBhcyBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgICAgICB3YWxsZXQ6IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKSxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjoge1xuICAgICAgICAgICAgICBjb25zb2xpZGF0aW9uVG9CYXNlQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhc3NlcnQuZmFpbCgnVHJhbnNhY3Rpb24gc2hvdWxkIHBhc3MgdmVyaWZpY2F0aW9uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFeHBsYWluIFRyYW5zYWN0aW9uOiAnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5UUkFOU0ZFUiwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAndHlwZSddLFxuICAgICAgICBpZDogJ0J4b2VHWGJCQ3V3NlZGRWNnd0hIVUFLckNvQXNHYW5QQjM5a2RWVktaWmNSJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogdGVzdERhdGEucmVjaXBpZW50c1swXS5hbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzFdLmFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IHRlc3REYXRhLnJlY2lwaWVudHNbMV0uYW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogYCR7dGVzdERhdGEuQU1PVU5UICogMn1gLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIGZlZTogeyBmZWU6IHRlc3REYXRhLmdhc0RhdGEuYnVkZ2V0LnRvU3RyaW5nKCkgfSxcbiAgICAgICAgdHlwZTogMCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc3BsaXQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OlxuICAgICAgICAgICcwMDAwNjUwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMjA1NzQ4OTVmZTgzYjQwOWIwMDllMmUwNDMzYWQxODIzZWMwZDUzOGFmN2ZlYTUyMzkwYTE5OGJkZmU3Njc2ZjEzMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwMDAwODAwY2E5YTNiMDAwMDAwMDAwMDA4MDBjYTlhM2IwMDAwMDAwMDAwMDgwMGNhOWEzYjAwMDAwMDAwYzgwMTAyMDAwMTAxMDAwMDAxMDEwMjAwMDAwMTAxMDAwMjAwMDEwMTAyMDAwMTAxMDIwMjAwMDEwMTAwMDIwMDAxMDEwMzAwMDEwMTAyMDQwMDAxMDEwMDAyMDAwMTAxMDQwMDAxMDEwMjA2MDAwMTAxMDAwMjAwMDEwMTA1MDAwMTAxMDIwODAwMDEwMTAwMDIwMDAxMDEwNjAwMDEwMTAyMGEwMDAxMDEwMDAyMDAwMTAxMDcwMDAxMDEwMjBjMDAwMTAxMDAwMjAwMDEwMTA4MDAwMTAxMDIwZTAwMDEwMTAwMDIwMDAxMDEwOTAwMDEwMTAyMTAwMDAxMDEwMDAyMDAwMTAxMGEwMDAxMDEwMjEyMDAwMTAxMDAwMjAwMDEwMTBiMDAwMTAxMDIxNDAwMDEwMTAwMDIwMDAxMDEwYzAwMDEwMTAyMTYwMDAxMDEwMDAyMDAwMTAxMGQwMDAxMDEwMjE4MDAwMTAxMDAwMjAwMDEwMTBlMDAwMTAxMDIxYTAwMDEwMTAwMDIwMDAxMDEwZjAwMDEwMTAyMWMwMDAxMDEwMDAyMDAwMTAxMTAwMDAxMDEwMjFlMDAwMTAxMDAwMjAwMDEwMTExMDAwMTAxMDIyMDAwMDEwMTAwMDIwMDAxMDExMjAwMDEwMTAyMjIwMDAxMDEwMDAyMDAwMTAxMTMwMDAxMDEwMjI0MDAwMTAxMDAwMjAwMDEwMTE0MDAwMTAxMDIyNjAwMDEwMTAwMDIwMDAxMDExNTAwMDEwMTAyMjgwMDAxMDEwMDAyMDAwMTAxMTYwMDAxMDEwMjJhMDAwMTAxMDAwMjAwMDEwMTE3MDAwMTAxMDIyYzAwMDEwMTAwMDIwMDAxMDExODAwMDEwMTAyMmUwMDAxMDEwMDAyMDAwMTAxMTkwMDAxMDEwMjMwMDAwMTAxMDAwMjAwMDEwMTFhMDAwMTAxMDIzMjAwMDEwMTAwMDIwMDAxMDExYjAwMDEwMTAyMzQwMDAxMDEwMDAyMDAwMTAxMWMwMDAxMDEwMjM2MDAwMTAxMDAwMjAwMDEwMTFkMDAwMTAxMDIzODAwMDEwMTAwMDIwMDAxMDExZTAwMDEwMTAyM2EwMDAxMDEwMDAyMDAwMTAxMWYwMDAxMDEwMjNjMDAwMTAxMDAwMjAwMDEwMTIwMDAwMTAxMDIzZTAwMDEwMTAwMDIwMDAxMDEyMTAwMDEwMTAyNDAwMDAxMDEwMDAyMDAwMTAxMjIwMDAxMDEwMjQyMDAwMTAxMDAwMjAwMDEwMTIzMDAwMTAxMDI0NDAwMDEwMTAwMDIwMDAxMDEyNDAwMDEwMTAyNDYwMDAxMDEwMDAyMDAwMTAxMjUwMDAxMDEwMjQ4MDAwMTAxMDAwMjAwMDEwMTI2MDAwMTAxMDI0YTAwMDEwMTAwMDIwMDAxMDEyNzAwMDEwMTAyNGMwMDAxMDEwMDAyMDAwMTAxMjgwMDAxMDEwMjRlMDAwMTAxMDAwMjAwMDEwMTI5MDAwMTAxMDI1MDAwMDEwMTAwMDIwMDAxMDEyYTAwMDEwMTAyNTIwMDAxMDEwMDAyMDAwMTAxMmIwMDAxMDEwMjU0MDAwMTAxMDAwMjAwMDEwMTJjMDAwMTAxMDI1NjAwMDEwMTAwMDIwMDAxMDEyZDAwMDEwMTAyNTgwMDAxMDEwMDAyMDAwMTAxMmUwMDAxMDEwMjVhMDAwMTAxMDAwMjAwMDEwMTJmMDAwMTAxMDI1YzAwMDEwMTAwMDIwMDAxMDEzMDAwMDEwMTAyNWUwMDAxMDEwMDAyMDAwMTAxMzEwMDAxMDEwMjYwMDAwMTAxMDAwMjAwMDEwMTMyMDAwMTAxMDI2MjAwMDEwMTAwMDIwMDAxMDEzMzAwMDEwMTAyNjQwMDAxMDEwMDAyMDAwMTAxMzQwMDAxMDEwMjY2MDAwMTAxMDAwMjAwMDEwMTM1MDAwMTAxMDI2ODAwMDEwMTAwMDIwMDAxMDEzNjAwMDEwMTAyNmEwMDAxMDEwMDAyMDAwMTAxMzcwMDAxMDEwMjZjMDAwMTAxMDAwMjAwMDEwMTM4MDAwMTAxMDI2ZTAwMDEwMTAwMDIwMDAxMDEzOTAwMDEwMTAyNzAwMDAxMDEwMDAyMDAwMTAxM2EwMDAxMDEwMjcyMDAwMTAxMDAwMjAwMDEwMTNiMDAwMTAxMDI3NDAwMDEwMTAwMDIwMDAxMDEzYzAwMDEwMTAyNzYwMDAxMDEwMDAyMDAwMTAxM2QwMDAxMDEwMjc4MDAwMTAxMDAwMjAwMDEwMTNlMDAwMTAxMDI3YTAwMDEwMTAwMDIwMDAxMDEzZjAwMDEwMTAyN2MwMDAxMDEwMDAyMDAwMTAxNDAwMDAxMDEwMjdlMDAwMTAxMDAwMjAwMDEwMTQxMDAwMTAxMDI4MDAwMDEwMTAwMDIwMDAxMDE0MjAwMDEwMTAyODIwMDAxMDEwMDAyMDAwMTAxNDMwMDAxMDEwMjg0MDAwMTAxMDAwMjAwMDEwMTQ0MDAwMTAxMDI4NjAwMDEwMTAwMDIwMDAxMDE0NTAwMDEwMTAyODgwMDAxMDEwMDAyMDAwMTAxNDYwMDAxMDEwMjhhMDAwMTAxMDAwMjAwMDEwMTQ3MDAwMTAxMDI4YzAwMDEwMTAwMDIwMDAxMDE0ODAwMDEwMTAyOGUwMDAxMDEwMDAyMDAwMTAxNDkwMDAxMDEwMjkwMDAwMTAxMDAwMjAwMDEwMTRhMDAwMTAxMDI5MjAwMDEwMTAwMDIwMDAxMDE0YjAwMDEwMTAyOTQwMDAxMDEwMDAyMDAwMTAxNGMwMDAxMDEwMjk2MDAwMTAxMDAwMjAwMDEwMTRkMDAwMTAxMDI5ODAwMDEwMTAwMDIwMDAxMDE0ZTAwMDEwMTAyOWEwMDAxMDEwMDAyMDAwMTAxNGYwMDAxMDEwMjljMDAwMTAxMDAwMjAwMDEwMTUwMDAwMTAxMDI5ZTAwMDEwMTAwMDIwMDAxMDE1MTAwMDEwMTAyYTAwMDAxMDEwMDAyMDAwMTAxNTIwMDAxMDEwMmEyMDAwMTAxMDAwMjAwMDEwMTUzMDAwMTAxMDJhNDAwMDEwMTAwMDIwMDAxMDE1NDAwMDEwMTAyYTYwMDAxMDEwMDAyMDAwMTAxNTUwMDAxMDEwMmE4MDAwMTAxMDAwMjAwMDEwMTU2MDAwMTAxMDJhYTAwMDEwMTAwMDIwMDAxMDE1NzAwMDEwMTAyYWMwMDAxMDEwMDAyMDAwMTAxNTgwMDAxMDEwMmFlMDAwMTAxMDAwMjAwMDEwMTU5MDAwMTAxMDJiMDAwMDEwMTAwMDIwMDAxMDE1YTAwMDEwMTAyYjIwMDAxMDEwMDAyMDAwMTAxNWIwMDAxMDEwMmI0MDAwMTAxMDAwMjAwMDEwMTVjMDAwMTAxMDJiNjAwMDEwMTAwMDIwMDAxMDE1ZDAwMDEwMTAyYjgwMDAxMDEwMDAyMDAwMTAxNWUwMDAxMDEwMmJhMDAwMTAxMDAwMjAwMDEwMTVmMDAwMTAxMDJiYzAwMDEwMTAwMDIwMDAxMDE2MDAwMDEwMTAyYmUwMDAxMDEwMDAyMDAwMTAxNjEwMDAxMDEwMmMwMDAwMTAxMDAwMjAwMDEwMTYyMDAwMTAxMDJjMjAwMDEwMTAwMDIwMDAxMDE2MzAwMDEwMTAyYzQwMDAxMDEwMDAyMDAwMTAxNjQwMDAxMDEwMmM2MDAwMTAxMDA1NzQ4OTVmZTgzYjQwOWIwMDllMmUwNDMzYWQxODIzZWMwZDUzOGFmN2ZlYTUyMzkwYTE5OGJkZmU3Njc2ZjEzMDMwMzRmNDAzZmY5YjczYjU3OTRiNzlhODllYmJjZDgxMDMzMWZlYTUyODc4ZGIwYjRkYzFhMWM4OGY0YzBkYzU2MTYwMDAwMDAwMDAwMDAwMDIwMDNjYWY3ZTY3N2M3MmIyNDFkNjFkMDBlNjAwYjZkZjI1NjM5YzU4Mjk4N2QwYWE3OGNlZWEwYjk5NTNlYWM1MmE2MGIwZTUxZjlmZmEzOThmNmVlMWQzMTAxZDZjOWVmYTEzZDE4MDBlNDEyZDdlMDgzMmUyNjE2ZjE3OTNmZDc5Y2U5MTcwMDAwMDAwMDAwMjA1MDQzNWE0OWYwNjM1YmMyZjJjM2JiZGNlMDVhMTZiMjRmYWYwMzY4ZWRhYTI1YzhmYmNlMTZlZjYyNjAyZGE1Y2RhNDRhZTQ3ZjM4MGY0NWQzY2Q0OTExODgwZjRlOWEyNGI1MmZlNDI0NjgzYzY2Y2YzYzc3NjlkZDNjYTIyYzEwMDAwMDAwMDAwMDAwMDAyMDBjNzhmYTIwMjM2YmI4Njg3MWVhY2ZlMmI0ZjIxNThlYWE2OGY0ZjQ1NjVkOGNmOTg2NWVlOWYyNzllNGJkNDA1NzQ4OTVmZTgzYjQwOWIwMDllMmUwNDMzYWQxODIzZWMwZDUzOGFmN2ZlYTUyMzkwYTE5OGJkZmU3Njc2ZjEzZTgwMzAwMDAwMDAwMDAwMDAwZTFmNTA1MDAwMDAwMDAwMCcsXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxMDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLkFERF9TVEFLRSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ21vZHVsZScsXG4gICAgICAgICAgJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAndmFsaWRhdG9yQWRkcmVzcycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnYlA3OGJvWjQ4c0RkSnNnMlYxdEphaHBHeUJ3YUM5R1NUTDJydnlBRG5zaCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5yZXF1ZXN0QWRkU3Rha2UudmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogdGVzdERhdGEucmVxdWVzdEFkZFN0YWtlLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogdGVzdERhdGEuU1RBS0lOR19BTU9VTlQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBmZWU6IHsgZmVlOiB0ZXN0RGF0YS5nYXNEYXRhLmJ1ZGdldC50b1N0cmluZygpIH0sXG4gICAgICAgIHR5cGU6IDI1LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gZXhwbGFpbiB0cmFuc2FjdGlvbiB3aXRoIG1pc3NpbmcgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHt9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChlcnJvci5tZXNzYWdlLCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGV4cGxhaW4gdHJhbnNhY3Rpb24gd2l0aCBpbnZhbGlkIHBhcmFtcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7IHR4SGV4OiAncmFuZG9tU3RyaW5nJyB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChlcnJvci5tZXNzYWdlLCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUGFyc2UgVHJhbnNhY3Rpb25zOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgdHJhbnNmZXJJbnB1dHNSZXNwb25zZSA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGVzdERhdGEucmVjaXBpZW50c1swXS5hZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IG5ldyBCaWdOdW1iZXIodGVzdERhdGEuQU1PVU5UKS5wbHVzKHRlc3REYXRhLkFNT1VOVCkucGx1cyh0ZXN0RGF0YS5nYXNEYXRhLmJ1ZGdldCkudG9GaXhlZCgpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgdHJhbnNmZXJPdXRwdXRzUmVzcG9uc2UgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMV0uYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5yZWNpcGllbnRzWzFdLmFtb3VudCxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYSB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5UUkFOU0ZFUiwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiB0cmFuc2ZlcklucHV0c1Jlc3BvbnNlLFxuICAgICAgICBvdXRwdXRzOiB0cmFuc2Zlck91dHB1dHNSZXNwb25zZSxcbiAgICAgICAgZmVlOiBuZXcgQmlnTnVtYmVyKDIwMDAwMDAwKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHBhcnNlIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24gd2hlbiBleHBsYWluVHJhbnNhY3Rpb24gcmVzcG9uc2UgaXMgdW5kZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoU3VpLnByb3RvdHlwZSwgJ2V4cGxhaW5UcmFuc2FjdGlvbicpO1xuICAgICAgc3R1Yi5yZXNvbHZlcyh1bmRlZmluZWQpO1xuICAgICAgYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7IHR4SGV4OiB0ZXN0RGF0YS5UUkFOU0ZFUiB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICBzdHViLnJlc3RvcmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBsZXQga2V5Y2hhaW5zO1xuICAgIGxldCBjb21tb25LZXljaGFpbjtcblxuICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICBjb21tb25LZXljaGFpbiA9XG4gICAgICAgICcxOWJkZmUyYTRiNDk4YTA1NTExMzgxMjM1YTg4OTJkNTQyNjc4MDdjNGEzZjY1NGUzMTBiOTM4YjhiNDI0ZmY0YWRlZGJlOTJmNGMxNDZkZTY0MWM2NzUwOGE5NjEzMjRjODUwNGNkZjhlMGMwYWNiYjY4ZDYxMDRjY2NjZDc4MSc7XG4gICAgICBrZXljaGFpbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzY0MjRjMzUzZWFmNzhkMDAwNzY2ZTk1OTQ5ODY4NDY4JyxcbiAgICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAgICB0eXBlOiAndHNzJyxcbiAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICcxOWJkZmUyYTRiNDk4YTA1NTExMzgxMjM1YTg4OTJkNTQyNjc4MDdjNGEzZjY1NGUzMTBiOTM4YjhiNDI0ZmY0YWRlZGJlOTJmNGMxNDZkZTY0MWM2NzUwOGE5NjEzMjRjODUwNGNkZjhlMGMwYWNiYjY4ZDYxMDRjY2NjZDc4MScsXG4gICAgICAgICAgZW5jcnlwdGVkUHJ2OlxuICAgICAgICAgICAgJ3tcIml2XCI6XCJjWmQ1aTdMNFJ4dHdyQUxXMnJLN1VBPT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiNXpnb0gxQmQzRnc9XCIsXCJjdFwiOlwiOXZWbG5YRlJ0ck05RlZFbytkMmNoYkdIbE05bEZaZW11ZUJ1QXMzQklrUG8zM0ZvN2p6d3dOSy9rSVdrRXlnK05tRUJkNUlhcUFTMTU3bnZ2dnd6enNtTVdsUWRVejlxYm1YTnYzcGc5ODdjWEZSMDhleFMrNHVod1AxWU5PakpUUnZSTmNPOVpxSGI0NmQ0Zm15Si95Qzkvc3VzQ2dlN3IvRXNiYU41QzNhZnYxZHp5YnVxOTEyRndhUUVsWkxZWXA1QklDdWRGT01aOWswVURNZktNL1BNRGtIN1dleG9HSHI5R0txL2JnQ0gyQjM5VFpaeUhLVTZVeTQ3bFhlcDJzNmgwRHJNd0hPcm5taUwzRFpqT2o4OFludnBobHp4dW80ZU9sRDJVSGlhMitudklhSVNZczI5UHIwREF2UkV1dGNodmNCcEV4ajFrV1dQdjdoUVlydjhGME5BZGF0c2JXbDN3K3hLeWZpTUtvMVVTbHJ3eUp2aXlwR3RRdFhPSnl3MFhQTjBydjIrTDVsVzhCYmpwekhmWVlOMTNmSlRlZGxHVEZoaGt6VnRiYlBBS0UwMmt4N3pDSmNqWWFpZXhkU1RzckRMU2NZTlQ5L0poZHQyN0twc29vZWh3Vm9oTGZTS3o0dmJGZlJ1Mk1QWnczLytjL2hmaUpOZ3R6NmVzV2JueEdyY0U4VTJJd1BZQ2FLK0doazREY3FXTkluaTU5Ukk1QjVrQXNRT1RvSUk0MHFQTjUxMHVUZ3hCU1BPN3E3TUhna3hkZDRDcUJxK29qcjlqMFA3b2FvOEU1WStDQkRKcm9qRG9DaDFvQ0NEVzl2bzJkWGxWY0Q4U0lidzdVLzlBZnZFYkE0eHlFLzVtZDFNN0NJd0xuV3MyWW52MFl0YUtvcWhkUzl4NkZtSGxNRGhOL0RLSGlucndtb3d0clRUODJmT2twTzVnOXNhU21nVTdReTNnTHQ4dCtWd2RFeWVGZVFVS1JTeWNpOHFncVhRYVpJZzQrYVhnYVNPbmxDRk10bUI4ZWtZeEVoVFk1dXpSZnJOZ1M0czFRZXFGQnBOdFVGK1lkaTI5N3BiVlhuSm9YQU4rU1ZXZDgwR0N4K3lJMmRwVkM4OWszck9XSzlXZXlxbG56dUxKV3AyUklPQjljZFc4R0Z2L2ZOK1FBSnBZZVZ4T0U0K25aRHNLbnNqOG5LY2c5dDREbHgxRzZnTE0xL1ZxOVl4TkxidXp1UkMwYXNVWXZkTW5vTXZzem1wbSsrVHhuZFlpc2dOWXNjcFpTb3o3d3ZjYXpKTkVQZmhQVmpFa2Q2dFVVdU40R00zNUgwRG1LQ1VRTlQrYTZCNmhtSGxUWnZqeGl5R0FnNWJZNTloZGp2SisyMlFkdWF6bEVFQzZMSTNIckE3dUswVHBwbFd6UzF0Q0lGdlRNVWhqNjVERVptTkoyK1pZOWJRNHZzTWYrRFJSM09PRzR0K0RNbE5mak9kM3pOdjNRb1k5NUJqZldwcnlGd1B6RHE3YkNQNjdKRHNvajdqMlRZNUZSU3JSa0Q3N0gwRXdsdXgyY1dmalJUd2NNSGNkUXh4dVYwT1AwYU5qR0RqeWJGTlwifScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzY0MjRjMzUzZWFmNzhkMDAwNzY2ZTk2MTM3ZDQ0MDRiJyxcbiAgICAgICAgICBzb3VyY2U6ICdiYWNrdXAnLFxuICAgICAgICAgIHR5cGU6ICd0c3MnLFxuICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJyxcbiAgICAgICAgICBlbmNyeXB0ZWRQcnY6XG4gICAgICAgICAgICAne1wiaXZcIjpcInZpMGRQZWYvUng3a0cvcFJ5U1FpNlE9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCI6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCI5ZWZoUXNpRXZWcz1cIixcImN0XCI6XCJHdzZhdHZmNmd4S3pzanRsM3hzZWlwTzNyQXhwMW1BejdZdTFpaEZzaTUvbGYydk1aZWdBcGdaeCtweUlMRlM5S0tMSGJORjNVNldnU1lkcnIydDR2emRMc1hrSDFXSXhmSFMrY2QyQzVONTl5QURaRG5QSkJUNnB2L0lSdmFZZWxQMENrM25JWVEyaFNNbThvcCtWT1dDL1N6SGVoN3NsWURxd0VIVEdhbjBXaWdmdmsxeVJkN0NDSlRhRUFvbW5jLzRlRmkyTlkzWDNndC8zb3B5OUlBZ2tubndVRm9objk2RVdwRVEwRjZwYnpIL1o4VkY2Z0YrRFVjcnJCeUF4RXhVUG5IUVppRmszWUhVL3ZWVjRGeEJVL21WQUU4eEJzQm41dWw1ZTVTVU1QZmM3VEJ1Sld2NEJCeVROZzl4RFNoRi85MVl4Mm5iZlVtNWQ5UW1NOGxwS2d6elF2Y0s4UE9BUGs4N2dSQ3VLbnNHaDV2TlMwVXBwa0hjK29jZnpSUWxHQTZqemU3UXl5UU8wck1qNUx5OGtXandrMnZJU3ZLWUhZUzFOUjdWVTU0OVVJWG83TlhqYXR1bktTYzMrSXJlb1JVSElzaGlhTGc2aGwrcHhDQ3VjMHFRNDNWMG1kSWZDalROOGdrR1dMTms4Ujd0QUdQejlqeWFwUVBjUEVHSGdFejBBVElpNnlNTldDc2liUzJlTGlFMXVWRUpPTm9NNGxrNkZQbDNRMkNIYlcyTWVFYnFqWThoYmF3MThtTmIyeFNCSC9Gd3BpaWFsK1R2aTJpbXFnbkNPNFpwTzlibGxLZnRaUGNReTBzdE4rZUdCbGI1dWZ5ZmxLa0RTaUNoSFlyb0dqRXBtaUZpY2RkZTQ4Y0pzekY1MnVLTm5mMXE2N2ZBOS9TMkZBSFFhYjNFWG9qeEgyR2JrK2trVjJoL1RZS0ZGWlNXQzN2aTRlOG1PK3ZqTVVjUjBBZHNnUEZ5RUl6MFNDR3ViYTNDblRMTmRFdVp3c2F1QWVIa3gydlVUblJnSlBWZ05lZXVYbXNWRzc2U3kyZ2dKSHVhbHMwSGo4VTJYZGEwcU8xUnVGZm9DV2Zzczl3bjZIR1J3UFBraFNCLzhvTmd1QXFtUlZHS2tkOFp3dDNJdnJUZDlmazAvckZGREpLR3o3V3lOSGtZZ1VtTmlHY0l0RDEydjBqeDdGWjUyRUp6bDNBdjFSeUpVUUsxOCs4RVlQaDNTR2lVOWR0N1ZYMGFGMHVvNkpvdUtoT2VsZFV2TVArQXVnUXo4ZlVjbHdUUXNiYm9WZzI3WXhvMER5QVRWd1RoVzVhNTZSNlFmNVppUUpsdUZ1enM1eTk4cnEwUzVxMDQ2bEU2bzN2Vm1KcEVkd2plU0NKb0VUNUNMNG5UZ2tYeVd2aG00ZUI4dS9lNjZsM28wcWJhU3g4cTlZWW1UOUVwUmNsNVRQNFRoTEJLRVRZZHpWdmc0ZXhqUWZla3RNYXRrNUV5VXBFSWhaUFhoNXZYcEpaZXNkZk85TEo4elRhSEJzQmpEUFU3Y2ROZ1FNYmVicGF0YVJpOEEwZWwyL0lKWGwrRStvbGdBejV6QzRpMk8xUT09XCJ9JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnNjQyNGMzNTNlYWY3OGQwMDA3NjZlOTUxMGIxMjVmYmEnLFxuICAgICAgICAgIHNvdXJjZTogJ2JpdGdvJyxcbiAgICAgICAgICB0eXBlOiAndHNzJyxcbiAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICcxOWJkZmUyYTRiNDk4YTA1NTExMzgxMjM1YTg4OTJkNTQyNjc4MDdjNGEzZjY1NGUzMTBiOTM4YjhiNDI0ZmY0YWRlZGJlOTJmNGMxNDZkZTY0MWM2NzUwOGE5NjEzMjRjODUwNGNkZjhlMGMwYWNiYjY4ZDYxMDRjY2NjZDc4MScsXG4gICAgICAgICAgdmVyaWZpZWRWc3NQcm9vZjogdHJ1ZSxcbiAgICAgICAgICBpc0JpdEdvOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB2YWxpZGF0aW5nIGEgd2VsbCBmb3JtYXR0ZWQgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnZjk0MWFlM2NiZTU2NDVkY2NjMTVkYTgzNDZiNTMzZjdmOTFmMjAyMDg5YTU1MjE2NTNjMDYyYjJmZjEwYjMwNCc7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsaWRhdGluZyBhIHdlbGwgZm9ybWF0dGVkIGFkZHJlc3MgcHJlZml4ZWQgd2l0aCAweCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnMHhmOTQxYWUzY2JlNTY0NWRjY2MxNWRhODM0NmI1MzNmN2Y5MWYyMDIwODlhNTUyMTY1M2MwNjJiMmZmMTBiMzA0JztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsaWRhdGluZyBhbiBvbGQgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnMHgyOTU5YmZjM2ZkYjdkYzIzZmVkOGRlYmEyZmFmYjcwZjNlNjA2YTU5JztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbGlkYXRpbmcgYW4gaW5jb3JyZWN0bHkgZm9ybWF0dGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICd3cm9uZ2FkZHJlc3MnO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIGlzV2FsbGV0QWRkcmVzcyB3aXRoIHZhbGlkIGFkZHJlc3MgZm9yIGluZGV4IDQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBuZXdBZGRyZXNzID0gJzB4OGIzYzc4MDc3MzBkNzU3OTJkZDZjNDk3MzJjZjlmMDE0ZDY5ODRhOWM3N2QzODZiZGIxMDcyYTllNTM3ZDhkOCc7XG4gICAgICBjb25zdCBpbmRleCA9IDQ7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY29tbW9uS2V5Y2hhaW4sIGFkZHJlc3M6IG5ld0FkZHJlc3MsIGluZGV4LCBrZXljaGFpbnMgfTtcbiAgICAgIChhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaXNXYWxsZXRBZGRyZXNzIHdoZW4ga2V5Y2hhaW5zIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJzB4Mjk1OWJmYzNmZGI3ZGMyM2ZlZDhkZWJhMmZhZmI3MGYzZTYwNmE1OSc7XG4gICAgICBjb25zdCBpbmRleCA9IDA7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY29tbW9uS2V5Y2hhaW4sIGFkZHJlc3MsIGluZGV4IH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpc1dhbGxldEFkZHJlc3Mgd2hlbiBuZXcgYWRkcmVzcyBpcyBpbnZhbGlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd3JvbmdBZGRyZXNzID0gJ2JhZEFkZHJlc3MnO1xuICAgICAgY29uc3QgaW5kZXggPSAwO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzOiB3cm9uZ0FkZHJlc3MsIGluZGV4IH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSwge1xuICAgICAgICBtZXNzYWdlOiBgaW52YWxpZCBhZGRyZXNzOiAke3dyb25nQWRkcmVzc31gLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRyYW5zYWN0aW9uczonLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCBzZW5kZXJBZGRyZXNzMCA9ICcweDkxZjI1ZTIzN2I4M2EwMGE2MjcyNGZkYzRhODFlNDNmNDk0ZGM2YjQxYTEyNDE0OTI4MjZkMzZlNGQxMzFkYTMnO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JztcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3AkU3c8Ump2QWdme25ZQVlJMnhNJztcbiAgICBsZXQgZ2V0QmFsYW5jZVN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0SW5wdXRDb2luc1N0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0RmVlRXN0aW1hdGVTdHViOiBzaW5vbi5TaW5vblN0dWI7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGdldEJhbGFuY2VTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRCYWxhbmNlJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKHNlbmRlckFkZHJlc3MwKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxOTAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxOTAwMDAwMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG5cbiAgICAgIGdldElucHV0Q29pbnNTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRJbnB1dENvaW5zJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczApLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweGMwNWM3NjVlMjZlNmFlODRjNzhmYTI0NWYzOGEyM2ZiMjA0MDZhNWNmM2Y2MWI1N2JkMzIzYTBkZjlkOTgwMDMnLFxuICAgICAgICAgIHZlcnNpb246ICcxOTUnLFxuICAgICAgICAgIGRpZ2VzdDogJzdCSkxiMzJMS043d3Q1dXY0eGdYVzRBYkZLb01OY1BFNzZvNDFUUUV2VVpiJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxOTAwMDAwMDAwJyksXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgZ2V0RmVlRXN0aW1hdGVTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRGZWVFc3RpbWF0ZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGdldEZlZUVzdGltYXRlU3R1YlxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQUNBQWdBMGtsckFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0NBZ0FCQVFBQUFRRUNBQUFCQVFDUjhsNGplNE9nQ21KeVQ5eEtnZVEvU1UzR3RCb1NRVWtvSnROdVRSTWRvd0hBWEhaZUp1YXVoTWVQb2tYemlpUDdJRUJxWFBQMkcxZTlNam9OK2RtQUE4TUFBQUFBQUFBQUlGdkppSkJkRUFoaTE0Y3hjU3IvSFVJaEJaTWJMTWQ0cmN6VVRDTUliM1Vta2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhUG9Bd0FBQUFBQUFBRGg5UVVBQUFBQUFBPT0nXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoMTk5Nzg4MCkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIH0pO1xuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3RyYW5zYWN0aW9ucycpO1xuICAgICAgY29uc3QgdHggPSByZXMudHJhbnNhY3Rpb25zWzBdO1xuICAgICAgdHguc2NhbkluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHR4LnJlY292ZXJ5QW1vdW50LnNob3VsZC5lcXVhbCgnMTg5NzgwMjMzMicpO1xuICAgICAgdHguc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0FBQUNBQWhjS2g1eEFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0NBZ0FCQVFBQUFRRUNBQUFCQVFDUjhsNGplNE9nQ21KeVQ5eEtnZVEvU1UzR3RCb1NRVWtvSnROdVRSTWRvd0hBWEhaZUp1YXVoTWVQb2tYemlpUDdJRUJxWFBQMkcxZTlNam9OK2RtQUE4TUFBQUFBQUFBQUlGdkppSkJkRUFoaTE0Y3hjU3IvSFVJaEJaTWJMTWQ0cmN6VVRDTUliM1Vta2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhUG9Bd0FBQUFBQUFLU0lJUUFBQUFBQUFBPT0nXG4gICAgICApO1xuXG4gICAgICBjb25zdCBOb25CaXRHb1R4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24oYmFzZWNvaW4pO1xuICAgICAgTm9uQml0R29UeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24odHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IE5vbkJpdEdvVHhuSnNvbiA9IE5vbkJpdEdvVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24uaWQsICdGRENCVU5xTFVBVzRxQlRuRmpUQ1BaYXpMOFZuUkJQMmdTM0dtRW53dEVjZycpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5zZW5kZXIsIHNlbmRlckFkZHJlc3MwKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRCYWxhbmNlLCAxKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRJbnB1dENvaW5zLCAxKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRGZWVFc3RpbWF0ZSwgMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIHVuc2lnbmVkIHN3ZWVwIHJlY292ZXJ5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgfSk7XG5cbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHhSZXF1ZXN0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAyMDAwODVjMmExZTcxMDAwMDAwMDAwMDIwMDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OTAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMDkxZjI1ZTIzN2I4M2EwMGE2MjcyNGZkYzRhODFlNDNmNDk0ZGM2YjQxYTEyNDE0OTI4MjZkMzZlNGQxMzFkYTMwMWMwNWM3NjVlMjZlNmFlODRjNzhmYTI0NWYzOGEyM2ZiMjA0MDZhNWNmM2Y2MWI1N2JkMzIzYTBkZjlkOTgwMDNjMzAwMDAwMDAwMDAwMDAwMjA1YmM5ODg5MDVkMTAwODYyZDc4NzMxNzEyYWZmMWQ0MjIxMDU5MzFiMmNjNzc4YWRjY2Q0NGMyMzA4NmY3NTI2OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhM2U4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICc4NzM3NDhhMzFlNzY2ZjVmOGYwMDc3ZDhkMDAwMzU0OGZhZTRmNGMxMzQ0MDY3YTdjMzc5OWNmYTczODA4ZmI3JyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDkxZjI1ZTIzN2I4M2EwMGE2MjcyNGZkYzRhODFlNDNmNDk0ZGM2YjQxYTEyNDE0OTI4MjZkMzZlNGQxMzFkYTMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxODk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKDE4OTc4MDIzMzIpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTg5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTg5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdUcmFuc2ZlcicsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZmVlSW5mbzogeyBmZWU6IDIxOTc2NjgsIGZlZVN0cmluZzogJzIxOTc2NjgnIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJzNiODllZWM5ZDJkMmYzYjA0OWVjZGEyZTdiNWY0NzgyN2Y3OTI3ZmU2NjE4ZDZlOGIxM2Y2NGU3Yzk1ZjRiMDBiOTU3N2FiMDEzOTVlY2Y4ZWViODA0YjU5MGNlZGFlMTRmZjVmZDM5NDdiZjNiN2E5NWI5MzI3YzQ5ZTI3YzU0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGJhc2Vjb2luKTtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRUeEhleCA9IHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNlcmlhbGl6ZWRUeDtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRUeEJhc2U2NCA9IEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWRUeEhleCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oc2VyaWFsaXplZFR4QmFzZTY0KTtcbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5Kc29uID0gdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLmlkLCAnRkRDQlVOcUxVQVc0cUJUbkZqVENQWmF6TDhWblJCUDJnUzNHbUVud3RFY2cnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuSnNvbi5zZW5kZXIsIHNlbmRlckFkZHJlc3MwKTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4biBmb3IgdW5zaWduZWQgc3dlZXAgcmVjb3Zlcnkgd2l0aCBtdWx0aXBsZSBpbnB1dCBjb2lucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JztcbiAgICAgIGdldEJhbGFuY2VTdHViXG4gICAgICAgIC53aXRoQXJncyhzZW5kZXJBZGRyZXNzKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxNzk4MDAyMTIwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxNzk4MDAyMTIwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhzZW5kZXJBZGRyZXNzKS5yZXNvbHZlcyhbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg2MGFlZmFmZmEzNWRhYTMyYTFlNTYxZjJiYTljMTg3NTMwNTdkMmZlYjUwMmYzMjgwNGU1NzNlYTI4NzVhMzljJyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMTk1JyxcbiAgICAgICAgICBkaWdlc3Q6ICdqS2pkdXk4Z0hERTI0NFpKV2NQM0pYZlhQS2pxWTY3YXZNcWh6SHc5OENMJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCc5ODAwMjEyMCcpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4OWEzNjNjOTFkMjliNTA4MzJhYjk4MDk0YjZjMTkzMzk0MTI4MGZjMjk4YTJlYzIzMjczOWYxNGNlMzFlMjU4MicsXG4gICAgICAgICAgdmVyc2lvbjogJzE5NycsXG4gICAgICAgICAgZGlnZXN0OiAnRUxuYmdtVzdjclBZcjNCOXBXVnFmZzl1TGVKdDQzS1BvZmtmZFI2TFdmdHUnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzE3MDAwMDAwMDAnKSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgICAgZ2V0RmVlRXN0aW1hdGVTdHViXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBQ0FBaklkRFZsQUFBQUFBQWdNdGpsZnViWkhsVlkyZ1ozRlV3dkNGZVZOSTR4ZjVXc3llK3Q0YlFSTDh3Q0FnQUJBUUFBQVFFQ0FBQUJBUUFBNU9xbW9wSCtBcEdFVXVaRnRXVTgwbUNsL0ErelgyR1QxWUNSYXFuamlRS2FOanlSMHB0UWd5cTVnSlMyd1pNNVFTZ1B3cGlpN0NNbk9mRk00eDRsZ3NVQUFBQUFBQUFBSU1ZNWhmVUZ6dU1WYVkzK0x3bVpUdnlwUlNBSlJMTlhvY1JZUjl5S2FsWHlZSzc2LzZOZHFqS2g1V0h5dXB3WWRUQlgwdjYxQXZNb0JPVno2aWgxbzV6REFBQUFBQUFBQUNBSzE1UHRPNmd3U054MGJIa3NWSk9jTjk2QVl5YyszWVZwSnphWU1NaEhiUURrNnFhaWtmNENrWVJTNWtXMVpUelNZS1g4RDdOZllaUFZnSkZxcWVPSjZBTUFBQUFBQUFBQTRmVUZBQUFBQUFBPSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcigxOTk3ODgwKSk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6XG4gICAgICAgICAgJzdkOTFmNjljMjg1YzBiM2IwYTBkNjM3MTAyMGYxOTRkNDU5NTZlZTU1NjI4OWU3ODU0ZjZkMTE0ZTA3ODA1NzIwZWVjNjczYzZhMlxcbjcyYjdkYTQxMzdkYjdiMTI4OWYzOGFmNGY0YjgyNGVmMGRlNjVjNWY1M2UzZTY2NjE3NjE3JyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJzB4MzJkOGU1N2VlNmQ5MWU1NTU4ZGEwNjc3MTU0YzJmMDg1Nzk1MzQ4ZTMxN2Y5NWFjYzllZmFkZTFiNDExMmZjYycsXG4gICAgICB9KTtcblxuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0eFJlcXVlc3RzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICcwMDAwMDIwMDA4MjRjZDA5NmIwMDAwMDAwMDAwMjAzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjMDIwMjAwMDEwMTAwMDAwMTAxMDIwMDAwMDEwMTAwMDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OTAyOWEzNjNjOTFkMjliNTA4MzJhYjk4MDk0YjZjMTkzMzk0MTI4MGZjMjk4YTJlYzIzMjczOWYxNGNlMzFlMjU4MmM1MDAwMDAwMDAwMDAwMDAyMGM2Mzk4NWY1MDVjZWUzMTU2OThkZmUyZjA5OTk0ZWZjYTk0NTIwMDk0NGIzNTdhMWM0NTg0N2RjOGE2YTU1ZjI2MGFlZmFmZmEzNWRhYTMyYTFlNTYxZjJiYTljMTg3NTMwNTdkMmZlYjUwMmYzMjgwNGU1NzNlYTI4NzVhMzljYzMwMDAwMDAwMDAwMDAwMDIwMGFkNzkzZWQzYmE4MzA0OGRjNzQ2Yzc5MmM1NDkzOWMzN2RlODA2MzI3M2VkZDg1NjkyNzM2OTgzMGM4NDc2ZDAwZTRlYWE2YTI5MWZlMDI5MTg0NTJlNjQ1YjU2NTNjZDI2MGE1ZmMwZmIzNWY2MTkzZDU4MDkxNmFhOWUzODllODAzMDAwMDAwMDAwMDAwYTQ4ODIxMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMCxcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnM2VlYzM5NWNjYWVlN2Q2YTBiOWZhNTQ4OGRkMDBiZmViODlkYzRiZDM3ZTMxMzllYmViYjYyYzJlNjBiYzAwZCcsXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMCcsXG4gICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTc5NTgwNDQ1MicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcigxNzk1ODA0NDUyKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MzJkOGU1N2VlNmQ5MWU1NTU4ZGEwNjc3MTU0YzJmMDg1Nzk1MzQ4ZTMxN2Y5NWFjYzllZmFkZTFiNDExMmZjYycsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE3OTU4MDQ0NTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzE3OTU4MDQ0NTInLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHsgZmVlOiAyMTk3NjY4LCBmZWVTdHJpbmc6ICcyMTk3NjY4JyB9LFxuICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgICAgICAgICAgICc3ZDkxZjY5YzI4NWMwYjNiMGEwZDYzNzEwMjBmMTk0ZDQ1OTU2ZWU1NTYyODllNzg1NGY2ZDExNGUwNzgwNTcyMGVlYzY3M2M2YTI3MmI3ZGE0MTM3ZGI3YjEyODlmMzhhZjRmNGI4MjRlZjBkZTY1YzVmNTNlM2U2NjYxNzYxNycsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB1bnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbihiYXNlY29pbik7XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHhIZXggPSByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHg7XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHhCYXNlNjQgPSBCdWZmZXIuZnJvbShzZXJpYWxpemVkVHhIZXgsICdoZXgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICB1bnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHNlcmlhbGl6ZWRUeEJhc2U2NCk7XG4gICAgICBjb25zdCB1bnNpZ25lZFN3ZWVwVHhuSnNvbiA9IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuSnNvbi5pZCwgJzdKeXgzS1VWWHhzMVEyaTFScVh0ajRoRmdVZ0JvbjZQVVFBb3ZMODRZM2VQJyk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24uc2VuZGVyLCBzZW5kZXJBZGRyZXNzKTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdNUEN2MiBzaWduZWQgcmVjb3ZlcnknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3Rlc3QtcGFzc3BocmFzZS1tcGN2Mic7XG5cbiAgICAgIGxldCBtcGNWMlVzZXJLZXk6IHN0cmluZztcbiAgICAgIGxldCBtcGNWMkJhY2t1cEtleTogc3RyaW5nO1xuICAgICAgbGV0IG1wY1YyQ29tbW9uS2V5Q2hhaW46IHN0cmluZztcbiAgICAgIGxldCBtcGNWMldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICAgIGxldCBtcGNWMlJlY292ZXJQYXJhbXM6IE1QQ1JlY292ZXJ5T3B0aW9ucztcblxuICAgICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgICAgbXBjVjJDb21tb25LZXlDaGFpbiA9IHVzZXJEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgICAgbXBjVjJVc2VyS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCB1c2VyRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICAgIG1wY1YyQmFja3VwS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcblxuICAgICAgICBjb25zdCBtcGMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgICBjb25zdCBhY2NvdW50SWQgPSBtcGMuZGVyaXZlVW5oYXJkZW5lZChtcGNWMkNvbW1vbktleUNoYWluLCAnbS8wJykuc2xpY2UoMCwgNjQpO1xuICAgICAgICBtcGNWMldhbGxldEFkZHJlc3MgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShhY2NvdW50SWQpO1xuXG4gICAgICAgIG1wY1YyUmVjb3ZlclBhcmFtcyA9IHtcbiAgICAgICAgICB1c2VyS2V5OiBtcGNWMlVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBhIGRlZmF1bHQgYmFsYW5jZSBmb3IgYW55IGRlcml2ZWQgYWRkcmVzcyAoZS5nLiB3aGVuIHRoZSB0ZXN0XG4gICAgICAgIC8vIGNvcnJ1cHRzIGJpdGdvS2V5LCB0aGUgZGVyaXZlZCBzZW5kZXIgYWRkcmVzcyB3b24ndCBtYXRjaCBtcGNWMldhbGxldEFkZHJlc3MpLlxuICAgICAgICBnZXRCYWxhbmNlU3R1Yi5yZXNvbHZlcyh7XG4gICAgICAgICAgdG90YWxCYWxhbmNlOiAnMTkwMDAwMDAwMCcsXG4gICAgICAgICAgY29pbk9iamVjdEJhbGFuY2U6ICcxOTAwMDAwMDAwJyxcbiAgICAgICAgICBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGdldElucHV0Q29pbnNTdHViLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweGMwNWM3NjVlMjZlNmFlODRjNzhmYTI0NWYzOGEyM2ZiMjA0MDZhNWNmM2Y2MWI1N2JkMzIzYTBkZjlkOTgwMDMnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzE5NScsXG4gICAgICAgICAgICBkaWdlc3Q6ICc3QkpMYjMyTEtON3d0NXV2NHhnWFc0QWJGS29NTmNQRTc2bzQxVFFFdlVaYicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxOTAwMDAwMDAwJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGdldEZlZUVzdGltYXRlU3R1Yi5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKDE5OTc4ODApKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gdXNpbmcgTVBDdjIgc2lnbmluZyBtYXRlcmlhbCB3aXRob3V0IGNhbGxpbmcgZ2V0VFNTU2lnbmF0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlcihtcGNWMlJlY292ZXJQYXJhbXMpKSBhcyBNUENUeHM7XG5cbiAgICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnNjYW5JbmRleCwgMCk7XG4gICAgICAgICh0eC5zZXJpYWxpemVkVHggYXMgc3RyaW5nKS5zaG91bGQuYmUuYS5TdHJpbmcoKS5hbmQubm90LmJlLmVtcHR5KCk7XG4gICAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZFdpdGgoZ2V0QmFsYW5jZVN0dWIsIG1wY1YyV2FsbGV0QWRkcmVzcyk7XG4gICAgICAgIHNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuXG4gICAgICAgIC8vIFRoZSBTVUkgc2lnbmF0dXJlIGVudmVsb3BlIGlzIDEgKGZsYWcpICsgNjQgKHNpZ25hdHVyZSkgKyAzMiAocHVia2V5KSBieXRlcy5cbiAgICAgICAgY29uc3Qgc2lnbmVkVHggPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbihiYXNlY29pbik7XG4gICAgICAgIHNpZ25lZFR4LmZyb21SYXdUcmFuc2FjdGlvbih0eC5zZXJpYWxpemVkVHggYXMgc3RyaW5nKTtcbiAgICAgICAgQnVmZmVyLmZyb20odHguc2lnbmF0dXJlIGFzIHN0cmluZywgJ2Jhc2U2NCcpLmxlbmd0aC5zaG91bGQuZXF1YWwoOTcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdXNlIHRoZSBNUEN2MSBwYXRoIHdoZW4gc2lnbmluZyBtYXRlcmlhbCBpcyBNUEN2MSBmb3JtYXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldEVkZHNhU2lnbmluZ01hdGVyaWFsU3R1YiA9IHNhbmRCb3guc3R1YihcbiAgICAgICAgICBTdWkucHJvdG90eXBlIGFzIHVua25vd24gYXMgeyBnZXRFZGRzYVNpZ25pbmdNYXRlcmlhbDogdW5rbm93biB9LFxuICAgICAgICAgICdnZXRFZGRzYVNpZ25pbmdNYXRlcmlhbCdcbiAgICAgICAgKTtcbiAgICAgICAgZ2V0RWRkc2FTaWduaW5nTWF0ZXJpYWxTdHViLnJlc29sdmVzKHtcbiAgICAgICAgICB2ZXJzaW9uOiAndjEnLFxuICAgICAgICAgIHVzZXJQcnY6IEpTT04uc3RyaW5naWZ5KHsgZHVtbXk6ICd1c2VyU2lnbmluZ01hdGVyaWFsJyB9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIHNhbmRCb3guc3R1YihiaXRnbywgJ2RlY3J5cHQnKS5yZXNvbHZlcyhKU09OLnN0cmluZ2lmeSh7IGR1bW15OiAnYmFja3VwU2lnbmluZ01hdGVyaWFsJyB9KSk7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVN0dWIgPSBzYW5kQm94XG4gICAgICAgICAgLnN0dWIoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJylcbiAgICAgICAgICAucmVzb2x2ZXMoXG4gICAgICAgICAgICBCdWZmZXIuZnJvbShcbiAgICAgICAgICAgICAgJzFiYWFmYTBkNjIxNzRiZjBjNzhmMzI1NjMxODYxM2ZmYzQ0YjZkZDU0YWIxYTYzYzIxODUyMzJmOTJlZGU5ZGEnICtcbiAgICAgICAgICAgICAgICAnZTFiMjgxOGRiZWI1MmE4MjE1ZmQ1NmY1YTVmMmE5Zjk0YzA3OWNlODllNGRjM2IxY2U2ZWQ2ZTg0Y2U3MTg1NycsXG4gICAgICAgICAgICAgICdoZXgnXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlcihtcGNWMlJlY292ZXJQYXJhbXMpKSBhcyBNUENUeHM7XG5cbiAgICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgY29uc3QgdHggPSByZXMudHJhbnNhY3Rpb25zWzBdO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguc2NhbkluZGV4LCAwKTtcbiAgICAgICAgKHR4LnNlcmlhbGl6ZWRUeCBhcyBzdHJpbmcpLnNob3VsZC5iZS5hLlN0cmluZygpLmFuZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTdHViKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gY29tbW9uS2V5Q2hhaW4gZnJvbSBNUEN2MiBrZXljYXJkIGRvZXMgbm90IG1hdGNoIGJpdGdvS2V5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBtaXNtYXRjaGVkQml0Z29LZXkgPSBtcGNWMkNvbW1vbktleUNoYWluLnNsaWNlKDAsIC04KSArICcwMDAwMDAwMCc7XG4gICAgICAgIGNvbnN0IG1pc21hdGNoZWRQYXJhbXMgPSB7XG4gICAgICAgICAgLi4ubXBjVjJSZWNvdmVyUGFyYW1zLFxuICAgICAgICAgIGJpdGdvS2V5OiBtaXNtYXRjaGVkQml0Z29LZXksXG4gICAgICAgIH07XG5cbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAucmVjb3ZlcihtaXNtYXRjaGVkUGFyYW1zKVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdFZERTQSBNUEN2MiByZWNvdmVyeTogY29tbW9uS2V5Q2hhaW4gZnJvbSBrZXljYXJkIGRvZXMgbm90IG1hdGNoIGJpdGdvS2V5Jyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBwcm9kdWNlIGEgY3J5cHRvZ3JhcGhpY2FsbHkgdmFsaWQgRWQyNTUxOSBzaWduYXR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNpZ25SZWNvdmVyeVNweSA9IHNhbmRCb3guc3B5KFxuICAgICAgICAgIGJhc2Vjb2luIGFzIHVua25vd24gYXMgeyBzaWduU3VpTXBjVjJSZWNvdmVyeTogdW5rbm93biB9LFxuICAgICAgICAgICdzaWduU3VpTXBjVjJSZWNvdmVyeSdcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlcihtcGNWMlJlY292ZXJQYXJhbXMpKSBhcyBNUENUeHM7XG4gICAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcblxuICAgICAgICAvLyBTVUkgZW52ZWxvcGU6IDB4MDAgZmxhZyAoMSkgKyByYXcgRWQyNTUxOSBzaWcgKDY0KSArIHB1YmtleSAoMzIpID0gOTcgYnl0ZXMuXG4gICAgICAgIGNvbnN0IGVudmVsb3BlID0gQnVmZmVyLmZyb20odHguc2lnbmF0dXJlIGFzIHN0cmluZywgJ2Jhc2U2NCcpO1xuICAgICAgICBlbnZlbG9wZS5sZW5ndGguc2hvdWxkLmVxdWFsKDk3KTtcbiAgICAgICAgY29uc3QgcmF3U2lnID0gZW52ZWxvcGUuc2xpY2UoMSwgNjUpO1xuXG4gICAgICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZDogQnVmZmVyID0gKHNpZ25SZWNvdmVyeVNweS5maXJzdENhbGwuYXJnc1swXSBhcyB7IG1lc3NhZ2U6IEJ1ZmZlciB9KS5tZXNzYWdlO1xuXG4gICAgICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCk7XG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IG5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkoXG4gICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoc2lnbmFibGVQYXlsb2FkKSxcbiAgICAgICAgICBuZXcgVWludDhBcnJheShyYXdTaWcpLFxuICAgICAgICAgIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKGFjY291bnRJZCwgJ2hleCcpKVxuICAgICAgICApO1xuICAgICAgICBpc1ZhbGlkLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBtaXNzaW5nIHVzZXJLZXkgd2hlbiBiYWNrdXBLZXkgYW5kIHdhbGxldFBhc3NwaHJhc2UgYXJlIHByZXNlbnQgYnV0IHVzZXJLZXkgaXMgbm90JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHsgLi4ubXBjVjJSZWNvdmVyUGFyYW1zLCB1c2VyS2V5OiB1bmRlZmluZWQgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyB1c2VyS2V5Jyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBtaXNzaW5nIGJhY2t1cEtleSB3aGVuIHVzZXJLZXkgYW5kIHdhbGxldFBhc3NwaHJhc2UgYXJlIHByZXNlbnQgYnV0IGJhY2t1cEtleSBpcyBub3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnJlY292ZXIoeyAuLi5tcGNWMlJlY292ZXJQYXJhbXMsIGJhY2t1cEtleTogdW5kZWZpbmVkIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5zaWduZWQgc3dlZXAgd2hlbiB3YWxsZXRQYXNzcGhyYXNlIGlzIGFic2VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7IC4uLm1wY1YyUmVjb3ZlclBhcmFtcywgd2FsbGV0UGFzc3BocmFzZTogdW5kZWZpbmVkIH0pO1xuICAgICAgICAocmVzIGFzIGFueSkudHhSZXF1ZXN0cy5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRva2VuIFRyYW5zYWN0aW9uczonLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCBjb2luVHlwZSA9ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnO1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MwID0gJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMyc7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQgPSAnMHgwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxJztcbiAgICBjb25zdCByZWNvdmVyeURlc3RpbmF0aW9uID0gJzB4MDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OSc7XG4gICAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdwJFN3PFJqdkFnZntuWUFZSTJ4TSc7XG4gICAgY29uc3QgdG9rZW5Db250cmFjdEFkZHJlc3MgPSAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4JztcbiAgICBsZXQgZ2V0QmFsYW5jZVN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0SW5wdXRDb2luc1N0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0RmVlRXN0aW1hdGVTdHViOiBzaW5vbi5TaW5vblN0dWI7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGdldEJhbGFuY2VTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRCYWxhbmNlJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldElucHV0Q29pbnMnIGFzIGtleW9mIFN1aSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWIgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEZlZUVzdGltYXRlJyBhcyBrZXlvZiBTdWkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdG9rZW4gdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczApXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzE5MDAwMDAwMDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzE5MDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczAsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhzZW5kZXJBZGRyZXNzMCwgY29pblR5cGUpLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4OjpkZWVwOjpERUVQJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4OTI0YWI2OWViYmEzMDRmMjk3NWE1ODgzNzJiNDFlNGUxZjVkYjdmYTgyNDg2OGY4NDE5OWVlYjFlMGExNWEyZCcsXG4gICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODA3JyxcbiAgICAgICAgICBkaWdlc3Q6ICc3WFJiV1FUaXdBVUNqTExzWlZwSk1yQUJDaGVKQmt6S1ZmQ3I3YVRaWlZrZCcsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcigxMDAwKSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczApLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweDkxNDY5MjhmNTU3Y2I4YWIxOTE1YTU4ODZjMTM2MjQzNWEwNWI0NzA5YjU4NmJiMDFkNGM3MGU4NWJiNTMxNjEnLFxuICAgICAgICAgIHZlcnNpb246ICcyMzknLFxuICAgICAgICAgIGRpZ2VzdDogJ0dMU3pSNkhKMzE5blBLQUZtNXgzVFdIY2FIWnpDRlNCQ3FodloxcXdUNXdyJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMjMwMjYxMDc2JyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg5M2Y3MDBkYzgyZTIyOWY2OTlmNDdiMTY3ODU5YzUxMDgyODhiNzhmNTQwNjg4MDBjYzI5MDkwMGQwZGU4NDI5JyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMTQ5JyxcbiAgICAgICAgICBkaWdlc3Q6ICcyd1hEeHQyWnhla0J4TjZvVzNCcVZEWFpjWDQ5Qzg3bjFBTjI2Tnl1N2tQUicsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTY5NjExMDI0JyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHhiODY5YjQ1NzQ0Y2EyYzRhNjYzYzZlODY3OWRiNWE2MzJiZWFkMDM2NDI3Mzg0MmQzOTkwZDdmZjY1ZDU3YjFlJyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMjM3JyxcbiAgICAgICAgICBkaWdlc3Q6ICdGMXhXS1BWSFY1V0w3MkVyamdReHJqbjNSTkgyR0hqeU45alRnd1c3UXBoaycsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTAxOTc2JyksXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICAgIGdldEZlZUVzdGltYXRlU3R1YlxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQURBUUNTU3JhZXU2TUU4cGRhV0lOeXRCNU9IMTIzK29KSWFQaEJtZTZ4NEtGYUxXZHVFUUlBQUFBQUlHRHhXdjA3dXF2MGhFWmlPRzBGQy94RzgzMFdCbVJEWkxPTG1NcDYxZ2RTQUFqb0F3QUFBQUFBQUFBZ0FPVHFwcUtSL2dLUmhGTG1SYlZsUE5KZ3Bmd1BzMTloazlXQWtXcXA0NGtDQWdFQUFBRUJBUUFCQVFJQUFBRUNBSkh5WGlON2c2QUtZbkpQM0VxQjVEOUpUY2EwR2hKQlNTZ20wMjVORXgyakFaRkdrbzlWZkxpckdSV2xpR3dUWWtOYUJiUndtMWhyc0IxTWNPaGJ0VEZoN3dBQUFBQUFBQUFnNDlxNTVlSkdHTTV4dG9KelkyMzNVbkwyZGoxS2I1TjkwWXhaNzBRb3BXMlI4bDRqZTRPZ0NtSnlUOXhLZ2VRL1NVM0d0Qm9TUVVrb0p0TnVUUk1kbytnREFBQUFBQUFBQU9IMUJRQUFBQUFBJ1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKDIzNDU1MDQpKTtcblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgfSk7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgICBjb25zdCB0eCA9IHJlcy50cmFuc2FjdGlvbnNbMF07XG4gICAgICB0eC5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDApO1xuICAgICAgdHgucmVjb3ZlcnlBbW91bnQuc2hvdWxkLmVxdWFsKCcxMDAwJyk7XG4gICAgICB0eC5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQUFBREFRQ1NTcmFldTZNRThwZGFXSU55dEI1T0gxMjMrb0pJYVBoQm1lNng0S0ZhTFdkdUVRSUFBQUFBSUdEeFd2MDd1cXYwaEVaaU9HMEZDL3hHODMwV0JtUkRaTE9MbU1wNjFnZFNBQWpvQXdBQUFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0NBZ0VBQUFFQkFRQUJBUUlBQUFFQ0FKSHlYaU43ZzZBS1luSlAzRXFCNUQ5SlRjYTBHaEpCU1NnbTAyNU5FeDJqQVpGR2tvOVZmTGlyR1JXbGlHd1RZa05hQmJSd20xaHJzQjFNY09oYnRURmg3d0FBQUFBQUFBQWc0OXE1NWVKR0dNNXh0b0p6WTIzM1VuTDJkajFLYjVOOTBZeFo3MFFvcFcyUjhsNGplNE9nQ21KeVQ5eEtnZVEvU1UzR3RCb1NRVWtvSnROdVRSTWRvK2dEQUFBQUFBQUFWbDRuQUFBQUFBQUEnXG4gICAgICApO1xuXG4gICAgICBjb25zdCBOb25CaXRHb1R4bkRlc2VyaWFsaXplID0gbmV3IFRva2VuVHJhbnNmZXJUcmFuc2FjdGlvbihiYXNlY29pbik7XG4gICAgICBOb25CaXRHb1R4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbih0eC5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgTm9uQml0R29UeG5Kc29uID0gTm9uQml0R29UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5pZCwgJ0RZVzltQThBWkdRbnRrN0hHUVVFb0VkeThCYUg4SGg5VHMyOTRFbnFHVEVyJyk7XG4gICAgICBzaG91bGQuZXF1YWwoTm9uQml0R29UeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzczApO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDMpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDIpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHRva2VuIHR4biBmb3IgdW5zaWduZWQgc3dlZXAgcmVjb3ZlcnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzI5ODk4MDI0MCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMjk4OTgwMjQwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG5cbiAgICAgIGdldElucHV0Q29pbnNTdHViLndpdGhBcmdzKHNlbmRlckFkZHJlc3NDb2xkV2FsbGV0LCBjb2luVHlwZSkucmVzb2x2ZXMoW1xuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg0YzFjY2NjNmQwMzUxMGJkNzRhOTVmODFiMmI3ZGEwODExOWNiMThlMmM1NjU0MzVlN2FkNzE1ZTZhYWRjNWE3JyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4MDknLFxuICAgICAgICAgIGRpZ2VzdDogJ0FmeTRMVzQ2dHVjemozNDFUYkNMZWV5bnhydXBqOUx3MnFCUVVwbmRIYzFjJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKDEwMDApLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhzZW5kZXJBZGRyZXNzQ29sZFdhbGxldCkucmVzb2x2ZXMoW1xuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4OTgxMTRmMmRkZWZlM2YxNmQ5ZDJlMDE2MTk0YjUyYzRjM2FmNDMwYzE2MDFiZGIzNTM5Y2JkMjM3Y2JjYTA2OCcsXG4gICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODA5JyxcbiAgICAgICAgICBkaWdlc3Q6ICdEQnRvcXZXdHJjWUhFMUhqUVVvNGlnVGtIWXhZN0Q4M2lIU29LWGk5QTg1VycsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcigyMDAwMDAwMDApLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4OWVjMTM0NDA2NDdiMGJlZTc0ZjQ1NDA5NTg5YWQyZmY1YTE4Yzk2MTVmOTlkNWQ5MTRmOTg4YjgzNGRhNDkzZScsXG4gICAgICAgICAgdmVyc2lvbjogJzIzOScsXG4gICAgICAgICAgZGlnZXN0OiAnOWQzdVZzUTRwMzdUR256VHBuWFh3MnBGb2dnYlZmVnA5Q2RDNGpwWnE2NjQnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoOTg5ODAyNDApLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFEQVFCTUhNekcwRFVRdlhTcFg0R3l0OW9JRVp5eGppeFdWRFhuclhGZWFxM0ZwMmx1RVFJQUFBQUFJSSswb3pTNEthemV5L29xTW9aQ3I2Sk5iNVUzUVBkb01JRHVEa3M5T3BZdkFBam9Bd0FBQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQUFGa2xkM2FkSXdSYWlHQ1FvTmROa2NKMXNYdVhJb2Uxb1RFNzBNOU1VUWhBWmdSVHkzZS9qOFcyZExnRmhsTFVzVERyME1NRmdHOXMxT2N2U044dktCb2FXNFJBZ0FBQUFBZ3RSYWhXMUEwdk5Ra0pVUU1Wa3p6YjBPVlF2aUdjZTk1bmQ0R1llZUpvQWtCWkpYZDJuU01FV29oZ2tLRFhUWkhDZGJGN2x5S0h0YUV4TzlEUFRGRUllZ0RBQUFBQUFBQUFPSDFCUUFBQUFBQSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcigyMzQ1NTA0KSk7XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleUNvbGRXYWxsZXQsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgfSk7XG5cbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHhSZXF1ZXN0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAzMDEwMDRjMWNjY2M2ZDAzNTEwYmQ3NGE5NWY4MWIyYjdkYTA4MTE5Y2IxOGUyYzU2NTQzNWU3YWQ3MTVlNmFhZGM1YTc2OTZlMTEwMjAwMDAwMDAwMjA4ZmI0YTMzNGI4MjlhY2RlY2JmYTJhMzI4NjQyYWZhMjRkNmY5NTM3NDBmNzY4MzA4MGVlMGU0YjNkM2E5NjJmMDAwOGU4MDMwMDAwMDAwMDAwMDAwMDIwMDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OTAyMDIwMTAwMDAwMTAxMDEwMDAxMDEwMjAwMDAwMTAyMDAwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxMDE5ODExNGYyZGRlZmUzZjE2ZDlkMmUwMTYxOTRiNTJjNGMzYWY0MzBjMTYwMWJkYjM1MzljYmQyMzdjYmNhMDY4Njk2ZTExMDIwMDAwMDAwMDIwYjUxNmExNWI1MDM0YmNkNDI0MjU0NDBjNTY0Y2YzNmY0Mzk1NDJmODg2NzFlZjc5OWRkZTA2NjFlNzg5YTAwOTAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjFlODAzMDAwMDAwMDAwMDAwNTY1ZTI3MDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMCxcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICdlMzU0N2E1OGI5YzQ4ODQwYTI3NzRhZWI3MWI4NjUyYTcwYjY3ZWU1OWMzZmE1YjFmNzQzNzM4ZDhiMjk1MTk5JyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKDEwMDApLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICcxMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAyNTgwMDU0LFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyNTgwMDU0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJzc5ZDRiOWI1OTRkZjAyOGZlZTM3MjVhNmFmNTFhZTNhYjZhMzUxOWU5ZDJjMzIyZjJjOGZkODE1Yjk2NDk2MzIzYzVhYmE3ZWE4NzRjMTAyZjk2NmYxYTYxZDNjOWE0MmI1ZjMxNzdjNmE4NTcxMmNmMzEzNzE1YWZkZGY4M2Q4JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24oYmFzZWNvaW4pO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4SGV4ID0gcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4O1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4QmFzZTY0ID0gQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4SGV4LCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbihzZXJpYWxpemVkVHhCYXNlNjQpO1xuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkpzb24gPSB1bnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICdGOHdyVWpaWWY2eHZEVzJMelc5RG9oQUt5SkZjV2dHRXZqTW9LTHhDYWptVicpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQpO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdG9rZW4gdHhuIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyeSB3aXRoIG11bHRpcGxlIGlucHV0IGNvaW5zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKHNlbmRlckFkZHJlc3NDb2xkV2FsbGV0KVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcyOTg5ODAyNDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzI5ODk4MDI0MCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pO1xuICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKHNlbmRlckFkZHJlc3NDb2xkV2FsbGV0LCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTEwMDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzExMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhzZW5kZXJBZGRyZXNzQ29sZFdhbGxldCwgY29pblR5cGUpLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4OjpkZWVwOjpERUVQJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4NGMxY2NjYzZkMDM1MTBiZDc0YTk1ZjgxYjJiN2RhMDgxMTljYjE4ZTJjNTY1NDM1ZTdhZDcxNWU2YWFkYzVhNycsXG4gICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODA5JyxcbiAgICAgICAgICBkaWdlc3Q6ICdBZnk0TFc0NnR1Y3pqMzQxVGJDTGVleW54cnVwajlMdzJxQlFVcG5kSGMxYycsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTAwMCcpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg3MmFkOTkxMzBhYmQzNzkwZGI3YmFjODkwOGQ1MGQzNDEyYTgwMGE4ZmNkMTBjMWNmYmQ2NGI4MjE1NTM3NTU4JyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4NjUnLFxuICAgICAgICAgIGRpZ2VzdDogJ1g4dWFORGtTZllLYTZQQnpKSlVlOVN0UDRuUldSOVJab2EybkpIcXY1bW4nLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEwMDAwJyksXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICAgIGdldElucHV0Q29pbnNTdHViLndpdGhBcmdzKHNlbmRlckFkZHJlc3NDb2xkV2FsbGV0KS5yZXNvbHZlcyhbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHg5ODExNGYyZGRlZmUzZjE2ZDlkMmUwMTYxOTRiNTJjNGMzYWY0MzBjMTYwMWJkYjM1MzljYmQyMzdjYmNhMDY4JyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4MDknLFxuICAgICAgICAgIGRpZ2VzdDogJ0RCdG9xdld0cmNZSEUxSGpRVW80aWdUa0hZeFk3RDgzaUhTb0tYaTlBODVXJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcyMDAwMDAwMDAnKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweDllYzEzNDQwNjQ3YjBiZWU3NGY0NTQwOTU4OWFkMmZmNWExOGM5NjE1Zjk5ZDVkOTE0Zjk4OGI4MzRkYTQ5M2UnLFxuICAgICAgICAgIHZlcnNpb246ICcyMzknLFxuICAgICAgICAgIGRpZ2VzdDogJzlkM3VWc1E0cDM3VEduelRwblhYdzJwRm9nZ2JWZlZwOUNkQzRqcFpxNjY0JyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCc5ODk4MDI0MCcpLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFFQVFCeXJaa1RDcjAza050N3JJa0kxUTAwRXFnQXFQelJEQno3MWt1Q0ZWTjFXS0Z1RVFJQUFBQUFJQWU0WFRpMjRiU0Y4VVZaTU5KeWxoQ0FnY3FzMTJaTVNOZlY5SVZ5N2l1OUFRQk1ITXpHMERVUXZYU3BYNEd5dDlvSUVaeXhqaXhXVkRYbnJYRmVhcTNGcDJsdUVRSUFBQUFBSUkrMG96UzRLYXpleS9vcU1vWkNyNkpOYjVVM1FQZG9NSUR1RGtzOU9wWXZBQWo0S2dBQUFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0RBd0VBQUFFQkFRQUNBUUFBQVFFQ0FBRUJBZ0VBQVFNQUFXU1YzZHAwakJGcUlZSkNnMTAyUnduV3hlNWNpaDdXaE1UdlF6MHhSQ0VCbUJGUExkNytQeGJaMHVBV0dVdFN4TU92UXd3V0FiMnpVNXk5STN5OG9HaHBiaEVDQUFBQUFDQzFGcUZiVURTODFDUWxSQXhXVFBOdlE1VkMrSVp4NzNtZDNnWmg1NG1nQ1FGa2xkM2FkSXdSYWlHQ1FvTmROa2NKMXNYdVhJb2Uxb1RFNzBNOU1VUWg2QU1BQUFBQUFBQUE0ZlVGQUFBQUFBQT0nXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoMTAzNjMyOCkpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5Q29sZFdhbGxldCxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3MsXG4gICAgICB9KTtcblxuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0eFJlcXVlc3RzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICcwMDAwMDQwMTAwNzJhZDk5MTMwYWJkMzc5MGRiN2JhYzg5MDhkNTBkMzQxMmE4MDBhOGZjZDEwYzFjZmJkNjRiODIxNTUzNzU1OGExNmUxMTAyMDAwMDAwMDAyMDA3Yjg1ZDM4YjZlMWI0ODVmMTQ1NTkzMGQyNzI5NjEwODA4MWNhYWNkNzY2NGM0OGQ3ZDVmNDg1NzJlZTJiYmQwMTAwNGMxY2NjYzZkMDM1MTBiZDc0YTk1ZjgxYjJiN2RhMDgxMTljYjE4ZTJjNTY1NDM1ZTdhZDcxNWU2YWFkYzVhNzY5NmUxMTAyMDAwMDAwMDAyMDhmYjRhMzM0YjgyOWFjZGVjYmZhMmEzMjg2NDJhZmEyNGQ2Zjk1Mzc0MGY3NjgzMDgwZWUwZTRiM2QzYTk2MmYwMDA4ZjgyYTAwMDAwMDAwMDAwMDAwMjAwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5MDMwMzAxMDAwMDAxMDEwMTAwMDIwMTAwMDAwMTAxMDIwMDAxMDEwMjAxMDAwMTAzMDAwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxMDE5ODExNGYyZGRlZmUzZjE2ZDlkMmUwMTYxOTRiNTJjNGMzYWY0MzBjMTYwMWJkYjM1MzljYmQyMzdjYmNhMDY4Njk2ZTExMDIwMDAwMDAwMDIwYjUxNmExNWI1MDM0YmNkNDI0MjU0NDBjNTY0Y2YzNmY0Mzk1NDJmODg2NzFlZjc5OWRkZTA2NjFlNzg5YTAwOTAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjFlODAzMDAwMDAwMDAwMDAwZjg2NDExMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMCxcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICdjZDAyOGM0MDFmODE1ZGFiN2Y2YzVlOGEzMzk3Njg3OWM1Yzc5OWFlN2M5ZmRlMDFjYWZkMGFlZTAwNzVhMTc0JyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMTAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcignMTEwMDAnKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OScsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzExMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzExMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAxMTM5OTYwLFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcxMTM5OTYwJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJzc5ZDRiOWI1OTRkZjAyOGZlZTM3MjVhNmFmNTFhZTNhYjZhMzUxOWU5ZDJjMzIyZjJjOGZkODE1Yjk2NDk2MzIzYzVhYmE3ZWE4NzRjMTAyZjk2NmYxYTYxZDNjOWE0MmI1ZjMxNzdjNmE4NTcxMmNmMzEzNzE1YWZkZGY4M2Q4JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24oYmFzZWNvaW4pO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4SGV4ID0gcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4O1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4QmFzZTY0ID0gQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4SGV4LCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbihzZXJpYWxpemVkVHhCYXNlNjQpO1xuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkpzb24gPSB1bnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICc0cWVYSlA3cFRhNnBteUFLdUpaRzlBa0dzS001M1NEcUhWY1BqUk1GSGpjNScpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzc0NvbGRXYWxsZXQpO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDEpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ01QQ3YyIHNpZ25lZCByZWNvdmVyeScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1wY1YyV2FsbGV0UGFzc3BocmFzZSA9ICd0ZXN0LXBhc3NwaHJhc2UtbXBjdjItdG9rZW4nO1xuXG4gICAgICBsZXQgbXBjVjJVc2VyS2V5OiBzdHJpbmc7XG4gICAgICBsZXQgbXBjVjJCYWNrdXBLZXk6IHN0cmluZztcbiAgICAgIGxldCBtcGNWMkNvbW1vbktleUNoYWluOiBzdHJpbmc7XG4gICAgICBsZXQgbXBjVjJXYWxsZXRBZGRyZXNzOiBzdHJpbmc7XG5cbiAgICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IFt1c2VyRGtnLCBiYWNrdXBEa2ddID0gYXdhaXQgTVBTVXRpbC5nZW5lcmF0ZUVkRHNhREtHS2V5U2hhcmVzKCk7XG4gICAgICAgIG1wY1YyQ29tbW9uS2V5Q2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgICAgIG1wY1YyVXNlcktleSA9IGF3YWl0IGVuY3J5cHQobXBjVjJXYWxsZXRQYXNzcGhyYXNlLCB1c2VyRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICAgIG1wY1YyQmFja3VwS2V5ID0gYXdhaXQgZW5jcnlwdChtcGNWMldhbGxldFBhc3NwaHJhc2UsIGJhY2t1cERrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKS50b1N0cmluZygnYmFzZTY0JykpO1xuXG4gICAgICAgIGNvbnN0IG1wYyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCk7XG4gICAgICAgIG1wY1YyV2FsbGV0QWRkcmVzcyA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGFjY291bnRJZCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdG9rZW4gdHhuIHVzaW5nIE1QQ3YyIHNpZ25pbmcgbWF0ZXJpYWwgd2l0aG91dCBjYWxsaW5nIGdldFRTU1NpZ25hdHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgICAud2l0aEFyZ3MobXBjVjJXYWxsZXRBZGRyZXNzKVxuICAgICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzE5MDAwMDAwMDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzE5MDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAgIC53aXRoQXJncyhtcGNWMldhbGxldEFkZHJlc3MsIGNvaW5UeXBlKVxuICAgICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzEwMDAnLCBjb2luT2JqZWN0QmFsYW5jZTogJzEwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcbiAgICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3MobXBjVjJXYWxsZXRBZGRyZXNzLCBjb2luVHlwZSkucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4OjpkZWVwOjpERUVQJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHg5MjRhYjY5ZWJiYTMwNGYyOTc1YTU4ODM3MmI0MWU0ZTFmNWRiN2ZhODI0ODY4Zjg0MTk5ZWViMWUwYTE1YTJkJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczNDY5NjgwNycsXG4gICAgICAgICAgICBkaWdlc3Q6ICc3WFJiV1FUaXdBVUNqTExzWlZwSk1yQUJDaGVKQmt6S1ZmQ3I3YVRaWlZrZCcsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKDEwMDApLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhtcGNWMldhbGxldEFkZHJlc3MpLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDkxNDY5MjhmNTU3Y2I4YWIxOTE1YTU4ODZjMTM2MjQzNWEwNWI0NzA5YjU4NmJiMDFkNGM3MGU4NWJiNTMxNjEnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzIzOScsXG4gICAgICAgICAgICBkaWdlc3Q6ICdHTFN6UjZISjMxOW5QS0FGbTV4M1RXSGNhSFp6Q0ZTQkNxaHZaMXF3VDV3cicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMjMwMjYxMDc2JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGdldEZlZUVzdGltYXRlU3R1Yi5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKDIzNDU1MDQpKTtcblxuICAgICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogbXBjVjJCYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBtcGNWMldhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3MsXG4gICAgICAgIH0pKSBhcyBNUENUeHM7XG5cbiAgICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnNjYW5JbmRleCwgMCk7XG4gICAgICAgICh0eC5zZXJpYWxpemVkVHggYXMgc3RyaW5nKS5zaG91bGQuYmUuYS5TdHJpbmcoKS5hbmQubm90LmJlLmVtcHR5KCk7XG4gICAgICAgIHNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuXG4gICAgICAgIC8vIFRoZSBTVUkgc2lnbmF0dXJlIGVudmVsb3BlIGlzIDEgKGZsYWcpICsgNjQgKHNpZ25hdHVyZSkgKyAzMiAocHVia2V5KSBieXRlcy5cbiAgICAgICAgQnVmZmVyLmZyb20odHguc2lnbmF0dXJlIGFzIHN0cmluZywgJ2Jhc2U2NCcpLmxlbmd0aC5zaG91bGQuZXF1YWwoOTcpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRyYW5zYWN0aW9ucyBmb3Igd2FsbGV0IHdpdGggbXVsdGlwbGUgYWRkcmVzc2VzOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MwID0gJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMyc7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzczEgPSAnMHgzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjJztcbiAgICBjb25zdCByZWNvdmVyeURlc3RpbmF0aW9uID0gJzB4MDBlNGVhYTZhMjkxZmUwMjkxODQ1MmU2NDViNTY1M2NkMjYwYTVmYzBmYjM1ZjYxOTNkNTgwOTE2YWE5ZTM4OSc7XG4gICAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdwJFN3PFJqdkFnZntuWUFZSTJ4TSc7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyhzZW5kZXJBZGRyZXNzMClcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhzZW5kZXJBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTgwMDAwMDAwMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMTgwMDAwMDAwMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pO1xuXG4gICAgICBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0SW5wdXRDb2lucycgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrLndpdGhBcmdzKHNlbmRlckFkZHJlc3MxKS5yZXNvbHZlcyhbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHhmZjkzYWRjMmY1MTZmY2FhMGM2MDQwZTAxZjUwMDI3YTIzZjliMTc2N2Y1MDQwZWIyMjgyNzkwYTY5MDBjZTdmJyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMTk2JyxcbiAgICAgICAgICBkaWdlc3Q6ICdYcmpSTTlaTTk4eGROV2lnSFlRakNwR29XdDZhWkxwcVhkU0VpeG5oYjRwJyxcbiAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxODAwMDAwMDAwJyksXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEZlZUVzdGltYXRlJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFDQUFnQThWTmxBQUFBQUFBZ0FPVHFwcUtSL2dLUmhGTG1SYlZsUE5KZ3Bmd1BzMTloazlXQWtXcXA0NGtDQWdBQkFRQUFBUUVDQUFBQkFRQXkyT1YrNXRrZVZWamFCbmNWVEM4SVY1VTBqakYvbGF6Sjc2M2h0QkV2ekFIL2s2M0M5UmI4cWd4Z1FPQWZVQUo2SS9teGRuOVFRT3NpZ25rS2FRRE9mOFFBQUFBQUFBQUFJQWZucDkwZ01zZEJHR3oxdFcvc0ZRbEFyaGtSbVlqZGlYVFh4K0N2eEhqVk10amxmdWJaSGxWWTJnWjNGVXd2Q0ZlVk5JNHhmNVdzeWUrdDRiUVJMOHpvQXdBQUFBQUFBQURoOVFVQUFBQUFBQT09J1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKDE5OTc4ODApKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4biBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMgYXQgYWRkcmVzcyAxIGJ1dCBzZWFyY2ggZnJvbSBhZGRyZXNzIDAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIH0pO1xuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3RyYW5zYWN0aW9ucycpO1xuICAgICAgY29uc3QgdHggPSByZXMudHJhbnNhY3Rpb25zWzBdO1xuICAgICAgdHguc2NhbkluZGV4LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LnJlY292ZXJ5QW1vdW50LnNob3VsZC5lcXVhbCgnMTc5NzgwMjMzMicpO1xuICAgICAgdHguc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0FBQUNBQWhjU1NockFBQUFBQUFnQU9UcXBxS1IvZ0tSaEZMbVJiVmxQTkpncGZ3UHMxOWhrOVdBa1dxcDQ0a0NBZ0FCQVFBQUFRRUNBQUFCQVFBeTJPVis1dGtlVlZqYUJuY1ZUQzhJVjVVMGpqRi9sYXpKNzYzaHRCRXZ6QUgvazYzQzlSYjhxZ3hnUU9BZlVBSjZJL214ZG45UVFPc2lnbmtLYVFET2Y4UUFBQUFBQUFBQUlBZm5wOTBnTXNkQkdHejF0Vy9zRlFsQXJoa1JtWWpkaVhUWHgrQ3Z4SGpWTXRqbGZ1YlpIbFZZMmdaM0ZVd3ZDRmVWTkk0eGY1V3N5ZSt0NGJRUkw4em9Bd0FBQUFBQUFLU0lJUUFBQUFBQUFBPT0nXG4gICAgICApO1xuXG4gICAgICBjb25zdCBVbnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbihiYXNlY29pbik7XG4gICAgICBVbnNpZ25lZFN3ZWVwVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHR4LnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBVbnNpZ25lZFN3ZWVwVHhuSnNvbiA9IFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKFVuc2lnbmVkU3dlZXBUeG5Kc29uLmlkLCAnQnFIY0NSNTFtcVV5aTVHSllFRUQzY3c5QWdwSjNTcmFUcnQ1YUU5bkxrTGonKTtcbiAgICAgIHNob3VsZC5lcXVhbChVbnNpZ25lZFN3ZWVwVHhuSnNvbi5zZW5kZXIsIHNlbmRlckFkZHJlc3MxKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRCYWxhbmNlLCAyKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRJbnB1dENvaW5zLCAxKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRGZWVFc3RpbWF0ZSwgMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIGF0IGFkZHJlc3MgMSBidXQgc2VhcmNoIGZyb20gYWRkcmVzcyAxJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgfSk7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgICBjb25zdCB0eCA9IHJlcy50cmFuc2FjdGlvbnNbMF07XG4gICAgICB0eC5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgucmVjb3ZlcnlBbW91bnQuc2hvdWxkLmVxdWFsKCcxNzk3ODAyMzMyJyk7XG4gICAgICB0eC5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQUFBQ0FBaGNTU2hyQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnQUJBUUFBQVFFQ0FBQUJBUUF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpBSC9rNjNDOVJiOHFneGdRT0FmVUFKNkkvbXhkbjlRUU9zaWdua0thUURPZjhRQUFBQUFBQUFBSUFmbnA5MGdNc2RCR0d6MXRXL3NGUWxBcmhrUm1ZamRpWFRYeCtDdnhIalZNdGpsZnViWkhsVlkyZ1ozRlV3dkNGZVZOSTR4ZjVXc3llK3Q0YlFSTDh6b0F3QUFBQUFBQUtTSUlRQUFBQUFBQUE9PSdcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGJhc2Vjb2luKTtcbiAgICAgIFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24odHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5Kc29uID0gVW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoVW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICdCcUhjQ1I1MW1xVXlpNUdKWUVFRDNjdzlBZ3BKM1NyYVRydDVhRTluTGtMaicpO1xuICAgICAgc2hvdWxkLmVxdWFsKFVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzczEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVG9rZW4gVHJhbnNhY3Rpb25zIGZvciB3YWxsZXQgd2l0aCBtdWx0aXBsZSBhZGRyZXNzZXM6JywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzczAgPSAnMHg5MWYyNWUyMzdiODNhMDBhNjI3MjRmZGM0YTgxZTQzZjQ5NGRjNmI0MWExMjQxNDkyODI2ZDM2ZTRkMTMxZGEzJztcbiAgICBjb25zdCBzZW5kZXJBZGRyZXNzMSA9ICcweDMyZDhlNTdlZTZkOTFlNTU1OGRhMDY3NzE1NGMyZjA4NTc5NTM0OGUzMTdmOTVhY2M5ZWZhZGUxYjQxMTJmY2MnO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSAnMHgwMGU0ZWFhNmEyOTFmZTAyOTE4NDUyZTY0NWI1NjUzY2QyNjBhNWZjMGZiMzVmNjE5M2Q1ODA5MTZhYTllMzg5JztcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3AkU3c8Ump2QWdme25ZQVlJMnhNJztcbiAgICBjb25zdCBwYWNrYWdlSWQgPSAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4JztcbiAgICBjb25zdCBjb2luVHlwZSA9IGAke3BhY2thZ2VJZH06OmRlZXA6OkRFRVBgO1xuICAgIGxldCBnZXRCYWxhbmNlU3R1Yjogc2lub24uU2lub25TdHViO1xuICAgIGxldCBnZXRJbnB1dENvaW5zU3R1Yjogc2lub24uU2lub25TdHViO1xuICAgIGxldCBnZXRGZWVFc3RpbWF0ZVN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgZ2V0QmFsYW5jZVN0dWIgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnIGFzIGtleW9mIFN1aSk7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczApXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzcwNjg3NTY5MicsIGNvaW5PYmplY3RCYWxhbmNlOiAnNzA2ODc1NjkyJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKHNlbmRlckFkZHJlc3MwLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhzZW5kZXJBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTIwMTAxOTc2JywgY29pbk9iamVjdEJhbGFuY2U6ICcxMjAxMDE5NzYnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczEsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG5cbiAgICAgIGdldElucHV0Q29pbnNTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRJbnB1dENvaW5zJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczEsIGNvaW5UeXBlKS5yZXNvbHZlcyhbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4MzZkYmVmODY2YTFkNjJiZjczMjg5ODlhMTBmYjJmMDdkNzY5ZjRlZTU4N2MwZGU0YTBhMjU2ZTU3ZTBhNThhODo6ZGVlcDo6REVFUCcsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweGNkYmE3NmJkYzNmNDYwZWQwZDZhZjgzNGZjMTdiMDgyZWI5ZWFiZDBiODg2ZjlhZjE3Y2Q0MjkxZjJmODYyZmEnLFxuICAgICAgICAgIHZlcnNpb246ICczNDY5Njg2NicsXG4gICAgICAgICAgZGlnZXN0OiAnN3ZiU2dhR3l0QVR0blEyZkxSUW8zVnRDd1lyOUtqeHN1eExMTWoyZGZDc1UnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEwMDAnKSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczEpLnJlc29sdmVzKFtcbiAgICAgICAge1xuICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgb2JqZWN0SWQ6ICcweDBlY2E3ODkwMWUzNDJiMjUxNWZiZjk5YmUyNDNiM2YwMGFkZTBhN2E1MDY3NWIzNzMwN2Y0NGNjMTk1YzkwNDYnLFxuICAgICAgICAgIHZlcnNpb246ICczNDY5Njg3NScsXG4gICAgICAgICAgZGlnZXN0OiAnQVBFM25qNHpZbTRoWTJYbjlDMm4zeW55UGlZcXhnVFJlallUN1BhcmhwVTcnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEyMDAwMDAwMCcpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICBvYmplY3RJZDogJzB4NzYxMjIyMzQwZGI4MGRkOWRhMTQ0ZDU1MDk4ODcwYmM4MWE3ODgyMDVlMGJiZGQzNGMyZjhkZjEyY2Y0NWFlYicsXG4gICAgICAgICAgdmVyc2lvbjogJzIyNycsXG4gICAgICAgICAgZGlnZXN0OiAnOWJ3eWphU0gzWDhhbnJqR1VwRDFOcU1yTEZVdEdTQ0s5TEZ1TGJoalg2OUUnLFxuICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEwMTk3NicpLFxuICAgICAgICB9LFxuICAgICAgXSk7XG5cbiAgICAgIGdldEZlZUVzdGltYXRlU3R1YiA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0RmVlRXN0aW1hdGUnIGFzIGtleW9mIFN1aSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFEQVFETnVuYTl3L1JnN1ExcStEVDhGN0NDNjU2cjBMaUcrYThYelVLUjh2aGkrcUp1RVFJQUFBQUFJR2JnMlZwaHVFZXp6VFZMeUJUclFHQytHSldNUlNWNVlKV2thN2Z3bUQ5TEFBam9Bd0FBQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQURMWTVYN20yUjVWV05vR2R4Vk1Md2hYbFRTT01YK1ZyTW52cmVHMEVTL01BUTdLZUpBZU5Dc2xGZnY1bStKRHMvQUszZ3A2VUdkYk56Qi9STXdaWEpCR3EyNFJBZ0FBQUFBZ2kycTJzVWdkMGZyZ3hXWlZrZ2FqSkFiMVY1ZjFWemFUclhFWUl4a0xxREF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpPZ0RBQUFBQUFBQUFPSDFCUUFBQUFBQSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcigyMzQ1NTA0KSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0b2tlbiB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIGF0IGFkZHJlc3MgMSBidXQgc2VhcmNoIGZyb20gYWRkcmVzcyAwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBwYWNrYWdlSWQsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCd0cmFuc2FjdGlvbnMnKTtcbiAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcbiAgICAgIHR4LnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5yZWNvdmVyeUFtb3VudC5zaG91bGQuZXF1YWwoJzEwMDAnKTtcbiAgICAgIHR4LnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdBQUFEQVFETnVuYTl3L1JnN1ExcStEVDhGN0NDNjU2cjBMaUcrYThYelVLUjh2aGkrcUp1RVFJQUFBQUFJR2JnMlZwaHVFZXp6VFZMeUJUclFHQytHSldNUlNWNVlKV2thN2Z3bUQ5TEFBam9Bd0FBQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQURMWTVYN20yUjVWV05vR2R4Vk1Md2hYbFRTT01YK1ZyTW52cmVHMEVTL01BUTdLZUpBZU5Dc2xGZnY1bStKRHMvQUszZ3A2VUdkYk56Qi9STXdaWEpCR3EyNFJBZ0FBQUFBZ2kycTJzVWdkMGZyZ3hXWlZrZ2FqSkFiMVY1ZjFWemFUclhFWUl4a0xxREF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpPZ0RBQUFBQUFBQVZsNG5BQUFBQUFBQSdcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGJhc2Vjb2luKTtcbiAgICAgIFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24odHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5Kc29uID0gVW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoVW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICdHRnVrMVZLeTN3elRGZUFVdHJtVWU2c3hSaHRlenpyR0RmS2RwUVR4djlzbycpO1xuICAgICAgc2hvdWxkLmVxdWFsKFVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzczEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDUpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDIpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHRva2VuIHR4biBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMgYXQgYWRkcmVzcyAxIGJ1dCBzZWFyY2ggZnJvbSBhZGRyZXNzIDEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHBhY2thZ2VJZCxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCd0cmFuc2FjdGlvbnMnKTtcbiAgICAgIGNvbnN0IHR4ID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcbiAgICAgIHR4LnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5yZWNvdmVyeUFtb3VudC5zaG91bGQuZXF1YWwoJzEwMDAnKTtcbiAgICAgIHR4LnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdBQUFEQVFETnVuYTl3L1JnN1ExcStEVDhGN0NDNjU2cjBMaUcrYThYelVLUjh2aGkrcUp1RVFJQUFBQUFJR2JnMlZwaHVFZXp6VFZMeUJUclFHQytHSldNUlNWNVlKV2thN2Z3bUQ5TEFBam9Bd0FBQUFBQUFBQWdBT1RxcHFLUi9nS1JoRkxtUmJWbFBOSmdwZndQczE5aGs5V0FrV3FwNDRrQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQURMWTVYN20yUjVWV05vR2R4Vk1Md2hYbFRTT01YK1ZyTW52cmVHMEVTL01BUTdLZUpBZU5Dc2xGZnY1bStKRHMvQUszZ3A2VUdkYk56Qi9STXdaWEpCR3EyNFJBZ0FBQUFBZ2kycTJzVWdkMGZyZ3hXWlZrZ2FqSkFiMVY1ZjFWemFUclhFWUl4a0xxREF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpPZ0RBQUFBQUFBQVZsNG5BQUFBQUFBQSdcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGJhc2Vjb2luKTtcbiAgICAgIFVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24odHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IFVuc2lnbmVkU3dlZXBUeG5Kc29uID0gVW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoVW5zaWduZWRTd2VlcFR4bkpzb24uaWQsICdHRnVrMVZLeTN3elRGZUFVdHJtVWU2c3hSaHRlenpyR0RmS2RwUVR4djlzbycpO1xuICAgICAgc2hvdWxkLmVxdWFsKFVuc2lnbmVkU3dlZXBUeG5Kc29uLnNlbmRlciwgc2VuZGVyQWRkcmVzczEpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDMpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDIpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAxKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgQ29uc29saWRhdGlvbiBUcmFuc2FjdGlvbnMnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCByZWNlaXZlQWRkcmVzczEgPSAnMHgzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjJztcbiAgICBjb25zdCByZWNlaXZlQWRkcmVzczIgPSAnMHhkZjQwN2UzZTI1ZTk0MDBmOTc3OWFjNzU3MTUzN2MyMzYxNjg0MTk0ZjFhYTVkYjEyNmE4ZjU3NGI1ZWQ4NTFjJztcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3AkU3c8Ump2QWdme25ZQVlJMnhNJztcblxuICAgIGNvbnN0IHNlZWRSZWNlaXZlQWRkcmVzczEgPSAnMHhkMjAxNTY2ZTZhMGJjMDIwZmQyZTZmNzJlOWJkZTIyMjNmNTUwZDY0ZGFhNjEzOThjZDkxN2MyZjc1MDEzMjRhJztcbiAgICBjb25zdCBzZWVkUmVjZWl2ZUFkZHJlc3MyID0gJzB4MmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOSc7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyhyZWNlaXZlQWRkcmVzczEpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzIwMDEwMTk3NicsIGNvaW5PYmplY3RCYWxhbmNlOiAnMjAwMTAxOTc2JywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKHJlY2VpdmVBZGRyZXNzMilcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMjAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcyMDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3Moc2VlZFJlY2VpdmVBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnNTAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICc1MDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3Moc2VlZFJlY2VpdmVBZGRyZXNzMilcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMjAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcyMDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcblxuICAgICAgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldElucHV0Q29pbnMnIGFzIGtleW9mIFN1aSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MocmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4OTk2YWFiMzY1ZDQ1NTFiNmQxMjc0ZjUyMGJiZmE3YjBhNTY2ZDU0OGIyZDU5MGI1NTY1YzYyMzgxMmU3ZTc2ZCcsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMjAxJyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0hYcE5UZng5VEJkeEZjWEhpNFJ6aVpzUXVEQUhhdlJhc0s2UmkxNXJWd3VBJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzIwMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHhiMzljNWYzODAyMDhjY2U3ZmUxYmExMjU4YzhkMTliZWZiMDJhODBmMTQ5NTI2MTdlZDM3MDk4ZGJkNGQyZGYwJyxcbiAgICAgICAgICAgIHZlcnNpb246ICcxOTknLFxuICAgICAgICAgICAgZGlnZXN0OiAnbXFrMzdoWExraVVZZ2tZeGsyTXlxTnlrQ2tDWHdlOTd1TXVzN2JEUGhlMicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMDE5NzYnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3MocmVjZWl2ZUFkZHJlc3MyKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ZmEwNDEwNWVlZGViZGFiZjcyOWRjY2VjZjAxZDBjZjVmMWI3NzA4OTJmYWMyZWQ4ZjFlNjlkNzFhMzJhMmQyNCcsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMjAyJyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0RlQXBSVlNyVGE5dHRYdk55TGV4VDRQSmNBa3l5eFNwaTNKUWVVZzR1YThRJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzIwMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ODZlNzI4ZmQ3MjQyYjNiZTYwZTljMTk0MWFkZDJjNDdmYjY1NTc3OTEwOGMzNTAwYTIxNjMxMDIxODc0OGUyZCcsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMTQ3JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzZQSmV5RVg0TDhSa2pzTmFGNUdTTUN3UmptRkdZclFCN2ZibUpQRk1NUEhMJyxcbiAgICAgICAgICAgIGJhbGFuY2U6ICc1MDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MyKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ZmQ2NmRiZmU3YTE0OTdmMjEwNzQ3YjA1MzJmNjJlNjkyNmNiMTQ0Yzc1ZTUxOWYyZGZmZjE3YTRmNmU1MTVmYycsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMTQ4JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ1BKM2pmUzFFUlNoU010RldaZ21hNGg2ZHVXWDhubTVCZWkxejNCc3p5QmsnLFxuICAgICAgICAgICAgYmFsYW5jZTogJzIwMDAwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgIGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRGZWVFc3RpbWF0ZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBQ0FBaFliL2NGQUFBQUFBQWdrZkplSTN1RG9BcGljay9jU29Ia1AwbE54clFhRWtGSktDYlRiazBUSGFNQ0FnQUJBUUFBQVFFQ0FBQUJBUUF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpBS1phcXMyWFVWUnR0RW5UMUlMdjZld3BXYlZTTExWa0xWV1hHSTRFdWZuYmNrQUFBQUFBQUFBSVBXZitmMUVrbFcxZ2dpM3J3bzVKdzNMZnR1OVcvVXN5clpySTBGWXNCVFpzNXhmT0FJSXpPZitHNkVsakkwWnZ2c0NxQThVbFNZWDdUY0pqYjFOTGZESEFBQUFBQUFBQUNBTGZLc1o0VDlZMnkxcnJsQnhRUTJCb3VTOVZGakJnVmZ2YmJGZjlVK2Y4ekxZNVg3bTJSNVZXTm9HZHhWTUx3aFhsVFNPTVgrVnJNbnZyZUcwRVMvTTZBTUFBQUFBQUFBQTRmVUZBQUFBQUFBPSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcignMTAxOTc2MCcpKVxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQUNBQWdBNGZVRkFBQUFBQUFna2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhTUNBZ0FCQVFBQUFRRUNBQUFCQVFEZlFINCtKZWxBRDVkNXJIVnhVM3dqWVdoQmxQR3FYYkVtcVBWMHRlMkZIQUg2QkJCZTdldmF2M0tkek96d0hRejE4YmR3aVMrc0x0ang1cDF4b3lvdEpNb0FBQUFBQUFBQUlMdlIxWGpsS0t5bFJHaDlwWDRVcEJGQnNDdjVBdDZSQm4rWFhEQWJuZlJCMzBCK1BpWHBRQStYZWF4MWNWTjhJMkZvUVpUeHFsMnhKcWoxZExYdGhSem9Bd0FBQUFBQUFBRGg5UVVBQUFBQUFBPT0nXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoJzE5OTc4ODAnKSlcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFDQUFnQWhOY1hBQUFBQUFBZ2lNbWVEYmljdWgyNWZMcmRmemV5cExLaXRBSWxsS0RBU3l2TWczNUxKQVFDQWdBQkFRQUFBUUVDQUFBQkFRRFNBVlp1YWd2QUlQMHViM0xwdmVJaVAxVU5aTnFtRTVqTmtYd3ZkUUV5U2dHRzV5ajlja0t6dm1EcHdaUWEzU3hIKzJWWGVSQ01OUUNpRmpFQ0dIU09MWk1BQUFBQUFBQUFJRkFCTExMak1KYzUxUjBQOERIeTBQYlh3c1lVRDBiNWd2Vm1pWnN1cGFmcjBnRldibW9Md0NEOUxtOXk2YjNpSWo5VkRXVGFwaE9ZelpGOEwzVUJNa3JvQXdBQUFBQUFBQURoOVFVQUFBQUFBQT09J1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKCcxOTk3ODgwJykpXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBQ0FBZ0E0ZlVGQUFBQUFBQWdpTW1lRGJpY3VoMjVmTHJkZnpleXBMS2l0QUlsbEtEQVN5dk1nMzVMSkFRQ0FnQUJBUUFBQVFFQ0FBQUJBUUF2cGRnNVM5YSt4VkpibFZDL1E3NEhXNE5DTFFFSHdGeHdDVVRqNnV3bStRSDladHYrZWhTWDhoQjBld1V5OWk1cEpzc1VUSFhsR2ZMZi94ZWs5dVVWL0pRQUFBQUFBQUFBSUFXMkRaZFZXSjlFTm52TDRaMlBPT0hmSzJaNzREZ1NnRFFjaTYwTWRRdVhMNlhZT1V2V3ZzVlNXNVZRdjBPK0IxdURRaTBCQjhCY2NBbEU0K3JzSnZub0F3QUFBQUFBQUFEaDlRVUFBQUFBQUE9PSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcignMTk5Nzg4MCcpKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2lnbmVkIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb25zIGZvciBob3Qgd2FsbGV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbnMgPSByZXMudHJhbnNhY3Rpb25zO1xuICAgICAgdHJhbnNhY3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICBjb25zdCB0eG4xID0gdHJhbnNhY3Rpb25zWzBdO1xuICAgICAgdHhuMS5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHhuMS5yZWNvdmVyeUFtb3VudC5zaG91bGQuZXF1YWwoJzE5ODk4MDI0MCcpO1xuICAgICAgdHhuMS5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQUFBQ0FBaVFNdHdMQUFBQUFBQWdrZkplSTN1RG9BcGljay9jU29Ia1AwbE54clFhRWtGSktDYlRiazBUSGFNQ0FnQUJBUUFBQVFFQ0FBQUJBUUF5Mk9WKzV0a2VWVmphQm5jVlRDOElWNVUwampGL2xheko3NjNodEJFdnpBS1phcXMyWFVWUnR0RW5UMUlMdjZld3BXYlZTTExWa0xWV1hHSTRFdWZuYmNrQUFBQUFBQUFBSVBXZitmMUVrbFcxZ2dpM3J3bzVKdzNMZnR1OVcvVXN5clpySTBGWXNCVFpzNXhmT0FJSXpPZitHNkVsakkwWnZ2c0NxQThVbFNZWDdUY0pqYjFOTGZESEFBQUFBQUFBQUNBTGZLc1o0VDlZMnkxcnJsQnhRUTJCb3VTOVZGakJnVmZ2YmJGZjlVK2Y4ekxZNVg3bTJSNVZXTm9HZHhWTUx3aFhsVFNPTVgrVnJNbnZyZUcwRVMvTTZBTUFBQUFBQUFESUhSRUFBQUFBQUFBPSdcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4bjIgPSB0cmFuc2FjdGlvbnNbMV07XG4gICAgICB0eG4yLnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMik7XG4gICAgICB0eG4yLnJlY292ZXJ5QW1vdW50LnNob3VsZC5lcXVhbCgnMTk3ODAyMzMyJyk7XG4gICAgICB0eG4yLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdBQUFDQUFoY09jb0xBQUFBQUFBZ2tmSmVJM3VEb0FwaWNrL2NTb0hrUDBsTnhyUWFFa0ZKS0NiVGJrMFRIYU1DQWdBQkFRQUFBUUVDQUFBQkFRRGZRSDQrSmVsQUQ1ZDVySFZ4VTN3allXaEJsUEdxWGJFbXFQVjB0ZTJGSEFINkJCQmU3ZXZhdjNLZHpPendIUXoxOGJkd2lTK3NMdGp4NXAxeG95b3RKTW9BQUFBQUFBQUFJTHZSMVhqbEtLeWxSR2g5cFg0VXBCRkJzQ3Y1QXQ2UkJuK1hYREFibmZSQjMwQitQaVhwUUErWGVheDFjVk44STJGb1FaVHhxbDJ4SnFqMWRMWHRoUnpvQXdBQUFBQUFBS1NJSVFBQUFBQUFBQT09J1xuICAgICAgKTtcblxuICAgICAgcmVzLmxhc3RTY2FuSW5kZXguc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB1bnNpZ25lZCBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9ucyBmb3IgY29sZCB3YWxsZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgIH0pO1xuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0eFJlcXVlc3RzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICcwMDAwMDIwMDA4OTAzMmRjMGIwMDAwMDAwMDAwMjA5MWYyNWUyMzdiODNhMDBhNjI3MjRmZGM0YTgxZTQzZjQ5NGRjNmI0MWExMjQxNDkyODI2ZDM2ZTRkMTMxZGEzMDIwMjAwMDEwMTAwMDAwMTAxMDIwMDAwMDEwMTAwMzJkOGU1N2VlNmQ5MWU1NTU4ZGEwNjc3MTU0YzJmMDg1Nzk1MzQ4ZTMxN2Y5NWFjYzllZmFkZTFiNDExMmZjYzAyOTk2YWFiMzY1ZDQ1NTFiNmQxMjc0ZjUyMGJiZmE3YjBhNTY2ZDU0OGIyZDU5MGI1NTY1YzYyMzgxMmU3ZTc2ZGM5MDAwMDAwMDAwMDAwMDAyMGY1OWZmOWZkNDQ5MjU1YjU4MjA4YjdhZjBhMzkyNzBkY2I3ZWRiYmQ1YmY1MmNjYWI2NmIyMzQxNThiMDE0ZDliMzljNWYzODAyMDhjY2U3ZmUxYmExMjU4YzhkMTliZWZiMDJhODBmMTQ5NTI2MTdlZDM3MDk4ZGJkNGQyZGYwYzcwMDAwMDAwMDAwMDAwMDIwMGI3Y2FiMTllMTNmNThkYjJkNmJhZTUwNzE0MTBkODFhMmU0YmQ1NDU4YzE4MTU3ZWY2ZGIxNWZmNTRmOWZmMzMyZDhlNTdlZTZkOTFlNTU1OGRhMDY3NzE1NGMyZjA4NTc5NTM0OGUzMTdmOTVhY2M5ZWZhZGUxYjQxMTJmY2NlODAzMDAwMDAwMDAwMDAwYzgxZDExMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMSxcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnYWI4NGM5ZDA5YzY3OGMwMzg0MzlmNjNmY2Q0MGQyNjUzNWNjMTQ4NTE1MTI1N2Y0ZjE3NWI2ZThhMGU5NDMxNicsXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMScsXG4gICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTk4OTgwMjQwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKCcxOTg5ODAyNDAnKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMycsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE5ODk4MDI0MCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTk4OTgwMjQwJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1RyYW5zZmVyJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgIGZlZTogMTEyMTczNixcbiAgICAgICAgICAgICAgICAgICAgZmVlU3RyaW5nOiAnMTEyMTczNicsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgICAgICAgICAgICczYjg5ZWVjOWQyZDJmM2IwNDllY2RhMmU3YjVmNDc4MjdmNzkyN2ZlNjYxOGQ2ZThiMTNmNjRlN2M5NWY0YjAwYjk1NzdhYjAxMzk1ZWNmOGVlYjgwNGI1OTBjZWRhZTE0ZmY1ZmQzOTQ3YmYzYjdhOTViOTMyN2M0OWUyN2M1NCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuc2lnbmVkVHg6IHtcbiAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgJzAwMDAwMjAwMDg1YzM5Y2EwYjAwMDAwMDAwMDAyMDkxZjI1ZTIzN2I4M2EwMGE2MjcyNGZkYzRhODFlNDNmNDk0ZGM2YjQxYTEyNDE0OTI4MjZkMzZlNGQxMzFkYTMwMjAyMDAwMTAxMDAwMDAxMDEwMjAwMDAwMTAxMDBkZjQwN2UzZTI1ZTk0MDBmOTc3OWFjNzU3MTUzN2MyMzYxNjg0MTk0ZjFhYTVkYjEyNmE4ZjU3NGI1ZWQ4NTFjMDFmYTA0MTA1ZWVkZWJkYWJmNzI5ZGNjZWNmMDFkMGNmNWYxYjc3MDg5MmZhYzJlZDhmMWU2OWQ3MWEzMmEyZDI0Y2EwMDAwMDAwMDAwMDAwMDIwYmJkMWQ1NzhlNTI4YWNhNTQ0Njg3ZGE1N2UxNGE0MTE0MWIwMmJmOTAyZGU5MTA2N2Y5NzVjMzAxYjlkZjQ0MWRmNDA3ZTNlMjVlOTQwMGY5Nzc5YWM3NTcxNTM3YzIzNjE2ODQxOTRmMWFhNWRiMTI2YThmNTc0YjVlZDg1MWNlODAzMDAwMDAwMDAwMDAwYTQ4ODIxMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMixcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnNjZkNjUwYjRjNGRlZGY1YWIzM2M5MzgxZWU0NjE0MGIzMGJiODk2Y2YyYzY2YjdiMjQxY2FlNzBkMTQxNGYxNicsXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMicsXG4gICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhkZjQwN2UzZTI1ZTk0MDBmOTc3OWFjNzU3MTUzN2MyMzYxNjg0MTk0ZjFhYTVkYjEyNmE4ZjU3NGI1ZWQ4NTFjJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKCcxOTc4MDIzMzInKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMycsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1RyYW5zZmVyJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgIGZlZTogMjE5NzY2OCxcbiAgICAgICAgICAgICAgICAgICAgZmVlU3RyaW5nOiAnMjE5NzY2OCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgICAgICAgICAgICczYjg5ZWVjOWQyZDJmM2IwNDllY2RhMmU3YjVmNDc4MjdmNzkyN2ZlNjYxOGQ2ZThiMTNmNjRlN2M5NWY0YjAwYjk1NzdhYjAxMzk1ZWNmOGVlYjgwNGI1OTBjZWRhZTE0ZmY1ZmQzOTQ3YmYzYjdhOTViOTMyN2M0OWUyN2M1NCcsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RTY2FuSW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgMik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB1bnNpZ25lZCBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9ucyBmb3IgY29sZCB3YWxsZXQgd2l0aCBzZWVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXlXaXRoU2VlZCxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgICAgc2VlZDogJzEyMycsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHhSZXF1ZXN0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAyMDAwODVjZGNhYjFkMDAwMDAwMDAwMDIwODhjOTllMGRiODljYmExZGI5N2NiYWRkN2YzN2IyYTRiMmEyYjQwMjI1OTRhMGMwNGIyYmNjODM3ZTRiMjQwNDAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMGQyMDE1NjZlNmEwYmMwMjBmZDJlNmY3MmU5YmRlMjIyM2Y1NTBkNjRkYWE2MTM5OGNkOTE3YzJmNzUwMTMyNGEwMTg2ZTcyOGZkNzI0MmIzYmU2MGU5YzE5NDFhZGQyYzQ3ZmI2NTU3NzkxMDhjMzUwMGEyMTYzMTAyMTg3NDhlMmQ5MzAwMDAwMDAwMDAwMDAwMjA1MDAxMmNiMmUzMzA5NzM5ZDUxZDBmZjAzMWYyZDBmNmQ3YzJjNjE0MGY0NmY5ODJmNTY2ODk5YjJlYTVhN2ViZDIwMTU2NmU2YTBiYzAyMGZkMmU2ZjcyZTliZGUyMjIzZjU1MGQ2NGRhYTYxMzk4Y2Q5MTdjMmY3NTAxMzI0YWU4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAxLFxuICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICc2ZDdhNGM0ODgyNzQ1NzA3YzJjZDQwYjBjNTc1NjY2MDFhMmE0ZDI2OWY1Y2IwYTY5MjgyODU1MTIxMmNmNDUyJyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS85OTk5OTkvOTQ4NjI2MjIvMTU3MzYzNTA5LzEnLFxuICAgICAgICAgICAgICAgICAgcGFyc2VkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4ZDIwMTU2NmU2YTBiYzAyMGZkMmU2ZjcyZTliZGUyMjIzZjU1MGQ2NGRhYTYxMzk4Y2Q5MTdjMmY3NTAxMzI0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzQ5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcig0OTc4MDIzMzIpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHg4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnNDk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aScsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICc0OTc4MDIzMzInLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAyMTk3NjY4LFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyMTk3NjY4JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJ2NhMGEwMTRiYTZmMTExMDZhMTU1ZWY4ZTJjYWIyZjc2ZDI3N2U0ZjAxY2ZmYTU5MWE5YjQwODQ4MzQzODIzYjNkOTEwNzUyYTQ5Yzk2YmY1ODEzOTg1MjA2ZTIzYzlmOWNkM2E3OGYxY2NjZjVjZjg4ZGVmNTJiNTczY2VkYzkzJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAyMDAwODVjMzljYTBiMDAwMDAwMDAwMDIwODhjOTllMGRiODljYmExZGI5N2NiYWRkN2YzN2IyYTRiMmEyYjQwMjI1OTRhMGMwNGIyYmNjODM3ZTRiMjQwNDAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMDJmYTVkODM5NGJkNmJlYzU1MjViOTU1MGJmNDNiZTA3NWI4MzQyMmQwMTA3YzA1YzcwMDk0NGUzZWFlYzI2ZjkwMWZkNjZkYmZlN2ExNDk3ZjIxMDc0N2IwNTMyZjYyZTY5MjZjYjE0NGM3NWU1MTlmMmRmZmYxN2E0ZjZlNTE1ZmM5NDAwMDAwMDAwMDAwMDAwMjAwNWI2MGQ5NzU1NTg5ZjQ0MzY3YmNiZTE5ZDhmMzhlMWRmMmI2NjdiZTAzODEyODAzNDFjOGJhZDBjNzUwYjk3MmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOWU4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICczMmEwMGE2ZDg5MjYzMDQ2N2M3ZDA2NjYzOTBkM2IyN2NhYWY0YWVmZWUzZGRhOWUwYzk3YzNmOGJjMDZiY2VhJyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS85OTk5OTkvOTQ4NjI2MjIvMTU3MzYzNTA5LzInLFxuICAgICAgICAgICAgICAgICAgcGFyc2VkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOScsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE5NzgwMjMzMicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IEJpZ051bWJlcigxOTc4MDIzMzIpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHg4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTk3ODAyMzMyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aScsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICcxOTc4MDIzMzInLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgZmVlOiAyMTk3NjY4LFxuICAgICAgICAgICAgICAgICAgICBmZWVTdHJpbmc6ICcyMTk3NjY4JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAgICAgICAgICAgJ2NhMGEwMTRiYTZmMTExMDZhMTU1ZWY4ZTJjYWIyZjc2ZDI3N2U0ZjAxY2ZmYTU5MWE5YjQwODQ4MzQzODIzYjNkOTEwNzUyYTQ5Yzk2YmY1ODEzOTg1MjA2ZTIzYzlmOWNkM2E3OGYxY2NjZjVjZjg4ZGVmNTJiNTczY2VkYzkzJyxcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNjYW5JbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRCYWxhbmNlLCAyKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRJbnB1dENvaW5zLCAyKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRGZWVFc3RpbWF0ZSwgMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCdWlsZCBDb25zb2xpZGF0aW9uIFJlY292ZXJpZXMgKE1QQ3YyKTonLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3AkU3c8Ump2QWdme25ZQVlJMnhNJztcblxuICAgIGxldCBtcGNWMlVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJCYWNrdXBLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJDb21tb25LZXlDaGFpbjogc3RyaW5nO1xuICAgIGxldCBiYXNlQWRkcjogc3RyaW5nO1xuICAgIGxldCBtcGNWMkFkZHJlc3MxOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyQWRkcmVzczI6IHN0cmluZztcblxuICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBbdXNlckRrZywgYmFja3VwRGtnXSA9IGF3YWl0IE1QU1V0aWwuZ2VuZXJhdGVFZERzYURLR0tleVNoYXJlcygpO1xuXG4gICAgICBtcGNWMlVzZXJLZXkgPSBhd2FpdCBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQmFja3VwS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQ29tbW9uS2V5Q2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG5cbiAgICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgICBiYXNlQWRkciA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KE1QQy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCkpO1xuICAgICAgbXBjVjJBZGRyZXNzMSA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KE1QQy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzEnKS5zbGljZSgwLCA2NCkpO1xuICAgICAgbXBjVjJBZGRyZXNzMiA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KE1QQy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzInKS5zbGljZSgwLCA2NCkpO1xuICAgIH0pO1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRCYWxhbmNlU3R1YiA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGdldEJhbGFuY2VTdHViXG4gICAgICAgIC53aXRoQXJncyhtcGNWMkFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcwJywgY29pbk9iamVjdEJhbGFuY2U6ICcwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3MobXBjVjJBZGRyZXNzMilcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMjAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcyMDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcblxuICAgICAgY29uc3QgZ2V0SW5wdXRDb2luc1N0dWIgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldElucHV0Q29pbnMnIGFzIGtleW9mIFN1aSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1Yi53aXRoQXJncyhtcGNWMkFkZHJlc3MyKS5yZXNvbHZlcyhbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgIG9iamVjdElkOiAnMHhmYTA0MTA1ZWVkZWJkYWJmNzI5ZGNjZWNmMDFkMGNmNWYxYjc3MDg5MmZhYzJlZDhmMWU2OWQ3MWEzMmEyZDI0JyxcbiAgICAgICAgICB2ZXJzaW9uOiAnMjAyJyxcbiAgICAgICAgICBkaWdlc3Q6ICdEZUFwUlZTclRhOXR0WHZOeUxleFQ0UEpjQWt5eXhTcGkzSlFlVWc0dWE4UScsXG4gICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMjAwMDAwMDAwJyksXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgY29uc3QgZ2V0RmVlRXN0aW1hdGVTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRGZWVFc3RpbWF0ZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGdldEZlZUVzdGltYXRlU3R1Yi5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKCcxOTk3ODgwJykpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBNUEN2MiBzaWduZWQgY29uc29saWRhdGlvbiByZWNvdmVyaWVzLCBzd2VlcGluZyB0byB0aGUgTVBDdjIgYmFzZSBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgIH0pO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnRyYW5zYWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgcmVzLmxhc3RTY2FuSW5kZXguc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgICBjb25zdCByZWJ1aWx0ID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24oYmFzZWNvaW4pO1xuICAgICAgcmVidWlsdC5mcm9tUmF3VHJhbnNhY3Rpb24ocmVzLnRyYW5zYWN0aW9uc1swXS5zZXJpYWxpemVkVHgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHQudG9Kc29uKCkuZ2FzRGF0YS5vd25lciwgbXBjVjJBZGRyZXNzMik7XG5cbiAgICAgIGNvbnN0IG91dHB1dHMgPSByZWJ1aWx0LmV4cGxhaW5UcmFuc2FjdGlvbigpLm91dHB1dHM7XG4gICAgICBvdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKGJhc2VBZGRyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGV0ZWN0IHNpZ25pbmcgbWF0ZXJpYWwgZXhhY3RseSBvbmNlIGF0IHRoZSB0b3Agb2YgdGhlIHNjYW4gbG9vcCwgbm90IHBlciBpdGVyYXRpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRFZGRzYU1hdGVyaWFsU3B5ID0gc2FuZEJveC5zcHkoXG4gICAgICAgIGJhc2Vjb2luIGFzIHVua25vd24gYXMgeyBnZXRFZGRzYVNpZ25pbmdNYXRlcmlhbDogdW5rbm93biB9LFxuICAgICAgICAnZ2V0RWRkc2FTaWduaW5nTWF0ZXJpYWwnXG4gICAgICApO1xuXG4gICAgICBhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICB1c2VyS2V5OiBtcGNWMlVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogbXBjVjJCYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBtcGNWMkNvbW1vbktleUNoYWluLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiAzLFxuICAgICAgfSk7XG5cbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZE9uY2UoZ2V0RWRkc2FNYXRlcmlhbFNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGxlYXZlIE1QQ3YxIGJhc2UgYWRkcmVzcyBkZXJpdmF0aW9uIGFuZCBzaWduaW5nIHVuY2hhbmdlZCAocmVncmVzc2lvbiknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNlaXZlQWRkcmVzczEgPSAnMHgzMmQ4ZTU3ZWU2ZDkxZTU1NThkYTA2NzcxNTRjMmYwODU3OTUzNDhlMzE3Zjk1YWNjOWVmYWRlMWI0MTEyZmNjJztcbiAgICAgIGNvbnN0IHJlY2VpdmVBZGRyZXNzMiA9ICcweGRmNDA3ZTNlMjVlOTQwMGY5Nzc5YWM3NTcxNTM3YzIzNjE2ODQxOTRmMWFhNWRiMTI2YThmNTc0YjVlZDg1MWMnO1xuICAgICAgKFN1aS5wcm90b3R5cGUgYXMgdW5rbm93biBhcyB7IGdldEJhbGFuY2U6IHNpbm9uLlNpbm9uU3R1YiB9KS5nZXRCYWxhbmNlXG4gICAgICAgIC53aXRoQXJncyhyZWNlaXZlQWRkcmVzczEpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzIwMDEwMTk3NicsIGNvaW5PYmplY3RCYWxhbmNlOiAnMjAwMTAxOTc2JywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICAoU3VpLnByb3RvdHlwZSBhcyB1bmtub3duIGFzIHsgZ2V0QmFsYW5jZTogc2lub24uU2lub25TdHViIH0pLmdldEJhbGFuY2VcbiAgICAgICAgLndpdGhBcmdzKHJlY2VpdmVBZGRyZXNzMilcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMjAwMDAwMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcyMDAwMDAwMDAnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcbiAgICAgIChTdWkucHJvdG90eXBlIGFzIHVua25vd24gYXMgeyBnZXRJbnB1dENvaW5zOiBzaW5vbi5TaW5vblN0dWIgfSkuZ2V0SW5wdXRDb2luc1xuICAgICAgICAud2l0aEFyZ3MocmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4OTk2YWFiMzY1ZDQ1NTFiNmQxMjc0ZjUyMGJiZmE3YjBhNTY2ZDU0OGIyZDU5MGI1NTY1YzYyMzgxMmU3ZTc2ZCcsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMjAxJyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0hYcE5UZng5VEJkeEZjWEhpNFJ6aVpzUXVEQUhhdlJhc0s2UmkxNXJWd3VBJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzIwMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHhiMzljNWYzODAyMDhjY2U3ZmUxYmExMjU4YzhkMTliZWZiMDJhODBmMTQ5NTI2MTdlZDM3MDk4ZGJkNGQyZGYwJyxcbiAgICAgICAgICAgIHZlcnNpb246ICcxOTknLFxuICAgICAgICAgICAgZGlnZXN0OiAnbXFrMzdoWExraVVZZ2tZeGsyTXlxTnlrQ2tDWHdlOTd1TXVzN2JEUGhlMicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMDE5NzYnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgIChTdWkucHJvdG90eXBlIGFzIHVua25vd24gYXMgeyBnZXRJbnB1dENvaW5zOiBzaW5vbi5TaW5vblN0dWIgfSkuZ2V0SW5wdXRDb2luc1xuICAgICAgICAud2l0aEFyZ3MocmVjZWl2ZUFkZHJlc3MyKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4ZmEwNDEwNWVlZGViZGFiZjcyOWRjY2VjZjAxZDBjZjVmMWI3NzA4OTJmYWMyZWQ4ZjFlNjlkNzFhMzJhMmQyNCcsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMjAyJyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0RlQXBSVlNyVGE5dHRYdk55TGV4VDRQSmNBa3l5eFNwaTNKUWVVZzR1YThRJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzIwMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgKFN1aS5wcm90b3R5cGUgYXMgdW5rbm93biBhcyB7IGdldEZlZUVzdGltYXRlOiBzaW5vbi5TaW5vblN0dWIgfSkuZ2V0RmVlRXN0aW1hdGUucmVzb2x2ZXMoXG4gICAgICAgIG5ldyBCaWdOdW1iZXIoJzE5OTc4ODAnKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDMsXG4gICAgICB9KTtcblxuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZFR3aWNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGxlYXZlIHRoZSB1bnNpZ25lZCAobm8gcGFzc3BocmFzZSkgY29sZCBwYXRoIHVuY2hhbmdlZCB3aGVuIGtleWNhcmQgaXMgTVBDdjInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgIH0pO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVG9rZW4gQ29uc29saWRhdGlvbiBUcmFuc2FjdGlvbnMnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3AkU3c8Ump2QWdme25ZQVlJMnhNJztcblxuICAgIGNvbnN0IHNlZWRSZWNlaXZlQWRkcmVzczEgPSAnMHhkMjAxNTY2ZTZhMGJjMDIwZmQyZTZmNzJlOWJkZTIyMjNmNTUwZDY0ZGFhNjEzOThjZDkxN2MyZjc1MDEzMjRhJztcbiAgICBjb25zdCBzZWVkUmVjZWl2ZUFkZHJlc3MyID0gJzB4MmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOSc7XG5cbiAgICBjb25zdCBwYWNrYWdlSWQgPSAnMHgzNmRiZWY4NjZhMWQ2MmJmNzMyODk4OWExMGZiMmYwN2Q3NjlmNGVlNTg3YzBkZTRhMGEyNTZlNTdlMGE1OGE4JztcbiAgICBjb25zdCBjb2luVHlwZSA9IGAke3BhY2thZ2VJZH06OmRlZXA6OkRFRVBgO1xuICAgIGNvbnN0IGhvdFdhbGxldFJlY2VpdmVBZGRyZXNzMSA9ICcweDMyZDhlNTdlZTZkOTFlNTU1OGRhMDY3NzE1NGMyZjA4NTc5NTM0OGUzMTdmOTVhY2M5ZWZhZGUxYjQxMTJmY2MnO1xuICAgIGNvbnN0IGhvdFdhbGxldFJlY2VpdmVBZGRyZXNzMiA9ICcweGRmNDA3ZTNlMjVlOTQwMGY5Nzc5YWM3NTcxNTM3YzIzNjE2ODQxOTRmMWFhNWRiMTI2YThmNTc0YjVlZDg1MWMnO1xuICAgIGNvbnN0IGNvbGRXYWxsZXRSZWNlaXZlQWRkcmVzczEgPSAnMHhhOTkyNzA5NTkxZGViNzQ3MWZiMzBkZGEwZjMzOWRiN2FiNTQ4ZDMzOTFhODlkM2YxZmEwYzcyZDIwOTI2NzVmJztcbiAgICBjb25zdCBjb2xkV2FsbGV0UmVjZWl2ZUFkZHJlc3MyID0gJzB4YzNhYzJhODZlMzViNjJiZmFkYTgzZjYzODhmZjI3YzdkZGE3MDkyY2YwYjgyOWQyZDFmNGMyODEzZTI4YWUzOSc7XG5cbiAgICBsZXQgZ2V0QmFsYW5jZVN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0SW5wdXRDb2luc1N0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZ2V0RmVlRXN0aW1hdGVTdHViOiBzaW5vbi5TaW5vblN0dWI7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGdldEJhbGFuY2VTdHViID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRCYWxhbmNlJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWIgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldElucHV0Q29pbnMnIGFzIGtleW9mIFN1aSk7XG4gICAgICBnZXRGZWVFc3RpbWF0ZVN0dWIgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEZlZUVzdGltYXRlJyBhcyBrZXlvZiBTdWkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBzaWduZWQgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbnMgZm9yIGhvdCB3YWxsZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBnZXRCYWxhbmNlU3R1YlxuICAgICAgICAud2l0aEFyZ3MoaG90V2FsbGV0UmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxMTY3MjAxNDQnLCBjb2luT2JqZWN0QmFsYW5jZTogJzExNjcyMDE0NCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pXG4gICAgICAgIC53aXRoQXJncyhob3RXYWxsZXRSZWNlaXZlQWRkcmVzczEsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxNTAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxNTAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKGhvdFdhbGxldFJlY2VpdmVBZGRyZXNzMilcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMTIwMTAxOTc2JywgY29pbk9iamVjdEJhbGFuY2U6ICcxMjAxMDE5NzYnLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KVxuICAgICAgICAud2l0aEFyZ3MoaG90V2FsbGV0UmVjZWl2ZUFkZHJlc3MyLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMjAwMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMjAwMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pO1xuICAgICAgZ2V0SW5wdXRDb2luc1N0dWJcbiAgICAgICAgLndpdGhBcmdzKGhvdFdhbGxldFJlY2VpdmVBZGRyZXNzMSwgY29pblR5cGUpXG4gICAgICAgIC5yZXNvbHZlcyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDhkMmRhNTc3MjI3ZTliNzE2NmRiYjliM2NjZTQ4MDk2OGNmNTQ5YjQ0OGM2NjI3NzFkMTEyNGQ2NDIwYmY3OTInLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODc4JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0JuaVdpRzN2NzFvenpSaXJiM2hOS0VQMTZwVHUzQ3BOdDN2b3kxdXpnTWk5JyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzE1MDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3MoaG90V2FsbGV0UmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4MGVjYTc4OTAxZTM0MmIyNTE1ZmJmOTliZTI0M2IzZjAwYWRlMGE3YTUwNjc1YjM3MzA3ZjQ0Y2MxOTVjOTA0NicsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4NzcnLFxuICAgICAgICAgICAgZGlnZXN0OiAnRDhYcUpYcmtWR29lcjk1Mkd2SEJkQkRYcG9mOEg0RjRwUkpKMXdTbkVTTlcnLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTE2NjE4MTY4JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDc2MTIyMjM0MGRiODBkZDlkYTE0NGQ1NTA5ODg3MGJjODFhNzg4MjA1ZTBiYmRkMzRjMmY4ZGYxMmNmNDVhZWInLFxuICAgICAgICAgICAgdmVyc2lvbjogJzIyNycsXG4gICAgICAgICAgICBkaWdlc3Q6ICc5Ynd5amFTSDNYOGFucmpHVXBEMU5xTXJMRlV0R1NDSzlMRnVMYmhqWDY5RScsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMDE5NzYnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3MoaG90V2FsbGV0UmVjZWl2ZUFkZHJlc3MyLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4MzZkYmVmODY2YTFkNjJiZjczMjg5ODlhMTBmYjJmMDdkNzY5ZjRlZTU4N2MwZGU0YTBhMjU2ZTU3ZTBhNThhODo6ZGVlcDo6REVFUCcsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4OGUxOGJkMTRjMzRlMzNmODFjNDk0ZjRkNmMxOGQwN2M2ODZjN2YzNjE5NjgyZDIwNjZiM2Y1NWVjZmU3MDdhMicsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4NjgnLFxuICAgICAgICAgICAgZGlnZXN0OiAnNmpaRnU4UFJXTEpZUGV3VzdLM280R0xWUFluUnlObzNrUDY0NTRlTHVIWm0nLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMjAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC53aXRoQXJncyhob3RXYWxsZXRSZWNlaXZlQWRkcmVzczIpXG4gICAgICAgIC5yZXNvbHZlcyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHg4MTFhNzUwNjYxMzQ5NDVlM2IwMzNmNGFjNTRlYzg4NWVjMDM4NGY0MmE4MDk5NGQ4OGE0OGQ3ZDE4YzQyNjBhJyxcbiAgICAgICAgICAgIHZlcnNpb246ICcyMzYnLFxuICAgICAgICAgICAgZGlnZXN0OiAnMzJOOVp5ZmVyR0RFVjdQWTN5a2lqVlZLaExqRUZTTDZpdHFjZlJQQ3k0b1cnLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTAxOTc2JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweGY4NWE3MzhhMzA1NjZkNTU4ODAwMjI4ZjJkNWMxOTNhNWNhM2RkYmJkZGNhMmE2NWE0OGE5MzMyMzA2NzE1Y2MnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODc2JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzdnSmdDTURFUGRRYU1ldVhaNUNGTm9uRktNUFF5dzZrNXNUMVJwYUhFWHBlJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEyMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgZ2V0RmVlRXN0aW1hdGVTdHViXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBREFRQ05MYVYzSW42YmNXYmJ1YlBNNUlDV2pQVkp0RWpHWW5jZEVTVFdRZ3Yza3E1dUVRSUFBQUFBSUtCSzhaanE0eXovUFRGWkxnNmpmNmdEVHNvZ2lnNjNwZHVYZWlLZ3pNVktBQWpjQlFBQUFBQUFBQUFna2ZKZUkzdURvQXBpY2svY1NvSGtQMGxOeHJRYUVrRkpLQ2JUYmswVEhhTUNBZ0VBQUFFQkFRQUJBUUlBQUFFQ0FETFk1WDdtMlI1VldOb0dkeFZNTHdoWGxUU09NWCtWck1udnJlRzBFUy9NQVE3S2VKQWVOQ3NsRmZ2NW0rSkRzL0FLM2dwNlVHZGJOekIvUk13WlhKQkdyVzRSQWdBQUFBQWd0RG9yNmI5RUpIT1NXZEpaQ1FkTGtLcFMyY1BvQmM1YjI4S3BYMXJnN2xzeTJPVis1dGtlVlZqYUJuY1ZUQzhJVjVVMGpqRi9sYXpKNzYzaHRCRXZ6T2dEQUFBQUFBQUFBT0gxQlFBQUFBQUEnXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoJzIzNDU1MDQnKSlcbiAgICAgICAgLndpdGhBcmdzKFxuICAgICAgICAgICdBQUFEQVFDT0dMMFV3MDR6K0J4SlQwMXNHTkI4YUd4L05obG9MU0Jtcy9WZXorY0hvcVJ1RVFJQUFBQUFJRlV4VFRReVRLTTZiVmplRkhIVDhLVnJWMmZnVE9DWDdVb2V2azJyNUpQY0FBalFCd0FBQUFBQUFBQWdrZkplSTN1RG9BcGljay9jU29Ia1AwbE54clFhRWtGSktDYlRiazBUSGFNQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQU45QWZqNGw2VUFQbDNtc2RYRlRmQ05oYUVHVThhcGRzU2FvOVhTMTdZVWNBZmhhYzRvd1ZtMVZpQUFpankxY0dUcGNvOTI3M2NvcVphU0trekl3WnhYTXJHNFJBZ0FBQUFBZ1l6ZkNXaXlwQ21tZThJSlpocW41blQ4K3pvUDNTN3NmUUtmZXpXOTlZV3ZmUUg0K0plbEFENWQ1ckhWeFUzd2pZV2hCbFBHcVhiRW1xUFYwdGUyRkhPZ0RBQUFBQUFBQUFPSDFCUUFBQUFBQSdcbiAgICAgICAgKVxuICAgICAgICAucmVzb2x2ZXMobmV3IEJpZ051bWJlcignMjM0NTUwNCcpKTtcblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHBhY2thZ2VJZCxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbnMgPSByZXMudHJhbnNhY3Rpb25zO1xuICAgICAgdHJhbnNhY3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICBjb25zdCB0eG4xID0gdHJhbnNhY3Rpb25zWzBdO1xuICAgICAgdHhuMS5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHhuMS5yZWNvdmVyeUFtb3VudC5zaG91bGQuZXF1YWwoJzE1MDAnKTtcbiAgICAgIHR4bjEuc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0FBQURBUUNOTGFWM0luNmJjV2JidWJQTTVJQ1dqUFZKdEVqR1luY2RFU1RXUWd2M2txNXVFUUlBQUFBQUlLQks4WmpxNHl6L1BURlpMZzZqZjZnRFRzb2dpZzYzcGR1WGVpS2d6TVZLQUFqY0JRQUFBQUFBQUFBZ2tmSmVJM3VEb0FwaWNrL2NTb0hrUDBsTnhyUWFFa0ZKS0NiVGJrMFRIYU1DQWdFQUFBRUJBUUFCQVFJQUFBRUNBRExZNVg3bTJSNVZXTm9HZHhWTUx3aFhsVFNPTVgrVnJNbnZyZUcwRVMvTUFRN0tlSkFlTkNzbEZmdjVtK0pEcy9BSzNncDZVR2RiTnpCL1JNd1pYSkJHclc0UkFnQUFBQUFndERvcjZiOUVKSE9TV2RKWkNRZExrS3BTMmNQb0JjNWIyOEtwWDFyZzdsc3kyT1YrNXRrZVZWamFCbmNWVEM4SVY1VTBqakYvbGF6Sjc2M2h0QkV2ek9nREFBQUFBQUFBVmw0bkFBQUFBQUFBJ1xuICAgICAgKTtcblxuICAgICAgY29uc3QgdHhuMiA9IHRyYW5zYWN0aW9uc1sxXTtcbiAgICAgIHR4bjIuc2NhbkluZGV4LnNob3VsZC5lcXVhbCgyKTtcbiAgICAgIHR4bjIucmVjb3ZlcnlBbW91bnQuc2hvdWxkLmVxdWFsKCcyMDAwJyk7XG4gICAgICB0eG4yLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdBQUFEQVFDT0dMMFV3MDR6K0J4SlQwMXNHTkI4YUd4L05obG9MU0Jtcy9WZXorY0hvcVJ1RVFJQUFBQUFJRlV4VFRReVRLTTZiVmplRkhIVDhLVnJWMmZnVE9DWDdVb2V2azJyNUpQY0FBalFCd0FBQUFBQUFBQWdrZkplSTN1RG9BcGljay9jU29Ia1AwbE54clFhRWtGSktDYlRiazBUSGFNQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQU45QWZqNGw2VUFQbDNtc2RYRlRmQ05oYUVHVThhcGRzU2FvOVhTMTdZVWNBZmhhYzRvd1ZtMVZpQUFpankxY0dUcGNvOTI3M2NvcVphU0trekl3WnhYTXJHNFJBZ0FBQUFBZ1l6ZkNXaXlwQ21tZThJSlpocW41blQ4K3pvUDNTN3NmUUtmZXpXOTlZV3ZmUUg0K0plbEFENWQ1ckhWeFUzd2pZV2hCbFBHcVhiRW1xUFYwdGUyRkhPZ0RBQUFBQUFBQVZsNG5BQUFBQUFBQSdcbiAgICAgICk7XG5cbiAgICAgIHJlcy5sYXN0U2NhbkluZGV4LnNob3VsZC5lcXVhbCgyKTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDYpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldElucHV0Q29pbnMsIDQpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEZlZUVzdGltYXRlLCAyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgdW5zaWduZWQgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbnMgZm9yIGNvbGQgd2FsbGV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKGNvbGRXYWxsZXRSZWNlaXZlQWRkcmVzczEpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzExNjcyMDE0NCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMTE2NzIwMTQ0JywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKGNvbGRXYWxsZXRSZWNlaXZlQWRkcmVzczEsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICc0MDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICc0MDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKGNvbGRXYWxsZXRSZWNlaXZlQWRkcmVzczIpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzEyMDEwMTk3NicsIGNvaW5PYmplY3RCYWxhbmNlOiAnMTIwMTAxOTc2JywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKGNvbGRXYWxsZXRSZWNlaXZlQWRkcmVzczIsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICc2MDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICc2MDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG4gICAgICBnZXRJbnB1dENvaW5zU3R1YlxuICAgICAgICAud2l0aEFyZ3MoY29sZFdhbGxldFJlY2VpdmVBZGRyZXNzMSwgY29pblR5cGUpXG4gICAgICAgIC5yZXNvbHZlcyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDllMjYxODY4NWZmZjM4Yjk5OTM1NWU5M2E0NjkzYzRiZDE4ZjY4ZGQ2YjY1NGZmNjU1NWYxZjRhZDIyOWRjZGInLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODc2JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0Y1aUdqczk1Q25TY0N0WEhGdVRKaGRaa2ZMeWFnV1IxUW0xekRINlNuZ01HJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzQwMDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3MoY29sZFdhbGxldFJlY2VpdmVBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDhmM2Y3Yzg5NjE5OTczMjcxNjZiMTU3MTExN2ZmNjcyMzJjY2QxMjY3ZWM1MmE3ZTk3MzY3N2JhMDQzMWZmYWQnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzIyNicsXG4gICAgICAgICAgICBkaWdlc3Q6ICdBV2g3dFBtUzl4bUg0YTJ6WUxDRzczWURpc2tDZjh1aXpiTGpwQ1N0SGhOVicsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCc5ODk4MDI0MCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHg5MTZlMzVhMGFjNmI1MjViN2QzOGE0NGI2NjczOTRhYWVlN2NkZTQxZGZmYzg3Njk4MGNmYmM4ODQ1NTkwY2RkJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczNDY5Njg3OCcsXG4gICAgICAgICAgICBkaWdlc3Q6ICcxNFBmTndVdmZjUjNtTkFTMWJjTlhUb2Fvb1ZMblhRSERkR3hQRlJKUXRZJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEyMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC53aXRoQXJncyhjb2xkV2FsbGV0UmVjZWl2ZUFkZHJlc3MyLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4MzZkYmVmODY2YTFkNjJiZjczMjg5ODlhMTBmYjJmMDdkNzY5ZjRlZTU4N2MwZGU0YTBhMjU2ZTU3ZTBhNThhODo6ZGVlcDo6REVFUCcsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4YzU0OGMyMjA0NTRkMjBlMDcxMmJkMjg1OGIwNzI2MGM4MjlhMWM4NDdmMzgxOGI0NzgwNTk2MWI1NzQ4MTNhYicsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4NzcnLFxuICAgICAgICAgICAgZGlnZXN0OiAnOG1BTmRvc2tHOGVMTHk3elZVNXJtSFJBWFZIVXlKUEFCZlMxbVlIU21BWXQnLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignNjAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC53aXRoQXJncyhjb2xkV2FsbGV0UmVjZWl2ZUFkZHJlc3MyKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4Mzk2YWIwOWVlNThmYjJjOWZiY2NhODg3YzAwZWYwMWEzM2Q1YmZlNTVhNWQ1MDUxNGUzMmE1OWY5NDhlOWEwNScsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMjM0JyxcbiAgICAgICAgICAgIGRpZ2VzdDogJ0hXS1c1NmR0OEJOeFNUdlhpVzdkdERWbU0yZ3hFZXhGeU5WekdqOEhQVnA0JyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEwMTk3NicpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHhkNGJmZWZhNTMyODI3ZDc2MTlhNTgyNzlhODdkYjgxNjMyZTI2N2NjNDhlNmI5NGFiODFhNDM2N2YwMmNiZWZhJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczNDY5Njg3OScsXG4gICAgICAgICAgICBkaWdlc3Q6ICdHSm5wMW9YTmpWWExjWVk2aHFSVjhSbTdHN29ibWszczhOaGoxYkZzZmtVbycsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxMjAwMDAwMDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgIGdldEZlZUVzdGltYXRlU3R1YlxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQURBUUNlSmhob1gvODR1WmsxWHBPa2FUeEwwWTlvM1d0bFQvWlZYeDlLMGluYzI2eHVFUUlBQUFBQUlORTRteHMxaEdNbW92VFU1ZGZuRm9vdVdPUGRWbjBuUkRQYnVYeW1BTFBMQUFpZ0R3QUFBQUFBQUFBZ0FXU1YzZHAwakJGcUlZSkNnMTAyUnduV3hlNWNpaDdXaE1UdlF6MHhSQ0VDQWdFQUFBRUJBUUFCQVFJQUFBRUNBS21TY0pXUjNyZEhIN01OMmc4em5iZXJWSTB6a2FpZFB4K2d4eTBna21kZkFaRnVOYUNzYTFKYmZUaWtTMlp6bEtydWZONUIzL3lIYVlEUHZJaEZXUXpkcm00UkFnQUFBQUFnQUFQVmVsZWI4cE11N28vY3A5TXd0R3NVTXdLQTI4Q3ZpTys1Tjc5Zm9OR3BrbkNWa2Q2M1J4K3pEZG9QTTUyM3ExU05NNUdvblQ4Zm9NY3RJSkpuWCtnREFBQUFBQUFBQU9IMUJRQUFBQUFBJ1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKCcyMzQ1NTA0JykpXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBREFRREZTTUlnUlUwZzRIRXIwb1dMQnlZTWdwb2NoSDg0R0xSNEJaWWJWMGdUcTYxdUVRSUFBQUFBSUhOUjlsRjdiN05kaFdndXRrbHg1dndMbWloaWpST0k2VDI0Y3R6eDlnNnRBQWh3RndBQUFBQUFBQUFnQVdTVjNkcDBqQkZxSVlKQ2cxMDJSd25XeGU1Y2loN1doTVR2UXoweFJDRUNBZ0VBQUFFQkFRQUJBUUlBQUFFQ0FNT3NLb2JqVzJLL3JhZy9ZNGovSjhmZHB3a3M4TGdwMHRIMHdvRStLSzQ1QWRTLzc2VXlnbjEyR2FXQ2VhaDl1Qll5NG1mTVNPYTVTcmdhUTJmd0xMNzZyMjRSQWdBQUFBQWc0MjM1MExxcWFhbnViNVRwakpuWWxLaXVwakYyWGMrcWdESW9pUE9rVTZqRHJDcUc0MXRpdjYyb1AyT0kveWZIM2FjSkxQQzRLZExSOU1LQlBpaXVPZWdEQUFBQUFBQUFBT0gxQlFBQUFBQUEnXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoJzIzNDU1MDQnKSk7XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5Q29sZFdhbGxldCxcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHBhY2thZ2VJZCxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMyxcbiAgICAgIH0pO1xuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0eFJlcXVlc3RzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICcwMDAwMDMwMTAwOWUyNjE4Njg1ZmZmMzhiOTk5MzU1ZTkzYTQ2OTNjNGJkMThmNjhkZDZiNjU0ZmY2NTU1ZjFmNGFkMjI5ZGNkYmFjNmUxMTAyMDAwMDAwMDAyMGQxMzg5YjFiMzU4NDYzMjZhMmY0ZDRlNWQ3ZTcxNjhhMmU1OGUzZGQ1NjdkMjc0NDMzZGJiOTdjYTYwMGIzY2IwMDA4YTAwZjAwMDAwMDAwMDAwMDAwMjAwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxMDIwMjAxMDAwMDAxMDEwMTAwMDEwMTAyMDAwMDAxMDIwMGE5OTI3MDk1OTFkZWI3NDcxZmIzMGRkYTBmMzM5ZGI3YWI1NDhkMzM5MWE4OWQzZjFmYTBjNzJkMjA5MjY3NWYwMTkxNmUzNWEwYWM2YjUyNWI3ZDM4YTQ0YjY2NzM5NGFhZWU3Y2RlNDFkZmZjODc2OTgwY2ZiYzg4NDU1OTBjZGRhZTZlMTEwMjAwMDAwMDAwMjAwMDAzZDU3YTU3OWJmMjkzMmVlZThmZGNhN2QzMzBiNDZiMTQzMzAyODBkYmMwYWY4OGVmYjkzN2JmNWZhMGQxYTk5MjcwOTU5MWRlYjc0NzFmYjMwZGRhMGYzMzlkYjdhYjU0OGQzMzkxYTg5ZDNmMWZhMGM3MmQyMDkyNjc1ZmU4MDMwMDAwMDAwMDAwMDA1NjVlMjcwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAxLFxuICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgICAgICAgICBzaWduYWJsZUhleDogJ2NlZGFkZTZjMWM5OWUzNTMxYzkwNTM2ZmEyMjhmMGZiMTQ4ZjM1NjA1ZDFhNGVkZmJlOGViNzM5YmRjOTlhNDgnLFxuICAgICAgICAgICAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzEnLFxuICAgICAgICAgICAgICAgICAgcGFyc2VkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4YTk5MjcwOTU5MWRlYjc0NzFmYjMwZGRhMGYzMzlkYjdhYjU0OGQzMzkxYTg5ZDNmMWZhMGM3MmQyMDkyNjc1ZicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzQwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBCaWdOdW1iZXIoJzQwMDAnKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4MDE2NDk1ZGRkYTc0OGMxMTZhMjE4MjQyODM1ZDM2NDcwOWQ2YzVlZTVjOGExZWQ2ODRjNGVmNDMzZDMxNDQyMScsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzQwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnNDAwMCcsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdUb2tlblRyYW5zZmVyJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgIGZlZTogMjU4MDA1NCxcbiAgICAgICAgICAgICAgICAgICAgZmVlU3RyaW5nOiAnMjU4MDA1NCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgICAgICAgICAgICc3OWQ0YjliNTk0ZGYwMjhmZWUzNzI1YTZhZjUxYWUzYWI2YTM1MTllOWQyYzMyMmYyYzhmZDgxNWI5NjQ5NjMyM2M1YWJhN2VhODc0YzEwMmY5NjZmMWE2MWQzYzlhNDJiNWYzMTc3YzZhODU3MTJjZjMxMzcxNWFmZGRmODNkOCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAnMDAwMDAzMDEwMGM1NDhjMjIwNDU0ZDIwZTA3MTJiZDI4NThiMDcyNjBjODI5YTFjODQ3ZjM4MThiNDc4MDU5NjFiNTc0ODEzYWJhZDZlMTEwMjAwMDAwMDAwMjA3MzUxZjY1MTdiNmZiMzVkODU2ODJlYjY0OTcxZTZmYzBiOWEyODYyOGQxMzg4ZTkzZGI4NzJkY2YxZjYwZWFkMDAwODcwMTcwMDAwMDAwMDAwMDAwMDIwMDE2NDk1ZGRkYTc0OGMxMTZhMjE4MjQyODM1ZDM2NDcwOWQ2YzVlZTVjOGExZWQ2ODRjNGVmNDMzZDMxNDQyMTAyMDIwMTAwMDAwMTAxMDEwMDAxMDEwMjAwMDAwMTAyMDBjM2FjMmE4NmUzNWI2MmJmYWRhODNmNjM4OGZmMjdjN2RkYTcwOTJjZjBiODI5ZDJkMWY0YzI4MTNlMjhhZTM5MDFkNGJmZWZhNTMyODI3ZDc2MTlhNTgyNzlhODdkYjgxNjMyZTI2N2NjNDhlNmI5NGFiODFhNDM2N2YwMmNiZWZhYWY2ZTExMDIwMDAwMDAwMDIwZTM2ZGY5ZDBiYWFhNjlhOWVlNmY5NGU5OGM5OWQ4OTRhOGFlYTYzMTc2NWRjZmFhODAzMjI4ODhmM2E0NTNhOGMzYWMyYTg2ZTM1YjYyYmZhZGE4M2Y2Mzg4ZmYyN2M3ZGRhNzA5MmNmMGI4MjlkMmQxZjRjMjgxM2UyOGFlMzllODAzMDAwMDAwMDAwMDAwNTY1ZTI3MDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMixcbiAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICdkMDU1MTQwOWQyNDhhY2NkZDg5NDcxM2E0YzAzYTZkOGYyNDAzNDlhNWU4NWI5MGFlZjAxOWI1ZjQyNjA2MmM4JyxcbiAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8yJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweGMzYWMyYTg2ZTM1YjYyYmZhZGE4M2Y2Mzg4ZmYyN2M3ZGRhNzA5MmNmMGI4MjlkMmQxZjRjMjgxM2UyOGFlMzknLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc2MDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKCc2MDAwJyksXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc2MDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzYwMDAnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVG9rZW5UcmFuc2ZlcicsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgICAgICAgICBmZWU6IDI1ODAwNTQsXG4gICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzI1ODAwNTQnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAnNzlkNGI5YjU5NGRmMDI4ZmVlMzcyNWE2YWY1MWFlM2FiNmEzNTE5ZTlkMmMzMjJmMmM4ZmQ4MTViOTY0OTYzMjNjNWFiYTdlYTg3NGMxMDJmOTY2ZjFhNjFkM2M5YTQyYjVmMzE3N2M2YTg1NzEyY2YzMTM3MTVhZmRkZjgzZDgnLFxuICAgICAgICAgICAgICAgICAgICBsYXN0U2NhbkluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgd2FsbGV0Q29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgNik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgNCk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB1bnNpZ25lZCB0b2tlbiBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9ucyBmb3IgY29sZCB3YWxsZXQgd2l0aCBzZWVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgZ2V0QmFsYW5jZVN0dWJcbiAgICAgICAgLndpdGhBcmdzKHNlZWRSZWNlaXZlQWRkcmVzczEpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzEyMDE5OTc4OCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMTIwMTk5Nzg4JywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKHNlZWRSZWNlaXZlQWRkcmVzczEsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcxNTAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcxNTAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKHNlZWRSZWNlaXZlQWRkcmVzczIpXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzEyMDE5OTc4OCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMTIwMTk5Nzg4JywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSlcbiAgICAgICAgLndpdGhBcmdzKHNlZWRSZWNlaXZlQWRkcmVzczIsIGNvaW5UeXBlKVxuICAgICAgICAucmVzb2x2ZXMoeyB0b3RhbEJhbGFuY2U6ICcyMDAwJywgY29pbk9iamVjdEJhbGFuY2U6ICcyMDAwJywgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiAnMCcgfSk7XG5cbiAgICAgIGdldElucHV0Q29pbnNTdHViXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MxLCBjb2luVHlwZSlcbiAgICAgICAgLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4MzZkYmVmODY2YTFkNjJiZjczMjg5ODlhMTBmYjJmMDdkNzY5ZjRlZTU4N2MwZGU0YTBhMjU2ZTU3ZTBhNThhODo6ZGVlcDo6REVFUCcsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4YTdhOGM5MTAyODAzNWFiNDk5NzdlNzJiMDg0ZTE0NWViMWMxZGRjZmUyZTA2OTI1ZjBmODMzY2VmMmQxZjY5ZicsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4NzgnLFxuICAgICAgICAgICAgZGlnZXN0OiAnQ0tpdVhrRk1hVmtuMTJpS2luWkNyOWFESGZHcENRaVBkeVpVUXpOREo5UXgnLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTUwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC53aXRoQXJncyhzZWVkUmVjZWl2ZUFkZHJlc3MxKVxuICAgICAgICAucmVzb2x2ZXMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvaW5UeXBlOiAnMHgyOjpzdWk6OlNVSScsXG4gICAgICAgICAgICBvYmplY3RJZDogJzB4NWVlYTAzNTNmMDc4MDE2YjcxYTg0Y2I0OTRlNmY3OTFlOTdjYjhkZTUzNDRkZWYzYmFlZGZmYzg5YzI3YTRiNScsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMzQ2OTY4NzknLFxuICAgICAgICAgICAgZGlnZXN0OiAnNktxcndqS0hoSkNlNERYZmRIMnlNTEc4YlhHY1NRb1RlSnk0c2hnaERiVFonLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTIwMDAwMDAwJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweDg2ZTcyOGZkNzI0MmIzYmU2MGU5YzE5NDFhZGQyYzQ3ZmI2NTU3NzkxMDhjMzUwMGEyMTYzMTAyMTg3NDhlMmQnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzE0OCcsXG4gICAgICAgICAgICBkaWdlc3Q6ICdCOXpKZkVZa2lYbkF1TEU2cTNYRkplTGJQYzNLN3FtamdEckhWdkpuVDV3YScsXG4gICAgICAgICAgICBiYWxhbmNlOiBuZXcgQmlnTnVtYmVyKCcxOTk3ODgnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3Moc2VlZFJlY2VpdmVBZGRyZXNzMiwgY29pblR5cGUpXG4gICAgICAgIC5yZXNvbHZlcyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDM2ZGJlZjg2NmExZDYyYmY3MzI4OTg5YTEwZmIyZjA3ZDc2OWY0ZWU1ODdjMGRlNGEwYTI1NmU1N2UwYTU4YTg6OmRlZXA6OkRFRVAnLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweGUxOTFmMTY2ZTcxYjFlZjIwZmZkYTBjOTFiMjRkYTk1ZWNjOTNiNjU3YzQ2NGQ4YTA2ZjU2MWQ0NjkyNzIyZjAnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODgwJyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzRLeWh6ZlBRY1RVcm5wNFVCdlIzR3NQRTNETGNjVkRFUGdCakR4YVdWUmNyJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzIwMDAnKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAud2l0aEFyZ3Moc2VlZFJlY2VpdmVBZGRyZXNzMilcbiAgICAgICAgLnJlc29sdmVzKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2luVHlwZTogJzB4Mjo6c3VpOjpTVUknLFxuICAgICAgICAgICAgb2JqZWN0SWQ6ICcweGQzMmY5NDg4OWQwYmZjMDVjMjRlZDZjMDIzZDVkM2QzNjU0Mjk0YTgzN2Q4NTBkMzczOGIwZTM1MmUxZjQ4NjcnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzM0Njk2ODgwJyxcbiAgICAgICAgICAgIGRpZ2VzdDogJzVQbzEyWWl1TDNOa05UQXZ5V3ZSd3RSNTVKdml5UFZiY0RmVHZDd1FyVGtyJyxcbiAgICAgICAgICAgIGJhbGFuY2U6IG5ldyBCaWdOdW1iZXIoJzEyMDAwMDAwMCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29pblR5cGU6ICcweDI6OnN1aTo6U1VJJyxcbiAgICAgICAgICAgIG9iamVjdElkOiAnMHhmZDY2ZGJmZTdhMTQ5N2YyMTA3NDdiMDUzMmY2MmU2OTI2Y2IxNDRjNzVlNTE5ZjJkZmZmMTdhNGY2ZTUxNWZjJyxcbiAgICAgICAgICAgIHZlcnNpb246ICcxNDknLFxuICAgICAgICAgICAgZGlnZXN0OiAnNWVWY2JibTNOVEY2anFhZFRiNEdqWk16bjc1S0RaQnFjc3BSejNzVnJwYlInLFxuICAgICAgICAgICAgYmFsYW5jZTogbmV3IEJpZ051bWJlcignMTk5Nzg4JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgIGdldEZlZUVzdGltYXRlU3R1YlxuICAgICAgICAud2l0aEFyZ3MoXG4gICAgICAgICAgJ0FBQURBUUNucU1rUUtBTmF0SmwzNXlzSVRoUmVzY0hkeitMZ2FTWHcrRFBPOHRIMm42NXVFUUlBQUFBQUlLZzhaTWVGMlhMTGJCZFBReVBtZnU4YllxQ0Iyei91YVI1c0c3Rm9ibDdWQUFqY0JRQUFBQUFBQUFBZ2lNbWVEYmljdWgyNWZMcmRmemV5cExLaXRBSWxsS0RBU3l2TWczNUxKQVFDQWdFQUFBRUJBUUFCQVFJQUFBRUNBTklCVm01cUM4QWcvUzV2Y3VtOTRpSS9WUTFrMnFZVG1NMlJmQzkxQVRKS0FWN3FBMVB3ZUFGcmNhaE10SlRtOTVIcGZMamVVMFRlODdydC84aWNKNlMxcjI0UkFnQUFBQUFnVHg0aStSZ2NMZEE1cSt2eW1NK1dFVHB2Q25xRXFSNG9ZN1JxUWROajJvelNBVlp1YWd2QUlQMHViM0xwdmVJaVAxVU5aTnFtRTVqTmtYd3ZkUUV5U3VnREFBQUFBQUFBQU9IMUJRQUFBQUFBJ1xuICAgICAgICApXG4gICAgICAgIC5yZXNvbHZlcyhuZXcgQmlnTnVtYmVyKCcyMzQ1NTA0JykpXG4gICAgICAgIC53aXRoQXJncyhcbiAgICAgICAgICAnQUFBREFRRGhrZkZtNXhzZThnLzlvTWtiSk5xVjdNazdaWHhHVFlvRzlXSFVhU2NpOExCdUVRSUFBQUFBSURGdm9raW5CeG9XeWVMNjRsUE05bUpWT3BCMFVPalpqRHUrSjFza1BjUVBBQWpRQndBQUFBQUFBQUFnaU1tZURiaWN1aDI1ZkxyZGZ6ZXlwTEtpdEFJbGxLREFTeXZNZzM1TEpBUUNBZ0VBQUFFQkFRQUJBUUlBQUFFQ0FDK2wyRGxMMXI3RlVsdVZVTDlEdmdkYmcwSXRBUWZBWEhBSlJPUHE3Q2I1QWRNdmxJaWRDL3dGd2s3V3dDUFYwOU5sUXBTb045aFEwM09MRGpVdUgwaG5zRzRSQWdBQUFBQWdRVVdKMC90UFp0KytxN0tuTFltQVBXUlJvbm4vVy9YR1l4enhZNjg5eks4dnBkZzVTOWEreFZKYmxWQy9RNzRIVzROQ0xRRUh3Rnh3Q1VUajZ1d20rZWdEQUFBQUFBQUFBT0gxQlFBQUFBQUEnXG4gICAgICAgIClcbiAgICAgICAgLnJlc29sdmVzKG5ldyBCaWdOdW1iZXIoJzIzNDU1MDQnKSk7XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5V2l0aFNlZWQsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBwYWNrYWdlSWQsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDMsXG4gICAgICAgIHNlZWQ6ICcxMjMnLFxuICAgICAgfSk7XG4gICAgICByZXMuc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIHR4UmVxdWVzdHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuc2lnbmVkVHg6IHtcbiAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgJzAwMDAwMzAxMDBhN2E4YzkxMDI4MDM1YWI0OTk3N2U3MmIwODRlMTQ1ZWIxYzFkZGNmZTJlMDY5MjVmMGY4MzNjZWYyZDFmNjlmYWU2ZTExMDIwMDAwMDAwMDIwYTgzYzY0Yzc4NWQ5NzJjYjZjMTc0ZjQzMjNlNjdlZWYxYjYyYTA4MWRiM2ZlZTY5MWU2YzFiYjE2ODZlNWVkNTAwMDhkYzA1MDAwMDAwMDAwMDAwMDAyMDg4Yzk5ZTBkYjg5Y2JhMWRiOTdjYmFkZDdmMzdiMmE0YjJhMmI0MDIyNTk0YTBjMDRiMmJjYzgzN2U0YjI0MDQwMjAyMDEwMDAwMDEwMTAxMDAwMTAxMDIwMDAwMDEwMjAwZDIwMTU2NmU2YTBiYzAyMGZkMmU2ZjcyZTliZGUyMjIzZjU1MGQ2NGRhYTYxMzk4Y2Q5MTdjMmY3NTAxMzI0YTAxNWVlYTAzNTNmMDc4MDE2YjcxYTg0Y2I0OTRlNmY3OTFlOTdjYjhkZTUzNDRkZWYzYmFlZGZmYzg5YzI3YTRiNWFmNmUxMTAyMDAwMDAwMDAyMDRmMWUyMmY5MTgxYzJkZDAzOWFiZWJmMjk4Y2Y5NjExM2E2ZjBhN2E4NGE5MWUyODYzYjQ2YTQxZDM2M2RhOGNkMjAxNTY2ZTZhMGJjMDIwZmQyZTZmNzJlOWJkZTIyMjNmNTUwZDY0ZGFhNjEzOThjZDkxN2MyZjc1MDEzMjRhZTgwMzAwMDAwMDAwMDAwMDU2NWUyNzAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICBzY2FuSW5kZXg6IDEsXG4gICAgICAgICAgICAgICAgICBjb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnMjJkZWZhOTEwMWVhM2EzODM5YzNjMDAyNmIyN2E5ODM3MTY1YzA3ZmNlY2ZmOGU5NDM1M2JjZjNkNWEwMTMyOCcsXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vOTk5OTk5Lzk0ODYyNjIyLzE1NzM2MzUwOS8xJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweGQyMDE1NjZlNmEwYmMwMjBmZDJlNmY3MmU5YmRlMjIyM2Y1NTBkNjRkYWE2MTM5OGNkOTE3YzJmNzUwMTMyNGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKCcxNTAwJyksXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDg4Yzk5ZTBkYjg5Y2JhMWRiOTdjYmFkZDdmMzdiMmE0YjJhMmI0MDIyNTk0YTBjMDRiMmJjYzgzN2U0YjI0MDQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzE1MDAnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVG9rZW5UcmFuc2ZlcicsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgICAgICAgICBmZWU6IDI1ODAwNTQsXG4gICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzI1ODAwNTQnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAnY2EwYTAxNGJhNmYxMTEwNmExNTVlZjhlMmNhYjJmNzZkMjc3ZTRmMDFjZmZhNTkxYTliNDA4NDgzNDM4MjNiM2Q5MTA3NTJhNDljOTZiZjU4MTM5ODUyMDZlMjNjOWY5Y2QzYTc4ZjFjY2NmNWNmODhkZWY1MmI1NzNjZWRjOTMnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgd2FsbGV0Q29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuc2lnbmVkVHg6IHtcbiAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgJzAwMDAwMzAxMDBlMTkxZjE2NmU3MWIxZWYyMGZmZGEwYzkxYjI0ZGE5NWVjYzkzYjY1N2M0NjRkOGEwNmY1NjFkNDY5MjcyMmYwYjA2ZTExMDIwMDAwMDAwMDIwMzE2ZmEyNDhhNzA3MWExNmM5ZTJmYWUyNTNjY2Y2NjI1NTNhOTA3NDUwZThkOThjM2JiZTI3NWIyNDNkYzQwZjAwMDhkMDA3MDAwMDAwMDAwMDAwMDAyMDg4Yzk5ZTBkYjg5Y2JhMWRiOTdjYmFkZDdmMzdiMmE0YjJhMmI0MDIyNTk0YTBjMDRiMmJjYzgzN2U0YjI0MDQwMjAyMDEwMDAwMDEwMTAxMDAwMTAxMDIwMDAwMDEwMjAwMmZhNWQ4Mzk0YmQ2YmVjNTUyNWI5NTUwYmY0M2JlMDc1YjgzNDIyZDAxMDdjMDVjNzAwOTQ0ZTNlYWVjMjZmOTAxZDMyZjk0ODg5ZDBiZmMwNWMyNGVkNmMwMjNkNWQzZDM2NTQyOTRhODM3ZDg1MGQzNzM4YjBlMzUyZTFmNDg2N2IwNmUxMTAyMDAwMDAwMDAyMDQxNDU4OWQzZmI0ZjY2ZGZiZWFiYjJhNzJkODk4MDNkNjQ1MWEyNzlmZjViZjVjNjYzMWNmMTYzYWYzZGNjYWYyZmE1ZDgzOTRiZDZiZWM1NTI1Yjk1NTBiZjQzYmUwNzViODM0MjJkMDEwN2MwNWM3MDA5NDRlM2VhZWMyNmY5ZTgwMzAwMDAwMDAwMDAwMDU2NWUyNzAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICBzY2FuSW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICBjb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnMmU2YmIxNzE2NmVlMTk3MTAyNzI5YmRhNDdiMDZiN2MwYjU5NjJiZjQzMWJiYjA1NjJiOTFlMjY3Yjc1MTI5ZCcsXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vOTk5OTk5Lzk0ODYyNjIyLzE1NzM2MzUwOS8yJyxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDJmYTVkODM5NGJkNmJlYzU1MjViOTU1MGJmNDNiZTA3NWI4MzQyMmQwMTA3YzA1YzcwMDk0NGUzZWFlYzI2ZjknLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgQmlnTnVtYmVyKCcyMDAwJyksXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDg4Yzk5ZTBkYjg5Y2JhMWRiOTdjYmFkZDdmMzdiMmE0YjJhMmI0MDIyNTk0YTBjMDRiMmJjYzgzN2U0YjI0MDQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzIwMDAnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVG9rZW5UcmFuc2ZlcicsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgICAgICAgICBmZWU6IDI1ODAwNTQsXG4gICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzI1ODAwNTQnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAnY2EwYTAxNGJhNmYxMTEwNmExNTVlZjhlMmNhYjJmNzZkMjc3ZTRmMDFjZmZhNTkxYTliNDA4NDgzNDM4MjNiM2Q5MTA3NTJhNDljOTZiZjU4MTM5ODUyMDZlMjNjOWY5Y2QzYTc4ZjFjY2NmNWNmODhkZWY1MmI1NzNjZWRjOTMnLFxuICAgICAgICAgICAgICAgICAgICBsYXN0U2NhbkluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgd2FsbGV0Q29pbjogJ3RzdWk6ZGVlcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgNik7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0SW5wdXRDb2lucywgNCk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RmVlRXN0aW1hdGUsIDIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQ3JlYXRlIEJyb2FkY2FzdGFibGUgTVBDIFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdjcmVhdGUgYnJvYWRjYXN0YWJsZSBNUEMgdHJhbnNhY3Rpb24gZm9yIE9WQyBzaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVTaGFyZXMgPSB7XG4gICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdDoge1xuICAgICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgICAnMDAwMDAyMDAwOGM4OGI5MDJmMDAwMDAwMDAwMDIwZGY0MDdlM2UyNWU5NDAwZjk3NzlhYzc1NzE1MzdjMjM2MTY4NDE5NGYxYWE1ZGIxMjZhOGY1NzRiNWVkODUxYzAyMDIwMDAxMDEwMDAwMDEwMTAyMDAwMDAxMDEwMDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEwMTQ1NTNiMGY2Zjc5ZWQ5NTk0MjE0MTgzNWRlM2FiMDg2YmYzOGQxZjFkOTYyNzI5ODFlMTM5MGI4NGZiODZiMzZjOTAwMDAwMDAwMDAwMDAwMjAwYjFkZThmZGZiYmI4YTZmYTJjNjVlYzc5YTU1NzAzYzlhOWYwYzI2ODVhNzY4ZjJiODFhMDQyNmJjOTMyZWMzMDE2NDk1ZGRkYTc0OGMxMTZhMjE4MjQyODM1ZDM2NDcwOWQ2YzVlZTVjOGExZWQ2ODRjNGVmNDMzZDMxNDQyMWU4MDMwMDAwMDAwMDAwMDBhNDg4MjEwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgICBzY2FuSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgICAgIGNvaW46ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICdhNGNlOGViMTEzNjJjZDQ1YzA5OTM2ZTc0NTA0NGRjNzhiMjY4OWU1ZDgxNDdiOWVhOWE3ZGU0M2VlNDM5MjNhJyxcbiAgICAgICAgICAgICAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzAnLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc3OTgwMDIxMjAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogOCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiBbNzk4MDAyMTIwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweGRmNDA3ZTNlMjVlOTQwMGY5Nzc5YWM3NTcxNTM3YzIzNjE2ODQxOTRmMWFhNWRiMTI2YThmNTc0YjVlZDg1MWMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzc5ODAwMjEyMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aScsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICc3OTgwMDIxMjAnLFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdUcmFuc2ZlcicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgICBmZWU6IDIxOTc2NjgsXG4gICAgICAgICAgICAgICAgICAgICAgZmVlU3RyaW5nOiAnMjE5NzY2OCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgICAgICAgICAgICAgJzc5ZDRiOWI1OTRkZjAyOGZlZTM3MjVhNmFmNTFhZTNhYjZhMzUxOWU5ZDJjMzIyZjJjOGZkODE1Yjk2NDk2MzIzYzVhYmE3ZWE4NzRjMTAyZjk2NmYxYTYxZDNjOWE0MmI1ZjMxNzdjNmE4NTcxMmNmMzEzNzE1YWZkZGY4M2Q4JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmU6IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogJ2JhY2t1cCcsXG4gICAgICAgICAgICAgICAgICAgIHRvOiAndXNlcicsXG4gICAgICAgICAgICAgICAgICAgIHNoYXJlOlxuICAgICAgICAgICAgICAgICAgICAgICc2ZjQ3MDkwNmRmODhjMzNiMjdjOGQxMTNlZDk0NGVkMGE0ZmM0OTliYTZjYzc2ZjAwYjg5MjQ5NDI4MTJkNzgzNTc5MmVlNDU1Y2JjODk0MWZhYmE3YmNjOTNiMTVhOWNkMTk4YTIwZGMzZjBiNjI5ZjVmZGNlYWIzNGU2NjEwMCcsXG4gICAgICAgICAgICAgICAgICAgIHB1YmxpY1NoYXJlOiAnMjg0NDk2Y2EwNGNjNjAzODIzZjc5OTNhZWYxM2Y3MmYzMzFkOTcwODViMjE4NGQ3YTZhNDYzYTkwYWE5MjdkMCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0c3NWZXJzaW9uOiAnMC4wLjEnLFxuICAgICAgICAgICAgb3ZjOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlZGRzYVNpZ25hdHVyZToge1xuICAgICAgICAgICAgICAgICAgeTogJzI4NDQ5NmNhMDRjYzYwMzgyM2Y3OTkzYWVmMTNmNzJmMzMxZDk3MDg1YjIxODRkN2E2YTQ2M2E5MGFhOTI3ZDAnLFxuICAgICAgICAgICAgICAgICAgUjogJzZmNDcwOTA2ZGY4OGMzM2IyN2M4ZDExM2VkOTQ0ZWQwYTRmYzQ5OWJhNmNjNzZmMDBiODkyNDk0MjgxMmQ3ODMnLFxuICAgICAgICAgICAgICAgICAgc2lnbWE6ICc1YzIzYThjNzJjZTE5MjczMWU3MDJkYTQ2MGFlYTc5ZWQ2NjMzNGI0YTc4M2RjZjZkZDI3NTgzNDdkNmM5ZjBkJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24oc2lnbmF0dXJlU2hhcmVzKTtcblxuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICdBQUFDQUFqSWk1QXZBQUFBQUFBZzMwQitQaVhwUUErWGVheDFjVk44STJGb1FaVHhxbDJ4SnFqMWRMWHRoUndDQWdBQkFRQUFBUUVDQUFBQkFRQUJaSlhkMm5TTUVXb2hna0tEWFRaSENkYkY3bHlLSHRhRXhPOURQVEZFSVFGRlU3RDI5NTdaV1VJVUdEWGVPckNHdnpqUjhkbGljcGdlRTVDNFQ3aHJOc2tBQUFBQUFBQUFJQXNkNlAzN3U0cHZvc1pleDVwVmNEeWFud3dtaGFkbzhyZ2FCQ2E4a3k3REFXU1YzZHAwakJGcUlZSkNnMTAyUnduV3hlNWNpaDdXaE1UdlF6MHhSQ0hvQXdBQUFBQUFBS1NJSVFBQUFBQUFBQT09JyxcbiAgICAgICAgICAgIHNjYW5JbmRleDogMCxcbiAgICAgICAgICAgIHNpZ25hdHVyZTpcbiAgICAgICAgICAgICAgJ0FHOUhDUWJmaU1NN0o4alJFKzJVVHRDay9FbWJwc3gyOEF1SkpKUW9FdGVEWENPb3h5emhrbk1lY0Mya1lLNm5udFpqTkxTbmc5ejIzU2RZTkgxc253MG9SSmJLQk14Z09DUDNtVHJ2RS9jdk14MlhDRnNoaE5lbXBHT3BDcWtuMEE9PScsXG4gICAgICAgICAgICByZWNvdmVyeUFtb3VudDogJzc5ODAwMjEyMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGFzdFNjYW5JbmRleDogMCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZSBicm9hZGNhc3RhYmxlIE1QQyB0b2tlbiB0cmFuc2FjdGlvbiBmb3IgT1ZDIHNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZVNoYXJlcyA9IHtcbiAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHhSZXF1ZXN0OiB7XG4gICAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAgICcwMDAwMDQwMTAwNzJhZDk5MTMwYWJkMzc5MGRiN2JhYzg5MDhkNTBkMzQxMmE4MDBhOGZjZDEwYzFjZmJkNjRiODIxNTUzNzU1OGExNmUxMTAyMDAwMDAwMDAyMDA3Yjg1ZDM4YjZlMWI0ODVmMTQ1NTkzMGQyNzI5NjEwODA4MWNhYWNkNzY2NGM0OGQ3ZDVmNDg1NzJlZTJiYmQwMTAwNGMxY2NjYzZkMDM1MTBiZDc0YTk1ZjgxYjJiN2RhMDgxMTljYjE4ZTJjNTY1NDM1ZTdhZDcxNWU2YWFkYzVhNzY5NmUxMTAyMDAwMDAwMDAyMDhmYjRhMzM0YjgyOWFjZGVjYmZhMmEzMjg2NDJhZmEyNGQ2Zjk1Mzc0MGY3NjgzMDgwZWUwZTRiM2QzYTk2MmYwMDA4ZjgyYTAwMDAwMDAwMDAwMDAwMjA5MWYyNWUyMzdiODNhMDBhNjI3MjRmZGM0YTgxZTQzZjQ5NGRjNmI0MWExMjQxNDkyODI2ZDM2ZTRkMTMxZGEzMDMwMzAxMDAwMDAxMDEwMTAwMDIwMTAwMDAwMTAxMDIwMDAxMDEwMjAxMDAwMTAzMDAwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxMDE5ODExNGYyZGRlZmUzZjE2ZDlkMmUwMTYxOTRiNTJjNGMzYWY0MzBjMTYwMWJkYjM1MzljYmQyMzdjYmNhMDY4Njk2ZTExMDIwMDAwMDAwMDIwYjUxNmExNWI1MDM0YmNkNDI0MjU0NDBjNTY0Y2YzNmY0Mzk1NDJmODg2NzFlZjc5OWRkZTA2NjFlNzg5YTAwOTAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjFlODAzMDAwMDAwMDAwMDAwZjg2NDExMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICBjb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICc0NDlhZGUxOTU5MDY4NWIxZWIwY2VmY2IyZWM0MWY0YzY4ZTM3ZDhlYWY3NTY4N2M0NTk2NWUyODhlNzFjYWE0JyxcbiAgICAgICAgICAgICAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzAnLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMTAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6IFsxMTAwMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHg5MWYyNWUyMzdiODNhMDBhNjI3MjRmZGM0YTgxZTQzZjQ5NGRjNmI0MWExMjQxNDkyODI2ZDM2ZTRkMTMxZGEzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMTAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzExMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVG9rZW5UcmFuc2ZlcicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgICBmZWU6IDExMzk5NjAsXG4gICAgICAgICAgICAgICAgICAgICAgZmVlU3RyaW5nOiAnMTEzOTk2MCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgICAgICAgICAgICAgJzc5ZDRiOWI1OTRkZjAyOGZlZTM3MjVhNmFmNTFhZTNhYjZhMzUxOWU5ZDJjMzIyZjJjOGZkODE1Yjk2NDk2MzIzYzVhYmE3ZWE4NzRjMTAyZjk2NmYxYTYxZDNjOWE0MmI1ZjMxNzdjNmE4NTcxMmNmMzEzNzE1YWZkZGY4M2Q4JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmU6IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogJ2JhY2t1cCcsXG4gICAgICAgICAgICAgICAgICAgIHRvOiAndXNlcicsXG4gICAgICAgICAgICAgICAgICAgIHNoYXJlOlxuICAgICAgICAgICAgICAgICAgICAgICcyM2M1M2U1NGYyNzEzODY1NzhkOTlhNjkzMmZmNzA4OTYwOTAwMTg4YWIzZTViY2UxYWVjMWYwMTllNTNhODVkMzE5N2Y4YjY0YTlmZWFkYmVkYmJkMzdhYTQyZTQ0NDQ2MDlmMDAwNzQzYWRjMGE5NGZmY2M3MjFjNzA1N2QwNCcsXG4gICAgICAgICAgICAgICAgICAgIHB1YmxpY1NoYXJlOiAnMjg0NDk2Y2EwNGNjNjAzODIzZjc5OTNhZWYxM2Y3MmYzMzFkOTcwODViMjE4NGQ3YTZhNDYzYTkwYWE5MjdkMCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHdhbGxldENvaW46ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRzc1ZlcnNpb246ICcwLjAuMScsXG4gICAgICAgICAgICBvdmM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVkZHNhU2lnbmF0dXJlOiB7XG4gICAgICAgICAgICAgICAgICB5OiAnMjg0NDk2Y2EwNGNjNjAzODIzZjc5OTNhZWYxM2Y3MmYzMzFkOTcwODViMjE4NGQ3YTZhNDYzYTkwYWE5MjdkMCcsXG4gICAgICAgICAgICAgICAgICBSOiAnMjNjNTNlNTRmMjcxMzg2NTc4ZDk5YTY5MzJmZjcwODk2MDkwMDE4OGFiM2U1YmNlMWFlYzFmMDE5ZTUzYTg1ZCcsXG4gICAgICAgICAgICAgICAgICBzaWdtYTogJzliNTJiNDVjNGQ1MzlmYWQ5MDY4MDVmOWZjYmFiNmZiNWU0MTUyMjQzY2FlZTI1Mjg1NWMzNmMzNDA0OGNjMDknLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5jcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbihzaWduYXR1cmVTaGFyZXMpO1xuXG4gICAgICByZXMuc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgJ0FBQUVBUUJ5clprVENyMDNrTnQ3cklrSTFRMDBFcWdBcVB6UkRCejcxa3VDRlZOMVdLRnVFUUlBQUFBQUlBZTRYVGkyNGJTRjhVVlpNTkp5bGhDQWdjcXMxMlpNU05mVjlJVnk3aXU5QVFCTUhNekcwRFVRdlhTcFg0R3l0OW9JRVp5eGppeFdWRFhuclhGZWFxM0ZwMmx1RVFJQUFBQUFJSSswb3pTNEthemV5L29xTW9aQ3I2Sk5iNVUzUVBkb01JRHVEa3M5T3BZdkFBajRLZ0FBQUFBQUFBQWdrZkplSTN1RG9BcGljay9jU29Ia1AwbE54clFhRWtGSktDYlRiazBUSGFNREF3RUFBQUVCQVFBQ0FRQUFBUUVDQUFFQkFnRUFBUU1BQVdTVjNkcDBqQkZxSVlKQ2cxMDJSd25XeGU1Y2loN1doTVR2UXoweFJDRUJtQkZQTGQ3K1B4YlowdUFXR1V0U3hNT3ZRd3dXQWIyelU1eTlJM3k4b0docGJoRUNBQUFBQUNDMUZxRmJVRFM4MUNRbFJBeFdUUE52UTVWQytJWng3M21kM2daaDU0bWdDUUZrbGQzYWRJd1JhaUdDUW9OZE5rY0oxc1h1WElvZTFvVEU3ME05TVVRaDZBTUFBQUFBQUFENFpCRUFBQUFBQUFBPScsXG4gICAgICAgICAgICBzY2FuSW5kZXg6IDAsXG4gICAgICAgICAgICBzaWduYXR1cmU6XG4gICAgICAgICAgICAgICdBQ1BGUGxUeWNUaGxlTm1hYVRML2NJbGdrQUdJcXo1YnpocnNId0dlVTZoZG0xSzBYRTFUbjYyUWFBWDUvTHEyKzE1QlVpUThydUpTaFZ3MncwQkl6QWtvUkpiS0JNeGdPQ1AzbVRydkUvY3ZNeDJYQ0ZzaGhOZW1wR09wQ3FrbjBBPT0nLFxuICAgICAgICAgICAgcmVjb3ZlcnlBbW91bnQ6ICcxMTAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGFzdFNjYW5JbmRleDogMCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZSBicm9hZGNhc3RhYmxlIE1QQyB0cmFuc2FjdGlvbiBmb3IgT1ZDIHNpZ25lZCBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZVNoYXJlcyA9IHtcbiAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHhSZXF1ZXN0OiB7XG4gICAgICAgICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAgICAgICAgICcwMDAwMDIwMDA4MjBjMmQ2MDUwMDAwMDAwMDAwMjAwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxMDIwMjAwMDEwMTAwMDAwMTAxMDIwMDAwMDEwMTAwYTk5MjcwOTU5MWRlYjc0NzFmYjMwZGRhMGYzMzlkYjdhYjU0OGQzMzkxYTg5ZDNmMWZhMGM3MmQyMDkyNjc1ZjAxNTY4YmVmZmU3NjUxMDMzYTA4MWE3Mzc1YTNiYjQzZDRkMmE4ZTI5MGEzOTZlODI2MjM2ZTczZDA5NzNiNDliNWQwMDAwMDAwMDAwMDAwMDAyMDhiYzA3NjRhNDU0ZGU3NTM4YjVlY2VhNmZkMGJkMjIxYzljODUyMDdhZjI5NzYxMjk0NGE5NjdkNDNlOGRkM2JhOTkyNzA5NTkxZGViNzQ3MWZiMzBkZGEwZjMzOWRiN2FiNTQ4ZDMzOTFhODlkM2YxZmEwYzcyZDIwOTI2NzVmZTgwMzAwMDAwMDAwMDAwMGE0ODgyMTAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgIHNjYW5JbmRleDogMSxcbiAgICAgICAgICAgICAgICAgICAgY29pbjogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICBzaWduYWJsZUhleDogJzg1N2EyZjI2Njg3YzAxMWE2MWEwNjBhNDFkNGM4MGMxMGIyZmQzMWU5OGZlNjcwNGQ2YmNkYTI2ZjU3YjAzYmInLFxuICAgICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMScsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweGE5OTI3MDk1OTFkZWI3NDcxZmIzMGRkYTBmMzM5ZGI3YWI1NDhkMzM5MWE4OWQzZjFmYTBjNzJkMjA5MjY3NWYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzk3OTYwNDgwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogWzk3OTYwNDgwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzk3OTYwNDgwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBzcGVuZEFtb3VudDogJzk3OTYwNDgwJyxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZmVlOiAyMTk3NjY4LFxuICAgICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzIxOTc2NjgnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICc3OWQ0YjliNTk0ZGYwMjhmZWUzNzI1YTZhZjUxYWUzYWI2YTM1MTllOWQyYzMyMmYyYzhmZDgxNWI5NjQ5NjMyM2M1YWJhN2VhODc0YzEwMmY5NjZmMWE2MWQzYzlhNDJiNWYzMTc3YzZhODU3MTJjZjMxMzcxNWFmZGRmODNkOCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgICAgICAgICAgICB0bzogJ3VzZXInLFxuICAgICAgICAgICAgICAgICAgICBzaGFyZTpcbiAgICAgICAgICAgICAgICAgICAgICAnY2RmZTE1ZDdjMGY4MGY4YWFkODlkODc4NzA2NjczY2UyNDI5NDdiMTI2ODUyYzAwZWUzMDllZjA1ZjdhODMwMWIyZTkwMmI5MGQzN2VhN2RmZTg2Y2U3OWM3YTk5YjJiMjdhMTc1YzNmNzE0YzMxMGZkOWUxMGVhODc3Y2M2MGYnLFxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNTaGFyZTogJ2U0NDViZDA5MmE0NjdkZjU3NzAwMWNmYmQ2MDgxYjE0NDVjYTBmNzUxNDcyMzM1NjFlZDJmNTNmNmEzMGU0NWEnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHNzVmVyc2lvbjogJzAuMC4xJyxcbiAgICAgICAgICAgIG92YzogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZWRkc2FTaWduYXR1cmU6IHtcbiAgICAgICAgICAgICAgICAgIHk6ICdlNDQ1YmQwOTJhNDY3ZGY1NzcwMDFjZmJkNjA4MWIxNDQ1Y2EwZjc1MTQ3MjMzNTYxZWQyZjUzZjZhMzBlNDVhJyxcbiAgICAgICAgICAgICAgICAgIFI6ICdjZGZlMTVkN2MwZjgwZjhhYWQ4OWQ4Nzg3MDY2NzNjZTI0Mjk0N2IxMjY4NTJjMDBlZTMwOWVmMDVmN2E4MzAxJyxcbiAgICAgICAgICAgICAgICAgIHNpZ21hOiAnMmEzMTMyOWIyZTVlZjhjM2YyMjJlYjkxY2Q5ZDcwZTcxNmYyMjllZTE5ZDNjYTk0MTdjOGFjYzE2YjFkYTEwMCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eFJlcXVlc3Q6IHtcbiAgICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICAgICAgICAgJzAwMDAwMjAwMDgwMGMyZWIwYjAwMDAwMDAwMDAyMDAxNjQ5NWRkZGE3NDhjMTE2YTIxODI0MjgzNWQzNjQ3MDlkNmM1ZWU1YzhhMWVkNjg0YzRlZjQzM2QzMTQ0MjEwMjAyMDAwMTAxMDAwMDAxMDEwMjAwMDAwMTAxMDBjM2FjMmE4NmUzNWI2MmJmYWRhODNmNjM4OGZmMjdjN2RkYTcwOTJjZjBiODI5ZDJkMWY0YzI4MTNlMjhhZTM5MDFkNjhmZWI0NzgwODg2Y2NmYTgxYTM3MDM2OTU4ZWM5YzhiZmFiZmU3NWEwYmI3YzRkMWE0NTg3OTkyMzQzZjViY2YwMDAwMDAwMDAwMDAwMDIwNWFkNGY2MzFhMzc4ZjhiMDk1NDJkNGRmNjY5NDJiNmRhYmIyZjY1Y2IyMGNmOGY2MjhjOTFjNjRmOTM1MmU0ZWMzYWMyYTg2ZTM1YjYyYmZhZGE4M2Y2Mzg4ZmYyN2M3ZGRhNzA5MmNmMGI4MjlkMmQxZjRjMjgxM2UyOGFlMzllODAzMDAwMDAwMDAwMDAwYTQ4ODIxMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgICBjb2luOiAndHN1aScsXG4gICAgICAgICAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnZjJiNTZhNzRlNzg3YjJhOThkZWNmMTg5ZTcxYjFlMGM1ZDRjY2VlODg2OTdiMzk5MWE0OGRlMjkxMDY3NjAyMCcsXG4gICAgICAgICAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8yJyxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVHg6IHtcbiAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzB4YzNhYzJhODZlMzViNjJiZmFkYTgzZjYzODhmZjI3YzdkZGE3MDkyY2YwYjgyOWQyZDFmNGMyODEzZTI4YWUzOScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IDgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogWzIwMDAwMDAwMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgwMTY0OTVkZGRhNzQ4YzExNmEyMTgyNDI4MzVkMzY0NzA5ZDZjNWVlNWM4YTFlZDY4NGM0ZWY0MzNkMzE0NDIxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDAwMDAwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2luTmFtZTogJ3RzdWknLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMjAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZmVlOiAyMTk3NjY4LFxuICAgICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzIxOTc2NjgnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICc3OWQ0YjliNTk0ZGYwMjhmZWUzNzI1YTZhZjUxYWUzYWI2YTM1MTllOWQyYzMyMmYyYzhmZDgxNWI5NjQ5NjMyM2M1YWJhN2VhODc0YzEwMmY5NjZmMWE2MWQzYzlhNDJiNWYzMTc3YzZhODU3MTJjZjMxMzcxNWFmZGRmODNkOCcsXG4gICAgICAgICAgICAgICAgICAgICAgbGFzdFNjYW5JbmRleDogMjAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgICAgICAgICAgICB0bzogJ3VzZXInLFxuICAgICAgICAgICAgICAgICAgICBzaGFyZTpcbiAgICAgICAgICAgICAgICAgICAgICAnMzUxODYxM2VhNWNlZmEzNmNkMjJlMWIwOTI3NDJkOGQwNTI3NDQxODg1MTgwNDAzOTdmMWE2NWE3NTRmOWU5NTMyNDg4OTMxMmQ3MDE0NjgxMWRiZGMyYTk2MjQ1YzUxOGUxNmZjNjFiZDFhNWEyYjUzYjUzZWJjZWM1ZDRhMDMnLFxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNTaGFyZTogJzRiMTQzYTEyODM1YmRkYTA0ODMxYTllZDg1MWY5ZWFkZDdiYTViNDZlOWMwN2ZkMDg3Yjc1MWY0NmEzZjM2NGQnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHNzVmVyc2lvbjogJzAuMC4xJyxcbiAgICAgICAgICAgIG92YzogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZWRkc2FTaWduYXR1cmU6IHtcbiAgICAgICAgICAgICAgICAgIHk6ICc0YjE0M2ExMjgzNWJkZGEwNDgzMWE5ZWQ4NTFmOWVhZGQ3YmE1YjQ2ZTljMDdmZDA4N2I3NTFmNDZhM2YzNjRkJyxcbiAgICAgICAgICAgICAgICAgIFI6ICczNTE4NjEzZWE1Y2VmYTM2Y2QyMmUxYjA5Mjc0MmQ4ZDA1Mjc0NDE4ODUxODA0MDM5N2YxYTY1YTc1NGY5ZTk1JyxcbiAgICAgICAgICAgICAgICAgIHNpZ21hOiAnMmRmNDhlZDYwZmY2MmIwZTg2ODljNWViZTU3MzE4ZjNkYWQ3NjI4ODY0NzUyNGI0MjBhY2Y3YjFhODRjYzAwMCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHNpZ25hdHVyZVNoYXJlcyk7XG5cbiAgICAgIHJlcy5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAnQUFBQ0FBZ2d3dFlGQUFBQUFBQWdBV1NWM2RwMGpCRnFJWUpDZzEwMlJ3bld4ZTVjaWg3V2hNVHZRejB4UkNFQ0FnQUJBUUFBQVFFQ0FBQUJBUUNwa25DVmtkNjNSeCt6RGRvUE01MjNxMVNOTTVHb25UOGZvTWN0SUpKblh3RldpKy8rZGxFRE9nZ2FjM1dqdTBQVTBxamlrS09XNkNZamJuUFFsenRKdGRBQUFBQUFBQUFBSUl2QWRrcEZUZWRUaTE3T3B2MEwwaUhKeUZJSHJ5bDJFcFJLbG4xRDZOMDdxWkp3bFpIZXQwY2ZzdzNhRHpPZHQ2dFVqVE9ScUowL0g2REhMU0NTWjEvb0F3QUFBQUFBQUtTSUlRQUFBQUFBQUE9PScsXG4gICAgICAgICAgICBzY2FuSW5kZXg6IDEsXG4gICAgICAgICAgICBzaWduYXR1cmU6XG4gICAgICAgICAgICAgICdBTTMrRmRmQStBK0tyWW5ZZUhCbWM4NGtLVWV4Sm9Vc0FPNHdudkJmZW9NQktqRXlteTVlK01QeUl1dVJ6WjF3NXhieUtlNFowOHFVRjhpc3dXc2RvUURrUmIwSktrWjk5WGNBSFB2V0NCc1VSY29QZFJSeU0xWWUwdlUvYWpEa1dnPT0nLFxuICAgICAgICAgICAgcmVjb3ZlcnlBbW91bnQ6ICc5Nzk2MDQ4MCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICdBQUFDQUFnQXd1c0xBQUFBQUFBZ0FXU1YzZHAwakJGcUlZSkNnMTAyUnduV3hlNWNpaDdXaE1UdlF6MHhSQ0VDQWdBQkFRQUFBUUVDQUFBQkFRRERyQ3FHNDF0aXY2Mm9QMk9JL3lmSDNhY0pMUEM0S2RMUjlNS0JQaWl1T1FIV2ordEhnSWhzejZnYU53TnBXT3ljaS9xLzUxb0x0OFRScEZoNWtqUS9XODhBQUFBQUFBQUFJRnJVOWpHamVQaXdsVUxVMzJhVUsyMnJzdlpjc2d6NDlpakpIR1Q1TlM1T3c2d3FodU5iWXIrdHFEOWppUDhueDkybkNTend1Q25TMGZUQ2dUNG9yam5vQXdBQUFBQUFBS1NJSVFBQUFBQUFBQT09JyxcbiAgICAgICAgICAgIHNjYW5JbmRleDogMixcbiAgICAgICAgICAgIHNpZ25hdHVyZTpcbiAgICAgICAgICAgICAgJ0FEVVlZVDZsenZvMnpTTGhzSkowTFkwRkowUVloUmdFQTVmeHBscDFUNTZWTGZTTzFnLzJLdzZHaWNYcjVYTVk4OXJYWW9oa2RTUzBJS3ozc2FoTXdBQkxGRG9TZzF2ZG9FZ3hxZTJGSDU2dDE3cGJSdW5BZjlDSHQxSDBhajgyVFE9PScsXG4gICAgICAgICAgICByZWNvdmVyeUFtb3VudDogJzIwMDAwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGFzdFNjYW5JbmRleDogMjAsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdjcmVhdGUgYnJvYWRjYXN0YWJsZSBNUEMgdHJhbnNhY3Rpb24gZm9yIE9WQyBzaWduZWQgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVTaGFyZXMgPSB7XG4gICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdDoge1xuICAgICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgICAnMDAwMDAzMDEwMGE3YThjOTEwMjgwMzVhYjQ5OTc3ZTcyYjA4NGUxNDVlYjFjMWRkY2ZlMmUwNjkyNWYwZjgzM2NlZjJkMWY2OWZhZTZlMTEwMjAwMDAwMDAwMjBhODNjNjRjNzg1ZDk3MmNiNmMxNzRmNDMyM2U2N2VlZjFiNjJhMDgxZGIzZmVlNjkxZTZjMWJiMTY4NmU1ZWQ1MDAwOGRjMDUwMDAwMDAwMDAwMDAwMDIwODhjOTllMGRiODljYmExZGI5N2NiYWRkN2YzN2IyYTRiMmEyYjQwMjI1OTRhMGMwNGIyYmNjODM3ZTRiMjQwNDAyMDIwMTAwMDAwMTAxMDEwMDAxMDEwMjAwMDAwMTAyMDBkMjAxNTY2ZTZhMGJjMDIwZmQyZTZmNzJlOWJkZTIyMjNmNTUwZDY0ZGFhNjEzOThjZDkxN2MyZjc1MDEzMjRhMDE1ZWVhMDM1M2YwNzgwMTZiNzFhODRjYjQ5NGU2Zjc5MWU5N2NiOGRlNTM0NGRlZjNiYWVkZmZjODljMjdhNGI1YWY2ZTExMDIwMDAwMDAwMDIwNGYxZTIyZjkxODFjMmRkMDM5YWJlYmYyOThjZjk2MTEzYTZmMGE3YTg0YTkxZTI4NjNiNDZhNDFkMzYzZGE4Y2QyMDE1NjZlNmEwYmMwMjBmZDJlNmY3MmU5YmRlMjIyM2Y1NTBkNjRkYWE2MTM5OGNkOTE3YzJmNzUwMTMyNGFlODAzMDAwMDAwMDAwMDAwNTY1ZTI3MDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAxLFxuICAgICAgICAgICAgICAgICAgICBjb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICcyMmRlZmE5MTAxZWEzYTM4MzljM2MwMDI2YjI3YTk4MzcxNjVjMDdmY2VjZmY4ZTk0MzUzYmNmM2Q1YTAxMzI4JyxcbiAgICAgICAgICAgICAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzk5OTk5OS85NDg2MjYyMi8xNTczNjM1MDkvMScsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweGQyMDE1NjZlNmEwYmMwMjBmZDJlNmY3MmU5YmRlMjIyM2Y1NTBkNjRkYWE2MTM5OGNkOTE3YzJmNzUwMTMyNGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE1MDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiBbMTUwMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHg4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTUwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZmVlOiAyNTgwMDU0LFxuICAgICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzI1ODAwNTQnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICdjYTBhMDE0YmE2ZjExMTA2YTE1NWVmOGUyY2FiMmY3NmQyNzdlNGYwMWNmZmE1OTFhOWI0MDg0ODM0MzgyM2IzZDkxMDc1MmE0OWM5NmJmNTgxMzk4NTIwNmUyM2M5ZjljZDNhNzhmMWNjY2Y1Y2Y4OGRlZjUyYjU3M2NlZGM5MycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgICAgICAgICAgICB0bzogJ3VzZXInLFxuICAgICAgICAgICAgICAgICAgICBzaGFyZTpcbiAgICAgICAgICAgICAgICAgICAgICAnMTk4OTQyMGNlODAwZTM1ZTFjNTkwOTA3ZjIwMTdiNTUyOTk0NTQ4NGIzZmY4ODRmOGU4ODM5MGRhODg5MzZlNmE1ODQ0ZTQ4NjBkZjBmNDg5ZTJhMDk3NTUxOWMxZDZmNWYwMjU1ZGQwOTFlZGJmODU5Yzc0MDYzYTdmMWUyMGUnLFxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNTaGFyZTogJzQwOGM3YTExOTY3MTUyZWZlZTk1M2YzZWIxNjE5MTAwNDk0NjY4NWZkYzRkZDgwODdiOTFlM2FmY2I3N2M5MTYnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0c3NWZXJzaW9uOiAnMC4wLjEnLFxuICAgICAgICAgICAgb3ZjOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlZGRzYVNpZ25hdHVyZToge1xuICAgICAgICAgICAgICAgICAgeTogJzQwOGM3YTExOTY3MTUyZWZlZTk1M2YzZWIxNjE5MTAwNDk0NjY4NWZkYzRkZDgwODdiOTFlM2FmY2I3N2M5MTYnLFxuICAgICAgICAgICAgICAgICAgUjogJzE5ODk0MjBjZTgwMGUzNWUxYzU5MDkwN2YyMDE3YjU1Mjk5NDU0ODRiM2ZmODg0ZjhlODgzOTBkYTg4OTM2ZTYnLFxuICAgICAgICAgICAgICAgICAgc2lnbWE6ICdjMmNlNTI4ZjFmMzIzZmU5YWYyNTZhYmI1NzQyODk3M2IyZTk3ZTRmYTU0ZmE2ZjUwYzM5NDMwMzY4MTU4NjBlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdDoge1xuICAgICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgICAgICAgICAnMDAwMDAzMDEwMGUxOTFmMTY2ZTcxYjFlZjIwZmZkYTBjOTFiMjRkYTk1ZWNjOTNiNjU3YzQ2NGQ4YTA2ZjU2MWQ0NjkyNzIyZjBiMDZlMTEwMjAwMDAwMDAwMjAzMTZmYTI0OGE3MDcxYTE2YzllMmZhZTI1M2NjZjY2MjU1M2E5MDc0NTBlOGQ5OGMzYmJlMjc1YjI0M2RjNDBmMDAwOGQwMDcwMDAwMDAwMDAwMDAwMDIwODhjOTllMGRiODljYmExZGI5N2NiYWRkN2YzN2IyYTRiMmEyYjQwMjI1OTRhMGMwNGIyYmNjODM3ZTRiMjQwNDAyMDIwMTAwMDAwMTAxMDEwMDAxMDEwMjAwMDAwMTAyMDAyZmE1ZDgzOTRiZDZiZWM1NTI1Yjk1NTBiZjQzYmUwNzViODM0MjJkMDEwN2MwNWM3MDA5NDRlM2VhZWMyNmY5MDFkMzJmOTQ4ODlkMGJmYzA1YzI0ZWQ2YzAyM2Q1ZDNkMzY1NDI5NGE4MzdkODUwZDM3MzhiMGUzNTJlMWY0ODY3YjA2ZTExMDIwMDAwMDAwMDIwNDE0NTg5ZDNmYjRmNjZkZmJlYWJiMmE3MmQ4OTgwM2Q2NDUxYTI3OWZmNWJmNWM2NjMxY2YxNjNhZjNkY2NhZjJmYTVkODM5NGJkNmJlYzU1MjViOTU1MGJmNDNiZTA3NWI4MzQyMmQwMTA3YzA1YzcwMDk0NGUzZWFlYzI2ZjllODAzMDAwMDAwMDAwMDAwNTY1ZTI3MDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgc2NhbkluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgICBjb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFibGVIZXg6ICcyZTZiYjE3MTY2ZWUxOTcxMDI3MjliZGE0N2IwNmI3YzBiNTk2MmJmNDMxYmJiMDU2MmI5MWUyNjdiNzUxMjlkJyxcbiAgICAgICAgICAgICAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzk5OTk5OS85NDg2MjYyMi8xNTczNjM1MDkvMicsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDJmYTVkODM5NGJkNmJlYzU1MjViOTU1MGJmNDNiZTA3NWI4MzQyMmQwMTA3YzA1YzcwMDk0NGUzZWFlYzI2ZjknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzIwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiBbMjAwMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHg4OGM5OWUwZGI4OWNiYTFkYjk3Y2JhZGQ3ZjM3YjJhNGIyYTJiNDAyMjU5NGEwYzA0YjJiY2M4MzdlNGIyNDA0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c3VpOmRlZXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMjAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Rva2VuVHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZmVlOiAyNTgwMDU0LFxuICAgICAgICAgICAgICAgICAgICAgIGZlZVN0cmluZzogJzI1ODAwNTQnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICdjYTBhMDE0YmE2ZjExMTA2YTE1NWVmOGUyY2FiMmY3NmQyNzdlNGYwMWNmZmE1OTFhOWI0MDg0ODM0MzgyM2IzZDkxMDc1MmE0OWM5NmJmNTgxMzk4NTIwNmUyM2M5ZjljZDNhNzhmMWNjY2Y1Y2Y4OGRlZjUyYjU3M2NlZGM5MycsXG4gICAgICAgICAgICAgICAgICAgICAgbGFzdFNjYW5JbmRleDogMjAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgICAgICAgICAgICB0bzogJ3VzZXInLFxuICAgICAgICAgICAgICAgICAgICBzaGFyZTpcbiAgICAgICAgICAgICAgICAgICAgICAnOWUxZDBmZDY2NDA3ODBjZjRkYzIwOWZhNmVkODk1N2Q2OTU4ZTBkMDI3MmQ4YTJmZDQ4NDM4YzAxMWY2N2EyMjAwZGUxYTc4ZTIzYmMyYTdkMjYxZDBkMDJhNDIyMTQ1MzAxYWE5Y2U5N2QzZDMwNmIzNTAxYjFmNDRkOTU2MDYnLFxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNTaGFyZTogJzM2MmQ3MTZhNWEyMzBkNjgzYjYwZDI5ZWNlOTQxMTk3ZTA5NjI3YzIzNGM3MTQ0OWZhY2FiNTE0YzNhN2FiYWYnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB3YWxsZXRDb2luOiAndHN1aTpkZWVwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0c3NWZXJzaW9uOiAnMC4wLjEnLFxuICAgICAgICAgICAgb3ZjOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlZGRzYVNpZ25hdHVyZToge1xuICAgICAgICAgICAgICAgICAgeTogJzM2MmQ3MTZhNWEyMzBkNjgzYjYwZDI5ZWNlOTQxMTk3ZTA5NjI3YzIzNGM3MTQ0OWZhY2FiNTE0YzNhN2FiYWYnLFxuICAgICAgICAgICAgICAgICAgUjogJzllMWQwZmQ2NjQwNzgwY2Y0ZGMyMDlmYTZlZDg5NTdkNjk1OGUwZDAyNzJkOGEyZmQ0ODQzOGMwMTFmNjdhMjInLFxuICAgICAgICAgICAgICAgICAgc2lnbWE6ICcxNWE4MmY3YzRhZWRiOWViZDRhYjQ4MWI0MjgxZDZmY2FkYjJhODQyMjYzNWYxNmU0ZTMxOTY3MDk3MDAxODA2JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24oc2lnbmF0dXJlU2hhcmVzKTtcblxuICAgICAgcmVzLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICdBQUFEQVFDbnFNa1FLQU5hdEpsMzV5c0lUaFJlc2NIZHorTGdhU1h3K0RQTzh0SDJuNjV1RVFJQUFBQUFJS2c4Wk1lRjJYTExiQmRQUXlQbWZ1OGJZcUNCMnovdWFSNXNHN0ZvYmw3VkFBamNCUUFBQUFBQUFBQWdpTW1lRGJpY3VoMjVmTHJkZnpleXBMS2l0QUlsbEtEQVN5dk1nMzVMSkFRQ0FnRUFBQUVCQVFBQkFRSUFBQUVDQU5JQlZtNXFDOEFnL1M1dmN1bTk0aUkvVlExazJxWVRtTTJSZkM5MUFUSktBVjdxQTFQd2VBRnJjYWhNdEpUbTk1SHBmTGplVTBUZTg3cnQvOGljSjZTMXIyNFJBZ0FBQUFBZ1R4NGkrUmdjTGRBNXErdnltTStXRVRwdkNucUVxUjRvWTdScVFkTmoyb3pTQVZadWFndkFJUDB1YjNMcHZlSWlQMVVOWk5xbUU1ak5rWHd2ZFFFeVN1Z0RBQUFBQUFBQVZsNG5BQUFBQUFBQScsXG4gICAgICAgICAgICBzY2FuSW5kZXg6IDEsXG4gICAgICAgICAgICBzaWduYXR1cmU6XG4gICAgICAgICAgICAgICdBQm1KUWd6b0FPTmVIRmtKQi9JQmUxVXBsRlNFcy8rSVQ0NklPUTJvaVRibXdzNVNqeDh5UCttdkpXcTdWMEtKYzdMcGZrK2xUNmIxRERsREEyZ1ZoZzVBakhvUmxuRlM3KzZWUHo2eFlaRUFTVVpvWDl4TjJBaDdrZU92eTNmSkZnPT0nLFxuICAgICAgICAgICAgcmVjb3ZlcnlBbW91bnQ6ICcxNTAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICAgJ0FBQURBUURoa2ZGbTV4c2U4Zy85b01rYkpOcVY3TWs3Wlh4R1RZb0c5V0hVYVNjaThMQnVFUUlBQUFBQUlERnZva2luQnhvV3llTDY0bFBNOW1KVk9wQjBVT2paakR1K0oxc2tQY1FQQUFqUUJ3QUFBQUFBQUFBZ2lNbWVEYmljdWgyNWZMcmRmemV5cExLaXRBSWxsS0RBU3l2TWczNUxKQVFDQWdFQUFBRUJBUUFCQVFJQUFBRUNBQytsMkRsTDFyN0ZVbHVWVUw5RHZnZGJnMEl0QVFmQVhIQUpST1BxN0NiNUFkTXZsSWlkQy93RndrN1d3Q1BWMDlObFFwU29OOWhRMDNPTERqVXVIMGhuc0c0UkFnQUFBQUFnUVVXSjAvdFBadCsrcTdLbkxZbUFQV1JSb25uL1cvWEdZeHp4WTY4OXpLOHZwZGc1UzlhK3hWSmJsVkMvUTc0SFc0TkNMUUVId0Z4d0NVVGo2dXdtK2VnREFBQUFBQUFBVmw0bkFBQUFBQUFBJyxcbiAgICAgICAgICAgIHNjYW5JbmRleDogMixcbiAgICAgICAgICAgIHNpZ25hdHVyZTpcbiAgICAgICAgICAgICAgJ0FKNGREOVprQjREUFRjSUorbTdZbFgxcFdPRFFKeTJLTDlTRU9NQVI5bm9pRmFndmZFcnR1ZXZVcTBnYlFvSFcvSzJ5cUVJbU5mRnVUakdXY0pjQUdBWTJMWEZxV2lNTmFEdGcwcDdPbEJHWDRKWW53alRIRkVuNnlyVVV3NmVycnc9PScsXG4gICAgICAgICAgICByZWNvdmVyeUFtb3VudDogJzIwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGxhc3RTY2FuSW5kZXg6IDIwLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRyYW5zYWN0aW9uIEZhaWx1cmVzOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MwID0gJzB4OTFmMjVlMjM3YjgzYTAwYTYyNzI0ZmRjNGE4MWU0M2Y0OTRkYzZiNDFhMTI0MTQ5MjgyNmQzNmU0ZDEzMWRhMyc7XG4gICAgY29uc3QgcmVjb3ZlcnlEZXN0aW5hdGlvbiA9ICcweDAwZTRlYWE2YTI5MWZlMDI5MTg0NTJlNjQ1YjU2NTNjZDI2MGE1ZmMwZmIzNWY2MTkzZDU4MDkxNmFhOWUzODknO1xuICAgIGNvbnN0IHdhbGxldFBhc3NwaHJhc2UgPSAncCRTdzxSanZBZ2Z7bllBWUkyeE0nO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHJlY292ZXIgZHVlIHRvIG5vbi16ZXJvIGZ1bmQgYnV0IGluc3VmZmljaWVudCBmdW5kcyBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnIGFzIGtleW9mIFN1aSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moc2VuZGVyQWRkcmVzczApXG4gICAgICAgIC5yZXNvbHZlcyh7IHRvdGFsQmFsYW5jZTogJzk4MDAyMTInLCBjb2luT2JqZWN0QmFsYW5jZTogJzk4MDAyMTInLCBmdW5kc0luQWRkcmVzc0JhbGFuY2U6ICcwJyB9KTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogJzAnLFxuICAgICAgICAgIHNjYW46IDEsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdEaWQgbm90IGZpbmQgYW4gYWRkcmVzcyB3aXRoIHN1ZmZpY2llbnQgZnVuZHMgdG8gcmVjb3Zlci4gUGxlYXNlIHN0YXJ0IHRoZSBuZXh0IHNjYW4gYXQgYWRkcmVzcyBpbmRleCAxLiBJZiBpdCBpcyB0b2tlbiB0cmFuc2FjdGlvbiwgcGxlYXNlIGtlZXAgc3VmZmljaWVudCBTdWkgYmFsYW5jZSBpbiB0aGUgYWRkcmVzcyBmb3IgdGhlIHRyYW5zYWN0aW9uIGZlZS4nXG4gICAgICAgICk7XG5cbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXRCYWxhbmNlLCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIGR1ZSB0byBub3QgZmluZGluZyBhbiBhZGRyZXNzIHdpdGggZnVuZHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTdWkucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScgYXMga2V5b2YgU3VpKTtcbiAgICAgIGNhbGxCYWNrLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMCcsIGNvaW5PYmplY3RCYWxhbmNlOiAnMCcsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7XG4gICAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleToga2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgIHNjYW46ICcxMCcsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdEaWQgbm90IGZpbmQgYW4gYWRkcmVzcyB3aXRoIHN1ZmZpY2llbnQgZnVuZHMgdG8gcmVjb3Zlci4gUGxlYXNlIHN0YXJ0IHRoZSBuZXh0IHNjYW4gYXQgYWRkcmVzcyBpbmRleCAxMC4gSWYgaXQgaXMgdG9rZW4gdHJhbnNhY3Rpb24sIHBsZWFzZSBrZWVwIHN1ZmZpY2llbnQgU3VpIGJhbGFuY2UgaW4gdGhlIGFkZHJlc3MgZm9yIHRoZSB0cmFuc2FjdGlvbiBmZWUuJ1xuICAgICAgICApO1xuXG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0QmFsYW5jZSwgMTApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdXJmYWNlIFJQQyBlcnJvcnMgZnJvbSBnZXRCYWxhbmNlIGluc3RlYWQgb2YgcmVwb3J0aW5nIG5vIGZ1bmRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU3VpLnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnIGFzIGtleW9mIFN1aSk7XG4gICAgICBjYWxsQmFjay5yZWplY3RzKG5ldyBFcnJvcignTWV0aG9kIG5vdCBmb3VuZCcpKTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogJzAnLFxuICAgICAgICAgIHNjYW46IDEsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9GYWlsZWQgdG8gcXVlcnkgU3VpIGJhbGFuY2UuKk1ldGhvZCBub3QgZm91bmQvKTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQ29uc29saWRhdGlvbiBUcmFuc2FjdGlvbiBGYWlsdXJlczonLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIGR1ZSB0byBpbnN1ZmZpY2llbnQgZnVuZHMgaW4gcmVjZWl2ZSBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICAgIGNvbnN0IHJlY2VpdmVBZGRyZXNzMSA9ICcweDMyZDhlNTdlZTZkOTFlNTU1OGRhMDY3NzE1NGMyZjA4NTc5NTM0OGUzMTdmOTVhY2M5ZWZhZGUxYjQxMTJmY2MnO1xuICAgICAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdwJFN3PFJqdkFnZntuWUFZSTJ4TSc7XG5cbiAgICAgIGNvbnN0IGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFN1aS5wcm90b3R5cGUsICdnZXRCYWxhbmNlJyBhcyBrZXlvZiBTdWkpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHJlY2VpdmVBZGRyZXNzMSlcbiAgICAgICAgLnJlc29sdmVzKHsgdG90YWxCYWxhbmNlOiAnMScsIGNvaW5PYmplY3RCYWxhbmNlOiAnMScsIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogJzAnIH0pO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICB1c2VyS2V5OiBrZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAnMScsXG4gICAgICAgICAgZW5kaW5nU2NhbkluZGV4OiAnMicsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdEaWQgbm90IGZpbmQgYW4gYWRkcmVzcyB3aXRoIHN1ZmZpY2llbnQgZnVuZHMgdG8gcmVjb3Zlci4gUGxlYXNlIHN0YXJ0IHRoZSBuZXh0IHNjYW4gYXQgYWRkcmVzcyBpbmRleCAyLidcbiAgICAgICAgKTtcblxuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldEJhbGFuY2UsIDEpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|