@bitgo/sdk-coin-flr 1.11.16 → 1.11.18
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/flr.d.ts +1 -1
- package/dist/src/flr.d.ts.map +1 -1
- package/dist/src/flr.js +6 -3
- package/dist/test/unit/flr.js +13 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
package/dist/test/unit/flr.js
CHANGED
|
@@ -249,6 +249,18 @@ describe('flr', function () {
|
|
|
249
249
|
txExplain.fee.fee.should.equal(testData.fee);
|
|
250
250
|
txExplain.changeOutputs.should.be.empty();
|
|
251
251
|
});
|
|
252
|
+
it('should explain an export in C transaction without crossChainType when hex is atomic', async function () {
|
|
253
|
+
const testData = resources_1.EXPORT_C_TEST_DATA;
|
|
254
|
+
// Wallet platform may omit crossChainType; auto-detection via codec prefix must still return
|
|
255
|
+
// the recipient P-chain address so the UI can display it.
|
|
256
|
+
const txExplain = await tflrCoin.explainTransaction({
|
|
257
|
+
txHex: testData.fullsigntxHex,
|
|
258
|
+
});
|
|
259
|
+
txExplain.type.should.equal(sdk_core_1.TransactionType.Export);
|
|
260
|
+
const sortedPAddresses = testData.pAddresses.slice().sort().join('~');
|
|
261
|
+
txExplain.outputs[0].address.should.equal(sortedPAddresses);
|
|
262
|
+
txExplain.outputAmount.should.equal(testData.amount);
|
|
263
|
+
});
|
|
252
264
|
it('should throw error when missing txHex', async function () {
|
|
253
265
|
await tflrCoin
|
|
254
266
|
.explainTransaction({ crossChainType: 'export' })
|
|
@@ -1071,4 +1083,4 @@ describe('Non Bitgo Recovery for Hot Wallets', function () {
|
|
|
1071
1083
|
jsonTx.to?.should.equal(resources_1.mockDataNonBitGoRecovery.recoveryDestination);
|
|
1072
1084
|
});
|
|
1073
1085
|
});
|
|
1074
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2Zsci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyw4Q0FBMEQ7QUFDMUQsNENBQTBDO0FBQzFDLDRDQUF1QztBQUV2QywyQ0FBNEM7QUFHNUMsNENBQW1HO0FBQ25HLGdEQUF3QjtBQUN4Qiw4Q0FBa0U7QUFDbEUsdUNBQTZEO0FBQzdELDJDQUFrRDtBQUNsRCw2Q0FBK0I7QUFDL0IsZ0RBQXlDO0FBQ3pDLHFEQUF1QztBQUN2QyxvREFBNEI7QUFFNUIsaURBQWlEO0FBQ2pELFNBQVMsU0FBUyxDQUFDLEVBQVU7SUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBQSxnQkFBTSxFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxRQUFRLENBQUMsS0FBSyxFQUFFO0lBQ2QsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxPQUFPLENBQUM7SUFDWixJQUFJLHlCQUF5QixDQUFDO0lBRTlCLE1BQU0sUUFBUSxHQUFHLDRDQUE0QyxDQUFDO0lBQzlELE1BQU0sV0FBVyxHQUFHLDhCQUFrQixDQUFDLGFBQWEsQ0FBQztJQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwRSxNQUFNLENBQUM7UUFDTCxNQUFNLFlB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QUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RCxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsRUFBRSxDQUFD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QUFNLENBQUMsS0FBSyxDQUFDLG9DQUF3QixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDeEUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNob3VsZCBmcm9tICdzaG91bGQnO1xuXG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBGbHIsIFRmbHIgfSBmcm9tICcuLi8uLi9zcmMvaW5kZXgnO1xuaW1wb3J0IHsgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL3NyYy9pZmFjZSc7XG5pbXBvcnQgeyBVbnNpZ25lZFN3ZWVwVHhNUEN2MiB9IGZyb20gJ0BiaXRnby9hYnN0cmFjdC1ldGgnO1xuaW1wb3J0IHsgbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLCBtb2NrRGF0YU5vbkJpdEdvUmVjb3ZlcnksIEVYUE9SVF9DX1RFU1RfREFUQSB9IGZyb20gJy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCB7IGNvbW1vbiwgVHJhbnNhY3Rpb25UeXBlLCBXYWxsZXQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmVlTWFya2V0RUlQMTU1OVRyYW5zYWN0aW9uIH0gZnJvbSAnQGV0aGVyZXVtanMvdHgnO1xuaW1wb3J0IHsgc3RyaXBIZXhQcmVmaXggfSBmcm9tICdAZXRoZXJldW1qcy91dGlsJztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgKiBhcyBzZWNwMjU2azEgZnJvbSAnc2VjcDI1NmsxJztcbmltcG9ydCBLZWNjYWsgZnJvbSAna2VjY2FrJztcblxuLy8gSGVscGVyIHRvIGNhbGN1bGF0ZSB0eCBoYXNoIGxpa2UgRmxyLmdldFR4SGFzaFxuZnVuY3Rpb24gZ2V0VHhIYXNoKHR4OiBzdHJpbmcpOiBCdWZmZXIge1xuICBjb25zdCBoYXNoID0gS2VjY2FrKCdrZWNjYWsyNTYnKTtcbiAgaGFzaC51cGRhdGUodHguc3RhcnRzV2l0aCgnMHgnKSA/IHR4LnNsaWNlKDIpIDogdHgsICdoZXgnKTtcbiAgcmV0dXJuIGhhc2guZGlnZXN0KCk7XG59XG5cbmRlc2NyaWJlKCdmbHInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuICBsZXQgdGZsckNvaW47XG4gIGxldCBmbHJDb2luO1xuICBsZXQgaG9wRXhwb3J0VHhCaXRnb1NpZ25hdHVyZTtcblxuICBjb25zdCBhZGRyZXNzMiA9ICcweDdlODViZGMyN2MwNTBlMzkwNWViZjRiOGU2MzRkOWFkNmVkZDBkZTYnO1xuICBjb25zdCBob3BFeHBvcnRUeCA9IEVYUE9SVF9DX1RFU1RfREFUQS5mdWxsc2lnbnR4SGV4O1xuICBjb25zdCBob3BFeHBvcnRUeElkID0gJzB4JyArIGdldFR4SGFzaChob3BFeHBvcnRUeCkudG9TdHJpbmcoJ2hleCcpO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYml0Z29LZXlYcHJ2ID1cbiAgICAgICd4cHJ2OXMyMVpyUUgxNDNLM3RwV0JIV2UzMXNMb1hOUlE5QXZSWUpnaXRrS3hRNEFURlFNd3ZyN2hITnFZUlVuUzdQc2p6QjdhSzFWeHFITHVOUWpqMXNja0oySndvMnF4bXN2ZWp3RUNTcEZNZkMnO1xuICAgIGNvbnN0IGJpdGdvS2V5ID0gYmlwMzIuZnJvbUJhc2U1OChiaXRnb0tleVhwcnYpO1xuICAgIGlmICghYml0Z29LZXkucHJpdmF0ZUtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBwcml2YXRlS2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IGJpdGdvWHB1YiA9IGJpdGdvS2V5Lm5ldXRlcmVkKCkudG9CYXNlNTgoKTtcblxuICAgIGhvcEV4cG9ydFR4Qml0Z29TaWduYXR1cmUgPVxuICAgICAgJzB4YWEnICtcbiAgICAgIEJ1ZmZlci5mcm9tKFxuICAgICAgICBzZWNwMjU2azEuZWNkc2FTaWduKEJ1ZmZlci5mcm9tKGhvcEV4cG9ydFR4SWQuc2xpY2UoMiksICdoZXgnKSwgYml0Z29LZXkucHJpdmF0ZUtleSkuc2lnbmF0dXJlXG4gICAgICApLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcignZmxyJywgRmxyLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RmbHInLCBUZmxyLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBjb21tb24uRW52aXJvbm1lbnRzW2JpdGdvLmdldEVudigpXS5oc21YcHViID0gYml0Z29YcHViO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICB9KTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICB0ZmxyQ29pbiA9IGJpdGdvLmNvaW4oJ3RmbHInKSBhcyBUZmxyO1xuICAgIGZsckNvaW4gPSBiaXRnby5jb2luKCdmbHInKSBhcyBGbHI7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCYXNpYyBDb2luIEluZm8nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHJpZ2h0IGluZm8gZm9yIGZscicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZsciA9IGJpdGdvLmNvaW4oJ2ZscicpO1xuXG4gICAgICBmbHIuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoRmxyKTtcbiAgICAgIGZsci5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgnZmxyJyk7XG4gICAgICBmbHIuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCdmbHInKTtcbiAgICAgIGZsci5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnRmxhcmUnKTtcbiAgICAgIGZsci5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMTgpO1xuICAgICAgZmxyLnN1cHBvcnRzVHNzKCkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgZmxyLmFsbG93c0FjY291bnRDb25zb2xpZGF0aW9ucygpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbyBmb3IgdGZscicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRmbHIgPSBiaXRnby5jb2luKCd0ZmxyJyk7XG5cbiAgICAgIHRmbHIuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoVGZscik7XG4gICAgICB0ZmxyLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0ZmxyJyk7XG4gICAgICB0ZmxyLmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnZmxyJyk7XG4gICAgICB0ZmxyLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IGZsYXJlJyk7XG4gICAgICB0ZmxyLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMWUxOCk7XG4gICAgICB0ZmxyLnN1cHBvcnRzVHNzKCkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgdGZsci5hbGxvd3NBY2NvdW50Q29uc29saWRhdGlvbnMoKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUC1DaGFpbiBNZXRob2RzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZscnAgZm9yIG1haW5uZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoZmxyQ29pbiBhcyBhbnkpLmdldEZsclAoKS5zaG91bGQuZXF1YWwoJ2ZscnAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRmbHJwIGZvciB0ZXN0bmV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgKHRmbHJDb2luIGFzIGFueSkuZ2V0RmxyUCgpLnNob3VsZC5lcXVhbCgndGZscnAnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzU2lnbmFibGVQcmVIYXNoZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3JldHVybnMgdHJ1ZSBmb3IgQXZhbGFuY2hlIGF0b21pYyB0eHMgKGNvZGVjIHByZWZpeCAwMDAwKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEMtPlAgY3Jvc3MtY2hhaW4gZXhwb3J0IGF0b21pYyB0eCDigJQgc2lnbmFibGVIZXggaXMgYWxyZWFkeSBTSEEtMjU2KHR4Qm9keSkuXG4gICAgICAvLyBUaGUgTVBDIGxheWVyIG11c3QgdXNlIHRoaXMgZGlnZXN0IGRpcmVjdGx5LCBub3QgcmUtaGFzaCB3aXRoIGtlY2NhazI1NixcbiAgICAgIC8vIG90aGVyd2lzZSB0aGUgdXNlciBhbmQgQml0R28gc2lnbmF0dXJlIHNoYXJlcyB3aWxsIG5vdCBjb21iaW5lLlxuICAgICAgY29uc3Qgc2lnbmFibGVIZXggPSAnYScucmVwZWF0KDY0KTtcbiAgICAgIGZsckNvaW4uaXNTaWduYWJsZVByZUhhc2hlZCh7IHNlcmlhbGl6ZWRUeEhleDogJzAwMDAnICsgJ2InLnJlcGVhdCgyMCksIHNpZ25hYmxlSGV4IH0pLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGZhbHNlIGZvciBzdGFuZGFyZCBFVk0gUkxQIHRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEVJUC0xNTU5IC8gUkxQIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25zIHN0YXJ0IHdpdGggMHgwMiBvciAweGY4IOKAlCBuZXZlciAweDAwMDAuXG4gICAgICBmbHJDb2luXG4gICAgICAgIC5pc1NpZ25hYmxlUHJlSGFzaGVkKHtcbiAgICAgICAgICBzZXJpYWxpemVkVHhIZXg6ICcwMmYxNzI4MWQ5MDI4NTBiYTQzYjc0MDI4MzA2MWE4MCcsXG4gICAgICAgICAgc2lnbmFibGVIZXg6ICcwMmYxNzI4MWQ5MDI4NTBiYTQzYjc0MDI4MzA2MWE4MCcsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQWRkcmVzcyBWYWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdmFsaWQgZXRoIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJzB4MTM3NGEyMDQ2NjYxZjkxNGQxNjg3ZDg1ZGJiY2ViOWFjNzkxMGEyOSc7XG4gICAgICB0ZmxyQ29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgZmxyQ29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIFAtY2hhaW4gYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBBZGRyZXNzZXMgPSBFWFBPUlRfQ19URVNUX0RBVEEucEFkZHJlc3NlcztcbiAgICAgIGZvciAoY29uc3QgYWRkciBvZiBwQWRkcmVzc2VzKSB7XG4gICAgICAgIHRmbHJDb2luLmlzVmFsaWRBZGRyZXNzKGFkZHIpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgIGZsckNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcikuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBQLWNoYWluIG11bHRpc2lnIGFkZHJlc3Mgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzO1xuICAgICAgdGZsckNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGZsckNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBlbXB0eSBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgdGZsckNvaW4uaXNWYWxpZEFkZHJlc3MoJycpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgZmxyQ29pbi5pc1ZhbGlkQWRkcmVzcygnJykuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUb2tlbiBDaGVjaycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgaXNUb2tlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRmbHJDb2luLmlzVG9rZW4oKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICAgIGZsckNvaW4uaXNUb2tlbigpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnSG9wIFRyYW5zYWN0aW9uIFBhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgc2FuZGJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY3JlYXRlIGhvcCB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzIHdpdGggZ2FzUHJpY2VNYXggPiAwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja0ZlZUVzdGltYXRlID0ge1xuICAgICAgICBmZWVFc3RpbWF0ZTogMTIwMDAwLFxuICAgICAgICBnYXNMaW1pdEVzdGltYXRlOiA1MDAwMDAsXG4gICAgICB9O1xuICAgICAgc2FuZGJveC5zdHViKHRmbHJDb2luLCAnZmVlRXN0aW1hdGUnKS5yZXNvbHZlcyhtb2NrRmVlRXN0aW1hdGUpO1xuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzLFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAodGZsckNvaW4gYXMgYW55KS5jcmVhdGVIb3BUcmFuc2FjdGlvblBhcmFtcyh7XG4gICAgICAgIHJlY2lwaWVudHMsXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnIGFzIGtleW9mIHR5cGVvZiBUcmFuc2FjdGlvblR5cGUsXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdob3BQYXJhbXMnKTtcbiAgICAgIHJlc3VsdC5ob3BQYXJhbXMuc2hvdWxkLmhhdmUucHJvcGVydGllcyhbJ3VzZXJSZXFTaWcnLCAnZ2FzUHJpY2VNYXgnLCAncGF5bWVudElkJywgJ2dhc0xpbWl0J10pO1xuICAgICAgcmVzdWx0LmhvcFBhcmFtcy51c2VyUmVxU2lnLnNob3VsZC5lcXVhbCgnMHgnKTtcbiAgICAgIHJlc3VsdC5ob3BQYXJhbXMuZ2FzUHJpY2VNYXguc2hvdWxkLmJlLmFib3ZlKDApO1xuICAgICAgcmVzdWx0LmhvcFBhcmFtcy5wYXltZW50SWQuc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgICByZXN1bHQuaG9wUGFyYW1zLmdhc0xpbWl0LnNob3VsZC5lcXVhbCg1MDAwMDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiBubyByZWNpcGllbnRzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgKHRmbHJDb2luIGFzIGFueSlcbiAgICAgICAgLmNyZWF0ZUhvcFRyYW5zYWN0aW9uUGFyYW1zKHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbXSxcbiAgICAgICAgICB0eXBlOiAnRXhwb3J0JyBhcyBrZXlvZiB0eXBlb2YgVHJhbnNhY3Rpb25UeXBlLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbXVzdCBzZW5kIHRvIGV4YWN0bHkgMSByZWNpcGllbnQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaWYgbW9yZSB0aGFuIDEgcmVjaXBpZW50IHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzLFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBFWFBPUlRfQ19URVNUX0RBVEEuY0hleEFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiAnNTAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgYXdhaXQgKHRmbHJDb2luIGFzIGFueSlcbiAgICAgICAgLmNyZWF0ZUhvcFRyYW5zYWN0aW9uUGFyYW1zKHtcbiAgICAgICAgICByZWNpcGllbnRzLFxuICAgICAgICAgIHR5cGU6ICdFeHBvcnQnIGFzIGtleW9mIHR5cGVvZiBUcmFuc2FjdGlvblR5cGUsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdtdXN0IHNlbmQgdG8gZXhhY3RseSAxIHJlY2lwaWVudCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRXhwbGFpbiBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgZXhwb3J0IGluIEMgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0ZXN0RGF0YSA9IEVYUE9SVF9DX1RFU1RfREFUQTtcbiAgICAgIGNvbnN0IHR4RXhwbGFpbiA9IGF3YWl0IHRmbHJDb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OiB0ZXN0RGF0YS51bnNpZ25lZFR4SGV4LFxuICAgICAgICBjcm9zc0NoYWluVHlwZTogJ2V4cG9ydCcsXG4gICAgICB9KTtcbiAgICAgIHR4RXhwbGFpbi50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRXhwb3J0KTtcbiAgICAgIHR4RXhwbGFpbi5pbnB1dHNbMF0uYWRkcmVzcy50b0xvd2VyQ2FzZSgpLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5jSGV4QWRkcmVzcy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIC8vIE91dHB1dCBhZGRyZXNzIGlzIHRoZSBzb3J0ZWQgUC1jaGFpbiBhZGRyZXNzZXMgam9pbmVkIHdpdGggflxuICAgICAgY29uc3Qgc29ydGVkUEFkZHJlc3NlcyA9IHRlc3REYXRhLnBBZGRyZXNzZXMuc2xpY2UoKS5zb3J0KCkuam9pbignficpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoc29ydGVkUEFkZHJlc3Nlcyk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0QW1vdW50LnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5hbW91bnQpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4RXhwbGFpbi5mZWUpO1xuICAgICAgdHhFeHBsYWluLmZlZS5mZWUuc2hvdWxkLmVxdWFsKHRlc3REYXRhLmZlZSk7XG4gICAgICB0eEV4cGxhaW4uY2hhbmdlT3V0cHV0cy5zaG91bGQuYmUuZW1wdHkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhIHNpZ25lZCBleHBvcnQgaW4gQyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRlc3REYXRhID0gRVhQT1JUX0NfVEVTVF9EQVRBO1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gYXdhaXQgdGZsckNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IHRlc3REYXRhLmZ1bGxzaWdudHhIZXgsXG4gICAgICAgIGNyb3NzQ2hhaW5UeXBlOiAnZXhwb3J0JyxcbiAgICAgIH0pO1xuICAgICAgdHhFeHBsYWluLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1swXS5hZGRyZXNzLnRvTG93ZXJDYXNlKCkuc2hvdWxkLmVxdWFsKHRlc3REYXRhLmNIZXhBZGRyZXNzLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgLy8gT3V0cHV0IGFkZHJlc3MgaXMgdGhlIHNvcnRlZCBQLWNoYWluIGFkZHJlc3NlcyBqb2luZWQgd2l0aCB+XG4gICAgICBjb25zdCBzb3J0ZWRQQWRkcmVzc2VzID0gdGVzdERhdGEucEFkZHJlc3Nlcy5zbGljZSgpLnNvcnQoKS5qb2luKCd+Jyk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbChzb3J0ZWRQQWRkcmVzc2VzKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRBbW91bnQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLmFtb3VudCk7XG4gICAgICBzaG91bGQuZXhpc3QodHhFeHBsYWluLmZlZSk7XG4gICAgICB0eEV4cGxhaW4uZmVlLmZlZS5zaG91bGQuZXF1YWwodGVzdERhdGEuZmVlKTtcbiAgICAgIHR4RXhwbGFpbi5jaGFuZ2VPdXRwdXRzLnNob3VsZC5iZS5lbXB0eSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIG1pc3NpbmcgdHhIZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCB0ZmxyQ29pblxuICAgICAgICAuZXhwbGFpblRyYW5zYWN0aW9uKHsgY3Jvc3NDaGFpblR5cGU6ICdleHBvcnQnIH0gYXMgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucylcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgdHhIZXggaW4gZXhwbGFpbiB0eCBwYXJhbWV0ZXJzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gbWlzc2luZyBmZWVJbmZvIGZvciBub24tY3Jvc3NDaGFpbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHRmbHJDb2luXG4gICAgICAgIC5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleDogJzB4MTIzJyB9IGFzIEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdtaXNzaW5nIGZlZUluZm8gaW4gZXhwbGFpbiB0eCBwYXJhbWV0ZXJzJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBWZXJpZmljYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiBjbGllbnQgdHhQYXJhbXMgYXJlIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuXG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG51bGw7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFtb3VudDogJzEwMDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHgxMzc0YTIwNDY2NjFmOTE0ZDE2ODdkODVkYmJjZWI5YWM3OTEwYTI5JyB9XSxcbiAgICAgICAgbmV4dENvbnRyYWN0U2VxdWVuY2VJZDogMCxcbiAgICAgICAgZ2FzUHJpY2U6IDIwMDAwMDAwMDAwLFxuICAgICAgICBnYXNMaW1pdDogNTAwMDAwLFxuICAgICAgICBpc0JhdGNoOiBmYWxzZSxcbiAgICAgICAgY29pbjogJ3RmbHInLFxuICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogJ2Zha2VXYWxsZXRDb250cmFjdEFkZHJlc3MnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgIGF3YWl0IHRmbHJDb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zOiB0eFBhcmFtcyBhcyBhbnksIHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQgYXMgYW55LCB3YWxsZXQsIHZlcmlmaWNhdGlvbiB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyBwYXJhbXMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IHR4UHJlYnVpbGQgdGhhdCBpcyBib3RoIGJhdGNoIGFuZCBob3AnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuXG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHsgYW1vdW50OiAnMTAwMDAwMDAwMDAwMCcsIGFkZHJlc3M6ICcweDEzNzRhMjA0NjY2MWY5MTRkMTY4N2Q4NWRiYmNlYjlhYzc5MTBhMjknIH0sXG4gICAgICAgICAgeyBhbW91bnQ6ICcyNTAwMDAwMDAwMDAwJywgYWRkcmVzczogJzB4N2U4NWJkYzI3YzA1MGUzOTA1ZWJmNGI4ZTYzNGQ5YWQ2ZWRkMGRlNicgfSxcbiAgICAgICAgXSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdmYWtlV2FsbGV0UGFzc3BocmFzZScsXG4gICAgICAgIGhvcDogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFtb3VudDogJzM1MDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHgxMzc0YTIwNDY2NjFmOTE0ZDE2ODdkODVkYmJjZWI5YWM3OTEwYTI5JyB9XSxcbiAgICAgICAgbmV4dENvbnRyYWN0U2VxdWVuY2VJZDogMCxcbiAgICAgICAgZ2FzUHJpY2U6IDIwMDAwMDAwMDAwLFxuICAgICAgICBnYXNMaW1pdDogNTAwMDAwLFxuICAgICAgICBpc0JhdGNoOiB0cnVlLFxuICAgICAgICBjb2luOiAndGZscicsXG4gICAgICAgIHdhbGxldElkOiAnZmFrZVdhbGxldElkJyxcbiAgICAgICAgd2FsbGV0Q29udHJhY3RBZGRyZXNzOiAnZmFrZVdhbGxldENvbnRyYWN0QWRkcmVzcycsXG4gICAgICAgIGhvcFRyYW5zYWN0aW9uOiB7XG4gICAgICAgICAgdHg6ICcweDAnLFxuICAgICAgICAgIGlkOiAnMHgwJyxcbiAgICAgICAgICBzaWduYXR1cmU6ICcweDAnLFxuICAgICAgICAgIHBheW1lbnRJZDogJzAnLFxuICAgICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgICBnYXNMaW1pdDogNTAwMDAwLFxuICAgICAgICAgIGFtb3VudDogMTAwMDAwMDAwMDAwMDAwMCxcbiAgICAgICAgICByZWNpcGllbnQ6ICcweDEzNzRhMjA0NjY2MWY5MTRkMTY4N2Q4NWRiYmNlYjlhYzc5MTBhMjknLFxuICAgICAgICAgIG5vbmNlOiAwLFxuICAgICAgICAgIHVzZXJSZXFTaWc6ICcweDAnLFxuICAgICAgICAgIGdhc1ByaWNlTWF4OiA1MDAwMDAwMDAwMDAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcblxuICAgICAgYXdhaXQgdGZsckNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQgYXMgYW55LCB3YWxsZXQsIHZlcmlmaWNhdGlvbiB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgndHggY2Fubm90IGJlIGJvdGggYSBiYXRjaCBhbmQgaG9wIHRyYW5zYWN0aW9uJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBhIHR4UHJlYnVpbGQgd2l0aCBtb3JlIHRoYW4gb25lIHJlY2lwaWVudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7fSk7XG5cbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgeyBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwJywgYWRkcmVzczogJzB4MTM3NGEyMDQ2NjYxZjkxNGQxNjg3ZDg1ZGJiY2ViOWFjNzkxMGEyOScgfSxcbiAgICAgICAgICB7IGFtb3VudDogJzI1MDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHg3ZTg1YmRjMjdjMDUwZTM5MDVlYmY0YjhlNjM0ZDlhZDZlZGQwZGU2JyB9LFxuICAgICAgICBdLFxuICAgICAgICB3YWxsZXQ6IHdhbGxldCxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2Zha2VXYWxsZXRQYXNzcGhyYXNlJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7IGFtb3VudDogJzEwMDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHgxMzc0YTIwNDY2NjFmOTE0ZDE2ODdkODVkYmJjZWI5YWM3OTEwYTI5JyB9LFxuICAgICAgICAgIHsgYW1vdW50OiAnMjUwMDAwMDAwMDAwMCcsIGFkZHJlc3M6ICcweDdlODViZGMyN2MwNTBlMzkwNWViZjRiOGU2MzRkOWFkNmVkZDBkZTYnIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG5leHRDb250cmFjdFNlcXVlbmNlSWQ6IDAsXG4gICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgaXNCYXRjaDogdHJ1ZSxcbiAgICAgICAgY29pbjogJ3RmbHInLFxuICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogJ2Zha2VXYWxsZXRDb250cmFjdEFkZHJlc3MnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgIGF3YWl0IHRmbHJDb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkIGFzIGFueSwgd2FsbGV0LCB2ZXJpZmljYXRpb24gfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgYHRmbHIgZG9lc24ndCBzdXBwb3J0IHNlbmRpbmcgdG8gbW9yZSB0aGFuIDEgZGVzdGluYXRpb24gYWRkcmVzcyB3aXRoaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb24uIFRyeSBhZ2FpbiwgdXNpbmcgb25seSBhIHNpbmdsZSByZWNpcGllbnQuYFxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgYSB0eFByZWJ1aWxkIGZyb20gdGhlIGJpdGdvIHNlcnZlciB3aXRoIHRoZSB3cm9uZyBjb2luJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcblxuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFtb3VudDogJzEwMDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHgxMzc0YTIwNDY2NjFmOTE0ZDE2ODdkODVkYmJjZWI5YWM3OTEwYTI5JyB9XSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdmYWtlV2FsbGV0UGFzc3BocmFzZScsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbeyBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwJywgYWRkcmVzczogJzB4MTM3NGEyMDQ2NjYxZjkxNGQxNjg3ZDg1ZGJiY2ViOWFjNzkxMGEyOScgfV0sXG4gICAgICAgIG5leHRDb250cmFjdFNlcXVlbmNlSWQ6IDAsXG4gICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgaXNCYXRjaDogZmFsc2UsXG4gICAgICAgIGNvaW46ICdidGMnLFxuICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogJ2Zha2VXYWxsZXRDb250cmFjdEFkZHJlc3MnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgIGF3YWl0IHRmbHJDb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkIGFzIGFueSwgd2FsbGV0LCB2ZXJpZmljYXRpb24gfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2NvaW4gaW4gdHhQcmVidWlsZCBkaWQgbm90IG1hdGNoIHRoYXQgaW4gdHhQYXJhbXMgc3VwcGxpZWQgYnkgY2xpZW50Jyk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnVFNTIFRyYW5zYWN0aW9uIFZlcmlmaWNhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgVFNTIHRyYW5zZmVyIHRyYW5zYWN0aW9uIHdpdGhvdXQgdHhQcmVidWlsZC5yZWNpcGllbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuXG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMCcsIGFkZHJlc3M6ICcweDRlMWUzZDQ4NTZhZDhiMzMzNTJlYjNhZGQ1ZmYxMmVhMzIwNjE2OWEnIH1dLFxuICAgICAgICAgIHR5cGU6ICd0cmFuc2ZlcicsXG4gICAgICAgICAgaXNUc3M6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gVFNTIHR4UHJlYnVpbGQgdHlwaWNhbGx5IGhhcyBidWlsZFBhcmFtcy5yZWNpcGllbnRzIGJ1dCBub3QgcmVjaXBpZW50cyBkaXJlY3RseVxuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICAgIHdhbGxldElkOiAnZmFrZVdhbGxldElkJyxcbiAgICAgICAgICB0eFJlcXVlc3RJZDogJ2Zha2UtdHgtcmVxdWVzdC1pZCcsXG4gICAgICAgICAgdHhIZXg6XG4gICAgICAgICAgICAnMDJmMTcyODFkOTAyODUwYmE0M2I3NDAyODMwNjFhODA5NDRlMWUzZDQ4NTZhZDhiMzMzNTJlYjNhZGQ1ZmYxMmVhMzIwNjE2OWE4ODAxNjM0NTc4NWQ4YTAwMDA4MGMwODA4MDgwJyxcbiAgICAgICAgICBidWlsZFBhcmFtczoge1xuICAgICAgICAgICAgYXBpVmVyc2lvbjogJ2Z1bGwnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogJzB4NGUxZTNkNDg1NmFkOGIzMzM1MmViM2FkZDVmZjEyZWEzMjA2MTY5YScsIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMCcgfV0sXG4gICAgICAgICAgICB0eXBlOiAndHJhbnNmZXInLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmVlSW5mbzogeyBmZWU6IDEwMDAwMDAwMDAwODAwMDAwLCBmZWVTdHJpbmc6ICcxMDAwMDAwMDAwMDgwMDAwMCcgfSxcbiAgICAgICAgICBjb2luOiAndGZscicsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgICAgLy8gV2hlbiB3YWxsZXRUeXBlIGlzICd0c3MnLCBpdCBzaG91bGQgZGVsZWdhdGUgdG8gcGFyZW50J3MgdmVyaWZ5VHJhbnNhY3Rpb25cbiAgICAgICAgLy8gd2hpY2ggaGFuZGxlcyBUU1MgdHJhbnNhY3Rpb25zIHdpdGhvdXQgcmVxdWlyaW5nIHR4UHJlYnVpbGQucmVjaXBpZW50c1xuICAgICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCB0ZmxyQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZCBhcyBhbnksXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgVFNTIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24gd2hlbiB0eFByZWJ1aWxkIGhhcyBjb25zb2xpZGF0ZUlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge1xuICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgYmFzZUFkZHJlc3M6ICcweDE3NGNmZDgyM2FmOGNlMjdlZDBhZmVlM2ZjZjNjM2JhMjU5MTE2YmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHR4UGFyYW1zIHdpdGhvdXQgcmVjaXBpZW50cyAoYXMgaW4gY29uc29saWRhdGlvbiBmbG93KVxuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICB3YWxsZXQ6IHdhbGxldCxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnZmFrZVdhbGxldFBhc3NwaHJhc2UnLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIHR4UHJlYnVpbGQgd2l0aCBjb25zb2xpZGF0ZUlkIChzZXQgYnkgc2VydmVyIGR1cmluZyBjb25zb2xpZGF0aW9uIGJ1aWxkKVxuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2OGE3ZDVkMGM2NmU3NGUyMTZiOTcxNzNiZDU1OGM2ZCcsXG4gICAgICAgICAgdHhIZXg6ICcweCcsXG4gICAgICAgICAgY29pbjogJ3RmbHInLFxuICAgICAgICAgIHdhbGxldElkOiAnZmFrZVdhbGxldElkJyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcblxuICAgICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCB0ZmxyQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zIGFzIGFueSxcbiAgICAgICAgICB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkIGFzIGFueSxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICB9KTtcbiAgICAgICAgaXNUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBUU1MgdHJhbnNhY3Rpb24gd2hlbiB0eFBhcmFtcy50eXBlIGlzIGNvbnNvbGlkYXRlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge1xuICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgYmFzZUFkZHJlc3M6ICcweDE3NGNmZDgyM2FmOGNlMjdlZDBhZmVlM2ZjZjNjM2JhMjU5MTE2YmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHR5cGU6ICdjb25zb2xpZGF0ZScsXG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2Zha2VXYWxsZXRQYXNzcGhyYXNlJyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICAgIHR4SGV4OiAnMHgnLFxuICAgICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgdGZsckNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB0eFBhcmFtcyBhcyBhbnksXG4gICAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZCBhcyBhbnksXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgVFNTIHRyYW5zYWN0aW9uIHdpdGggYWNjZWxlcmF0aW9uIHR5cGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7XG4gICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICBiYXNlQWRkcmVzczogJzB4MTc0Y2ZkODIzYWY4Y2UyN2VkMGFmZWUzZmNmM2MzYmEyNTkxMTZiZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgdHlwZTogJ2FjY2VsZXJhdGlvbicsXG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2Zha2VXYWxsZXRQYXNzcGhyYXNlJyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICAgIHR4SGV4OiAnMHgnLFxuICAgICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgdGZsckNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB0eFBhcmFtcyBhcyBhbnksXG4gICAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZCBhcyBhbnksXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgVFNTIHRyYW5zYWN0aW9uIHdpdGggZmlsbE5vbmNlIHR5cGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7XG4gICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICBiYXNlQWRkcmVzczogJzB4MTc0Y2ZkODIzYWY4Y2UyN2VkMGFmZWUzZmNmM2MzYmEyNTkxMTZiZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgdHlwZTogJ2ZpbGxOb25jZScsXG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2Zha2VXYWxsZXRQYXNzcGhyYXNlJyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICAgIHR4SGV4OiAnMHgnLFxuICAgICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgdGZsckNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB0eFBhcmFtcyBhcyBhbnksXG4gICAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZCBhcyBhbnksXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgVFNTIHRyYW5zYWN0aW9uIHdpdGhvdXQgcmVjaXBpZW50cywgY29uc29saWRhdGVJZCwgb3IgdmFsaWQgdHlwZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHtcbiAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgIGJhc2VBZGRyZXNzOiAnMHgxNzRjZmQ4MjNhZjhjZTI3ZWQwYWZlZTNmY2YzYzNiYTI1OTExNmJlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICB3YWxsZXQ6IHdhbGxldCxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnZmFrZVdhbGxldFBhc3NwaHJhc2UnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgICAgdHhIZXg6ICcweCcsXG4gICAgICAgICAgY29pbjogJ3RmbHInLFxuICAgICAgICAgIHdhbGxldElkOiAnZmFrZVdhbGxldElkJyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcblxuICAgICAgICBhd2FpdCB0ZmxyQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFBhcmFtczogdHhQYXJhbXMgYXMgYW55LFxuICAgICAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZCBhcyBhbnksXG4gICAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdtaXNzaW5nIHR4UGFyYW1zJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzdGlsbCB1c2UgRkxSLXNwZWNpZmljIHZlcmlmaWNhdGlvbiBmb3Igbm9uLVRTUyB3YWxsZXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuXG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFtb3VudDogJzEwMDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHgxMzc0YTIwNDY2NjFmOTE0ZDE2ODdkODVkYmJjZWI5YWM3OTEwYTI5JyB9XSxcbiAgICAgICAgICB3YWxsZXQ6IHdhbGxldCxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnZmFrZVdhbGxldFBhc3NwaHJhc2UnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYW1vdW50OiAnMTAwMDAwMDAwMDAwMCcsIGFkZHJlc3M6ICcweDEzNzRhMjA0NjY2MWY5MTRkMTY4N2Q4NWRiYmNlYjlhYzc5MTBhMjknIH1dLFxuICAgICAgICAgIG5leHRDb250cmFjdFNlcXVlbmNlSWQ6IDAsXG4gICAgICAgICAgZ2FzUHJpY2U6IDIwMDAwMDAwMDAwLFxuICAgICAgICAgIGdhc0xpbWl0OiA1MDAwMDAsXG4gICAgICAgICAgaXNCYXRjaDogZmFsc2UsXG4gICAgICAgICAgY29pbjogJ3RmbHInLFxuICAgICAgICAgIHdhbGxldElkOiAnZmFrZVdhbGxldElkJyxcbiAgICAgICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6ICdmYWtlV2FsbGV0Q29udHJhY3RBZGRyZXNzJyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcblxuICAgICAgICAvLyBXaXRob3V0IHdhbGxldFR5cGUgb3Igd2l0aCB3YWxsZXRUeXBlOiAnb25jaGFpbicsIHNob3VsZCB1c2UgRkxSJ3Mgb3duIHZlcmlmaWNhdGlvblxuICAgICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCB0ZmxyQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZCBhcyBhbnksXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB3YWxsZXRUeXBlOiAnb25jaGFpbicsXG4gICAgICAgIH0pO1xuICAgICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnSG9wIGV4cG9ydCB0eCB2ZXJpZnknLCAoKSA9PiB7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuICAgICAgY29uc3QgaG9wRGVzdGluYXRpb25BZGRyZXNzID1cbiAgICAgICAgJ1AtY29zdHdvMTVtc3ZyMjdzenZoaHBtYWgwYzM4Z2NtbDd2bTI5eGpoN3RjZWs4flAtY29zdHdvMWN3cmR0cmdmNHhoODBuY3U3cGFscmp3N2duNG1wajBuNGR4Z2hoflAtY29zdHdvMXp0OW45NmhleTRmc3ZuZGUzNW4zazRrdDVwdTdjNzg0ZHpld3pkJztcbiAgICAgIGNvbnN0IGhvcEFkZHJlc3MgPSAnMHgyOEEwNTkzM2RDNzZlNGU2YzI1ZjM1RDVjOWIyQTU4NzY5NzAwRTc2JztcbiAgICAgIGNvbnN0IGZscnBDb2luID0gY29pbnMuZ2V0KCd0ZmxycCcpO1xuICAgICAgY29uc3QgaW1wb3J0VHhGZWUgPSBOdW1iZXIoKGZscnBDb2luLm5ldHdvcmsgYXMgYW55KS5taW5JbXBvcnRUb1BGZWUpO1xuICAgICAgLy8gQWRqdXN0ZWQgYW1vdW50IHRvIHdvcmsgYmFja3dhcmRzIGZyb20gaG9wIGFtb3VudCAoNTAwMDAwMDApOiA1MDAwMDAwMCAtIGltcG9ydFR4RmVlIG5hbm9GTFJcbiAgICAgIGNvbnN0IGFtb3VudCA9ICg1MDAwMDAwMCAtIGltcG9ydFR4RmVlKSAqIDFlOTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbeyBhbW91bnQsIGFkZHJlc3M6IGhvcERlc3RpbmF0aW9uQWRkcmVzcyB9XSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdmYWtlV2FsbGV0UGFzc3BocmFzZScsXG4gICAgICAgIGhvcDogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbeyBhbW91bnQ6ICc1MTAwMDA1MDAwMDAwMDAwMCcsIGFkZHJlc3M6IGhvcEFkZHJlc3MgfV0sXG4gICAgICAgIG5leHRDb250cmFjdFNlcXVlbmNlSWQ6IDAsXG4gICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgaXNCYXRjaDogZmFsc2UsXG4gICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgd2FsbGV0SWQ6ICdmYWtlV2FsbGV0SWQnLFxuICAgICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6ICdmYWtlV2FsbGV0Q29udHJhY3RBZGRyZXNzJyxcbiAgICAgICAgaG9wVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICB0eDogaG9wRXhwb3J0VHgsXG4gICAgICAgICAgaWQ6IGhvcEV4cG9ydFR4SWQsXG4gICAgICAgICAgc2lnbmF0dXJlOiBob3BFeHBvcnRUeEJpdGdvU2lnbmF0dXJlLFxuICAgICAgICAgIHBheW1lbnRJZDogJzQ5MzMzNDk5ODQnLFxuICAgICAgICAgIGdhc1ByaWNlOiAnNTAnLFxuICAgICAgICAgIGdhc0xpbWl0OiAxLFxuICAgICAgICAgIGFtb3VudDogJzUwMDAwMDAwJyxcbiAgICAgICAgICByZWNpcGllbnQ6IGhvcERlc3RpbmF0aW9uQWRkcmVzcyxcbiAgICAgICAgICBub25jZTogMCxcbiAgICAgICAgICB1c2VyUmVxU2lnOlxuICAgICAgICAgICAgJzB4MDZmZDBiMWY4ODU5YTQwZDlmYjJkMWE2NWQ1NGRhNWQ2NDVhMWQ4MWJiYjhjMWM1YjAzNzA1MTg0M2VjMGQzYzIyNDMzZWM3ZjUwY2M5N2ZhMDQxY2JmOGQ5ZmY1ZGRmN2VkNDFmNzJhMDhmYTNmMTk4M2ZkNjUxYTMzYTQ0NDEnLFxuICAgICAgICAgIGdhc1ByaWNlTWF4OiA3MTg3NTAwMDAwLFxuICAgICAgICAgIHR5cGU6ICdFeHBvcnQnLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4gICAgICBiZWZvcmUoKCkgPT4ge1xuICAgICAgICB0eFByZWJ1aWxkLmhvcFRyYW5zYWN0aW9uLnNpZ25hdHVyZSA9IGhvcEV4cG9ydFR4Qml0Z29TaWduYXR1cmU7XG4gICAgICB9KTtcblxuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIHNhbmRib3guc3R1Yih0ZmxyQ29pbiBhcyBhbnksICd2ZXJpZnlTaWduYXR1cmVGb3JBdG9taWNUcmFuc2FjdGlvbicpLnJlc29sdmVzKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IHN1Y2Nlc3NmdWxseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdmVyaWZ5RmxyVHJhbnNhY3Rpb25PcHRpb25zID0geyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0LCB2ZXJpZmljYXRpb24gfTtcbiAgICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgdGZsckNvaW4udmVyaWZ5VHJhbnNhY3Rpb24odmVyaWZ5RmxyVHJhbnNhY3Rpb25PcHRpb25zKTtcbiAgICAgICAgaXNUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IGZvciBhbW91bnQgcGx1cyAxJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB2ZXJpZnlGbHJUcmFuc2FjdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgICAgdHhQYXJhbXM6IHsgLi4udHhQYXJhbXMsIHJlY2lwaWVudHM6IFt7IGFtb3VudDogYW1vdW50ICsgMWU5LCBhZGRyZXNzOiBob3BEZXN0aW5hdGlvbkFkZHJlc3MgfV0gfSxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgYXdhaXQgdGZsckNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24odmVyaWZ5RmxyVHJhbnNhY3Rpb25PcHRpb25zKVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICAgYEhvcCBhbW91bnQ6ICR7YW1vdW50IC8gMWU5ICsgaW1wb3J0VHhGZWV9IGlzIGxlc3MgdGhhbiByZXF1aXJlZCBhbW91bnQ6ICR7YW1vdW50IC8gMWU5ICsgaW1wb3J0VHhGZWUgKyAxfWBcbiAgICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgZm9yIGNoYW5nZWQgcHJlYnVpbGQgaG9wIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmeUZsclRyYW5zYWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7IC4uLnR4UHJlYnVpbGQsIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IGFkZHJlc3MyLCBhbW91bnQ6ICc1MTAwMDA1MDAwMDAwMDAwMCcgfV0gfSxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB0ZmxyQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih2ZXJpZnlGbHJUcmFuc2FjdGlvbk9wdGlvbnMpXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoYHJlY2lwaWVudCBhZGRyZXNzIG9mIHR4UHJlYnVpbGQgZG9lcyBub3QgbWF0Y2ggaG9wIGFkZHJlc3NgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IGZvciBjaGFuZ2VkIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGhvcERlc3RpbmF0aW9uQWRkcmVzc0RpZmYgPVxuICAgICAgICAgICdQLWNvc3R3bzE1bXN2cjI3c3p2aGhwbWFoMGMzOGdjbWw3dm0yOXhqaDd0Y2VrOX5QLWNvc3R3bzFjd3JkdHJnZjR4aDgwbmN1N3BhbHJqdzdnbjRtcGowbjRkeGdoaH5QLWNvc3R3bzF6dDluOTZoZXk0ZnN2bmRlMzVuM2s0a3Q1cHU3Yzc4NGR6ZXd6ZCc7XG4gICAgICAgIGNvbnN0IHZlcmlmeUZsclRyYW5zYWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgICB0eFBhcmFtczogeyAuLi50eFBhcmFtcywgcmVjaXBpZW50czogW3sgYW1vdW50OiBhbW91bnQsIGFkZHJlc3M6IGhvcERlc3RpbmF0aW9uQWRkcmVzc0RpZmYgfV0gfSxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRmbHJDb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHZlcmlmeUZsclRyYW5zYWN0aW9uT3B0aW9ucylcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAgIGBIb3AgZGVzdGluYXRpb246ICR7aG9wRGVzdGluYXRpb25BZGRyZXNzfSBkb2VzIG5vdCBlcXVhbCBvcmlnaW5hbCByZWNpcGllbnQ6ICR7aG9wRGVzdGluYXRpb25BZGRyZXNzRGlmZn1gXG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBpZiB3YWxsZXRJZCBpcyB1c2VkIGluc3RlYWQgb2YgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdmVyaWZ5RmxyVHJhbnNhY3Rpb25PcHRpb25zID0ge1xuICAgICAgICAgIHR4UGFyYW1zOiB7IC4uLnR4UGFyYW1zLCByZWNpcGllbnRzOiBbeyBhbW91bnQ6IGFtb3VudCwgd2FsbGV0SWQ6ICdzYW1lIHdhbGxldCcgfV0gfSxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IHRmbHJDb2luLnZlcmlmeVRyYW5zYWN0aW9uKHZlcmlmeUZsclRyYW5zYWN0aW9uT3B0aW9ucyk7XG4gICAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3ZhbGlkYXRlSG9wUHJlYnVpbGQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdmFsaWRhdGVIb3BTYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHZhbGlkYXRlSG9wU2FuZGJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpbnZhbGlkIEhTTSBzaWduYXR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuICAgICAgY29uc3QgaG9wUHJlYnVpbGQgPSB7XG4gICAgICAgIHR4OiBob3BFeHBvcnRUeCxcbiAgICAgICAgaWQ6IGhvcEV4cG9ydFR4SWQsXG4gICAgICAgIHNpZ25hdHVyZTogJzB4JyArICdhYScucmVwZWF0KDY1KSwgLy8gSW52YWxpZCBzaWduYXR1cmVcbiAgICAgICAgcGF5bWVudElkOiAnMTIzNDUnLFxuICAgICAgICBnYXNQcmljZTogMjAwMDAwMDAwMDAsXG4gICAgICAgIGdhc0xpbWl0OiA1MDAwMDAsXG4gICAgICAgIGFtb3VudDogMTAwMDAwMDAwMDAwMDAwMCxcbiAgICAgICAgcmVjaXBpZW50OiBFWFBPUlRfQ19URVNUX0RBVEEucE11bHRpc2lnQWRkcmVzcyxcbiAgICAgICAgbm9uY2U6IDAsXG4gICAgICAgIHVzZXJSZXFTaWc6ICcweCcsXG4gICAgICAgIGdhc1ByaWNlTWF4OiA1MDAwMDAwMDAwMDAsXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnIGFzIGNvbnN0LFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgKHRmbHJDb2luIGFzIGFueSlcbiAgICAgICAgLnZhbGlkYXRlSG9wUHJlYnVpbGQod2FsbGV0LCBob3BQcmVidWlsZClcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0hvcCB0eGlkIHNpZ25hdHVyZSBpbnZhbGlkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIEV4cG9ydCBob3AgcHJlYnVpbGQgc3VjY2Vzc2Z1bGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdmFsaWRhdGVIb3BTYW5kYm94LnN0dWIodGZsckNvaW4gYXMgYW55LCAndmVyaWZ5U2lnbmF0dXJlRm9yQXRvbWljVHJhbnNhY3Rpb24nKS5yZXNvbHZlcyh0cnVlKTtcblxuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcbiAgICAgIGNvbnN0IGhvcFByZWJ1aWxkID0ge1xuICAgICAgICB0eDogaG9wRXhwb3J0VHgsXG4gICAgICAgIGlkOiBob3BFeHBvcnRUeElkLFxuICAgICAgICBzaWduYXR1cmU6IGhvcEV4cG9ydFR4Qml0Z29TaWduYXR1cmUsXG4gICAgICAgIHBheW1lbnRJZDogJzEyMzQ1JyxcbiAgICAgICAgZ2FzUHJpY2U6IDIwMDAwMDAwMDAwLFxuICAgICAgICBnYXNMaW1pdDogNTAwMDAwLFxuICAgICAgICBhbW91bnQ6IDUwMDAwMDAwLFxuICAgICAgICByZWNpcGllbnQ6IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzLFxuICAgICAgICBub25jZTogMCxcbiAgICAgICAgdXNlclJlcVNpZzogJzB4JyxcbiAgICAgICAgZ2FzUHJpY2VNYXg6IDUwMDAwMDAwMDAwMCxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcgYXMgY29uc3QsXG4gICAgICB9O1xuXG4gICAgICAvLyBTaG91bGQgbm90IHRocm93XG4gICAgICBhd2FpdCAodGZsckNvaW4gYXMgYW55KS52YWxpZGF0ZUhvcFByZWJ1aWxkKHdhbGxldCwgaG9wUHJlYnVpbGQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgRXhwb3J0IGhvcCBwcmVidWlsZCB3aXRoIG1pc21hdGNoZWQgYW1vdW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcbiAgICAgIGNvbnN0IGhvcFByZWJ1aWxkID0ge1xuICAgICAgICB0eDogaG9wRXhwb3J0VHgsXG4gICAgICAgIGlkOiBob3BFeHBvcnRUeElkLFxuICAgICAgICBzaWduYXR1cmU6IGhvcEV4cG9ydFR4Qml0Z29TaWduYXR1cmUsXG4gICAgICAgIHBheW1lbnRJZDogJzEyMzQ1JyxcbiAgICAgICAgZ2FzUHJpY2U6IDIwMDAwMDAwMDAwLFxuICAgICAgICBnYXNMaW1pdDogNTAwMDAwLFxuICAgICAgICBhbW91bnQ6IDUwMDAwMDAwLFxuICAgICAgICByZWNpcGllbnQ6IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzLFxuICAgICAgICBub25jZTogMCxcbiAgICAgICAgdXNlclJlcVNpZzogJzB4JyxcbiAgICAgICAgZ2FzUHJpY2VNYXg6IDUwMDAwMDAwMDAwMCxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcgYXMgY29uc3QsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvcmlnaW5hbFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiAnOTk5OTk5OTk5OTk5OTk5OTk5JywgLy8gV3JvbmcgYW1vdW50XG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0ICh0ZmxyQ29pbiBhcyBhbnkpXG4gICAgICAgIC52YWxpZGF0ZUhvcFByZWJ1aWxkKHdhbGxldCwgaG9wUHJlYnVpbGQsIG9yaWdpbmFsUGFyYW1zKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvSG9wIGFtb3VudDogLiogaXMgbGVzcyB0aGFuIHJlcXVpcmVkIGFtb3VudC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgRXhwb3J0IGhvcCBwcmVidWlsZCB3aXRoIG1pc21hdGNoZWQgZGVzdGluYXRpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuICAgICAgY29uc3QgZmxycENvaW4gPSBjb2lucy5nZXQoJ3RmbHJwJyk7XG4gICAgICBjb25zdCBtaW5JbXBvcnRUb1BGZWUgPSBOdW1iZXIoKGZscnBDb2luLm5ldHdvcmsgYXMgYW55KS5taW5JbXBvcnRUb1BGZWUpO1xuICAgICAgY29uc3QgaG9wUHJlYnVpbGQgPSB7XG4gICAgICAgIHR4OiBob3BFeHBvcnRUeCxcbiAgICAgICAgaWQ6IGhvcEV4cG9ydFR4SWQsXG4gICAgICAgIHNpZ25hdHVyZTogaG9wRXhwb3J0VHhCaXRnb1NpZ25hdHVyZSxcbiAgICAgICAgcGF5bWVudElkOiAnMTIzNDUnLFxuICAgICAgICBnYXNQcmljZTogMjAwMDAwMDAwMDAsXG4gICAgICAgIGdhc0xpbWl0OiA1MDAwMDAsXG4gICAgICAgIGFtb3VudDogNTAwMDAwMDAsXG4gICAgICAgIHJlY2lwaWVudDogRVhQT1JUX0NfVEVTVF9EQVRBLnBNdWx0aXNpZ0FkZHJlc3MsXG4gICAgICAgIG5vbmNlOiAwLFxuICAgICAgICB1c2VyUmVxU2lnOiAnMHgnLFxuICAgICAgICBnYXNQcmljZU1heDogNTAwMDAwMDAwMDAwLFxuICAgICAgICB0eXBlOiAnRXhwb3J0JyBhcyBjb25zdCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9yaWdpbmFsUGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ1AtY29zdHdvMWRpZmZlcmVudH5QLWNvc3R3bzFhZGRyZXNzflAtY29zdHdvMWhlcmUnLFxuICAgICAgICAgICAgYW1vdW50OiBTdHJpbmcoKDUwMDAwMDAwIC0gbWluSW1wb3J0VG9QRmVlKSAqIDFlOSksIC8vIENvcnJlY3QgYW1vdW50IHNvIGRlc3RpbmF0aW9uIGNoZWNrIGlzIHJlYWNoZWRcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgKHRmbHJDb2luIGFzIGFueSlcbiAgICAgICAgLnZhbGlkYXRlSG9wUHJlYnVpbGQod2FsbGV0LCBob3BQcmVidWlsZCwgb3JpZ2luYWxQYXJhbXMpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9Ib3AgZGVzdGluYXRpb246IC4qIGRvZXMgbm90IGVxdWFsIG9yaWdpbmFsIHJlY2lwaWVudC8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncHJlc2lnblRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHBhcmFtcyB1bmNoYW5nZWQgd2hlbiBubyBob3BUcmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhIZXg6ICcweDEyMycsXG4gICAgICAgIHdhbGxldDogbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KSxcbiAgICAgICAgYnVpbGRQYXJhbXM6IHsgcmVjaXBpZW50czogW10gfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLnByZXNpZ25UcmFuc2FjdGlvbihwYXJhbXMgYXMgYW55KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwocGFyYW1zKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY2FsbCB2YWxpZGF0ZUhvcFByZWJ1aWxkIHdoZW4gaG9wVHJhbnNhY3Rpb24gaXMgcHJlc2VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgICBjb25zdCB2YWxpZGF0ZVN0dWIgPSBzYW5kYm94LnN0dWIodGZsckNvaW4gYXMgYW55LCAndmFsaWRhdGVIb3BQcmVidWlsZCcpLnJlc29sdmVzKCk7XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7fSk7XG4gICAgICBjb25zdCBob3BUcmFuc2FjdGlvbiA9IHtcbiAgICAgICAgdHg6IGhvcEV4cG9ydFR4LFxuICAgICAgICBpZDogaG9wRXhwb3J0VHhJZCxcbiAgICAgICAgc2lnbmF0dXJlOiBob3BFeHBvcnRUeEJpdGdvU2lnbmF0dXJlLFxuICAgICAgICBwYXltZW50SWQ6ICcxMjM0NScsXG4gICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgYW1vdW50OiA1MDAwMDAwMCxcbiAgICAgICAgcmVjaXBpZW50OiBFWFBPUlRfQ19URVNUX0RBVEEucE11bHRpc2lnQWRkcmVzcyxcbiAgICAgICAgbm9uY2U6IDAsXG4gICAgICAgIHVzZXJSZXFTaWc6ICcweCcsXG4gICAgICAgIGdhc1ByaWNlTWF4OiA1MDAwMDAwMDAwMDAsXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnIGFzIGNvbnN0LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICB0eEhleDogJzB4MTIzJyxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgIGJ1aWxkUGFyYW1zOiB7IHJlY2lwaWVudHM6IFtdIH0sXG4gICAgICAgIGhvcFRyYW5zYWN0aW9uOiBob3BUcmFuc2FjdGlvbixcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHRmbHJDb2luLnByZXNpZ25UcmFuc2FjdGlvbihwYXJhbXMgYXMgYW55KTtcbiAgICAgIHZhbGlkYXRlU3R1Yi5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Bvc3RQcm9jZXNzUHJlYnVpbGQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gcGFyYW1zIHVuY2hhbmdlZCB3aGVuIG5vIGhvcFRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICB0eEhleDogJzB4MTIzJyxcbiAgICAgICAgY29pbjogJ3RmbHInLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGZsckNvaW4ucG9zdFByb2Nlc3NQcmVidWlsZChwYXJhbXMgYXMgYW55KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwocGFyYW1zKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY2FsbCB2YWxpZGF0ZUhvcFByZWJ1aWxkIHdoZW4gaG9wVHJhbnNhY3Rpb24gaXMgcHJlc2VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgICBjb25zdCB2YWxpZGF0ZVN0dWIgPSBzYW5kYm94LnN0dWIodGZsckNvaW4gYXMgYW55LCAndmFsaWRhdGVIb3BQcmVidWlsZCcpLnJlc29sdmVzKCk7XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7fSk7XG4gICAgICBjb25zdCBob3BUcmFuc2FjdGlvbiA9IHtcbiAgICAgICAgdHg6IGhvcEV4cG9ydFR4LFxuICAgICAgICBpZDogaG9wRXhwb3J0VHhJZCxcbiAgICAgICAgc2lnbmF0dXJlOiBob3BFeHBvcnRUeEJpdGdvU2lnbmF0dXJlLFxuICAgICAgICBwYXltZW50SWQ6ICcxMjM0NScsXG4gICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgYW1vdW50OiA1MDAwMDAwMCxcbiAgICAgICAgcmVjaXBpZW50OiBFWFBPUlRfQ19URVNUX0RBVEEucE11bHRpc2lnQWRkcmVzcyxcbiAgICAgICAgbm9uY2U6IDAsXG4gICAgICAgIHVzZXJSZXFTaWc6ICcweCcsXG4gICAgICAgIGdhc1ByaWNlTWF4OiA1MDAwMDAwMDAwMDAsXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnIGFzIGNvbnN0LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICB0eEhleDogJzB4MTIzJyxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgIGJ1aWxkUGFyYW1zOiB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzLCBhbW91bnQ6ICcxMDAwMDAwMDAnIH1dIH0sXG4gICAgICAgIGhvcFRyYW5zYWN0aW9uOiBob3BUcmFuc2FjdGlvbixcbiAgICAgICAgY29pbjogJ3RmbHInLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgdGZsckNvaW4ucG9zdFByb2Nlc3NQcmVidWlsZChwYXJhbXMgYXMgYW55KTtcbiAgICAgIHZhbGlkYXRlU3R1Yi5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEV4dHJhUHJlYnVpbGRQYXJhbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgc2FuZGJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGVtcHR5IG9iamVjdCB3aGVuIGhvcCBpcyBub3Qgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweDEyMzQnLCBhbW91bnQ6ICcxMDAwMDAwJyB9XSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLmdldEV4dHJhUHJlYnVpbGRQYXJhbXMoYnVpbGRQYXJhbXMpO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0IHdoZW4gaG9wIGlzIGZhbHNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRQYXJhbXMgPSB7XG4gICAgICAgIGhvcDogZmFsc2UsXG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweDEyMzQnLCBhbW91bnQ6ICcxMDAwMDAwJyB9XSxcbiAgICAgICAgd2FsbGV0OiBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGZsckNvaW4uZ2V0RXh0cmFQcmVidWlsZFBhcmFtcyhidWlsZFBhcmFtcyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBlbXB0eSBvYmplY3Qgd2hlbiB3YWxsZXQgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkUGFyYW1zID0ge1xuICAgICAgICBob3A6IHRydWUsXG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweDEyMzQnLCBhbW91bnQ6ICcxMDAwMDAwJyB9XSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLmdldEV4dHJhUHJlYnVpbGRQYXJhbXMoYnVpbGRQYXJhbXMpO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0IHdoZW4gcmVjaXBpZW50cyBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRQYXJhbXMgPSB7XG4gICAgICAgIGhvcDogdHJ1ZSxcbiAgICAgICAgd2FsbGV0OiBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGZsckNvaW4uZ2V0RXh0cmFQcmVidWlsZFBhcmFtcyhidWlsZFBhcmFtcyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNhbGwgY3JlYXRlSG9wVHJhbnNhY3Rpb25QYXJhbXMgd2hlbiBob3AgaXMgdHJ1ZSB3aXRoIGFsbCByZXF1aXJlZCBwYXJhbXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtb2NrRmVlRXN0aW1hdGUgPSB7XG4gICAgICAgIGZlZUVzdGltYXRlOiAxMjAwMDAsXG4gICAgICAgIGdhc0xpbWl0RXN0aW1hdGU6IDUwMDAwMCxcbiAgICAgIH07XG4gICAgICBzYW5kYm94LnN0dWIodGZsckNvaW4sICdmZWVFc3RpbWF0ZScpLnJlc29sdmVzKG1vY2tGZWVFc3RpbWF0ZSk7XG5cbiAgICAgIGNvbnN0IGJ1aWxkUGFyYW1zID0ge1xuICAgICAgICBob3A6IHRydWUsXG4gICAgICAgIHdhbGxldDogbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KSxcbiAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogRVhQT1JUX0NfVEVTVF9EQVRBLnBNdWx0aXNpZ0FkZHJlc3MsIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMCcgfV0sXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnIGFzIGNvbnN0LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGZsckNvaW4uZ2V0RXh0cmFQcmVidWlsZFBhcmFtcyhidWlsZFBhcmFtcyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2hvcFBhcmFtcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0IGZvciBUU1Mgd2FsbGV0cyBldmVuIHdoZW4gaG9wIGlzIHRydWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0c3NXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwgeyBtdWx0aXNpZ1R5cGU6ICd0c3MnIH0pO1xuICAgICAgY29uc3QgYnVpbGRQYXJhbXMgPSB7XG4gICAgICAgIGhvcDogdHJ1ZSxcbiAgICAgICAgd2FsbGV0OiB0c3NXYWxsZXQsXG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzLCBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAnIH1dLFxuICAgICAgICB0eXBlOiAnRXhwb3J0JyBhcyBjb25zdCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLmdldEV4dHJhUHJlYnVpbGRQYXJhbXMoYnVpbGRQYXJhbXMpO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoe30pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmVlRXN0aW1hdGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBtYWtlIEFQSSBjYWxsIHdpdGggY29ycmVjdCBxdWVyeSBwYXJhbWV0ZXJzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwZWN0ZWRGZWVFc3RpbWF0ZSA9IHtcbiAgICAgICAgZmVlRXN0aW1hdGU6IDEyMDAwMCxcbiAgICAgICAgZ2FzTGltaXRFc3RpbWF0ZTogNTAwMDAwLFxuICAgICAgfTtcblxuICAgICAgbm9jaygnaHR0cHM6Ly9hcHAuYml0Z28tdGVzdC5jb20nKVxuICAgICAgICAuZ2V0KCcvYXBpL3YyL3RmbHIvdHgvZmVlJylcbiAgICAgICAgLnF1ZXJ5KHtcbiAgICAgICAgICBob3A6IHRydWUsXG4gICAgICAgICAgcmVjaXBpZW50OiAnMHgxMjM0JyxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgICB0eXBlOiAnRXhwb3J0JyxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlcGx5KDIwMCwgZXhwZWN0ZWRGZWVFc3RpbWF0ZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLmZlZUVzdGltYXRlKHtcbiAgICAgICAgaG9wOiB0cnVlLFxuICAgICAgICByZWNpcGllbnQ6ICcweDEyMzQnLFxuICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0LmZlZUVzdGltYXRlLnNob3VsZC5lcXVhbChleHBlY3RlZEZlZUVzdGltYXRlLmZlZUVzdGltYXRlKTtcbiAgICAgIHJlc3VsdC5nYXNMaW1pdEVzdGltYXRlLnNob3VsZC5lcXVhbChleHBlY3RlZEZlZUVzdGltYXRlLmdhc0xpbWl0RXN0aW1hdGUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBtYWtlIEFQSSBjYWxsIHdpdGggZGF0YSBwYXJhbWV0ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBlY3RlZEZlZUVzdGltYXRlID0ge1xuICAgICAgICBmZWVFc3RpbWF0ZTogMTUwMDAwLFxuICAgICAgICBnYXNMaW1pdEVzdGltYXRlOiA2MDAwMDAsXG4gICAgICB9O1xuXG4gICAgICBub2NrKCdodHRwczovL2FwcC5iaXRnby10ZXN0LmNvbScpXG4gICAgICAgIC5nZXQoJy9hcGkvdjIvdGZsci90eC9mZWUnKVxuICAgICAgICAucXVlcnkoe1xuICAgICAgICAgIHJlY2lwaWVudDogJzB4NTY3OCcsXG4gICAgICAgICAgZGF0YTogJzB4YWJjZGVmJyxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlcGx5KDIwMCwgZXhwZWN0ZWRGZWVFc3RpbWF0ZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLmZlZUVzdGltYXRlKHtcbiAgICAgICAgcmVjaXBpZW50OiAnMHg1Njc4JyxcbiAgICAgICAgZGF0YTogJzB4YWJjZGVmJyxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuZmVlRXN0aW1hdGUuc2hvdWxkLmVxdWFsKGV4cGVjdGVkRmVlRXN0aW1hdGUuZmVlRXN0aW1hdGUpO1xuICAgICAgcmVzdWx0Lmdhc0xpbWl0RXN0aW1hdGUuc2hvdWxkLmVxdWFsKGV4cGVjdGVkRmVlRXN0aW1hdGUuZ2FzTGltaXRFc3RpbWF0ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRUeEhhc2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBjYWxjdWxhdGUgY29ycmVjdCBrZWNjYWsyNTYgaGFzaCBmb3IgdHggaGV4JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhIZXggPSBFWFBPUlRfQ19URVNUX0RBVEEuZnVsbHNpZ250eEhleDtcbiAgICAgIGNvbnN0IGhhc2ggPSAodGZsckNvaW4uY29uc3RydWN0b3IgYXMgdHlwZW9mIEZscikuZ2V0VHhIYXNoKHR4SGV4KTtcblxuICAgICAgaGFzaC5zaG91bGQuYmUuaW5zdGFuY2VPZihCdWZmZXIpO1xuICAgICAgaGFzaC5sZW5ndGguc2hvdWxkLmVxdWFsKDMyKTtcblxuICAgICAgLy8gVmVyaWZ5IGl0IG1hdGNoZXMgb3VyIGhlbHBlciBmdW5jdGlvblxuICAgICAgY29uc3QgZXhwZWN0ZWRIYXNoID0gZ2V0VHhIYXNoKHR4SGV4KTtcbiAgICAgIGhhc2gudG9TdHJpbmcoJ2hleCcpLnNob3VsZC5lcXVhbChleHBlY3RlZEhhc2gudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHR4IGhleCB3aXRoIDB4IHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4SGV4ID0gJzB4JyArICdhYmNkJy5yZXBlYXQoMTApO1xuICAgICAgY29uc3QgaGFzaCA9ICh0ZmxyQ29pbi5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgRmxyKS5nZXRUeEhhc2godHhIZXgpO1xuXG4gICAgICBoYXNoLnNob3VsZC5iZS5pbnN0YW5jZU9mKEJ1ZmZlcik7XG4gICAgICBoYXNoLmxlbmd0aC5zaG91bGQuZXF1YWwoMzIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgdHggaGV4IHdpdGhvdXQgMHggcHJlZml4JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhIZXggPSAnYWJjZCcucmVwZWF0KDEwKTtcbiAgICAgIGNvbnN0IGhhc2ggPSAodGZsckNvaW4uY29uc3RydWN0b3IgYXMgdHlwZW9mIEZscikuZ2V0VHhIYXNoKHR4SGV4KTtcblxuICAgICAgaGFzaC5zaG91bGQuYmUuaW5zdGFuY2VPZihCdWZmZXIpO1xuICAgICAgaGFzaC5sZW5ndGguc2hvdWxkLmVxdWFsKDMyKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0J1aWxkIFVuc2lnbmVkIFN3ZWVwIGZvciBTZWxmLUN1c3RvZHkgQ29sZCBXYWxsZXRzIC0gKE1QQ3YyKScsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gIGNvbnN0IGV4cGxvcmVyVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0uZmxyRXhwbG9yZXJCYXNlVXJsIGFzIHN0cmluZztcbiAgY29uc3QgbWF4RmVlUGVyR2FzdmFsdWUgPSAzMDAwMDAwMDAwMDtcbiAgY29uc3QgbWF4UHJpb3JpdHlGZWVQZXJHYXNWYWx1ZSA9IDE1MDAwMDAwMDAwO1xuICBjb25zdCBjaGFpbl9pZCA9IDExNDtcbiAgY29uc3QgZ2FzTGltaXR2YWx1ZSA9IDUwMDAwMDtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIGFuIHVuc2lnbmVkIHN3ZWVwIHdpdGhvdXQgZGVyaXZhdGlvbiBwYXRoJywgYXN5bmMgKCkgPT4ge1xuICAgIG5vY2soZXhwbG9yZXJVcmwpXG4gICAgICAuZ2V0KCcvYXBpJylcbiAgICAgIC50d2ljZSgpXG4gICAgICAucXVlcnkobW9ja0RhdGFVbnNpZ25lZFN3ZWVwLmdldFR4TGlzdFJlcXVlc3QpXG4gICAgICAucmVwbHkoMjAwLCBtb2NrRGF0YVVuc2lnbmVkU3dlZXAuZ2V0VHhMaXN0UmVzcG9uc2UpO1xuICAgIG5vY2soZXhwbG9yZXJVcmwpXG4gICAgICAuZ2V0KCcvYXBpJylcbiAgICAgIC5xdWVyeShtb2NrRGF0YVVuc2lnbmVkU3dlZXAuZ2V0QmFsYW5jZVJlcXVlc3QpXG4gICAgICAucmVwbHkoMjAwLCBtb2NrRGF0YVVuc2lnbmVkU3dlZXAuZ2V0QmFsYW5jZVJlc3BvbnNlKTtcblxuICAgIGNvbnN0IGJhc2VDb2luOiBhbnkgPSBiaXRnby5jb2luKCd0ZmxyJyk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSAoYXdhaXQgYmFzZUNvaW4ucmVjb3Zlcih7XG4gICAgICB1c2VyS2V5OiBtb2NrRGF0YVVuc2lnbmVkU3dlZXAudXNlcktleSxcbiAgICAgIGJhY2t1cEtleTogbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLmJhY2t1cEtleSxcbiAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLndhbGxldEJhc2VBZGRyZXNzLFxuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICBpc1RzczogdHJ1ZSxcbiAgICAgIGVpcDE1NTk6IHsgbWF4RmVlUGVyR2FzOiBtYXhGZWVQZXJHYXN2YWx1ZSwgbWF4UHJpb3JpdHlGZWVQZXJHYXM6IG1heFByaW9yaXR5RmVlUGVyR2FzVmFsdWUgfSxcbiAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdHZhbHVlLFxuICAgICAgcmVwbGF5UHJvdGVjdGlvbk9wdGlvbnM6IHtcbiAgICAgICAgY2hhaW46IGNoYWluX2lkLFxuICAgICAgICBoYXJkZm9yazogJ2xvbmRvbicsXG4gICAgICB9LFxuICAgIH0pKSBhcyBVbnNpZ25lZFN3ZWVwVHhNUEN2MjtcbiAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgIHRyYW5zYWN0aW9uLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eFJlcXVlc3RzJyk7XG4gICAgdHJhbnNhY3Rpb24udHhSZXF1ZXN0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIGNvbnN0IHR4UmVxdWVzdCA9IHRyYW5zYWN0aW9uLnR4UmVxdWVzdHNbMF07XG4gICAgdHhSZXF1ZXN0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd3YWxsZXRDb2luJyk7XG4gICAgdHhSZXF1ZXN0LndhbGxldENvaW4uc2hvdWxkLmVxdWFsKCd0ZmxyJyk7XG4gICAgdHhSZXF1ZXN0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0cmFuc2FjdGlvbnMnKTtcbiAgICB0eFJlcXVlc3QudHJhbnNhY3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgY29uc3QgdHggPSB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdO1xuICAgIHR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdub25jZScpO1xuICAgIHR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCd1bnNpZ25lZFR4Jyk7XG4gICAgdHgudW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc2VyaWFsaXplZFR4SGV4Jyk7XG4gICAgdHgudW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc2lnbmFibGVIZXgnKTtcbiAgICB0eC51bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcpO1xuICAgIHR4LnVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZUluZm8nKTtcbiAgICB0eC51bnNpZ25lZFR4LmZlZUluZm8/LnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWUnKTtcbiAgICB0eC51bnNpZ25lZFR4LmZlZUluZm8/LnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWVTdHJpbmcnKTtcbiAgICB0eC51bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdwYXJzZWRUeCcpO1xuICAgIHR4LnVuc2lnbmVkVHgucGFyc2VkVHg/LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcGVuZEFtb3VudCcpO1xuICAgIHR4LnVuc2lnbmVkVHgucGFyc2VkVHg/LnNob3VsZC5oYXZlLnByb3BlcnR5KCdvdXRwdXRzJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdOb24gQml0Z28gUmVjb3ZlcnkgZm9yIEhvdCBXYWxsZXRzJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgY29uc3QgZXhwbG9yZXJVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzW2JpdGdvLmdldEVudigpXS5mbHJFeHBsb3JlckJhc2VVcmwgYXMgc3RyaW5nO1xuICBjb25zdCBtYXhGZWVQZXJHYXN2YWx1ZSA9IDMwMDAwMDAwMDAwO1xuICBjb25zdCBtYXhQcmlvcml0eUZlZVBlckdhc1ZhbHVlID0gMTUwMDAwMDAwMDA7XG4gIGNvbnN0IGNoYWluX2lkID0gMTE0O1xuICBjb25zdCBnYXNMaW1pdHZhbHVlID0gNTAwMDAwO1xuXG4gIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBzaWduZWQgbm9uLWJpdGdvIHJlY292ZXJ5IHR4JywgYXN5bmMgKCkgPT4ge1xuICAgIG5vY2soZXhwbG9yZXJVcmwpXG4gICAgICAuZ2V0KCcvYXBpJylcbiAgICAgIC50d2ljZSgpXG4gICAgICAucXVlcnkobW9ja0RhdGFOb25CaXRHb1JlY292ZXJ5LmdldFR4TGlzdFJlcXVlc3QpXG4gICAgICAucmVwbHkoMjAwLCBtb2NrRGF0YU5vbkJpdEdvUmVjb3ZlcnkuZ2V0VHhMaXN0UmVzcG9uc2UpO1xuICAgIG5vY2soZXhwbG9yZXJVcmwpXG4gICAgICAuZ2V0KCcvYXBpJylcbiAgICAgIC5xdWVyeShtb2NrRGF0YU5vbkJpdEdvUmVjb3ZlcnkuZ2V0QmFsYW5jZVJlcXVlc3QpXG4gICAgICAucmVwbHkoMjAwLCBtb2NrRGF0YU5vbkJpdEdvUmVjb3ZlcnkuZ2V0QmFsYW5jZVJlc3BvbnNlKTtcblxuICAgIGNvbnN0IGJhc2VDb2luOiBhbnkgPSBiaXRnby5jb2luKCd0ZmxyJyk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlQ29pbi5yZWNvdmVyKHtcbiAgICAgIHVzZXJLZXk6IG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS51c2VyS2V5RGF0YSxcbiAgICAgIGJhY2t1cEtleTogbW9ja0RhdGFOb25CaXRHb1JlY292ZXJ5LmJhY2t1cEtleURhdGEsXG4gICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6IG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS53YWxsZXRSb290QWRkcmVzcyxcbiAgICAgIHdhbGxldFBhc3NwaHJhc2U6IG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogbW9ja0RhdGFOb25CaXRHb1JlY292ZXJ5LnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICBpc1RzczogdHJ1ZSxcbiAgICAgIGVpcDE1NTk6IHsgbWF4RmVlUGVyR2FzOiBtYXhGZWVQZXJHYXN2YWx1ZSwgbWF4UHJpb3JpdHlGZWVQZXJHYXM6IG1heFByaW9yaXR5RmVlUGVyR2FzVmFsdWUgfSxcbiAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdHZhbHVlLFxuICAgICAgcmVwbGF5UHJvdGVjdGlvbk9wdGlvbnM6IHtcbiAgICAgICAgY2hhaW46IGNoYWluX2lkLFxuICAgICAgICBoYXJkZm9yazogJ2xvbmRvbicsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHNob3VsZC5leGlzdCh0cmFuc2FjdGlvbik7XG4gICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lkJyk7XG4gICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4Jyk7XG4gICAgY29uc3QgdHggPSBGZWVNYXJrZXRFSVAxNTU5VHJhbnNhY3Rpb24uZnJvbVNlcmlhbGl6ZWRUeChCdWZmZXIuZnJvbShzdHJpcEhleFByZWZpeCh0cmFuc2FjdGlvbi50eCksICdoZXgnKSk7XG4gICAgdHguZ2V0U2VuZGVyQWRkcmVzcygpLnRvU3RyaW5nKCkuc2hvdWxkLmVxdWFsKG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS53YWxsZXRSb290QWRkcmVzcyk7XG4gICAgY29uc3QganNvblR4ID0gdHgudG9KU09OKCk7XG4gICAganNvblR4LnRvPy5zaG91bGQuZXF1YWwobW9ja0RhdGFOb25CaXRHb1JlY292ZXJ5LnJlY292ZXJ5RGVzdGluYXRpb24pO1xuICB9KTtcbn0pO1xuIl19
|
|
1086
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2Zsci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyw4Q0FBMEQ7QUFDMUQsNENBQTBDO0FBQzFDLDRDQUF1QztBQUV2QywyQ0FBNEM7QUFHNUMsNENBQW1HO0FBQ25HLGdEQUF3QjtBQUN4Qiw4Q0FBa0U7QUFDbEUsdUNBQTZEO0FBQzdELDJDQUFrRDtBQUNsRCw2Q0FBK0I7QUFDL0IsZ0RBQXlDO0FBQ3pDLHFEQUF1QztBQUN2QyxvREFBNEI7QUFFNUIsaURBQWlEO0FBQ2pELFNBQVMsU0FBUyxDQUFDLEVBQVU7SUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBQSxnQkFBTSxFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxRQUFRLENBQUMsS0FBSyxFQUFFO0lBQ2QsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxPQUFPLENBQUM7SUFDWixJQUFJLHlCQUF5QixDQUFDO0lBRTlCLE1BQU0sUUFBUSxHQUFHLDRDQUE0QyxDQUFDO0lBQzlELE1BQU0sV0FBVyxHQUFHLDhCQUFrQixDQUFDLGFBQWEsQ0FBQztJQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwRSxNQUFNLENBQUM7UUFDTCxNQUFNLFlB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Qix1QkFBdUIsRUFBRTtnQkFDdkIsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsUUFBUSxFQUFFLFFBQVE7YUFDbkI7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxFQUFFLEdBQUcsZ0NBQTJCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFBLHFCQUFjLEVBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUcsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQ0FBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQXdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbmltcG9ydCB7IEZsciwgVGZsciB9IGZyb20gJy4uLy4uL3NyYy9pbmRleCc7XG5pbXBvcnQgeyBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vc3JjL2lmYWNlJztcbmltcG9ydCB7IFVuc2lnbmVkU3dlZXBUeE1QQ3YyIH0gZnJvbSAnQGJpdGdvL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBtb2NrRGF0YVVuc2lnbmVkU3dlZXAsIG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeSwgRVhQT1JUX0NfVEVTVF9EQVRBIH0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0IHsgY29tbW9uLCBUcmFuc2FjdGlvblR5cGUsIFdhbGxldCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBGZWVNYXJrZXRFSVAxNTU5VHJhbnNhY3Rpb24gfSBmcm9tICdAZXRoZXJldW1qcy90eCc7XG5pbXBvcnQgeyBzdHJpcEhleFByZWZpeCB9IGZyb20gJ0BldGhlcmV1bWpzL3V0aWwnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgYmlwMzIgfSBmcm9tICdAYml0Z28vc2VjcDI1NmsxJztcbmltcG9ydCAqIGFzIHNlY3AyNTZrMSBmcm9tICdzZWNwMjU2azEnO1xuaW1wb3J0IEtlY2NhayBmcm9tICdrZWNjYWsnO1xuXG4vLyBIZWxwZXIgdG8gY2FsY3VsYXRlIHR4IGhhc2ggbGlrZSBGbHIuZ2V0VHhIYXNoXG5mdW5jdGlvbiBnZXRUeEhhc2godHg6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGNvbnN0IGhhc2ggPSBLZWNjYWsoJ2tlY2NhazI1NicpO1xuICBoYXNoLnVwZGF0ZSh0eC5zdGFydHNXaXRoKCcweCcpID8gdHguc2xpY2UoMikgOiB0eCwgJ2hleCcpO1xuICByZXR1cm4gaGFzaC5kaWdlc3QoKTtcbn1cblxuZGVzY3JpYmUoJ2ZscicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCB0ZmxyQ29pbjtcbiAgbGV0IGZsckNvaW47XG4gIGxldCBob3BFeHBvcnRUeEJpdGdvU2lnbmF0dXJlO1xuXG4gIGNvbnN0IGFkZHJlc3MyID0gJzB4N2U4NWJkYzI3YzA1MGUzOTA1ZWJmNGI4ZTYzNGQ5YWQ2ZWRkMGRlNic7XG4gIGNvbnN0IGhvcEV4cG9ydFR4ID0gRVhQT1JUX0NfVEVTVF9EQVRBLmZ1bGxzaWdudHhIZXg7XG4gIGNvbnN0IGhvcEV4cG9ydFR4SWQgPSAnMHgnICsgZ2V0VHhIYXNoKGhvcEV4cG9ydFR4KS50b1N0cmluZygnaGV4Jyk7XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBiaXRnb0tleVhwcnYgPVxuICAgICAgJ3hwcnY5czIxWnJRSDE0M0szdHBXQkhXZTMxc0xvWE5SUTlBdlJZSmdpdGtLeFE0QVRGUU13dnI3aEhOcVlSVW5TN1BzanpCN2FLMVZ4cUhMdU5Ramoxc2NrSjJKd28ycXhtc3ZlandFQ1NwRk1mQyc7XG4gICAgY29uc3QgYml0Z29LZXkgPSBiaXAzMi5mcm9tQmFzZTU4KGJpdGdvS2V5WHBydik7XG4gICAgaWYgKCFiaXRnb0tleS5wcml2YXRlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIHByaXZhdGVLZXknKTtcbiAgICB9XG4gICAgY29uc3QgYml0Z29YcHViID0gYml0Z29LZXkubmV1dGVyZWQoKS50b0Jhc2U1OCgpO1xuXG4gICAgaG9wRXhwb3J0VHhCaXRnb1NpZ25hdHVyZSA9XG4gICAgICAnMHhhYScgK1xuICAgICAgQnVmZmVyLmZyb20oXG4gICAgICAgIHNlY3AyNTZrMS5lY2RzYVNpZ24oQnVmZmVyLmZyb20oaG9wRXhwb3J0VHhJZC5zbGljZSgyKSwgJ2hleCcpLCBiaXRnb0tleS5wcml2YXRlS2V5KS5zaWduYXR1cmVcbiAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCdmbHInLCBGbHIuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcigndGZscicsIFRmbHIuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGNvbW1vbi5FbnZpcm9ubWVudHNbYml0Z28uZ2V0RW52KCldLmhzbVhwdWIgPSBiaXRnb1hwdWI7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gIH0pO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIHRmbHJDb2luID0gYml0Z28uY29pbigndGZscicpIGFzIFRmbHI7XG4gICAgZmxyQ29pbiA9IGJpdGdvLmNvaW4oJ2ZscicpIGFzIEZscjtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0Jhc2ljIENvaW4gSW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbyBmb3IgZmxyJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmxyID0gYml0Z28uY29pbignZmxyJyk7XG5cbiAgICAgIGZsci5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihGbHIpO1xuICAgICAgZmxyLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCdmbHInKTtcbiAgICAgIGZsci5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ2ZscicpO1xuICAgICAgZmxyLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdGbGFyZScpO1xuICAgICAgZmxyLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMWUxOCk7XG4gICAgICBmbHIuc3VwcG9ydHNUc3MoKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBmbHIuYWxsb3dzQWNjb3VudENvbnNvbGlkYXRpb25zKCkuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSByaWdodCBpbmZvIGZvciB0ZmxyJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGZsciA9IGJpdGdvLmNvaW4oJ3RmbHInKTtcblxuICAgICAgdGZsci5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihUZmxyKTtcbiAgICAgIHRmbHIuZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoJ3RmbHInKTtcbiAgICAgIHRmbHIuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCdmbHInKTtcbiAgICAgIHRmbHIuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgZmxhcmUnKTtcbiAgICAgIHRmbHIuZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTE4KTtcbiAgICAgIHRmbHIuc3VwcG9ydHNUc3MoKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB0ZmxyLmFsbG93c0FjY291bnRDb25zb2xpZGF0aW9ucygpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQLUNoYWluIE1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmxycCBmb3IgbWFpbm5ldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIChmbHJDb2luIGFzIGFueSkuZ2V0RmxyUCgpLnNob3VsZC5lcXVhbCgnZmxycCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGZscnAgZm9yIHRlc3RuZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAodGZsckNvaW4gYXMgYW55KS5nZXRGbHJQKCkuc2hvdWxkLmVxdWFsKCd0ZmxycCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNTaWduYWJsZVByZUhhc2hlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyB0cnVlIGZvciBBdmFsYW5jaGUgYXRvbWljIHR4cyAoY29kZWMgcHJlZml4IDAwMDApJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQy0+UCBjcm9zcy1jaGFpbiBleHBvcnQgYXRvbWljIHR4IOKAlCBzaWduYWJsZUhleCBpcyBhbHJlYWR5IFNIQS0yNTYodHhCb2R5KS5cbiAgICAgIC8vIFRoZSBNUEMgbGF5ZXIgbXVzdCB1c2UgdGhpcyBkaWdlc3QgZGlyZWN0bHksIG5vdCByZS1oYXNoIHdpdGgga2VjY2FrMjU2LFxuICAgICAgLy8gb3RoZXJ3aXNlIHRoZSB1c2VyIGFuZCBCaXRHbyBzaWduYXR1cmUgc2hhcmVzIHdpbGwgbm90IGNvbWJpbmUuXG4gICAgICBjb25zdCBzaWduYWJsZUhleCA9ICdhJy5yZXBlYXQoNjQpO1xuICAgICAgZmxyQ29pbi5pc1NpZ25hYmxlUHJlSGFzaGVkKHsgc2VyaWFsaXplZFR4SGV4OiAnMDAwMCcgKyAnYicucmVwZWF0KDIwKSwgc2lnbmFibGVIZXggfSkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgZmFsc2UgZm9yIHN0YW5kYXJkIEVWTSBSTFAgdHJhbnNhY3Rpb25zJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gRUlQLTE1NTkgLyBSTFAgc2VyaWFsaXplZCB0cmFuc2FjdGlvbnMgc3RhcnQgd2l0aCAweDAyIG9yIDB4Zjgg4oCUIG5ldmVyIDB4MDAwMC5cbiAgICAgIGZsckNvaW5cbiAgICAgICAgLmlzU2lnbmFibGVQcmVIYXNoZWQoe1xuICAgICAgICAgIHNlcmlhbGl6ZWRUeEhleDogJzAyZjE3MjgxZDkwMjg1MGJhNDNiNzQwMjgzMDYxYTgwJyxcbiAgICAgICAgICBzaWduYWJsZUhleDogJzAyZjE3MjgxZDkwMjg1MGJhNDNiNzQwMjgzMDYxYTgwJyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIFZhbGlkYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB2YWxpZCBldGggYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnMHgxMzc0YTIwNDY2NjFmOTE0ZDE2ODdkODVkYmJjZWI5YWM3OTEwYTI5JztcbiAgICAgIHRmbHJDb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBmbHJDb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgUC1jaGFpbiBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcEFkZHJlc3NlcyA9IEVYUE9SVF9DX1RFU1RfREFUQS5wQWRkcmVzc2VzO1xuICAgICAgZm9yIChjb25zdCBhZGRyIG9mIHBBZGRyZXNzZXMpIHtcbiAgICAgICAgdGZsckNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcikuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgZmxyQ29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIFAtY2hhaW4gbXVsdGlzaWcgYWRkcmVzcyBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gRVhQT1JUX0NfVEVTVF9EQVRBLnBNdWx0aXNpZ0FkZHJlc3M7XG4gICAgICB0ZmxyQ29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgZmxyQ29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgZm9yIGVtcHR5IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB0ZmxyQ29pbi5pc1ZhbGlkQWRkcmVzcygnJykuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgICBmbHJDb2luLmlzVmFsaWRBZGRyZXNzKCcnKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Rva2VuIENoZWNrJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBpc1Rva2VuJywgZnVuY3Rpb24gKCkge1xuICAgICAgdGZsckNvaW4uaXNUb2tlbigpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgZmxyQ29pbi5pc1Rva2VuKCkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdIb3AgVHJhbnNhY3Rpb24gUGFyYW1ldGVycycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgaG9wIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgd2l0aCBnYXNQcmljZU1heCA+IDAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtb2NrRmVlRXN0aW1hdGUgPSB7XG4gICAgICAgIGZlZUVzdGltYXRlOiAxMjAwMDAsXG4gICAgICAgIGdhc0xpbWl0RXN0aW1hdGU6IDUwMDAwMCxcbiAgICAgIH07XG4gICAgICBzYW5kYm94LnN0dWIodGZsckNvaW4sICdmZWVFc3RpbWF0ZScpLnJlc29sdmVzKG1vY2tGZWVFc3RpbWF0ZSk7XG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogRVhQT1JUX0NfVEVTVF9EQVRBLnBNdWx0aXNpZ0FkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0ICh0ZmxyQ29pbiBhcyBhbnkpLmNyZWF0ZUhvcFRyYW5zYWN0aW9uUGFyYW1zKHtcbiAgICAgICAgcmVjaXBpZW50cyxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcgYXMga2V5b2YgdHlwZW9mIFRyYW5zYWN0aW9uVHlwZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2hvcFBhcmFtcycpO1xuICAgICAgcmVzdWx0LmhvcFBhcmFtcy5zaG91bGQuaGF2ZS5wcm9wZXJ0aWVzKFsndXNlclJlcVNpZycsICdnYXNQcmljZU1heCcsICdwYXltZW50SWQnLCAnZ2FzTGltaXQnXSk7XG4gICAgICByZXN1bHQuaG9wUGFyYW1zLnVzZXJSZXFTaWcuc2hvdWxkLmVxdWFsKCcweCcpO1xuICAgICAgcmVzdWx0LmhvcFBhcmFtcy5nYXNQcmljZU1heC5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICByZXN1bHQuaG9wUGFyYW1zLnBheW1lbnRJZC5zaG91bGQuYmUuYS5TdHJpbmcoKTtcbiAgICAgIHJlc3VsdC5ob3BQYXJhbXMuZ2FzTGltaXQuc2hvdWxkLmVxdWFsKDUwMDAwMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIG5vIHJlY2lwaWVudHMgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCAodGZsckNvaW4gYXMgYW55KVxuICAgICAgICAuY3JlYXRlSG9wVHJhbnNhY3Rpb25QYXJhbXMoe1xuICAgICAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgICAgIHR5cGU6ICdFeHBvcnQnIGFzIGtleW9mIHR5cGVvZiBUcmFuc2FjdGlvblR5cGUsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdtdXN0IHNlbmQgdG8gZXhhY3RseSAxIHJlY2lwaWVudCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiBtb3JlIHRoYW4gMSByZWNpcGllbnQgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogRVhQT1JUX0NfVEVTVF9EQVRBLnBNdWx0aXNpZ0FkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IEVYUE9SVF9DX1RFU1RfREFUQS5jSGV4QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQ6ICc1MDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBhd2FpdCAodGZsckNvaW4gYXMgYW55KVxuICAgICAgICAuY3JlYXRlSG9wVHJhbnNhY3Rpb25QYXJhbXMoe1xuICAgICAgICAgIHJlY2lwaWVudHMsXG4gICAgICAgICAgdHlwZTogJ0V4cG9ydCcgYXMga2V5b2YgdHlwZW9mIFRyYW5zYWN0aW9uVHlwZSxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ211c3Qgc2VuZCB0byBleGFjdGx5IDEgcmVjaXBpZW50Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFeHBsYWluIFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhbiB1bnNpZ25lZCBleHBvcnQgaW4gQyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRlc3REYXRhID0gRVhQT1JUX0NfVEVTVF9EQVRBO1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gYXdhaXQgdGZsckNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IHRlc3REYXRhLnVuc2lnbmVkVHhIZXgsXG4gICAgICAgIGNyb3NzQ2hhaW5UeXBlOiAnZXhwb3J0JyxcbiAgICAgIH0pO1xuICAgICAgdHhFeHBsYWluLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1swXS5hZGRyZXNzLnRvTG93ZXJDYXNlKCkuc2hvdWxkLmVxdWFsKHRlc3REYXRhLmNIZXhBZGRyZXNzLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgLy8gT3V0cHV0IGFkZHJlc3MgaXMgdGhlIHNvcnRlZCBQLWNoYWluIGFkZHJlc3NlcyBqb2luZWQgd2l0aCB+XG4gICAgICBjb25zdCBzb3J0ZWRQQWRkcmVzc2VzID0gdGVzdERhdGEucEFkZHJlc3Nlcy5zbGljZSgpLnNvcnQoKS5qb2luKCd+Jyk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbChzb3J0ZWRQQWRkcmVzc2VzKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRBbW91bnQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLmFtb3VudCk7XG4gICAgICBzaG91bGQuZXhpc3QodHhFeHBsYWluLmZlZSk7XG4gICAgICB0eEV4cGxhaW4uZmVlLmZlZS5zaG91bGQuZXF1YWwodGVzdERhdGEuZmVlKTtcbiAgICAgIHR4RXhwbGFpbi5jaGFuZ2VPdXRwdXRzLnNob3VsZC5iZS5lbXB0eSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc2lnbmVkIGV4cG9ydCBpbiBDIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGVzdERhdGEgPSBFWFBPUlRfQ19URVNUX0RBVEE7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSBhd2FpdCB0ZmxyQ29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEhleDogdGVzdERhdGEuZnVsbHNpZ250eEhleCxcbiAgICAgICAgY3Jvc3NDaGFpblR5cGU6ICdleHBvcnQnLFxuICAgICAgfSk7XG4gICAgICB0eEV4cGxhaW4udHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkV4cG9ydCk7XG4gICAgICB0eEV4cGxhaW4uaW5wdXRzWzBdLmFkZHJlc3MudG9Mb3dlckNhc2UoKS5zaG91bGQuZXF1YWwodGVzdERhdGEuY0hleEFkZHJlc3MudG9Mb3dlckNhc2UoKSk7XG4gICAgICAvLyBPdXRwdXQgYWRkcmVzcyBpcyB0aGUgc29ydGVkIFAtY2hhaW4gYWRkcmVzc2VzIGpvaW5lZCB3aXRoIH5cbiAgICAgIGNvbnN0IHNvcnRlZFBBZGRyZXNzZXMgPSB0ZXN0RGF0YS5wQWRkcmVzc2VzLnNsaWNlKCkuc29ydCgpLmpvaW4oJ34nKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHNvcnRlZFBBZGRyZXNzZXMpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dEFtb3VudC5zaG91bGQuZXF1YWwodGVzdERhdGEuYW1vdW50KTtcbiAgICAgIHNob3VsZC5leGlzdCh0eEV4cGxhaW4uZmVlKTtcbiAgICAgIHR4RXhwbGFpbi5mZWUuZmVlLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5mZWUpO1xuICAgICAgdHhFeHBsYWluLmNoYW5nZU91dHB1dHMuc2hvdWxkLmJlLmVtcHR5KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gZXhwb3J0IGluIEMgdHJhbnNhY3Rpb24gd2l0aG91dCBjcm9zc0NoYWluVHlwZSB3aGVuIGhleCBpcyBhdG9taWMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0ZXN0RGF0YSA9IEVYUE9SVF9DX1RFU1RfREFUQTtcbiAgICAgIC8vIFdhbGxldCBwbGF0Zm9ybSBtYXkgb21pdCBjcm9zc0NoYWluVHlwZTsgYXV0by1kZXRlY3Rpb24gdmlhIGNvZGVjIHByZWZpeCBtdXN0IHN0aWxsIHJldHVyblxuICAgICAgLy8gdGhlIHJlY2lwaWVudCBQLWNoYWluIGFkZHJlc3Mgc28gdGhlIFVJIGNhbiBkaXNwbGF5IGl0LlxuICAgICAgY29uc3QgdHhFeHBsYWluID0gYXdhaXQgdGZsckNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IHRlc3REYXRhLmZ1bGxzaWdudHhIZXgsXG4gICAgICB9KTtcbiAgICAgIHR4RXhwbGFpbi50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRXhwb3J0KTtcbiAgICAgIGNvbnN0IHNvcnRlZFBBZGRyZXNzZXMgPSB0ZXN0RGF0YS5wQWRkcmVzc2VzLnNsaWNlKCkuc29ydCgpLmpvaW4oJ34nKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHNvcnRlZFBBZGRyZXNzZXMpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dEFtb3VudC5zaG91bGQuZXF1YWwodGVzdERhdGEuYW1vdW50KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBtaXNzaW5nIHR4SGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgdGZsckNvaW5cbiAgICAgICAgLmV4cGxhaW5UcmFuc2FjdGlvbih7IGNyb3NzQ2hhaW5UeXBlOiAnZXhwb3J0JyB9IGFzIEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdtaXNzaW5nIHR4SGV4IGluIGV4cGxhaW4gdHggcGFyYW1ldGVycycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIG1pc3NpbmcgZmVlSW5mbyBmb3Igbm9uLWNyb3NzQ2hhaW4gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCB0ZmxyQ29pblxuICAgICAgICAuZXhwbGFpblRyYW5zYWN0aW9uKHsgdHhIZXg6ICcweDEyMycgfSBhcyBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyBmZWVJbmZvIGluIGV4cGxhaW4gdHggcGFyYW1ldGVycycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gVmVyaWZpY2F0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gY2xpZW50IHR4UGFyYW1zIGFyZSBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcblxuICAgICAgY29uc3QgdHhQYXJhbXMgPSBudWxsO1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbeyBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwJywgYWRkcmVzczogJzB4MTM3NGEyMDQ2NjYxZjkxNGQxNjg3ZDg1ZGJiY2ViOWFjNzkxMGEyOScgfV0sXG4gICAgICAgIG5leHRDb250cmFjdFNlcXVlbmNlSWQ6IDAsXG4gICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgaXNCYXRjaDogZmFsc2UsXG4gICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgd2FsbGV0SWQ6ICdmYWtlV2FsbGV0SWQnLFxuICAgICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6ICdmYWtlV2FsbGV0Q29udHJhY3RBZGRyZXNzJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuXG4gICAgICBhd2FpdCB0ZmxyQ29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtczogdHhQYXJhbXMgYXMgYW55LCB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkIGFzIGFueSwgd2FsbGV0LCB2ZXJpZmljYXRpb24gfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgcGFyYW1zJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCB0eFByZWJ1aWxkIHRoYXQgaXMgYm90aCBiYXRjaCBhbmQgaG9wJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcblxuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7IGFtb3VudDogJzEwMDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHgxMzc0YTIwNDY2NjFmOTE0ZDE2ODdkODVkYmJjZWI5YWM3OTEwYTI5JyB9LFxuICAgICAgICAgIHsgYW1vdW50OiAnMjUwMDAwMDAwMDAwMCcsIGFkZHJlc3M6ICcweDdlODViZGMyN2MwNTBlMzkwNWViZjRiOGU2MzRkOWFkNmVkZDBkZTYnIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHdhbGxldDogd2FsbGV0LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnZmFrZVdhbGxldFBhc3NwaHJhc2UnLFxuICAgICAgICBob3A6IHRydWUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbeyBhbW91bnQ6ICczNTAwMDAwMDAwMDAwJywgYWRkcmVzczogJzB4MTM3NGEyMDQ2NjYxZjkxNGQxNjg3ZDg1ZGJiY2ViOWFjNzkxMGEyOScgfV0sXG4gICAgICAgIG5leHRDb250cmFjdFNlcXVlbmNlSWQ6IDAsXG4gICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgaXNCYXRjaDogdHJ1ZSxcbiAgICAgICAgY29pbjogJ3RmbHInLFxuICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogJ2Zha2VXYWxsZXRDb250cmFjdEFkZHJlc3MnLFxuICAgICAgICBob3BUcmFuc2FjdGlvbjoge1xuICAgICAgICAgIHR4OiAnMHgwJyxcbiAgICAgICAgICBpZDogJzB4MCcsXG4gICAgICAgICAgc2lnbmF0dXJlOiAnMHgwJyxcbiAgICAgICAgICBwYXltZW50SWQ6ICcwJyxcbiAgICAgICAgICBnYXNQcmljZTogMjAwMDAwMDAwMDAsXG4gICAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgICBhbW91bnQ6IDEwMDAwMDAwMDAwMDAwMDAsXG4gICAgICAgICAgcmVjaXBpZW50OiAnMHgxMzc0YTIwNDY2NjFmOTE0ZDE2ODdkODVkYmJjZWI5YWM3OTEwYTI5JyxcbiAgICAgICAgICBub25jZTogMCxcbiAgICAgICAgICB1c2VyUmVxU2lnOiAnMHgwJyxcbiAgICAgICAgICBnYXNQcmljZU1heDogNTAwMDAwMDAwMDAwLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgIGF3YWl0IHRmbHJDb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkIGFzIGFueSwgd2FsbGV0LCB2ZXJpZmljYXRpb24gfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ3R4IGNhbm5vdCBiZSBib3RoIGEgYmF0Y2ggYW5kIGhvcCB0cmFuc2FjdGlvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgYSB0eFByZWJ1aWxkIHdpdGggbW9yZSB0aGFuIG9uZSByZWNpcGllbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuXG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHsgYW1vdW50OiAnMTAwMDAwMDAwMDAwMCcsIGFkZHJlc3M6ICcweDEzNzRhMjA0NjY2MWY5MTRkMTY4N2Q4NWRiYmNlYjlhYzc5MTBhMjknIH0sXG4gICAgICAgICAgeyBhbW91bnQ6ICcyNTAwMDAwMDAwMDAwJywgYWRkcmVzczogJzB4N2U4NWJkYzI3YzA1MGUzOTA1ZWJmNGI4ZTYzNGQ5YWQ2ZWRkMGRlNicgfSxcbiAgICAgICAgXSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdmYWtlV2FsbGV0UGFzc3BocmFzZScsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgeyBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwJywgYWRkcmVzczogJzB4MTM3NGEyMDQ2NjYxZjkxNGQxNjg3ZDg1ZGJiY2ViOWFjNzkxMGEyOScgfSxcbiAgICAgICAgICB7IGFtb3VudDogJzI1MDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHg3ZTg1YmRjMjdjMDUwZTM5MDVlYmY0YjhlNjM0ZDlhZDZlZGQwZGU2JyB9LFxuICAgICAgICBdLFxuICAgICAgICBuZXh0Q29udHJhY3RTZXF1ZW5jZUlkOiAwLFxuICAgICAgICBnYXNQcmljZTogMjAwMDAwMDAwMDAsXG4gICAgICAgIGdhc0xpbWl0OiA1MDAwMDAsXG4gICAgICAgIGlzQmF0Y2g6IHRydWUsXG4gICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgd2FsbGV0SWQ6ICdmYWtlV2FsbGV0SWQnLFxuICAgICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6ICdmYWtlV2FsbGV0Q29udHJhY3RBZGRyZXNzJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuXG4gICAgICBhd2FpdCB0ZmxyQ29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZDogdHhQcmVidWlsZCBhcyBhbnksIHdhbGxldCwgdmVyaWZpY2F0aW9uIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgIGB0ZmxyIGRvZXNuJ3Qgc3VwcG9ydCBzZW5kaW5nIHRvIG1vcmUgdGhhbiAxIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2l0aGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLiBUcnkgYWdhaW4sIHVzaW5nIG9ubHkgYSBzaW5nbGUgcmVjaXBpZW50LmBcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGEgdHhQcmVidWlsZCBmcm9tIHRoZSBiaXRnbyBzZXJ2ZXIgd2l0aCB0aGUgd3JvbmcgY29pbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7fSk7XG5cbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbeyBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwJywgYWRkcmVzczogJzB4MTM3NGEyMDQ2NjYxZjkxNGQxNjg3ZDg1ZGJiY2ViOWFjNzkxMGEyOScgfV0sXG4gICAgICAgIHdhbGxldDogd2FsbGV0LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnZmFrZVdhbGxldFBhc3NwaHJhc2UnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW3sgYW1vdW50OiAnMTAwMDAwMDAwMDAwMCcsIGFkZHJlc3M6ICcweDEzNzRhMjA0NjY2MWY5MTRkMTY4N2Q4NWRiYmNlYjlhYzc5MTBhMjknIH1dLFxuICAgICAgICBuZXh0Q29udHJhY3RTZXF1ZW5jZUlkOiAwLFxuICAgICAgICBnYXNQcmljZTogMjAwMDAwMDAwMDAsXG4gICAgICAgIGdhc0xpbWl0OiA1MDAwMDAsXG4gICAgICAgIGlzQmF0Y2g6IGZhbHNlLFxuICAgICAgICBjb2luOiAnYnRjJyxcbiAgICAgICAgd2FsbGV0SWQ6ICdmYWtlV2FsbGV0SWQnLFxuICAgICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6ICdmYWtlV2FsbGV0Q29udHJhY3RBZGRyZXNzJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuXG4gICAgICBhd2FpdCB0ZmxyQ29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZDogdHhQcmVidWlsZCBhcyBhbnksIHdhbGxldCwgdmVyaWZpY2F0aW9uIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdjb2luIGluIHR4UHJlYnVpbGQgZGlkIG5vdCBtYXRjaCB0aGF0IGluIHR4UGFyYW1zIHN1cHBsaWVkIGJ5IGNsaWVudCcpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1RTUyBUcmFuc2FjdGlvbiBWZXJpZmljYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBhIFRTUyB0cmFuc2ZlciB0cmFuc2FjdGlvbiB3aXRob3V0IHR4UHJlYnVpbGQucmVjaXBpZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcblxuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHg0ZTFlM2Q0ODU2YWQ4YjMzMzUyZWIzYWRkNWZmMTJlYTMyMDYxNjlhJyB9XSxcbiAgICAgICAgICB0eXBlOiAndHJhbnNmZXInLFxuICAgICAgICAgIGlzVHNzOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFRTUyB0eFByZWJ1aWxkIHR5cGljYWxseSBoYXMgYnVpbGRQYXJhbXMucmVjaXBpZW50cyBidXQgbm90IHJlY2lwaWVudHMgZGlyZWN0bHlcbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgICAgdHhSZXF1ZXN0SWQ6ICdmYWtlLXR4LXJlcXVlc3QtaWQnLFxuICAgICAgICAgIHR4SGV4OlxuICAgICAgICAgICAgJzAyZjE3MjgxZDkwMjg1MGJhNDNiNzQwMjgzMDYxYTgwOTQ0ZTFlM2Q0ODU2YWQ4YjMzMzUyZWIzYWRkNWZmMTJlYTMyMDYxNjlhODgwMTYzNDU3ODVkOGEwMDAwODBjMDgwODA4MCcsXG4gICAgICAgICAgYnVpbGRQYXJhbXM6IHtcbiAgICAgICAgICAgIGFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweDRlMWUzZDQ4NTZhZDhiMzMzNTJlYjNhZGQ1ZmYxMmVhMzIwNjE2OWEnLCBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAnIH1dLFxuICAgICAgICAgICAgdHlwZTogJ3RyYW5zZmVyJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZlZUluZm86IHsgZmVlOiAxMDAwMDAwMDAwMDgwMDAwMCwgZmVlU3RyaW5nOiAnMTAwMDAwMDAwMDA4MDAwMDAnIH0sXG4gICAgICAgICAgY29pbjogJ3RmbHInLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuXG4gICAgICAgIC8vIFdoZW4gd2FsbGV0VHlwZSBpcyAndHNzJywgaXQgc2hvdWxkIGRlbGVnYXRlIHRvIHBhcmVudCdzIHZlcmlmeVRyYW5zYWN0aW9uXG4gICAgICAgIC8vIHdoaWNoIGhhbmRsZXMgVFNTIHRyYW5zYWN0aW9ucyB3aXRob3V0IHJlcXVpcmluZyB0eFByZWJ1aWxkLnJlY2lwaWVudHNcbiAgICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgdGZsckNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgIHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQgYXMgYW55LFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgIH0pO1xuICAgICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IFRTUyBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uIHdoZW4gdHhQcmVidWlsZCBoYXMgY29uc29saWRhdGVJZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHtcbiAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgIGJhc2VBZGRyZXNzOiAnMHgxNzRjZmQ4MjNhZjhjZTI3ZWQwYWZlZTNmY2YzYzNiYTI1OTExNmJlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyB0eFBhcmFtcyB3aXRob3V0IHJlY2lwaWVudHMgKGFzIGluIGNvbnNvbGlkYXRpb24gZmxvdylcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2Zha2VXYWxsZXRQYXNzcGhyYXNlJyxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyB0eFByZWJ1aWxkIHdpdGggY29uc29saWRhdGVJZCAoc2V0IGJ5IHNlcnZlciBkdXJpbmcgY29uc29saWRhdGlvbiBidWlsZClcbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgICBjb25zb2xpZGF0ZUlkOiAnNjhhN2Q1ZDBjNjZlNzRlMjE2Yjk3MTczYmQ1NThjNmQnLFxuICAgICAgICAgIHR4SGV4OiAnMHgnLFxuICAgICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgdGZsckNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB0eFBhcmFtcyBhcyBhbnksXG4gICAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZCBhcyBhbnksXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgVFNTIHRyYW5zYWN0aW9uIHdoZW4gdHhQYXJhbXMudHlwZSBpcyBjb25zb2xpZGF0ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHtcbiAgICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICAgIGJhc2VBZGRyZXNzOiAnMHgxNzRjZmQ4MjNhZjhjZTI3ZWQwYWZlZTNmY2YzYzNiYTI1OTExNmJlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICB0eXBlOiAnY29uc29saWRhdGUnLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdmYWtlV2FsbGV0UGFzc3BocmFzZScsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgICB0eEhleDogJzB4JyxcbiAgICAgICAgICBjb2luOiAndGZscicsXG4gICAgICAgICAgd2FsbGV0SWQ6ICdmYWtlV2FsbGV0SWQnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuXG4gICAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IHRmbHJDb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczogdHhQYXJhbXMgYXMgYW55LFxuICAgICAgICAgIHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQgYXMgYW55LFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgIH0pO1xuICAgICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IFRTUyB0cmFuc2FjdGlvbiB3aXRoIGFjY2VsZXJhdGlvbiB0eXBlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge1xuICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgYmFzZUFkZHJlc3M6ICcweDE3NGNmZDgyM2FmOGNlMjdlZDBhZmVlM2ZjZjNjM2JhMjU5MTE2YmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHR5cGU6ICdhY2NlbGVyYXRpb24nLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdmYWtlV2FsbGV0UGFzc3BocmFzZScsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgICB0eEhleDogJzB4JyxcbiAgICAgICAgICBjb2luOiAndGZscicsXG4gICAgICAgICAgd2FsbGV0SWQ6ICdmYWtlV2FsbGV0SWQnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuXG4gICAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IHRmbHJDb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczogdHhQYXJhbXMgYXMgYW55LFxuICAgICAgICAgIHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQgYXMgYW55LFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgIH0pO1xuICAgICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IFRTUyB0cmFuc2FjdGlvbiB3aXRoIGZpbGxOb25jZSB0eXBlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge1xuICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgYmFzZUFkZHJlc3M6ICcweDE3NGNmZDgyM2FmOGNlMjdlZDBhZmVlM2ZjZjNjM2JhMjU5MTE2YmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHR5cGU6ICdmaWxsTm9uY2UnLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdmYWtlV2FsbGV0UGFzc3BocmFzZScsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgICB0eEhleDogJzB4JyxcbiAgICAgICAgICBjb2luOiAndGZscicsXG4gICAgICAgICAgd2FsbGV0SWQ6ICdmYWtlV2FsbGV0SWQnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuXG4gICAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IHRmbHJDb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczogdHhQYXJhbXMgYXMgYW55LFxuICAgICAgICAgIHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQgYXMgYW55LFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgIH0pO1xuICAgICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IFRTUyB0cmFuc2FjdGlvbiB3aXRob3V0IHJlY2lwaWVudHMsIGNvbnNvbGlkYXRlSWQsIG9yIHZhbGlkIHR5cGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7XG4gICAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgICBiYXNlQWRkcmVzczogJzB4MTc0Y2ZkODIzYWY4Y2UyN2VkMGFmZWUzZmNmM2MzYmEyNTkxMTZiZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2Zha2VXYWxsZXRQYXNzcGhyYXNlJyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICAgIHR4SGV4OiAnMHgnLFxuICAgICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgICAgYXdhaXQgdGZsckNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zIGFzIGFueSxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQgYXMgYW55LFxuICAgICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyB0eFBhcmFtcycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc3RpbGwgdXNlIEZMUi1zcGVjaWZpYyB2ZXJpZmljYXRpb24gZm9yIG5vbi1UU1Mgd2FsbGV0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcblxuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwJywgYWRkcmVzczogJzB4MTM3NGEyMDQ2NjYxZjkxNGQxNjg3ZDg1ZGJiY2ViOWFjNzkxMGEyOScgfV0sXG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXQsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2Zha2VXYWxsZXRQYXNzcGhyYXNlJyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFtb3VudDogJzEwMDAwMDAwMDAwMDAnLCBhZGRyZXNzOiAnMHgxMzc0YTIwNDY2NjFmOTE0ZDE2ODdkODVkYmJjZWI5YWM3OTEwYTI5JyB9XSxcbiAgICAgICAgICBuZXh0Q29udHJhY3RTZXF1ZW5jZUlkOiAwLFxuICAgICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgICBnYXNMaW1pdDogNTAwMDAwLFxuICAgICAgICAgIGlzQmF0Y2g6IGZhbHNlLFxuICAgICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgICB3YWxsZXRJZDogJ2Zha2VXYWxsZXRJZCcsXG4gICAgICAgICAgd2FsbGV0Q29udHJhY3RBZGRyZXNzOiAnZmFrZVdhbGxldENvbnRyYWN0QWRkcmVzcycsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgICAgLy8gV2l0aG91dCB3YWxsZXRUeXBlIG9yIHdpdGggd2FsbGV0VHlwZTogJ29uY2hhaW4nLCBzaG91bGQgdXNlIEZMUidzIG93biB2ZXJpZmljYXRpb25cbiAgICAgICAgY29uc3QgaXNUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgdGZsckNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgIHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQgYXMgYW55LFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgICAgd2FsbGV0VHlwZTogJ29uY2hhaW4nLFxuICAgICAgICB9KTtcbiAgICAgICAgaXNUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ0hvcCBleHBvcnQgdHggdmVyaWZ5JywgKCkgPT4ge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcbiAgICAgIGNvbnN0IGhvcERlc3RpbmF0aW9uQWRkcmVzcyA9XG4gICAgICAgICdQLWNvc3R3bzE1bXN2cjI3c3p2aGhwbWFoMGMzOGdjbWw3dm0yOXhqaDd0Y2VrOH5QLWNvc3R3bzFjd3JkdHJnZjR4aDgwbmN1N3BhbHJqdzdnbjRtcGowbjRkeGdoaH5QLWNvc3R3bzF6dDluOTZoZXk0ZnN2bmRlMzVuM2s0a3Q1cHU3Yzc4NGR6ZXd6ZCc7XG4gICAgICBjb25zdCBob3BBZGRyZXNzID0gJzB4MjhBMDU5MzNkQzc2ZTRlNmMyNWYzNUQ1YzliMkE1ODc2OTcwMEU3Nic7XG4gICAgICBjb25zdCBmbHJwQ29pbiA9IGNvaW5zLmdldCgndGZscnAnKTtcbiAgICAgIGNvbnN0IGltcG9ydFR4RmVlID0gTnVtYmVyKChmbHJwQ29pbi5uZXR3b3JrIGFzIGFueSkubWluSW1wb3J0VG9QRmVlKTtcbiAgICAgIC8vIEFkanVzdGVkIGFtb3VudCB0byB3b3JrIGJhY2t3YXJkcyBmcm9tIGhvcCBhbW91bnQgKDUwMDAwMDAwKTogNTAwMDAwMDAgLSBpbXBvcnRUeEZlZSBuYW5vRkxSXG4gICAgICBjb25zdCBhbW91bnQgPSAoNTAwMDAwMDAgLSBpbXBvcnRUeEZlZSkgKiAxZTk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW3sgYW1vdW50LCBhZGRyZXNzOiBob3BEZXN0aW5hdGlvbkFkZHJlc3MgfV0sXG4gICAgICAgIHdhbGxldDogd2FsbGV0LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnZmFrZVdhbGxldFBhc3NwaHJhc2UnLFxuICAgICAgICBob3A6IHRydWUsXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW3sgYW1vdW50OiAnNTEwMDAwNTAwMDAwMDAwMDAnLCBhZGRyZXNzOiBob3BBZGRyZXNzIH1dLFxuICAgICAgICBuZXh0Q29udHJhY3RTZXF1ZW5jZUlkOiAwLFxuICAgICAgICBnYXNQcmljZTogMjAwMDAwMDAwMDAsXG4gICAgICAgIGdhc0xpbWl0OiA1MDAwMDAsXG4gICAgICAgIGlzQmF0Y2g6IGZhbHNlLFxuICAgICAgICBjb2luOiAndGZscicsXG4gICAgICAgIHdhbGxldElkOiAnZmFrZVdhbGxldElkJyxcbiAgICAgICAgd2FsbGV0Q29udHJhY3RBZGRyZXNzOiAnZmFrZVdhbGxldENvbnRyYWN0QWRkcmVzcycsXG4gICAgICAgIGhvcFRyYW5zYWN0aW9uOiB7XG4gICAgICAgICAgdHg6IGhvcEV4cG9ydFR4LFxuICAgICAgICAgIGlkOiBob3BFeHBvcnRUeElkLFxuICAgICAgICAgIHNpZ25hdHVyZTogaG9wRXhwb3J0VHhCaXRnb1NpZ25hdHVyZSxcbiAgICAgICAgICBwYXltZW50SWQ6ICc0OTMzMzQ5OTg0JyxcbiAgICAgICAgICBnYXNQcmljZTogJzUwJyxcbiAgICAgICAgICBnYXNMaW1pdDogMSxcbiAgICAgICAgICBhbW91bnQ6ICc1MDAwMDAwMCcsXG4gICAgICAgICAgcmVjaXBpZW50OiBob3BEZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgICAgbm9uY2U6IDAsXG4gICAgICAgICAgdXNlclJlcVNpZzpcbiAgICAgICAgICAgICcweDA2ZmQwYjFmODg1OWE0MGQ5ZmIyZDFhNjVkNTRkYTVkNjQ1YTFkODFiYmI4YzFjNWIwMzcwNTE4NDNlYzBkM2MyMjQzM2VjN2Y1MGNjOTdmYTA0MWNiZjhkOWZmNWRkZjdlZDQxZjcyYTA4ZmEzZjE5ODNmZDY1MWEzM2E0NDQxJyxcbiAgICAgICAgICBnYXNQcmljZU1heDogNzE4NzUwMDAwMCxcbiAgICAgICAgICB0eXBlOiAnRXhwb3J0JyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgY29uc3Qgc2FuZGJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcblxuICAgICAgYmVmb3JlKCgpID0+IHtcbiAgICAgICAgdHhQcmVidWlsZC5ob3BUcmFuc2FjdGlvbi5zaWduYXR1cmUgPSBob3BFeHBvcnRUeEJpdGdvU2lnbmF0dXJlO1xuICAgICAgfSk7XG5cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBzYW5kYm94LnN0dWIodGZsckNvaW4gYXMgYW55LCAndmVyaWZ5U2lnbmF0dXJlRm9yQXRvbWljVHJhbnNhY3Rpb24nKS5yZXNvbHZlcyh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBzdWNjZXNzZnVsbHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmeUZsclRyYW5zYWN0aW9uT3B0aW9ucyA9IHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldCwgdmVyaWZpY2F0aW9uIH07XG4gICAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IHRmbHJDb2luLnZlcmlmeVRyYW5zYWN0aW9uKHZlcmlmeUZsclRyYW5zYWN0aW9uT3B0aW9ucyk7XG4gICAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSBmb3IgYW1vdW50IHBsdXMgMScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdmVyaWZ5RmxyVHJhbnNhY3Rpb25PcHRpb25zID0ge1xuICAgICAgICAgIHR4UGFyYW1zOiB7IC4uLnR4UGFyYW1zLCByZWNpcGllbnRzOiBbeyBhbW91bnQ6IGFtb3VudCArIDFlOSwgYWRkcmVzczogaG9wRGVzdGluYXRpb25BZGRyZXNzIH1dIH0sXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGF3YWl0IHRmbHJDb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHZlcmlmeUZsclRyYW5zYWN0aW9uT3B0aW9ucylcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAgIGBIb3AgYW1vdW50OiAke2Ftb3VudCAvIDFlOSArIGltcG9ydFR4RmVlfSBpcyBsZXNzIHRoYW4gcmVxdWlyZWQgYW1vdW50OiAke2Ftb3VudCAvIDFlOSArIGltcG9ydFR4RmVlICsgMX1gXG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IGZvciBjaGFuZ2VkIHByZWJ1aWxkIGhvcCBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB2ZXJpZnlGbHJUcmFuc2FjdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZDogeyAuLi50eFByZWJ1aWxkLCByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiBhZGRyZXNzMiwgYW1vdW50OiAnNTEwMDAwNTAwMDAwMDAwMDAnIH1dIH0sXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgdGZsckNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24odmVyaWZ5RmxyVHJhbnNhY3Rpb25PcHRpb25zKVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKGByZWNpcGllbnQgYWRkcmVzcyBvZiB0eFByZWJ1aWxkIGRvZXMgbm90IG1hdGNoIGhvcCBhZGRyZXNzYCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSBmb3IgY2hhbmdlZCBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBob3BEZXN0aW5hdGlvbkFkZHJlc3NEaWZmID1cbiAgICAgICAgICAnUC1jb3N0d28xNW1zdnIyN3N6dmhocG1haDBjMzhnY21sN3ZtMjl4amg3dGNlazl+UC1jb3N0d28xY3dyZHRyZ2Y0eGg4MG5jdTdwYWxyanc3Z240bXBqMG40ZHhnaGh+UC1jb3N0d28xenQ5bjk2aGV5NGZzdm5kZTM1bjNrNGt0NXB1N2M3ODRkemV3emQnO1xuICAgICAgICBjb25zdCB2ZXJpZnlGbHJUcmFuc2FjdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgICAgdHhQYXJhbXM6IHsgLi4udHhQYXJhbXMsIHJlY2lwaWVudHM6IFt7IGFtb3VudDogYW1vdW50LCBhZGRyZXNzOiBob3BEZXN0aW5hdGlvbkFkZHJlc3NEaWZmIH1dIH0sXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB0ZmxyQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih2ZXJpZnlGbHJUcmFuc2FjdGlvbk9wdGlvbnMpXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgICBgSG9wIGRlc3RpbmF0aW9uOiAke2hvcERlc3RpbmF0aW9uQWRkcmVzc30gZG9lcyBub3QgZXF1YWwgb3JpZ2luYWwgcmVjaXBpZW50OiAke2hvcERlc3RpbmF0aW9uQWRkcmVzc0RpZmZ9YFxuICAgICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgaWYgd2FsbGV0SWQgaXMgdXNlZCBpbnN0ZWFkIG9mIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmeUZsclRyYW5zYWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgICB0eFBhcmFtczogeyAuLi50eFBhcmFtcywgcmVjaXBpZW50czogW3sgYW1vdW50OiBhbW91bnQsIHdhbGxldElkOiAnc2FtZSB3YWxsZXQnIH1dIH0sXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCB0ZmxyQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih2ZXJpZnlGbHJUcmFuc2FjdGlvbk9wdGlvbnMpO1xuICAgICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd2YWxpZGF0ZUhvcFByZWJ1aWxkJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHZhbGlkYXRlSG9wU2FuZGJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICB2YWxpZGF0ZUhvcFNhbmRib3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaW52YWxpZCBIU00gc2lnbmF0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcbiAgICAgIGNvbnN0IGhvcFByZWJ1aWxkID0ge1xuICAgICAgICB0eDogaG9wRXhwb3J0VHgsXG4gICAgICAgIGlkOiBob3BFeHBvcnRUeElkLFxuICAgICAgICBzaWduYXR1cmU6ICcweCcgKyAnYWEnLnJlcGVhdCg2NSksIC8vIEludmFsaWQgc2lnbmF0dXJlXG4gICAgICAgIHBheW1lbnRJZDogJzEyMzQ1JyxcbiAgICAgICAgZ2FzUHJpY2U6IDIwMDAwMDAwMDAwLFxuICAgICAgICBnYXNMaW1pdDogNTAwMDAwLFxuICAgICAgICBhbW91bnQ6IDEwMDAwMDAwMDAwMDAwMDAsXG4gICAgICAgIHJlY2lwaWVudDogRVhQT1JUX0NfVEVTVF9EQVRBLnBNdWx0aXNpZ0FkZHJlc3MsXG4gICAgICAgIG5vbmNlOiAwLFxuICAgICAgICB1c2VyUmVxU2lnOiAnMHgnLFxuICAgICAgICBnYXNQcmljZU1heDogNTAwMDAwMDAwMDAwLFxuICAgICAgICB0eXBlOiAnRXhwb3J0JyBhcyBjb25zdCxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0ICh0ZmxyQ29pbiBhcyBhbnkpXG4gICAgICAgIC52YWxpZGF0ZUhvcFByZWJ1aWxkKHdhbGxldCwgaG9wUHJlYnVpbGQpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdIb3AgdHhpZCBzaWduYXR1cmUgaW52YWxpZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBFeHBvcnQgaG9wIHByZWJ1aWxkIHN1Y2Nlc3NmdWxseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhbGlkYXRlSG9wU2FuZGJveC5zdHViKHRmbHJDb2luIGFzIGFueSwgJ3ZlcmlmeVNpZ25hdHVyZUZvckF0b21pY1RyYW5zYWN0aW9uJykucmVzb2x2ZXModHJ1ZSk7XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7fSk7XG4gICAgICBjb25zdCBob3BQcmVidWlsZCA9IHtcbiAgICAgICAgdHg6IGhvcEV4cG9ydFR4LFxuICAgICAgICBpZDogaG9wRXhwb3J0VHhJZCxcbiAgICAgICAgc2lnbmF0dXJlOiBob3BFeHBvcnRUeEJpdGdvU2lnbmF0dXJlLFxuICAgICAgICBwYXltZW50SWQ6ICcxMjM0NScsXG4gICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgYW1vdW50OiA1MDAwMDAwMCxcbiAgICAgICAgcmVjaXBpZW50OiBFWFBPUlRfQ19URVNUX0RBVEEucE11bHRpc2lnQWRkcmVzcyxcbiAgICAgICAgbm9uY2U6IDAsXG4gICAgICAgIHVzZXJSZXFTaWc6ICcweCcsXG4gICAgICAgIGdhc1ByaWNlTWF4OiA1MDAwMDAwMDAwMDAsXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnIGFzIGNvbnN0LFxuICAgICAgfTtcblxuICAgICAgLy8gU2hvdWxkIG5vdCB0aHJvd1xuICAgICAgYXdhaXQgKHRmbHJDb2luIGFzIGFueSkudmFsaWRhdGVIb3BQcmVidWlsZCh3YWxsZXQsIGhvcFByZWJ1aWxkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIEV4cG9ydCBob3AgcHJlYnVpbGQgd2l0aCBtaXNtYXRjaGVkIGFtb3VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7fSk7XG4gICAgICBjb25zdCBob3BQcmVidWlsZCA9IHtcbiAgICAgICAgdHg6IGhvcEV4cG9ydFR4LFxuICAgICAgICBpZDogaG9wRXhwb3J0VHhJZCxcbiAgICAgICAgc2lnbmF0dXJlOiBob3BFeHBvcnRUeEJpdGdvU2lnbmF0dXJlLFxuICAgICAgICBwYXltZW50SWQ6ICcxMjM0NScsXG4gICAgICAgIGdhc1ByaWNlOiAyMDAwMDAwMDAwMCxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgYW1vdW50OiA1MDAwMDAwMCxcbiAgICAgICAgcmVjaXBpZW50OiBFWFBPUlRfQ19URVNUX0RBVEEucE11bHRpc2lnQWRkcmVzcyxcbiAgICAgICAgbm9uY2U6IDAsXG4gICAgICAgIHVzZXJSZXFTaWc6ICcweCcsXG4gICAgICAgIGdhc1ByaWNlTWF4OiA1MDAwMDAwMDAwMDAsXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnIGFzIGNvbnN0LFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb3JpZ2luYWxQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiBFWFBPUlRfQ19URVNUX0RBVEEucE11bHRpc2lnQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogJzk5OTk5OTk5OTk5OTk5OTk5OScsIC8vIFdyb25nIGFtb3VudFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCAodGZsckNvaW4gYXMgYW55KVxuICAgICAgICAudmFsaWRhdGVIb3BQcmVidWlsZCh3YWxsZXQsIGhvcFByZWJ1aWxkLCBvcmlnaW5hbFBhcmFtcylcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL0hvcCBhbW91bnQ6IC4qIGlzIGxlc3MgdGhhbiByZXF1aXJlZCBhbW91bnQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIEV4cG9ydCBob3AgcHJlYnVpbGQgd2l0aCBtaXNtYXRjaGVkIGRlc3RpbmF0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KTtcbiAgICAgIGNvbnN0IGZscnBDb2luID0gY29pbnMuZ2V0KCd0ZmxycCcpO1xuICAgICAgY29uc3QgbWluSW1wb3J0VG9QRmVlID0gTnVtYmVyKChmbHJwQ29pbi5uZXR3b3JrIGFzIGFueSkubWluSW1wb3J0VG9QRmVlKTtcbiAgICAgIGNvbnN0IGhvcFByZWJ1aWxkID0ge1xuICAgICAgICB0eDogaG9wRXhwb3J0VHgsXG4gICAgICAgIGlkOiBob3BFeHBvcnRUeElkLFxuICAgICAgICBzaWduYXR1cmU6IGhvcEV4cG9ydFR4Qml0Z29TaWduYXR1cmUsXG4gICAgICAgIHBheW1lbnRJZDogJzEyMzQ1JyxcbiAgICAgICAgZ2FzUHJpY2U6IDIwMDAwMDAwMDAwLFxuICAgICAgICBnYXNMaW1pdDogNTAwMDAwLFxuICAgICAgICBhbW91bnQ6IDUwMDAwMDAwLFxuICAgICAgICByZWNpcGllbnQ6IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzLFxuICAgICAgICBub25jZTogMCxcbiAgICAgICAgdXNlclJlcVNpZzogJzB4JyxcbiAgICAgICAgZ2FzUHJpY2VNYXg6IDUwMDAwMDAwMDAwMCxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcgYXMgY29uc3QsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvcmlnaW5hbFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdQLWNvc3R3bzFkaWZmZXJlbnR+UC1jb3N0d28xYWRkcmVzc35QLWNvc3R3bzFoZXJlJyxcbiAgICAgICAgICAgIGFtb3VudDogU3RyaW5nKCg1MDAwMDAwMCAtIG1pbkltcG9ydFRvUEZlZSkgKiAxZTkpLCAvLyBDb3JyZWN0IGFtb3VudCBzbyBkZXN0aW5hdGlvbiBjaGVjayBpcyByZWFjaGVkXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0ICh0ZmxyQ29pbiBhcyBhbnkpXG4gICAgICAgIC52YWxpZGF0ZUhvcFByZWJ1aWxkKHdhbGxldCwgaG9wUHJlYnVpbGQsIG9yaWdpbmFsUGFyYW1zKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvSG9wIGRlc3RpbmF0aW9uOiAuKiBkb2VzIG5vdCBlcXVhbCBvcmlnaW5hbCByZWNpcGllbnQvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3ByZXNpZ25UcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBwYXJhbXMgdW5jaGFuZ2VkIHdoZW4gbm8gaG9wVHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIHR4SGV4OiAnMHgxMjMnLFxuICAgICAgICB3YWxsZXQ6IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7fSksXG4gICAgICAgIGJ1aWxkUGFyYW1zOiB7IHJlY2lwaWVudHM6IFtdIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0ZmxyQ29pbi5wcmVzaWduVHJhbnNhY3Rpb24ocGFyYW1zIGFzIGFueSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNhbGwgdmFsaWRhdGVIb3BQcmVidWlsZCB3aGVuIGhvcFRyYW5zYWN0aW9uIGlzIHByZXNlbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgICAgY29uc3QgdmFsaWRhdGVTdHViID0gc2FuZGJveC5zdHViKHRmbHJDb2luIGFzIGFueSwgJ3ZhbGlkYXRlSG9wUHJlYnVpbGQnKS5yZXNvbHZlcygpO1xuXG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuICAgICAgY29uc3QgaG9wVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgIHR4OiBob3BFeHBvcnRUeCxcbiAgICAgICAgaWQ6IGhvcEV4cG9ydFR4SWQsXG4gICAgICAgIHNpZ25hdHVyZTogaG9wRXhwb3J0VHhCaXRnb1NpZ25hdHVyZSxcbiAgICAgICAgcGF5bWVudElkOiAnMTIzNDUnLFxuICAgICAgICBnYXNQcmljZTogMjAwMDAwMDAwMDAsXG4gICAgICAgIGdhc0xpbWl0OiA1MDAwMDAsXG4gICAgICAgIGFtb3VudDogNTAwMDAwMDAsXG4gICAgICAgIHJlY2lwaWVudDogRVhQT1JUX0NfVEVTVF9EQVRBLnBNdWx0aXNpZ0FkZHJlc3MsXG4gICAgICAgIG5vbmNlOiAwLFxuICAgICAgICB1c2VyUmVxU2lnOiAnMHgnLFxuICAgICAgICBnYXNQcmljZU1heDogNTAwMDAwMDAwMDAwLFxuICAgICAgICB0eXBlOiAnRXhwb3J0JyBhcyBjb25zdCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhIZXg6ICcweDEyMycsXG4gICAgICAgIHdhbGxldDogd2FsbGV0LFxuICAgICAgICBidWlsZFBhcmFtczogeyByZWNpcGllbnRzOiBbXSB9LFxuICAgICAgICBob3BUcmFuc2FjdGlvbjogaG9wVHJhbnNhY3Rpb24sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCB0ZmxyQ29pbi5wcmVzaWduVHJhbnNhY3Rpb24ocGFyYW1zIGFzIGFueSk7XG4gICAgICB2YWxpZGF0ZVN0dWIuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwb3N0UHJvY2Vzc1ByZWJ1aWxkJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHBhcmFtcyB1bmNoYW5nZWQgd2hlbiBubyBob3BUcmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhIZXg6ICcweDEyMycsXG4gICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLnBvc3RQcm9jZXNzUHJlYnVpbGQocGFyYW1zIGFzIGFueSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNhbGwgdmFsaWRhdGVIb3BQcmVidWlsZCB3aGVuIGhvcFRyYW5zYWN0aW9uIGlzIHByZXNlbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgICAgY29uc3QgdmFsaWRhdGVTdHViID0gc2FuZGJveC5zdHViKHRmbHJDb2luIGFzIGFueSwgJ3ZhbGlkYXRlSG9wUHJlYnVpbGQnKS5yZXNvbHZlcygpO1xuXG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB0ZmxyQ29pbiwge30pO1xuICAgICAgY29uc3QgaG9wVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgIHR4OiBob3BFeHBvcnRUeCxcbiAgICAgICAgaWQ6IGhvcEV4cG9ydFR4SWQsXG4gICAgICAgIHNpZ25hdHVyZTogaG9wRXhwb3J0VHhCaXRnb1NpZ25hdHVyZSxcbiAgICAgICAgcGF5bWVudElkOiAnMTIzNDUnLFxuICAgICAgICBnYXNQcmljZTogMjAwMDAwMDAwMDAsXG4gICAgICAgIGdhc0xpbWl0OiA1MDAwMDAsXG4gICAgICAgIGFtb3VudDogNTAwMDAwMDAsXG4gICAgICAgIHJlY2lwaWVudDogRVhQT1JUX0NfVEVTVF9EQVRBLnBNdWx0aXNpZ0FkZHJlc3MsXG4gICAgICAgIG5vbmNlOiAwLFxuICAgICAgICB1c2VyUmVxU2lnOiAnMHgnLFxuICAgICAgICBnYXNQcmljZU1heDogNTAwMDAwMDAwMDAwLFxuICAgICAgICB0eXBlOiAnRXhwb3J0JyBhcyBjb25zdCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhIZXg6ICcweDEyMycsXG4gICAgICAgIHdhbGxldDogd2FsbGV0LFxuICAgICAgICBidWlsZFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiBFWFBPUlRfQ19URVNUX0RBVEEucE11bHRpc2lnQWRkcmVzcywgYW1vdW50OiAnMTAwMDAwMDAwJyB9XSB9LFxuICAgICAgICBob3BUcmFuc2FjdGlvbjogaG9wVHJhbnNhY3Rpb24sXG4gICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHRmbHJDb2luLnBvc3RQcm9jZXNzUHJlYnVpbGQocGFyYW1zIGFzIGFueSk7XG4gICAgICB2YWxpZGF0ZVN0dWIuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRFeHRyYVByZWJ1aWxkUGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBlbXB0eSBvYmplY3Qgd2hlbiBob3AgaXMgbm90IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkUGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiAnMHgxMjM0JywgYW1vdW50OiAnMTAwMDAwMCcgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0ZmxyQ29pbi5nZXRFeHRyYVByZWJ1aWxkUGFyYW1zKGJ1aWxkUGFyYW1zKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGVtcHR5IG9iamVjdCB3aGVuIGhvcCBpcyBmYWxzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkUGFyYW1zID0ge1xuICAgICAgICBob3A6IGZhbHNlLFxuICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiAnMHgxMjM0JywgYW1vdW50OiAnMTAwMDAwMCcgfV0sXG4gICAgICAgIHdhbGxldDogbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLmdldEV4dHJhUHJlYnVpbGRQYXJhbXMoYnVpbGRQYXJhbXMpO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0IHdoZW4gd2FsbGV0IGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZFBhcmFtcyA9IHtcbiAgICAgICAgaG9wOiB0cnVlLFxuICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiAnMHgxMjM0JywgYW1vdW50OiAnMTAwMDAwMCcgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0ZmxyQ29pbi5nZXRFeHRyYVByZWJ1aWxkUGFyYW1zKGJ1aWxkUGFyYW1zKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGVtcHR5IG9iamVjdCB3aGVuIHJlY2lwaWVudHMgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkUGFyYW1zID0ge1xuICAgICAgICBob3A6IHRydWUsXG4gICAgICAgIHdhbGxldDogbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHt9KSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLmdldEV4dHJhUHJlYnVpbGRQYXJhbXMoYnVpbGRQYXJhbXMpO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjYWxsIGNyZWF0ZUhvcFRyYW5zYWN0aW9uUGFyYW1zIHdoZW4gaG9wIGlzIHRydWUgd2l0aCBhbGwgcmVxdWlyZWQgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja0ZlZUVzdGltYXRlID0ge1xuICAgICAgICBmZWVFc3RpbWF0ZTogMTIwMDAwLFxuICAgICAgICBnYXNMaW1pdEVzdGltYXRlOiA1MDAwMDAsXG4gICAgICB9O1xuICAgICAgc2FuZGJveC5zdHViKHRmbHJDb2luLCAnZmVlRXN0aW1hdGUnKS5yZXNvbHZlcyhtb2NrRmVlRXN0aW1hdGUpO1xuXG4gICAgICBjb25zdCBidWlsZFBhcmFtcyA9IHtcbiAgICAgICAgaG9wOiB0cnVlLFxuICAgICAgICB3YWxsZXQ6IG5ldyBXYWxsZXQoYml0Z28sIHRmbHJDb2luLCB7fSksXG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IEVYUE9SVF9DX1RFU1RfREFUQS5wTXVsdGlzaWdBZGRyZXNzLCBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAnIH1dLFxuICAgICAgICB0eXBlOiAnRXhwb3J0JyBhcyBjb25zdCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRmbHJDb2luLmdldEV4dHJhUHJlYnVpbGRQYXJhbXMoYnVpbGRQYXJhbXMpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdob3BQYXJhbXMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGVtcHR5IG9iamVjdCBmb3IgVFNTIHdhbGxldHMgZXZlbiB3aGVuIGhvcCBpcyB0cnVlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHNzV2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdGZsckNvaW4sIHsgbXVsdGlzaWdUeXBlOiAndHNzJyB9KTtcbiAgICAgIGNvbnN0IGJ1aWxkUGFyYW1zID0ge1xuICAgICAgICBob3A6IHRydWUsXG4gICAgICAgIHdhbGxldDogdHNzV2FsbGV0LFxuICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiBFWFBPUlRfQ19URVNUX0RBVEEucE11bHRpc2lnQWRkcmVzcywgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwJyB9XSxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcgYXMgY29uc3QsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0ZmxyQ29pbi5nZXRFeHRyYVByZWJ1aWxkUGFyYW1zKGJ1aWxkUGFyYW1zKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHt9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZlZUVzdGltYXRlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgbWFrZSBBUEkgY2FsbCB3aXRoIGNvcnJlY3QgcXVlcnkgcGFyYW1ldGVycycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkRmVlRXN0aW1hdGUgPSB7XG4gICAgICAgIGZlZUVzdGltYXRlOiAxMjAwMDAsXG4gICAgICAgIGdhc0xpbWl0RXN0aW1hdGU6IDUwMDAwMCxcbiAgICAgIH07XG5cbiAgICAgIG5vY2soJ2h0dHBzOi8vYXBwLmJpdGdvLXRlc3QuY29tJylcbiAgICAgICAgLmdldCgnL2FwaS92Mi90ZmxyL3R4L2ZlZScpXG4gICAgICAgIC5xdWVyeSh7XG4gICAgICAgICAgaG9wOiB0cnVlLFxuICAgICAgICAgIHJlY2lwaWVudDogJzB4MTIzNCcsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMCcsXG4gICAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXBseSgyMDAsIGV4cGVjdGVkRmVlRXN0aW1hdGUpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0ZmxyQ29pbi5mZWVFc3RpbWF0ZSh7XG4gICAgICAgIGhvcDogdHJ1ZSxcbiAgICAgICAgcmVjaXBpZW50OiAnMHgxMjM0JyxcbiAgICAgICAgYW1vdW50OiAnMTAwMDAwMCcsXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnLFxuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5mZWVFc3RpbWF0ZS5zaG91bGQuZXF1YWwoZXhwZWN0ZWRGZWVFc3RpbWF0ZS5mZWVFc3RpbWF0ZSk7XG4gICAgICByZXN1bHQuZ2FzTGltaXRFc3RpbWF0ZS5zaG91bGQuZXF1YWwoZXhwZWN0ZWRGZWVFc3RpbWF0ZS5nYXNMaW1pdEVzdGltYXRlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWFrZSBBUEkgY2FsbCB3aXRoIGRhdGEgcGFyYW1ldGVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwZWN0ZWRGZWVFc3RpbWF0ZSA9IHtcbiAgICAgICAgZmVlRXN0aW1hdGU6IDE1MDAwMCxcbiAgICAgICAgZ2FzTGltaXRFc3RpbWF0ZTogNjAwMDAwLFxuICAgICAgfTtcblxuICAgICAgbm9jaygnaHR0cHM6Ly9hcHAuYml0Z28tdGVzdC5jb20nKVxuICAgICAgICAuZ2V0KCcvYXBpL3YyL3RmbHIvdHgvZmVlJylcbiAgICAgICAgLnF1ZXJ5KHtcbiAgICAgICAgICByZWNpcGllbnQ6ICcweDU2NzgnLFxuICAgICAgICAgIGRhdGE6ICcweGFiY2RlZicsXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXBseSgyMDAsIGV4cGVjdGVkRmVlRXN0aW1hdGUpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0ZmxyQ29pbi5mZWVFc3RpbWF0ZSh7XG4gICAgICAgIHJlY2lwaWVudDogJzB4NTY3OCcsXG4gICAgICAgIGRhdGE6ICcweGFiY2RlZicsXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0LmZlZUVzdGltYXRlLnNob3VsZC5lcXVhbChleHBlY3RlZEZlZUVzdGltYXRlLmZlZUVzdGltYXRlKTtcbiAgICAgIHJlc3VsdC5nYXNMaW1pdEVzdGltYXRlLnNob3VsZC5lcXVhbChleHBlY3RlZEZlZUVzdGltYXRlLmdhc0xpbWl0RXN0aW1hdGUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0VHhIYXNoJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgY2FsY3VsYXRlIGNvcnJlY3Qga2VjY2FrMjU2IGhhc2ggZm9yIHR4IGhleCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4SGV4ID0gRVhQT1JUX0NfVEVTVF9EQVRBLmZ1bGxzaWdudHhIZXg7XG4gICAgICBjb25zdCBoYXNoID0gKHRmbHJDb2luLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBGbHIpLmdldFR4SGFzaCh0eEhleCk7XG5cbiAgICAgIGhhc2guc2hvdWxkLmJlLmluc3RhbmNlT2YoQnVmZmVyKTtcbiAgICAgIGhhc2gubGVuZ3RoLnNob3VsZC5lcXVhbCgzMik7XG5cbiAgICAgIC8vIFZlcmlmeSBpdCBtYXRjaGVzIG91ciBoZWxwZXIgZnVuY3Rpb25cbiAgICAgIGNvbnN0IGV4cGVjdGVkSGFzaCA9IGdldFR4SGFzaCh0eEhleCk7XG4gICAgICBoYXNoLnRvU3RyaW5nKCdoZXgnKS5zaG91bGQuZXF1YWwoZXhwZWN0ZWRIYXNoLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB0eCBoZXggd2l0aCAweCBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEhleCA9ICcweCcgKyAnYWJjZCcucmVwZWF0KDEwKTtcbiAgICAgIGNvbnN0IGhhc2ggPSAodGZsckNvaW4uY29uc3RydWN0b3IgYXMgdHlwZW9mIEZscikuZ2V0VHhIYXNoKHR4SGV4KTtcblxuICAgICAgaGFzaC5zaG91bGQuYmUuaW5zdGFuY2VPZihCdWZmZXIpO1xuICAgICAgaGFzaC5sZW5ndGguc2hvdWxkLmVxdWFsKDMyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHR4IGhleCB3aXRob3V0IDB4IHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4SGV4ID0gJ2FiY2QnLnJlcGVhdCgxMCk7XG4gICAgICBjb25zdCBoYXNoID0gKHRmbHJDb2luLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBGbHIpLmdldFR4SGFzaCh0eEhleCk7XG5cbiAgICAgIGhhc2guc2hvdWxkLmJlLmluc3RhbmNlT2YoQnVmZmVyKTtcbiAgICAgIGhhc2gubGVuZ3RoLnNob3VsZC5lcXVhbCgzMik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdCdWlsZCBVbnNpZ25lZCBTd2VlcCBmb3IgU2VsZi1DdXN0b2R5IENvbGQgV2FsbGV0cyAtIChNUEN2MiknLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICBjb25zdCBleHBsb3JlclVybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbYml0Z28uZ2V0RW52KCldLmZsckV4cGxvcmVyQmFzZVVybCBhcyBzdHJpbmc7XG4gIGNvbnN0IG1heEZlZVBlckdhc3ZhbHVlID0gMzAwMDAwMDAwMDA7XG4gIGNvbnN0IG1heFByaW9yaXR5RmVlUGVyR2FzVmFsdWUgPSAxNTAwMDAwMDAwMDtcbiAgY29uc3QgY2hhaW5faWQgPSAxMTQ7XG4gIGNvbnN0IGdhc0xpbWl0dmFsdWUgPSA1MDAwMDA7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhbiB1bnNpZ25lZCBzd2VlcCB3aXRob3V0IGRlcml2YXRpb24gcGF0aCcsIGFzeW5jICgpID0+IHtcbiAgICBub2NrKGV4cGxvcmVyVXJsKVxuICAgICAgLmdldCgnL2FwaScpXG4gICAgICAudHdpY2UoKVxuICAgICAgLnF1ZXJ5KG1vY2tEYXRhVW5zaWduZWRTd2VlcC5nZXRUeExpc3RSZXF1ZXN0KVxuICAgICAgLnJlcGx5KDIwMCwgbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLmdldFR4TGlzdFJlc3BvbnNlKTtcbiAgICBub2NrKGV4cGxvcmVyVXJsKVxuICAgICAgLmdldCgnL2FwaScpXG4gICAgICAucXVlcnkobW9ja0RhdGFVbnNpZ25lZFN3ZWVwLmdldEJhbGFuY2VSZXF1ZXN0KVxuICAgICAgLnJlcGx5KDIwMCwgbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLmdldEJhbGFuY2VSZXNwb25zZSk7XG5cbiAgICBjb25zdCBiYXNlQ29pbjogYW55ID0gYml0Z28uY29pbigndGZscicpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gKGF3YWl0IGJhc2VDb2luLnJlY292ZXIoe1xuICAgICAgdXNlcktleTogbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLnVzZXJLZXksXG4gICAgICBiYWNrdXBLZXk6IG1vY2tEYXRhVW5zaWduZWRTd2VlcC5iYWNrdXBLZXksXG4gICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6IG1vY2tEYXRhVW5zaWduZWRTd2VlcC53YWxsZXRCYXNlQWRkcmVzcyxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IG1vY2tEYXRhVW5zaWduZWRTd2VlcC5yZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgaXNUc3M6IHRydWUsXG4gICAgICBlaXAxNTU5OiB7IG1heEZlZVBlckdhczogbWF4RmVlUGVyR2FzdmFsdWUsIG1heFByaW9yaXR5RmVlUGVyR2FzOiBtYXhQcmlvcml0eUZlZVBlckdhc1ZhbHVlIH0sXG4gICAgICBnYXNMaW1pdDogZ2FzTGltaXR2YWx1ZSxcbiAgICAgIHJlcGxheVByb3RlY3Rpb25PcHRpb25zOiB7XG4gICAgICAgIGNoYWluOiBjaGFpbl9pZCxcbiAgICAgICAgaGFyZGZvcms6ICdsb25kb24nLFxuICAgICAgfSxcbiAgICB9KSkgYXMgVW5zaWduZWRTd2VlcFR4TVBDdjI7XG4gICAgc2hvdWxkLmV4aXN0KHRyYW5zYWN0aW9uKTtcbiAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhSZXF1ZXN0cycpO1xuICAgIHRyYW5zYWN0aW9uLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICBjb25zdCB0eFJlcXVlc3QgPSB0cmFuc2FjdGlvbi50eFJlcXVlc3RzWzBdO1xuICAgIHR4UmVxdWVzdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnd2FsbGV0Q29pbicpO1xuICAgIHR4UmVxdWVzdC53YWxsZXRDb2luLnNob3VsZC5lcXVhbCgndGZscicpO1xuICAgIHR4UmVxdWVzdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgdHhSZXF1ZXN0LnRyYW5zYWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIGNvbnN0IHR4ID0gdHhSZXF1ZXN0LnRyYW5zYWN0aW9uc1swXTtcbiAgICB0eC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbm9uY2UnKTtcbiAgICB0eC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndW5zaWduZWRUeCcpO1xuICAgIHR4LnVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NlcmlhbGl6ZWRUeEhleCcpO1xuICAgIHR4LnVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NpZ25hYmxlSGV4Jyk7XG4gICAgdHgudW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZGVyaXZhdGlvblBhdGgnKTtcbiAgICB0eC51bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWVJbmZvJyk7XG4gICAgdHgudW5zaWduZWRUeC5mZWVJbmZvPy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlJyk7XG4gICAgdHgudW5zaWduZWRUeC5mZWVJbmZvPy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlU3RyaW5nJyk7XG4gICAgdHgudW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncGFyc2VkVHgnKTtcbiAgICB0eC51bnNpZ25lZFR4LnBhcnNlZFR4Py5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc3BlbmRBbW91bnQnKTtcbiAgICB0eC51bnNpZ25lZFR4LnBhcnNlZFR4Py5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnb3V0cHV0cycpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnTm9uIEJpdGdvIFJlY292ZXJ5IGZvciBIb3QgV2FsbGV0cycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gIGNvbnN0IGV4cGxvcmVyVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0uZmxyRXhwbG9yZXJCYXNlVXJsIGFzIHN0cmluZztcbiAgY29uc3QgbWF4RmVlUGVyR2FzdmFsdWUgPSAzMDAwMDAwMDAwMDtcbiAgY29uc3QgbWF4UHJpb3JpdHlGZWVQZXJHYXNWYWx1ZSA9IDE1MDAwMDAwMDAwO1xuICBjb25zdCBjaGFpbl9pZCA9IDExNDtcbiAgY29uc3QgZ2FzTGltaXR2YWx1ZSA9IDUwMDAwMDtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgc2lnbmVkIG5vbi1iaXRnbyByZWNvdmVyeSB0eCcsIGFzeW5jICgpID0+IHtcbiAgICBub2NrKGV4cGxvcmVyVXJsKVxuICAgICAgLmdldCgnL2FwaScpXG4gICAgICAudHdpY2UoKVxuICAgICAgLnF1ZXJ5KG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5nZXRUeExpc3RSZXF1ZXN0KVxuICAgICAgLnJlcGx5KDIwMCwgbW9ja0RhdGFOb25CaXRHb1JlY292ZXJ5LmdldFR4TGlzdFJlc3BvbnNlKTtcbiAgICBub2NrKGV4cGxvcmVyVXJsKVxuICAgICAgLmdldCgnL2FwaScpXG4gICAgICAucXVlcnkobW9ja0RhdGFOb25CaXRHb1JlY292ZXJ5LmdldEJhbGFuY2VSZXF1ZXN0KVxuICAgICAgLnJlcGx5KDIwMCwgbW9ja0RhdGFOb25CaXRHb1JlY292ZXJ5LmdldEJhbGFuY2VSZXNwb25zZSk7XG5cbiAgICBjb25zdCBiYXNlQ29pbjogYW55ID0gYml0Z28uY29pbigndGZscicpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZUNvaW4ucmVjb3Zlcih7XG4gICAgICB1c2VyS2V5OiBtb2NrRGF0YU5vbkJpdEdvUmVjb3ZlcnkudXNlcktleURhdGEsXG4gICAgICBiYWNrdXBLZXk6IG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5iYWNrdXBLZXlEYXRhLFxuICAgICAgd2FsbGV0Q29udHJhY3RBZGRyZXNzOiBtb2NrRGF0YU5vbkJpdEdvUmVjb3Zlcnkud2FsbGV0Um9vdEFkZHJlc3MsXG4gICAgICB3YWxsZXRQYXNzcGhyYXNlOiBtb2NrRGF0YU5vbkJpdEdvUmVjb3Zlcnkud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5yZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgaXNUc3M6IHRydWUsXG4gICAgICBlaXAxNTU5OiB7IG1heEZlZVBlckdhczogbWF4RmVlUGVyR2FzdmFsdWUsIG1heFByaW9yaXR5RmVlUGVyR2FzOiBtYXhQcmlvcml0eUZlZVBlckdhc1ZhbHVlIH0sXG4gICAgICBnYXNMaW1pdDogZ2FzTGltaXR2YWx1ZSxcbiAgICAgIHJlcGxheVByb3RlY3Rpb25PcHRpb25zOiB7XG4gICAgICAgIGNoYWluOiBjaGFpbl9pZCxcbiAgICAgICAgaGFyZGZvcms6ICdsb25kb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgIHRyYW5zYWN0aW9uLnNob3VsZC5oYXZlLnByb3BlcnR5KCdpZCcpO1xuICAgIHRyYW5zYWN0aW9uLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eCcpO1xuICAgIGNvbnN0IHR4ID0gRmVlTWFya2V0RUlQMTU1OVRyYW5zYWN0aW9uLmZyb21TZXJpYWxpemVkVHgoQnVmZmVyLmZyb20oc3RyaXBIZXhQcmVmaXgodHJhbnNhY3Rpb24udHgpLCAnaGV4JykpO1xuICAgIHR4LmdldFNlbmRlckFkZHJlc3MoKS50b1N0cmluZygpLnNob3VsZC5lcXVhbChtb2NrRGF0YU5vbkJpdEdvUmVjb3Zlcnkud2FsbGV0Um9vdEFkZHJlc3MpO1xuICAgIGNvbnN0IGpzb25UeCA9IHR4LnRvSlNPTigpO1xuICAgIGpzb25UeC50bz8uc2hvdWxkLmVxdWFsKG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgfSk7XG59KTtcbiJdfQ==
|